X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/2209cb79b4d5e48187590433246b9026216cfb6a..6c2cda1556008aff8aa3c0a0aa8d8164606f5c42:/src/services/search-service/search-service.ts diff --git a/src/services/search-service/search-service.ts b/src/services/search-service/search-service.ts index 1fc61dd2..9d60e1b6 100644 --- a/src/services/search-service/search-service.ts +++ b/src/services/search-service/search-service.ts @@ -2,11 +2,14 @@ // // SPDX-License-Identifier: AGPL-3.0 -export class SearchQueriesService { +import { SearchBarAdvanceFormData } from '~/models/search-bar'; + +export class SearchService { private recentQueries: string[] = this.getRecentQueries(); + private savedQueries: SearchBarAdvanceFormData[] = this.getSavedQueries(); saveRecentQuery(query: string) { - if (this.recentQueries.length >= 5) { + if (this.recentQueries.length >= MAX_NUMBER_OF_RECENT_QUERIES) { this.recentQueries.shift(); this.recentQueries.push(query); } else { @@ -18,4 +21,29 @@ export class SearchQueriesService { getRecentQueries() { return JSON.parse(localStorage.getItem('recentQueries') || '[]') as string[]; } -} \ No newline at end of file + + saveQuery(data: SearchBarAdvanceFormData) { + this.savedQueries.push({ + type: data.type, + cluster: data.cluster, + project: data.project, + inTrash: data.inTrash, + dateFrom: data.dateFrom, + dateTo: data.dateTo, + saveQuery: data.saveQuery, + searchQuery: data.searchQuery + }); + localStorage.setItem('savedQueries', JSON.stringify(this.savedQueries)); + } + + getSavedQueries() { + return JSON.parse(localStorage.getItem('savedQueries') || '[]') as SearchBarAdvanceFormData[]; + } + + deleteSavedQuery(id: number) { + this.savedQueries.splice(id, 1); + localStorage.setItem('savedQueries', JSON.stringify(this.savedQueries)); + } +} + +const MAX_NUMBER_OF_RECENT_QUERIES = 5; \ No newline at end of file