synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
113 lines • 6.5 kB
JavaScript
;
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