1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { SearchBarAdvanceFormData } from '~/models/search-bar';
7 export class SearchService {
8 private recentQueries: string[] = this.getRecentQueries();
9 private savedQueries: SearchBarAdvanceFormData[] = this.getSavedQueries();
11 saveRecentQuery(query: string) {
12 if (this.recentQueries.length >= MAX_NUMBER_OF_RECENT_QUERIES) {
13 this.recentQueries.shift();
14 this.recentQueries.push(query);
16 this.recentQueries.push(query);
18 localStorage.setItem('recentQueries', JSON.stringify(this.recentQueries));
22 return JSON.parse(localStorage.getItem('recentQueries') || '[]') as string[];
25 saveQuery(data: SearchBarAdvanceFormData) {
26 this.savedQueries.push({...data});
27 localStorage.setItem('savedQueries', JSON.stringify(this.savedQueries));
30 editSavedQueries(data: SearchBarAdvanceFormData) {
31 const itemIndex = this.savedQueries.findIndex(item => item.searchQuery === data.searchQuery);
32 this.savedQueries[itemIndex] = {...data};
33 localStorage.setItem('savedQueries', JSON.stringify(this.savedQueries));
37 return JSON.parse(localStorage.getItem('savedQueries') || '[]') as SearchBarAdvanceFormData[];
40 deleteSavedQuery(id: number) {
41 this.savedQueries.splice(id, 1);
42 localStorage.setItem('savedQueries', JSON.stringify(this.savedQueries));
46 const MAX_NUMBER_OF_RECENT_QUERIES = 5;