UNPKG

@rcsb/rcsb-saguaro-app

Version:
97 lines 4.37 kB
import { __awaiter } from "tslib"; import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime"; import React from "react"; import * as classes from "../../../scss/bootstrap-group-display.module.scss"; import { GroupMembersGrid } from "./GroupMembersGrid"; import { SearchQueryTools as SQT } from "../../../RcsbSeacrh/SearchQueryTools"; import { ReturnType } from "@rcsb/rcsb-api-tools/lib/RcsbSearch/Types/SearchEnums"; import { Slider } from "./Components/Slider"; import { GroupProvenanceId } from "@rcsb/rcsb-api-tools/lib/RcsbDw/Types/DwEnums"; import { SearchQueryContextManager as SQCM } from "../RcsbGroupSeacrhQuery/SearchQueryContextManager"; import { rcsbRequestCtxManager } from "../../../RcsbRequest/RcsbRequestContextManager"; export class RcsbGroupMembersComponent extends React.Component { constructor(props) { super(props); this.state = { nPages: 0, selectedIndex: 0, searchQuery: this.props.searchQuery, minHeight: 458 }; this.groupMembersDiv = "groupMembersDiv"; } render() { if (this.state.nPages > 0) return (_jsx("div", { id: this.groupMembersDiv, style: { minHeight: 627 }, className: `${classes.bootstrapGroupComponentScope}`, children: _jsx(Slider, { slide: this.slide.bind(this), pages: this.state.nPages, currentPage: this.state.selectedIndex + 1, children: _jsx(GroupMembersGrid, { groupProvenanceId: this.props.groupProvenanceId, groupId: this.props.groupId, nRows: this.props.nRows, nColumns: this.props.nColumns, index: this.state.selectedIndex, searchQuery: this.state.searchQuery, minHeight: this.state.minHeight, setMinHeight: this.setMinHeight.bind(this) }) }) })); else return _jsx(_Fragment, {}); } componentDidMount() { return __awaiter(this, void 0, void 0, function* () { this.subscribe(); if (this.state.nPages === 0) yield this.loadPages(); }); } componentDidUpdate(prevProps, prevState, snapshot) { return __awaiter(this, void 0, void 0, function* () { if (this.state.nPages === 0) yield this.loadPages(); }); } subscribe() { SQCM.subscribe((o) => { this.updateSearchQuery(o); }); } updateSearchQuery(sqData) { this.setState({ searchQuery: sqData.searchQuery, nPages: 0, selectedIndex: 0 }); } loadPages() { return __awaiter(this, void 0, void 0, function* () { const searchResult = yield this.searchRequest(); if (!searchResult) return; const nPages = Math.ceil(searchResult.total_count / (this.props.nRows * this.props.nColumns)); this.setState({ nPages: nPages, selectedIndex: 0 }); }); } searchRequest() { return __awaiter(this, void 0, void 0, function* () { return yield searchRequest(this.props.groupProvenanceId, this.props.groupId, this.state.searchQuery); }); } slide(action) { switch (action) { case "next": this.setState({ selectedIndex: mod(this.state.selectedIndex + 1, this.state.nPages) }); break; case "prev": this.setState({ selectedIndex: mod(this.state.selectedIndex - 1, this.state.nPages) }); break; } } setMinHeight(minHeight) { this.setState({ minHeight: minHeight }); } } export function searchRequest(groupProvenanceId, groupId, searchQuery) { return __awaiter(this, void 0, void 0, function* () { return yield rcsbRequestCtxManager.getSearchQuery({ query: searchQuery && searchQuery.query ? SQT.addGroupNodeToSearchQuery(groupProvenanceId, groupId, searchQuery.query) : SQT.searchGroupQuery(groupProvenanceId, groupId), request_options: { return_counts: true, results_content_type: SQT.searchContentType(searchQuery) }, return_type: groupProvenanceId === GroupProvenanceId.ProvenanceMatchingDepositGroupId ? ReturnType.Entry : ReturnType.PolymerEntity }); }); } function mod(n, p) { const r = n % p; return r < 0 ? p + r : r; } //# sourceMappingURL=RcsbGroupMembersComponent.js.map