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