Important Notes
This version requires a UBIK Server version 3.6 or higher! |
Since this is a major release with substantial changes to the kernel and the UI, it will require more effort to update from the previous versions. Please see the "XAML Notes" tab for more details. In order to give users more time and convenience to migrate to the new version, the following changes are made in the app branding.
- The new app is listed in the Microsoft Store as "UBIK" (whereas the old one is "UBIK.UWP");
- The new app's display name is "UBIK4";
- The new and old apps can be installed on the same device in parallel, with their data/profiles/configs/etc. separated.
Release Notes
Release
4.0.58 on 2022-05-03
- Fixed an issue where saving property changes on child items doesn’t work when using outdated XAML code;
- Added back ViewModel.CurrentDateTime for backward compatibility.
- Updated the localization for Portuguese and Spanish.
4.0.2 on 2022-04-26 Store
Features and highlights
- Brand new UI for improved productivity and updated visuals.
- More unified page designs.
- Quality of life improvements such as the ease of access to context menus.
- Better grouping of similar context related actions such as branch download.
- Better text descriptions, icons and localization.
- Most features in the old app's top & bottom bars can now be used in customized UI. See XAML Notes - App bars.
- Optimized the search result UI to better distinguish current and previous results.
- And many others...
- Property direct editing.
- It's now possible to directly edit most frequently used types of properties inline instead of in additional dialogs.
- The previously limited MRO task direct editing (boolean) is now extended to these property types as well.
- Added more parameters to some property editing related commands for better customizability.
- Better edit session management to prevent editing being overwritten by background content updates in rare cases.
- Developer mode usability improvements:
- Supports the inspections of collection item through indexers.
- Supports type browsing from custom pinned data contexts.
- Currently opened dialogs can also be inspected.
- Added a button in the XAML browser to unpack all default templates.
- Some security related improvements.
- The app now informs the web service to terminate the user session upon logout or app closing.
- The app no longer allows self signed server certificates.
- Better app performance.
- Improved the performance of content filtering through XAML customizing.
- Improved the app performance when deleting large amount of data (which happens when e.g. evaluating online queries).
- To improve the AR performance and reduce power consumption, pose fusion is now turned off by default and can be enabled when necessary.
- The app's default profile is now only generated during app startup when no other profiles are detected.
- UBIK clients are now able to log all webservice communication related activities (in UBIKWebserviceDebug.log) for better trouble shooting. It can also be turned off using the EnableSyncLogging setting in the profiles.
- All kernel code accessing file storage roots is now centralized in ILocalStorage and can be easily customized per platform.
- PDF annotations are now treated as regular content changes and can be automatically saved (when AutoSaveMode is on) as a result.
Bugfixes
- Fixed an issue where search filters are incorrectly applied when browsing data types in the developer mode.
- Fixed an issue where the app displayed a confusing error message ("Prepare Metadefinitions.") when failing to contact the content service right after login.
- Fixed an issue where the app can get into an invalid state if a user manages to browse to e.g. the root/start object page during a logout process.
- Fixed some misbehaviors in the signature editor. For example, the signing isn't properly disabled after the countdown ends when a stroke is not yet finished.
- Fixed an issue where unnecessary messages are logged. ("Message is null")
- Fixed an issue where signatures were sometimes corrupted when saved.
- Fixed an issue where search result text from a previous user session is incorrectly displayed.
- Fixed an issue where link/Guid properties show a confusing empty selection list when there's no options to select.
- Fixed an issue where the SetPropertyValueCommand always saves changes regardless of the AutoSave parameter value.
- Fixed an issue where attaching photos could not be properly enabled during content wizard creation.
- Fixed an issue where a freshly recorded media file couldn't be accessed for replay.
- An issue where the scanning of optical markers stopped unintentionally was fixed.
- Fixed an issue where it's impossible to use the geo location of an object after scanning a geo AR marker.
- Fixed an issue where changed queries prevented the updates of meta definitions.
Known issues
- If you have upgraded from earlier versions of UBIK® and have a UBIKThemes.xaml file under the app's root XAML folder, you need to delete it manually or there might be some UI issues such as unreadable text colors, strange button styles, etc.
- Option IGNORE_NULL doesn't work yet on Dynamic Selective List (Client), see workaround.
XAML Notes
It is highly recommended to start new UI customizings based on the default resources in UBIK® 4. Here is how you can get them from the app. Some major changes are listed below, please see every item for detailed information and whether your existing customizings will still work.
Obsolete resources
Some of the UI resources from the older versions no longer exist or are not used anymore.
Converters
- PropertyItemToValueConverter is removed since it was not used at all. (This should not be used in any XAML customizings, If it is, please consider using alternatives or contact us.)
- StringToDateTimeTypesConverter was added. It should be used when Binding to a Date/Time property on a PropertyViewModel.
App bars
These are the top and bottom bars that you bring out by mouse right clicks. The various buttons in them are now included in other parts of the new UI, meaning the bars are now unnecessary and no longer displayed. The custom templates used in these bars include the following.
- UBIKChildAction;
- UBIKPageAction.
For those who still want to use the old UI with these bars, UICompatibilityLevel should be set to lower than 400 in the profile.
Child templates in UBIKGlobalStatusBar and UBIKGlobalBottomBar
The UBIKGlobalStatusBar and the UBIKGlobalBottomBar are redesigned and no longer use the following child templates.
- UBIKTopLeft;
- UBIKTopCenter;
- UBIKTopRight;
- UBIKBottomLeft;
- UBIKBottomRight.
This means such existing child templates in your project setups will not have any effect in UBIK® 4, unless you still have the two parent/container templates customized where they are explicitly referenced.
XAML changes
Since there has been a major UI redesign in this version, quite a lot of changes in XAML code (especially bindings) are involved. We have striven to maintain backward compatibility, but some changes either are simply unavoidable or their long term benefits outweigh the efforts required this one time.
UBIKChildPageAction
- The Visibility of <AppBarButton x:Name="SaveButton" ... /> now adjusts according to setting "Content -> enable auto save mode". Nothing will be broken if your existing XAMLs are not updated. However, the saving behavior might not match what's described in Content -> AutoSaveMode.
UBIKPropertyArea/UBIKContentArea
- The ItemsSource and property count now use the result of an EvalExpression. Mass editing will no longer work or the count will be incorrect if not updated;
- Changed from "Properties.Items" to "Properties.VisibleItems" in bindings because Items/AllItems now also include those system/invisible ones that users are not supposed to see.
UBIKPropertyItem/UBIKPriorityPropertyItem
- PriorityPropertyClickedCommand/PriorityPropertyRightClickedCommand are deleted since they are the same as PropertyClickedCommand/PropertyRightClickedCommand. You should use the latter instead;
- Removed "Content.", "OwnerModel." from bindings.
UBIKGlobalStatusBar
Some members are moved from the GlobalStatusBarViewModel to the AppStatusViewModel which is available as a property called AppStatus in the former. So the previous bindings in the form of {Binding XXX}
will now require a new binding of {Binding AppStatus.XXX}
(with some exceptions, see below). The affected members include the following.
- ProgressIndicator;
- LoginState;
- WritingToDB;
- TaskCount;
- SyncModeName;
- UserSelectedSyncModeName;
- SyncModeCommand -> AppStatus.SwitchSyncModeCommand.
UBIKPropertyValueRecordDialog
- Changed from "PropertyItem" to "PropertyViewModel" in bindings.
Editor related templates
The changes are quite extensive and, therefore, we recommended that you take the default templates from the app and re-customize them from there. |
First of all for UBIKEditDateTime, UBIKEditDouble, UBIKEditInt, UBIKEditGuid, UBIKEditChart, UBIKEditGeo, UBIKEditBool, UBIKEditString.
- Changed from "EditDialogViewModel.PropertyItem" to "PropertyViewModel" in bindings;
- Changed from "EditDialogViewModel" to "PropertyViewModel" in bindings;
- Changed from "EditDialogViewModel.DeletePressedCommand" to "PropertyViewModel.DeleteValueCommand" in a binding; (UBIKEditGuid)
- Prefixed "EditDialogViewModel" with "PropertyViewModel." in the binding of <Button x:Name="TeachInButton" />; (UBIKEditGeo)
- UBIKEditString was renamed from UBIKEdit.
- UBIKEditDateTime now needs the StringToDateTimeTypesConverter when Binding to a value on a PropertyViewModel.
Then for UBIKEditDialogButtons, UBIKEditDialogHeader, UBIKEditDialogNACheck.
- Changed from "PropertyItem.Content.DisplayStrings" to "PropertyViewModel.OwnerObject.DisplayStrings" in bindings; (UBIKEditDialogHeader)
- Changed from "PropertyItem" to "PropertyViewModel" in bindings;
- Prefixed bindings "EnableNAOption", "NotApplicable", "ValueDefinitions", "ValueDefinition", "EnableMultiValueEditing" & "CanExecuteConfirmEditCommand" with "PropertyViewModel.".
Any template having ViewModel as the data context
Some members are moved from the ViewModel to the AppStatusViewModel which is available as a property called AppStatus in the former. So the previous bindings in the form of {Binding XXX}
will now require a new binding of {Binding AppStatus.XXX}
(with some exceptions, see below). The affected members include the following.
- CallRemoteSupportCommand;
- SwitchSyncModeCommand;
- SyncMode;
- NavigateToScanPageCommand;
- NavigateToHomePageCommand;
- NavigateBackCommand;
- NavigateToSettingsPageCommand;
- NavigateToGuidCommand;
- NavigateToRootPageCommand;
- NavigateToURICommand;
- DisplayViewCommand;
- EnableNfcCommand;
- CopyToClipboardCommand;
- ShowMessageBoxCommand;
- IsRFIDScanningAvailable;
- IsRFIDScannerConnecting;
- ToggleRFIDScanning;
- LocalContentItems -> AppStatus.LocalObjects;
- UserName -> AppStatus.CurrentUserName.