20526: Add created_at descending as secondary sort key
authorPeter Amstutz <peter.amstutz@curii.com>
Wed, 18 Oct 2023 17:32:51 +0000 (13:32 -0400)
committerPeter Amstutz <peter.amstutz@curii.com>
Wed, 18 Oct 2023 17:32:51 +0000 (13:32 -0400)
This is to ensure that we break ties consistently, from newest to oldest.

Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

src/store/data-explorer/data-explorer-middleware-service.ts
src/store/project-panel/project-panel-middleware-service.ts
src/store/search-results-panel/search-results-middleware-service.ts
src/store/shared-with-me-panel/shared-with-me-middleware-service.ts
src/store/trash-panel/trash-panel-middleware-service.ts
src/store/users/user-panel-middleware-service.ts

index 01964fa48a9f260442205ab14e33a9f5dc9b09f2..7c7a867e7a727fa4b706ea030bc094f6b1a6b9c0 100644 (file)
@@ -58,8 +58,10 @@ export const getOrder = <T extends Resource = Resource>(dataExplorer: DataExplor
             ? OrderDirection.ASC
             : OrderDirection.DESC;
 
+        // Use createdAt as a secondary sort column so we break ties consistently.
         return order
             .addOrder(sortDirection, sortColumn.sort.field)
+            .addOrder(OrderDirection.DESC, "createdAt")
             .getOrder();
     } else {
         return order.getOrder();
index 7204993b5c2f9545077ff15243518df539a4fb2f..1f38ffdc9e839c12d7b4e06ce84dee7207e08f05 100644 (file)
@@ -127,10 +127,12 @@ const getOrder = (dataExplorer: DataExplorer) => {
     if (sortColumn && sortColumn.sort) {
         const sortDirection = sortColumn.sort.direction === SortDirection.ASC ? OrderDirection.ASC : OrderDirection.DESC;
 
+        // Use createdAt as a secondary sort column so we break ties consistently.
         return order
             .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.COLLECTION)
             .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.PROCESS)
             .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.PROJECT)
+            .addOrder(OrderDirection.DESC, "createdAt", GroupContentsResourcePrefix.PROCESS)
             .getOrder();
     } else {
         return order.getOrder();
index c13092d4851e34a8c035de7662d5516a327f5300..00a69cd2e308f733b617ec5a5b35dadebe42c01c 100644 (file)
@@ -76,7 +76,7 @@ export class SearchResultsMiddlewareService extends DataExplorerMiddlewareServic
                 }).catch(() => {
                     api.dispatch(couldNotFetchSearchResults(session.clusterId));
                 });
-            }
+        }
         );
     }
 }
@@ -102,10 +102,12 @@ const getOrder = (dataExplorer: DataExplorer) => {
             ? OrderDirection.ASC
             : OrderDirection.DESC;
 
+        // Use createdAt as a secondary sort column so we break ties consistently.
         return order
             .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.COLLECTION)
             .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.PROCESS)
             .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.PROJECT)
+            .addOrder(OrderDirection.DESC, "createdAt", GroupContentsResourcePrefix.PROCESS)
             .getOrder();
     } else {
         return order.getOrder();
index f2e402347e4c1b2bc3d3093c9198a5603c0d1df7..1a2bdabab3d7f0325579525dc41e66fa2028377a 100644 (file)
@@ -66,10 +66,12 @@ const getOrder = (dataExplorer: DataExplorer) => {
             ? OrderDirection.ASC
             : OrderDirection.DESC;
 
+        // Use createdAt as a secondary sort column so we break ties consistently.
         return order
             .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.COLLECTION)
             .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.PROCESS)
             .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.PROJECT)
+            .addOrder(OrderDirection.DESC, "createdAt", GroupContentsResourcePrefix.PROCESS)
             .getOrder();
     } else {
         return order.getOrder();
index e63365103319c709de6a7405e594409662e1148b..d72b6ad7a1ab62ee59c83ce5e765ff6d5177de44 100644 (file)
@@ -95,9 +95,11 @@ const getOrder = (dataExplorer: DataExplorer) => {
             ? OrderDirection.ASC
             : OrderDirection.DESC;
 
+        // Use createdAt as a secondary sort column so we break ties consistently.
         return order
             .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.COLLECTION)
             .addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.PROJECT)
+            .addOrder(OrderDirection.DESC, "createdAt", GroupContentsResourcePrefix.PROCESS)
             .getOrder();
     } else {
         return order.getOrder();
index e965cd00580f85ce20944d12d760f089b7984aec..e3c946e35b14e4ea8fa7f95e4135b61306f9bd2c 100644 (file)
@@ -70,6 +70,9 @@ const getOrder = (dataExplorer: DataExplorer) => {
         } else {
             order.addOrder(sortDirection, sortColumn.sort.field);
         }
+
+        // Use createdAt as a secondary sort column so we break ties consistently.
+        order.addOrder(OrderDirection.DESC, "createdAt");
     }
     return order.getOrder();
 };