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

55 lines 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var utils_1 = require("../utils/"); var react_1 = (0, tslib_1.__importStar)(require("react")); var sqlFunctions_1 = require("../utils/functions/sqlFunctions"); var SynapseContext_1 = require("../utils/SynapseContext"); var QueryCount = function (_a) { var sql = _a.sql, selectedFacets = _a.selectedFacets, parens = _a.parens; var accessToken = (0, SynapseContext_1.useSynapseContext)().accessToken; var _b = (0, react_1.useState)({}), storedSqlQueryCount = _b[0], setStoredSqlQueryCount = _b[1]; // maps sql string to true/false, true if already made a request for this sql's query count // false or undefined if not var _c = (0, react_1.useState)({}), isCalculatingQueryCountForSql = _c[0], setIsCalculatingQueryCountForSql = _c[1]; var mounted = true; (0, react_1.useEffect)(function () { var calculateRowCount = function () { if (mounted) { var entityId = (0, sqlFunctions_1.parseEntityIdFromSqlStatement)(sql); if (isCalculatingQueryCountForSql[sql + "-" + accessToken] || storedSqlQueryCount[sql + "-" + accessToken]) { // its either in progress or its already been calculated return; } var request = { concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest', query: { sql: sql, selectedFacets: selectedFacets, }, entityId: entityId, partMask: utils_1.SynapseConstants.BUNDLE_MASK_QUERY_COUNT, }; var newIsCalculatingQueryCountForSql = (0, tslib_1.__assign)({}, isCalculatingQueryCountForSql); newIsCalculatingQueryCountForSql[sql + "-" + accessToken] = true; setIsCalculatingQueryCountForSql(newIsCalculatingQueryCountForSql); utils_1.SynapseClient.getQueryTableResults(request, accessToken).then(function (data) { var newStoredSqlQueryCount = (0, tslib_1.__assign)({}, storedSqlQueryCount); newStoredSqlQueryCount[sql + "-" + accessToken] = data.queryCount; setStoredSqlQueryCount(newStoredSqlQueryCount); }); } }; calculateRowCount(); return function () { mounted = false; }; }, [sql, selectedFacets, accessToken]); var count = storedSqlQueryCount[sql + "-" + accessToken]; var localCount = count === null || count === void 0 ? void 0 : count.toLocaleString(); /* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString#Using_toLocaleString */ return (react_1.default.createElement(react_1.default.Fragment, null, count && (parens ? "(" + localCount + ")" : localCount))); }; exports.default = QueryCount; //# sourceMappingURL=QueryCount.js.map