@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
96 lines (95 loc) • 4.57 kB
JavaScript
;
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();