UNPKG

synapse-react-client

Version:

[![Build Status](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client.svg?branch=main)](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [![npm version](https://badge.fury.io/js/synapse-react-client.svg)](https://badge.fury.io/js/synaps

113 lines 6.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDisplayIds = void 0; var tslib_1 = require("tslib"); var react_1 = (0, tslib_1.__importStar)(require("react")); var sqlFunctions_1 = require("../utils/functions/sqlFunctions"); var utils_1 = require("../utils"); var UserCardList_1 = (0, tslib_1.__importDefault)(require("./UserCardList")); var SynapseConstants_1 = require("../utils/SynapseConstants"); var react_bootstrap_1 = require("react-bootstrap"); var SynapseContext_1 = require("../utils/SynapseContext"); var UserCardMedium_1 = require("./UserCardMedium"); var use_deep_compare_effect_1 = require("use-deep-compare-effect"); var STORED_UID_KEY = 'sage_rotate_uids'; var DEFAULT_DISPLAY_COUNT = 3; var getDisplayIds = function (ids, count, storageUidKey) { if (ids === void 0) { ids = []; } if (count === void 0) { count = DEFAULT_DISPLAY_COUNT; } var storedIds = []; var newIds = []; var storedIdsStr = localStorage.getItem(storageUidKey); if (storedIdsStr != null) { storedIds = JSON.parse(storedIdsStr); } if (!storedIds.length) { // no stuff in storage newIds = ids.slice(0, count); localStorage.setItem(storageUidKey, JSON.stringify(newIds)); return newIds; } else { // has stuff in storage var filtered = ids.filter(function (item) { return !storedIds.includes(item); }); if (filtered.length >= count) { newIds = filtered.slice(0, count); localStorage.setItem(storageUidKey, JSON.stringify(storedIds.concat(newIds))); return newIds; } else { localStorage.removeItem(storageUidKey); var part = ids.slice(0, count - filtered.length); localStorage.setItem(storageUidKey, JSON.stringify(part)); return filtered.concat(part); } } }; exports.getDisplayIds = getDisplayIds; var UserCardListRotate = function (_a) { var sql = _a.sql, count = _a.count, _b = _a.useQueryResultUserData, useQueryResultUserData = _b === void 0 ? false : _b, _c = _a.size, size = _c === void 0 ? SynapseConstants_1.LARGE_USER_CARD : _c, summaryLink = _a.summaryLink, summaryLinkText = _a.summaryLinkText, selectedFacets = _a.selectedFacets, searchParams = _a.searchParams, sqlOperator = _a.sqlOperator; var accessToken = (0, SynapseContext_1.useSynapseContext)().accessToken; var _d = (0, react_1.useState)([]), userIds = _d[0], setUserIds = _d[1]; var _e = (0, react_1.useState)(), queryData = _e[0], setQueryData = _e[1]; var _f = (0, react_1.useState)(), isLoading = _f[0], setIsLoading = _f[1]; var mounted = true; var storageUidKey = STORED_UID_KEY + "-" + sql + "-" + JSON.stringify(selectedFacets); (0, use_deep_compare_effect_1.useDeepCompareEffectNoCheck)(function () { var fetchData = function () { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var sqlUsed, entityId, partMask, request, queryResultBundle, queryResult, ownerIdColumnIndex_1, ids, newIds; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: setIsLoading(true); sqlUsed = (0, sqlFunctions_1.insertConditionsFromSearchParams)(sql, searchParams, sqlOperator); entityId = (0, sqlFunctions_1.parseEntityIdFromSqlStatement)(sql); partMask = utils_1.SynapseConstants.BUNDLE_MASK_QUERY_RESULTS; request = { partMask: partMask, concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest', entityId: entityId, query: { sql: sqlUsed, selectedFacets: selectedFacets, }, }; return [4 /*yield*/, utils_1.SynapseClient.getFullQueryTableResults(request, accessToken)]; case 1: queryResultBundle = _a.sent(); queryResult = queryResultBundle.queryResult; if (queryResult.queryResults.rows) { ownerIdColumnIndex_1 = queryResult.queryResults.headers.findIndex(function (el) { return el.columnType === 'USERID'; }); ids = queryResult.queryResults.rows.map(function (d) { return d.values[ownerIdColumnIndex_1]; }); if (mounted) { newIds = (0, exports.getDisplayIds)(ids, count, storageUidKey); setUserIds(newIds); if (useQueryResultUserData) { setQueryData(queryResultBundle); } setIsLoading(false); } } else { console.log('UserCardListRotate: Error getting data'); } return [2 /*return*/]; } }); }); }; fetchData(); return function () { mounted = false; }; }, [sql, selectedFacets, count, accessToken, searchParams, sqlOperator]); return (react_1.default.createElement("div", { className: "UserCardListRotate bootstrap-4-backport" }, isLoading && react_1.default.createElement(UserCardMedium_1.LoadingUserCardMedium, null), !isLoading && userIds.length === 0 && (react_1.default.createElement("p", { className: "font-italic" }, "No one was found.")), !isLoading && userIds.length > 0 && (react_1.default.createElement(UserCardList_1.default, { list: userIds, size: size, data: queryData })), summaryLink && summaryLinkText && (react_1.default.createElement("div", { className: "UserCardListRotate__summary" }, react_1.default.createElement(react_bootstrap_1.Button, { className: "pill", variant: "secondary", size: "lg", href: summaryLink }, summaryLinkText))))); }; exports.default = UserCardListRotate; //# sourceMappingURL=UserCardListRotate.js.map