microsoft / 2LCS

Lifecycle Services Companion App for administrators
MIT License
104 stars 55 forks source link

:bug: Date/time fields in grids are sorted alphabetically #81

Open FH-Inway opened 1 year ago

FH-Inway commented 1 year ago

When clicking on a grid column header, the grid data gets sorted (ascending on first click, descending on second). The sorting always seems to be alphabetically and not take the data type into account. This works for most columns, but date/time columns are an issue.

For example, here is the "Deployed On" column in the "Cloud-hosted instances" grid after the first click (should be sorted ascending): image

FH-Inway commented 1 year ago

Date/time colums used to be formatted as "yyyy-MM-dd H:mm", which would result in the correct order when sorting. However, according to #24 , some users receive the date/time information in a format (e.g. " 31/01/2019 01:10") which could not be deserialized into a DateTime. Which is why the data type for those columns was changed to string in https://github.com/microsoft/2LCS/commit/250cfbe343a41e7d9f813cc65f56dafd84ee3797 and the data is shown in the ui as it is provided by LCS.

The date/time format is controlled by the language preference of the user in LCS. 2LCS uses Json.NET for parsing the JSON data returned from LCS. By default, Json.NET uses the invariant culture (which corresponds with the en-US culture, which is the "English (United States)" language preference in LCS).

One was to solve this would be to get the language preference of the user from LCS. @TomekMelissa Is there an LCS API that could be used to do that?

Another way would be to provide a parameter in 2LCS were the user could set the language preference.

fraga commented 1 year ago

@FH-Inway maybe best way for now is to get system user settings really. In a way should be the same as the settings in LCS.

FH-Inway commented 1 year ago

@fraga Thanks for the suggestion. Yes, I had a similar thought. I think we still would need a fallback, since probably many users have a non-us system setting, but never bothered with changing the language preference of LCS. Even then, there could be an issue if a user has both a non-us system setting and LCS language preference, but both are not the same (I admit, a bit of a theoretic scenario). My preference would be to get the language preference from LCS, maybe by scraping it if there is no API.