UNPKG

@rcsb/rcsb-saguaro-app

Version:
96 lines (95 loc) 4.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SearchQueryContextManager = void 0; const tslib_1 = require("tslib"); const rxjs_1 = require("rxjs"); const lodash_1 = require("lodash"); const DataContainer_1 = require("../../../RcsbUtils/Helpers/DataContainer"); const SearchQueryTools_1 = require("../../../RcsbSeacrh/SearchQueryTools"); const GroupChartTools_1 = require("../RcsbGroupChart/GroupChartTools"); class SearchQueryContextManager { static setConfig(config) { if (config.searchQuery) SearchQueryContextManager.currentSearchQuery.set(config.searchQuery); if (config.groupId) SearchQueryContextManager.groupId.set(config.groupId); if (config.groupProvenanceId) SearchQueryContextManager.groupProvenanceId.set(config.groupProvenanceId); } static updateSearchQuery(attributeName, query, returnType) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const searchQuery = SearchQueryContextManager.currentSearchQuery.get(); const groupProvenanceId = SearchQueryContextManager.groupProvenanceId.get(); const groupId = SearchQueryContextManager.groupId.get(); if (!groupProvenanceId || !groupId) throw new Error("Undefined group config"); const newQuery = searchQuery && searchQuery.query ? SearchQueryTools_1.SearchQueryTools.buildNodeSearchQuery(searchQuery.query, query, returnType, SearchQueryTools_1.SearchQueryTools.searchContentType(searchQuery)) : SearchQueryTools_1.SearchQueryTools.buildSearchQuery(query, returnType); const chartMap = yield GroupChartTools_1.GroupChartMap.getChartMap(groupProvenanceId, groupId, newQuery); SearchQueryContextManager.next({ chartMap: chartMap, attributeName: attributeName, searchQuery: newQuery, groupId: groupId, groupProvenanceId: groupProvenanceId }); if (!newQuery.query) throw new Error("Search query error"); return SearchQueryTools_1.SearchQueryTools.buildSearchQuery(SearchQueryTools_1.SearchQueryTools.addGroupNodeToSearchQuery(groupProvenanceId, groupId, newQuery.query), returnType); }); } static replaceSearchQuery(attributeName, searchQuery) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const groupProvenanceId = SearchQueryContextManager.groupProvenanceId.get(); const groupId = SearchQueryContextManager.groupId.get(); if (!groupProvenanceId || !groupId) return; const chartMap = yield GroupChartTools_1.GroupChartMap.getChartMap(groupProvenanceId, groupId, searchQuery); SearchQueryContextManager.next({ chartMap, attributeName, searchQuery, groupId, groupProvenanceId }); }); } static subscribe(f, attr) { if (typeof attr === "string") SearchQueryContextManager.attributeList.push(attr); return SearchQueryContextManager.searchQueryObservable.subscribe({ next: (o) => { f(o); } }); } static dataSubscription(f, attr) { return SearchQueryContextManager.dataObservable.subscribe({ next: (o) => { f(o); } }); } static next(o) { this.currentSearchQuery.set(o.searchQuery); SearchQueryContextManager.searchQueryObservable.next(o); SearchQueryContextManager.dataObservable.next({ attributeName: o.attributeName, chartMap: Array.from(o.chartMap.entries()).reduce((prev, [k, v]) => { return prev.set(k, v.map(v => v.data)); }, new Map()) }); } static getAttributeList() { return (0, lodash_1.cloneDeep)(this.attributeList); } } exports.SearchQueryContextManager = SearchQueryContextManager; SearchQueryContextManager.searchQueryObservable = new rxjs_1.Subject(); SearchQueryContextManager.dataObservable = new rxjs_1.Subject(); SearchQueryContextManager.attributeList = []; SearchQueryContextManager.currentSearchQuery = new DataContainer_1.DataContainer(); SearchQueryContextManager.groupProvenanceId = new DataContainer_1.DataContainer(); SearchQueryContextManager.groupId = new DataContainer_1.DataContainer();