diff --git a/html/app.js b/html/app.js index 85620494..57e31e9b 100644 --- a/html/app.js +++ b/html/app.js @@ -3859,6 +3859,7 @@ CefSharp.BindObjectAsync( } }; + // ascending var compareByName = function (a, b) { var A = String(a.name).toUpperCase(); var B = String(b.name).toUpperCase(); @@ -3871,6 +3872,20 @@ CefSharp.BindObjectAsync( return 0; }; + // descending + var compareByUpdatedAt = function (a, b) { + var A = String(a.updated_at).toUpperCase(); + var B = String(b.updated_at).toUpperCase(); + if (A < B) { + return 1; + } + if (A > B) { + return -1; + } + return 0; + }; + + // ascending var compareByDisplayName = function (a, b) { var A = String(a.displayName).toUpperCase(); var B = String(b.displayName).toUpperCase(); @@ -5487,6 +5502,9 @@ CefSharp.BindObjectAsync( isWorldsLoading: false, isAvatarsLoading: false, + worldSorting: 'update', + avatarSorting: 'update', + treeData: [], memo: '' }; @@ -5710,15 +5728,14 @@ CefSharp.BindObjectAsync( worlds.push(ref); } } - worlds.sort(compareByName); - D.worlds = worlds; + this.setUserDialogWorlds(worlds); var avatars = []; for (var ref of API.cachedAvatars.values()) { if (ref.authorId === D.id) { avatars.push(ref); } } - avatars.sort(compareByName); + this.setUserDialogAvatars(avatars); D.avatars = avatars; D.isWorldsLoading = false; D.isAvatarsLoading = false; @@ -5794,6 +5811,26 @@ CefSharp.BindObjectAsync( } }; + $app.methods.setUserDialogWorlds = function (array) { + var D = this.userDialog; + if (D.worldSorting === 'update') { + array.sort(compareByUpdatedAt); + } else { + array.sort(compareByName); + } + D.worlds = array; + }; + + $app.methods.setUserDialogAvatars = function (array) { + var D = this.userDialog; + if (D.avatarSorting === 'update') { + array.sort(compareByUpdatedAt); + } else { + array.sort(compareByName); + } + D.avatars = array; + }; + $app.methods.refreshUserDialogWorlds = function () { var D = this.userDialog; if (D.isWorldsLoading) { @@ -5832,10 +5869,9 @@ CefSharp.BindObjectAsync( } }, done: () => { - var array = Array.from(map.values()); - array.sort(compareByName); if (D.id === params.userId) { - D.worlds = array; + var array = Array.from(map.values()); + this.setUserDialogWorlds(array); } D.isWorldsLoading = false; } @@ -5880,10 +5916,9 @@ CefSharp.BindObjectAsync( } }, done: () => { - var array = Array.from(map.values()); - array.sort(compareByName); if (D.id === params.userId) { - D.avatars = array; + var array = Array.from(map.values()); + this.setUserDialogAvatars(array); } D.isAvatarsLoading = false; } @@ -6045,6 +6080,16 @@ CefSharp.BindObjectAsync( D.treeData = buildTreeData(D.ref); }; + $app.methods.changeUserDialogWorldSorting = function () { + var D = this.userDialog; + this.setUserDialogWorlds(D.worlds); + }; + + $app.methods.changeUserDialogAvatarSorting = function () { + var D = this.userDialog; + this.setUserDialogAvatars(D.avatars); + }; + // App: World Dialog $app.data.worldDialog = { diff --git a/html/index.html b/html/index.html index 6120d9f5..8119ecc8 100644 --- a/html/index.html +++ b/html/index.html @@ -1075,6 +1075,10 @@ Total {{ userDialog.worlds.length }} + + by name + by update +
@@ -1090,6 +1094,10 @@ Total {{ userDialog.avatars.length }} + + by name + by update +