Jump to: navigation, search

Difference between revisions of "Version 3.6 (WinX)"


 
(56 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 +
== Important Notes ==
 +
{{Attention|There are mandatory Xaml changes and existing customizings need to be updated. See {{#switchtablink:Xaml_Changes|Xaml Changes}} tab.}}
 +
{{Attention|Starting from this version, [https://en.wikipedia.org/wiki/Windows_10_version_history#Version_1709_(Fall_Creators_Update) Windows 10 build 16299] or later builds are required.}}
 +
{{Attention|Starting from this version, the WinX/UWP app will also be available on the public Microsoft Store (named UBIK.UWP). Unfortunately, this leads to a different app identity which means the previous versions (up till 3.5) of the app must be uninstalled first and existing app data (including and not limited to profiles, databases, XAML customizings) will be lost unless manually saved and restored.}}
 +
 
= Initial Release =
 
= Initial Release =
 +
 
=== New features ===
 
=== New features ===
* Position and Orientation information of seperate source systems (GPS, Compass, AR-Markers, etc.) are now combined based on their probabilistic error levels using an Extended Kalman Filter.  
+
* Position and Orientation information of separate source systems (GPS, Compass, AR-Markers, etc.) are now combined based on their probabilistic error levels using an Extended Kalman Filter.  
* It is now possible to persist the scroll position of a ListView when browsing through the content hierarchy. But the ListView does need an unique identifying name (x:name) to work properly. Furthermore, if list elements depend on other UI-elements those have to be created above the ListView in the XAML.
+
* {{UBIK}} is now able to remember the scroll position of a list view when browsing through the content hierarchy. [[XAML_Tips#Remember_scroll_positions_of_list_views|Additional configuration]] is necessary in XAML customizings in order to activate this.
* The element in the middle of the screen within a !ListView is memorised. With this information the scroll position is memorised. But the ListView does need an unique identifying name (x:name) to work properly. Furthermore, if list elements depend on other UI-elements those have to be created above the ListView in the XAML.
+
* The feature of [[Login_View#UWP_.26_Xamarin_clients|remembering user credentials]] is redesigned.
 +
* More UI parts are now fully customizable.
 +
** The status bar as ''UBIKGlobalStatusBar.xaml''.
 +
** The bottom bar as ''UBIKGlobalBottomBar.xaml''.
 +
** The login/start page as ''UBIKStartArea.xaml''.
 +
** The child page as ''UBIKContentArea.xaml''.
 +
** The details page as ''UBIKDetailsArea.xaml''.
 +
** The document page as ''UBIKDocumentArea.xaml''.
 +
* It is now possible to use external Bluetooth RFID Readers to scan [[RFID_tags#tab=WinX_External_Scanner|RFID Tags]] in UBIK.
 +
* The not found offline query criteria are now ignored.
 +
* It's now possible to use [[XAML_Tips#MultiBinding|multi bindings]] in XAML for simple compound bindings. Note: This is not a replacement of the existing [[EvalExpression]] which is able to handle complex expression evaluations.
 +
* A new property ''LinkedLevel'' on the ''PropertyListItemViewModel'' loads and delivers a full PageViewModel of the linked object of a Guid property.
 +
* It is now possible to attach documents to the [[Property_Wizard_(Client)|content creation wizard]].
 +
* Added the [[SYSCLS_FILEDETAILSCLASSIFICATION|FileDetailsClassification]] to provide additional information about an uploaded file.
 +
* An [[XAML_Tips#InvokeOnItemsCommand|InvokeOnItemsCommand]] is now available to execute a specified command on list items.
 +
* Added the [[SYSCLS_3DMODELCLASSIFICATION|Archive3DModelClassification]] to enable downloading 3D models including additional files like textures.
 +
* By default, the selective items are now sorted alphabetically in the ascending order based on their display texts. However, one can [[Version_3.6_(WinX)#Customized_Sorting|customize the sorting]] as well.
 +
* The ''AppStatus'' ViewModel now has a bindable ''LiveDateTime'' property, that delivers and refreshes the current date and time, every second.
 +
* Added a link to the Augmensys data protection policy page in the app's settings page.
  
 +
=== Enhancements ===
 +
* Simplified and improved the bindings to TemplateService and its templates. See [[Version_3.6_(WinX)#Xaml_Changes|Xaml Changes]].
 +
* [[Developer_Mode]] related:
 +
** The shortcut key to activate the developer mode is changed from {{key press|F12}} to {{key press|Ctrl}}+{{key press|F12}} (to reduce activations by accident and to avoid conflicts with other applications).
 +
** Improved ToString representations of collections to make finding data easier.
 +
** When switching between different stages, one can see different parts (area, item, etc.) highlighted. This now also supports custom named templates such as UBIKChildArea_WP.
 +
** It's now possible to define in UBIKThemes.xaml only the resources that one wants to customize.
 +
** When using the {{key press|Edit XAML Template}} button, a copy of the default template can be deployed to the custom XAML folder. This now also supports custom named templates.
 +
** Added a member "InfrastructureObjects" to "AppStatus" which is available in every view model. This allows administrators to do quick checks whether the infrastructure objects they expect are actually delivered from the service.
 +
** Added an {{key press|Edit UBIKThemes}} button for fast and easy access to the custom/default UBIKThemes.xaml file, see [[Developer_Mode#XAML_Files|details here]].
 +
** The developer mode stage information is now shown in the app's title instead of notifications.
 +
* Improved the performance and responsiveness when loading large lists. As a result, removed the previous workaround which allowed setting a limit on the max number of displayed child items (e.g. <x:Int32 x:Key="MaxItemsInList">500</x:Int32> in UBIKThemes).
 +
* Added a toggle setting to turn on a strict template loading policy to help customizers spot potentially [[Developer_Mode#Missing_template|missing templates]].
 +
* The ''Schedule'' (Gantt) control now allows to configure it's Date format through a new property ''DateTimeFormat'', examples on valid format strings can be found e.g. [https://www.c-sharpcorner.com/blogs/date-and-time-format-in-c-sharp-programming1 here].
  
=== Bug fixes ===
+
=== Bugfixes ===
* Fixed an issue when clicking on ListViewItem in ZoomedOutListView it does not navigate, when clicking on the right side of the object
+
* Fixed an issue where OCR Definitions ("TAG_Chars.xml) generated through the experimental ''TagReader'' App could not  be used by the client anymore.
 +
* Fixed an issue where OCR letters with holes (e.g. O, B, 8 etc.) were misinterpreted.
 +
* Fixed an issue where the app crashed when opening the guid editor using the property wizard.
 +
* Fixed an issue where configured barcode formats were not read correctly from the profile, thus the app always used QR codes only after restart.
 +
* Fixed an issue in the back navigation behavior in the type browser of the developer mode.
 +
* Fixed a confusing filtering behavior in the type browser of the developer mode.
 +
* Fixed an issue where branch download containing a large number of document files was extremely slow.
 +
* Fixed an issue where some localized texts were not used.
 +
* Fixed an issue where the {{key press|Cancel}} button in the [[Developer_Mode#XAML_Files|XAML overwrite dialog]] did not work.
 +
* Fixed an issue where the app did not properly navigate to the object when a user clicked on items in a zoomed out list.
 +
* Fixed an issue where the app always displayed the zoomed in list view even if a user switched to the zoomed out one in the same app session.
 +
* Search filter is now properly cleared when navigating in the TypeBrowser.
 +
* Fixed an issue where the generic summary text of child types are displayed instead of the actual types when viewing a level the first time.
 +
* Fixed an issue where evaluating an offline query might not work the first time after editing Guid properties using the very same query.
 +
* Fixed an issue where the POI flyout template was not shown.
 +
* Fixed an issue where some POIs (e.g. lines and polygons) with read-only geo properties appeared editable.
 +
* Fixed an issue where videos/audios kept playing even after navigating away from them in the flip view (document gallery view).
 +
* Fixed an issue where some 3D models were not shown in the app due to their peculiar scales and offsets.
 +
 
 +
=== Known issues ===
 +
* Project specific resources defined in UBIKThemes might not take effect immediately after switching profiles. Restarting the app solves the problem.
 +
* If a device has multiple cameras of exactly the same model (e.g. Microsoft HD 3000), the wrong one might be used during remote support calls.
 +
* The AR Marker related features are resource intense and can cause the app to slow down on weaker tablets.
 +
* The in-app 3D model viewer can cause memory leaks and app instability if being opened and closed in a quick and repeated manner.
 +
* Sometimes after an external bluetooth RFID scanner is disconnected, the app still incorrectly recognizes it as available.
 +
<br />
  
 
= Build History =
 
= Build History =
 +
* 3.6.89 on 2020-02-13
 +
** Initial release.
 +
* 3.6.92 on 2020-06-25
 +
** Fixed an issue where live values are sometimes not received on the clients (when the live value attributes are configured as null).
 +
 +
= Xaml Changes =
 +
<br />
 +
We have made some improvements to make some bindings in Xaml code easier and more efficient. Some changes to your existing Xaml customizings might be necessary. Please refer to each section to see if the change is mandatory or not.
 +
 +
== Availability of the default XAML resources ==
 +
Until now, we have distributed the default XAML resources through our release portal as standalone downloads. This is no longer the case starting from this version on since customizers can get those using the new and enhanced [[Developer_Mode#XAML_Files|developer mode]] feature.
 +
 +
== General changes regarding how UBIKThemes.xaml is customized ==
 +
In previous versions, one must include all resources defined in the default UBIKThemes.xaml file, which means the custom version of it will contain hundreds of resources even if only a handful of minor changes are actually made.
 +
<br />
 +
Starting from 3.6, this mechanism is overhauled so that the custom UBIKThemes.xaml file only needs to contain those customized resources. For all other default ones that do not require changes, one can delete them (and we highly recommend doing so) to keep the customizings cleaner and more maintainable.
 +
 +
== Binding to TemplateService and the templates ==
 +
This change is '''not mandatory''' and your existing Xamls will still work. We do recommend updating them, though.
 +
 +
Previously the TemplateService (the one providing access to all customizable templates) was only available on certain views (e.g. pages, dialogs, etc.). And the binding to it could only be done using named element like
 +
:<source lang = "xml">
 +
<ContentControl ContentTemplate="{Binding ElementName=contentPage, Path=TemplateService.UBIKChildPageActionTemplate}" />
 +
</source>
 +
It is now made accessible from all view models (you can use the [[Developer_Mode|developer mode]] to check its availability). Also, you can now use the exact names of the template files as indexers for binding to those templates. Therefore, the binding can be changed to something like
 +
:<source lang = "xml">
 +
<ContentControl ContentTemplate="{Binding TemplateService[UBIKChildPageAction]}" />
 +
</source>
 +
 +
== Use SelectionBoundListView instead of ListView ==
 +
A SelectionBoundListView was already available in earlier versions but not mandatory. For performance improvements, it is now '''mandatory''' wherever you display {{UBIK}} content (objects, properties, etc.).
 +
You need to add a namespace like <code>xmlns:uc="using:UBIK.WinX.Controls"</code> to your Xaml file and use it like <code><uc:SelectionBoundListView ... /></code>.
 +
{{Hint|Technically speaking, SelectionBoundListView informs item view models when their corresponding items are visualized. This way, view models can skip a lot of unnecessary work (on the UI) when their views are not visible. '''If the regular ListView is used instead, the item views will not reflect content changes until the page is reloaded/refreshed.'''}}
 +
 +
== Customized Sorting ==
 +
Customizers can now specify the sort order of the items in XAML with the help of a ListCollectionView. The path to a comparable property, that is used for comparing can be specified. Multiple properties can be used, whereby the priority goes from the first to the last property. The direction can be specified by either "Ascending" (default) or "Descending".
 +
 +
<source lang="xml">
 +
  <collectionview:ListCollectionView x:Key="CustomSortedList" ItemsSource="{Binding Children.Items}">
 +
    <collectionview:ListCollectionView.SortParameter>
 +
      <collectionview:SortDescriptions>
 +
        <collectionview:SortDescription PropertyName="Header" Direction="Ascending"/>
 +
        <collectionview:SortDescription PropertyName="Content.UID" Direction="Descending"/>
 +
      </collectionview:SortDescriptions>
 +
    </collectionview:ListCollectionView.SortParameter>
 +
  </collectionview:ListCollectionView>
 +
</source>
  
 
<headertabs />
 
<headertabs />
Line 15: Line 125:
 
{{Category/Version2|{{PAGENAME}}}}
 
{{Category/Version2|{{PAGENAME}}}}
  
 +
[[Category:Client|Version 3.6 (WinX)]]
 
[[Category:Version 3.6|Version 3.6 (WinX)]]
 
[[Category:Version 3.6|Version 3.6 (WinX)]]
 +
[[Category:WinX|Version 3.6 (WinX)]]

Latest revision as of 14:13, 25 June 2020

Important Notes

IC Attention.pngThere are mandatory Xaml changes and existing customizings need to be updated. See Xaml Changes tab.
IC Attention.pngStarting from this version, Windows 10 build 16299 or later builds are required.
IC Attention.pngStarting from this version, the WinX/UWP app will also be available on the public Microsoft Store (named UBIK.UWP). Unfortunately, this leads to a different app identity which means the previous versions (up till 3.5) of the app must be uninstalled first and existing app data (including and not limited to profiles, databases, XAML customizings) will be lost unless manually saved and restored.
[edit]

Initial Release

New features

  • Position and Orientation information of separate source systems (GPS, Compass, AR-Markers, etc.) are now combined based on their probabilistic error levels using an Extended Kalman Filter.
  • UBIK® is now able to remember the scroll position of a list view when browsing through the content hierarchy. Additional configuration is necessary in XAML customizings in order to activate this.
  • The feature of remembering user credentials is redesigned.
  • More UI parts are now fully customizable.
    • The status bar as UBIKGlobalStatusBar.xaml.
    • The bottom bar as UBIKGlobalBottomBar.xaml.
    • The login/start page as UBIKStartArea.xaml.
    • The child page as UBIKContentArea.xaml.
    • The details page as UBIKDetailsArea.xaml.
    • The document page as UBIKDocumentArea.xaml.
  • It is now possible to use external Bluetooth RFID Readers to scan RFID Tags in UBIK.
  • The not found offline query criteria are now ignored.
  • It's now possible to use multi bindings in XAML for simple compound bindings. Note: This is not a replacement of the existing EvalExpression which is able to handle complex expression evaluations.
  • A new property LinkedLevel on the PropertyListItemViewModel loads and delivers a full PageViewModel of the linked object of a Guid property.
  • It is now possible to attach documents to the content creation wizard.
  • Added the FileDetailsClassification to provide additional information about an uploaded file.
  • An InvokeOnItemsCommand is now available to execute a specified command on list items.
  • Added the Archive3DModelClassification to enable downloading 3D models including additional files like textures.
  • By default, the selective items are now sorted alphabetically in the ascending order based on their display texts. However, one can customize the sorting as well.
  • The AppStatus ViewModel now has a bindable LiveDateTime property, that delivers and refreshes the current date and time, every second.
  • Added a link to the Augmensys data protection policy page in the app's settings page.

Enhancements

  • Simplified and improved the bindings to TemplateService and its templates. See Xaml Changes.
  • Developer Mode related:
    • The shortcut key to activate the developer mode is changed from F12 to Ctrl+F12 (to reduce activations by accident and to avoid conflicts with other applications).
    • Improved ToString representations of collections to make finding data easier.
    • When switching between different stages, one can see different parts (area, item, etc.) highlighted. This now also supports custom named templates such as UBIKChildArea_WP.
    • It's now possible to define in UBIKThemes.xaml only the resources that one wants to customize.
    • When using the Edit XAML Template button, a copy of the default template can be deployed to the custom XAML folder. This now also supports custom named templates.
    • Added a member "InfrastructureObjects" to "AppStatus" which is available in every view model. This allows administrators to do quick checks whether the infrastructure objects they expect are actually delivered from the service.
    • Added an Edit UBIKThemes button for fast and easy access to the custom/default UBIKThemes.xaml file, see details here.
    • The developer mode stage information is now shown in the app's title instead of notifications.
  • Improved the performance and responsiveness when loading large lists. As a result, removed the previous workaround which allowed setting a limit on the max number of displayed child items (e.g. <x:Int32 x:Key="MaxItemsInList">500</x:Int32> in UBIKThemes).
  • Added a toggle setting to turn on a strict template loading policy to help customizers spot potentially missing templates.
  • The Schedule (Gantt) control now allows to configure it's Date format through a new property DateTimeFormat, examples on valid format strings can be found e.g. here.

Bugfixes

  • Fixed an issue where OCR Definitions ("TAG_Chars.xml) generated through the experimental TagReader App could not be used by the client anymore.
  • Fixed an issue where OCR letters with holes (e.g. O, B, 8 etc.) were misinterpreted.
  • Fixed an issue where the app crashed when opening the guid editor using the property wizard.
  • Fixed an issue where configured barcode formats were not read correctly from the profile, thus the app always used QR codes only after restart.
  • Fixed an issue in the back navigation behavior in the type browser of the developer mode.
  • Fixed a confusing filtering behavior in the type browser of the developer mode.
  • Fixed an issue where branch download containing a large number of document files was extremely slow.
  • Fixed an issue where some localized texts were not used.
  • Fixed an issue where the Cancel button in the XAML overwrite dialog did not work.
  • Fixed an issue where the app did not properly navigate to the object when a user clicked on items in a zoomed out list.
  • Fixed an issue where the app always displayed the zoomed in list view even if a user switched to the zoomed out one in the same app session.
  • Search filter is now properly cleared when navigating in the TypeBrowser.
  • Fixed an issue where the generic summary text of child types are displayed instead of the actual types when viewing a level the first time.
  • Fixed an issue where evaluating an offline query might not work the first time after editing Guid properties using the very same query.
  • Fixed an issue where the POI flyout template was not shown.
  • Fixed an issue where some POIs (e.g. lines and polygons) with read-only geo properties appeared editable.
  • Fixed an issue where videos/audios kept playing even after navigating away from them in the flip view (document gallery view).
  • Fixed an issue where some 3D models were not shown in the app due to their peculiar scales and offsets.

Known issues

  • Project specific resources defined in UBIKThemes might not take effect immediately after switching profiles. Restarting the app solves the problem.
  • If a device has multiple cameras of exactly the same model (e.g. Microsoft HD 3000), the wrong one might be used during remote support calls.
  • The AR Marker related features are resource intense and can cause the app to slow down on weaker tablets.
  • The in-app 3D model viewer can cause memory leaks and app instability if being opened and closed in a quick and repeated manner.
  • Sometimes after an external bluetooth RFID scanner is disconnected, the app still incorrectly recognizes it as available.


Build History

  • 3.6.89 on 2020-02-13
    • Initial release.
  • 3.6.92 on 2020-06-25
    • Fixed an issue where live values are sometimes not received on the clients (when the live value attributes are configured as null).

Xaml Changes


We have made some improvements to make some bindings in Xaml code easier and more efficient. Some changes to your existing Xaml customizings might be necessary. Please refer to each section to see if the change is mandatory or not.

Availability of the default XAML resources

Until now, we have distributed the default XAML resources through our release portal as standalone downloads. This is no longer the case starting from this version on since customizers can get those using the new and enhanced developer mode feature.

General changes regarding how UBIKThemes.xaml is customized

In previous versions, one must include all resources defined in the default UBIKThemes.xaml file, which means the custom version of it will contain hundreds of resources even if only a handful of minor changes are actually made.
Starting from 3.6, this mechanism is overhauled so that the custom UBIKThemes.xaml file only needs to contain those customized resources. For all other default ones that do not require changes, one can delete them (and we highly recommend doing so) to keep the customizings cleaner and more maintainable.

Binding to TemplateService and the templates

This change is not mandatory and your existing Xamls will still work. We do recommend updating them, though.

Previously the TemplateService (the one providing access to all customizable templates) was only available on certain views (e.g. pages, dialogs, etc.). And the binding to it could only be done using named element like

<ContentControl ContentTemplate="{Binding ElementName=contentPage, Path=TemplateService.UBIKChildPageActionTemplate}" />

It is now made accessible from all view models (you can use the developer mode to check its availability). Also, you can now use the exact names of the template files as indexers for binding to those templates. Therefore, the binding can be changed to something like

<ContentControl ContentTemplate="{Binding TemplateService[UBIKChildPageAction]}" />

Use SelectionBoundListView instead of ListView

A SelectionBoundListView was already available in earlier versions but not mandatory. For performance improvements, it is now mandatory wherever you display UBIK® content (objects, properties, etc.). You need to add a namespace like xmlns:uc="using:UBIK.WinX.Controls" to your Xaml file and use it like <uc:SelectionBoundListView ... />.

IC Hint square.pngTechnically speaking, SelectionBoundListView informs item view models when their corresponding items are visualized. This way, view models can skip a lot of unnecessary work (on the UI) when their views are not visible. If the regular ListView is used instead, the item views will not reflect content changes until the page is reloaded/refreshed.

Customized Sorting

Customizers can now specify the sort order of the items in XAML with the help of a ListCollectionView. The path to a comparable property, that is used for comparing can be specified. Multiple properties can be used, whereby the priority goes from the first to the last property. The direction can be specified by either "Ascending" (default) or "Descending".

  <collectionview:ListCollectionView x:Key="CustomSortedList" ItemsSource="{Binding Children.Items}">
    <collectionview:ListCollectionView.SortParameter>
       <collectionview:SortDescriptions>
         <collectionview:SortDescription PropertyName="Header" Direction="Ascending"/>
         <collectionview:SortDescription PropertyName="Content.UID" Direction="Descending"/>
       </collectionview:SortDescriptions>
    </collectionview:ListCollectionView.SortParameter>
  </collectionview:ListCollectionView>