+
fas fa-clock
-
+
{
@@ -218,10 +226,12 @@ export default {
}
this.$root.$on('spaces-changed', this.selectSpaces);
this.$root.$on('favorites-changed', this.selectFavorites);
+ this.$root.$on('sort-changed', this.selectSort);
},
beforeDestroy() {
this.$root.$off('spaces-changed', this.selectSpaces);
this.$root.$off('favorites-changed', this.selectFavorites);
+ this.$root.$off('sort-changed', this.selectSort);
},
methods: {
selectFavorites() {
@@ -238,6 +248,10 @@ export default {
selectSpaces(spaces) {
this.selectedSpaces = spaces || [];
},
+ selectSort(option, sortDescending) {
+ this.sortBy = option?.value || '';
+ this.sortDescending = sortDescending;
+ },
selectAllConnector() {
if (this.allEnabled) {
return;
@@ -358,6 +372,7 @@ export default {
uri += `&spaceId=${spaceId}`;
});
}
+ uri = this.appendSortParams(uri, this.sortBy, this.sortDescending);
const fetchResultsQuery = connectorModule.fetchSearchResult ?
connectorModule.fetchSearchResult(uri, options)
: fetch(uri, options);
@@ -398,6 +413,22 @@ export default {
},
isGroupingResult(result) {
return Array.isArray(result);
+ },
+ appendSortParams(uri, sortBy, sortDescending) {
+ let sortDirection = sortDescending ? 'desc' : 'asc';
+ sortDirection = sortBy && sortDirection || '';
+ sortDescending = sortBy && sortDescending || '';
+
+ if (this.sortBy && !uri.includes('{sortField}') && !uri.includes('{sortDirection}') && !uri.includes('{sortDescending}')) {
+ const separator = uri.includes('?') ? '&' : '?';
+ uri += `${separator}sortField=${sortBy}&sortDirection=${sortDirection}`;
+ return uri;
+ }
+ uri = uri.replace('{sortField}', sortBy)
+ .replace('{sortDirection}', sortDirection)
+ .replace('{sortDescending}', sortDescending);
+
+ return uri;
}
},
};
diff --git a/webapp/src/main/webapp/vue-apps/search/components/searchFavoriteSelector.vue b/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchFavoriteSelector.vue
similarity index 100%
rename from webapp/src/main/webapp/vue-apps/search/components/searchFavoriteSelector.vue
rename to webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchFavoriteSelector.vue
diff --git a/webapp/src/main/webapp/vue-apps/search/components/SearchOptions.vue b/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchOptions.vue
similarity index 98%
rename from webapp/src/main/webapp/vue-apps/search/components/SearchOptions.vue
rename to webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchOptions.vue
index 2e6c92f8c77..42b241bcd66 100644
--- a/webapp/src/main/webapp/vue-apps/search/components/SearchOptions.vue
+++ b/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchOptions.vue
@@ -99,6 +99,7 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
diff --git a/webapp/src/main/webapp/vue-apps/search/components/SearchSelectedSpaceItem.vue b/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchSelectedSpaceItem.vue
similarity index 100%
rename from webapp/src/main/webapp/vue-apps/search/components/SearchSelectedSpaceItem.vue
rename to webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchSelectedSpaceItem.vue
diff --git a/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchSortSelector.vue b/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchSortSelector.vue
new file mode 100644
index 00000000000..0d20886c5c5
--- /dev/null
+++ b/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchSortSelector.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+ fas fa-sort
+ {{ selectedSortLabel }}
+
+
+
+
+
+
+ {{ option.label }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/webapp/src/main/webapp/vue-apps/search/components/SearchSpaceSelector.vue b/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchSpaceSelector.vue
similarity index 100%
rename from webapp/src/main/webapp/vue-apps/search/components/SearchSpaceSelector.vue
rename to webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchSpaceSelector.vue
diff --git a/webapp/src/main/webapp/vue-apps/search/components/SearchTagList.vue b/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchTagList.vue
similarity index 100%
rename from webapp/src/main/webapp/vue-apps/search/components/SearchTagList.vue
rename to webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchTagList.vue
diff --git a/webapp/src/main/webapp/vue-apps/search/components/SearchTagSelector.vue b/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchTagSelector.vue
similarity index 100%
rename from webapp/src/main/webapp/vue-apps/search/components/SearchTagSelector.vue
rename to webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchTagSelector.vue
diff --git a/webapp/src/main/webapp/vue-apps/search/initComponents.js b/webapp/src/main/webapp/vue-apps/search/initComponents.js
index 9b434e74302..70bcc225ee1 100644
--- a/webapp/src/main/webapp/vue-apps/search/initComponents.js
+++ b/webapp/src/main/webapp/vue-apps/search/initComponents.js
@@ -3,13 +3,14 @@ import SearchToolbar from './components/SearchToolbar.vue';
import SearchDrawer from './components/SearchDrawer.vue';
import SearchResults from './components/SearchResults.vue';
import SearchResultCard from './components/SearchResultCard.vue';
-import SearchTagSelector from './components/SearchTagSelector.vue';
-import SearchTagList from './components/SearchTagList.vue';
-import SearchOptions from './components/SearchOptions.vue';
+import SearchTagSelector from './components/searchOptions/SearchTagSelector.vue';
+import SearchTagList from './components/searchOptions/SearchTagList.vue';
+import SearchOptions from './components/searchOptions/SearchOptions.vue';
import SearchResultCardGroup from './components/SearchResultCardGroup.vue';
-import SearchSpaceSelector from './components/SearchSpaceSelector.vue';
-import SearchFavoriteSelector from './components/searchFavoriteSelector.vue';
-import SearchSelectedSpaceItem from './components/SearchSelectedSpaceItem.vue';
+import SearchSpaceSelector from './components/searchOptions/SearchSpaceSelector.vue';
+import SearchFavoriteSelector from './components/searchOptions/SearchFavoriteSelector.vue';
+import SearchSelectedSpaceItem from './components/searchOptions/SearchSelectedSpaceItem.vue';
+import SearchSortSelector from './components/searchOptions/SearchSortSelector.vue';
const components = {
'search-application': SearchApplication,
@@ -23,7 +24,8 @@ const components = {
'search-result-card-group': SearchResultCardGroup,
'search-favorites-selector': SearchFavoriteSelector,
'search-space-selector': SearchSpaceSelector,
- 'search-selected-space-item': SearchSelectedSpaceItem
+ 'search-selected-space-item': SearchSelectedSpaceItem,
+ 'search-sort-selector': SearchSortSelector
};
for (const key in components) {