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

123 lines 7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Goals = void 0; var tslib_1 = require("tslib"); var react_1 = (0, tslib_1.__importStar)(require("react")); var synapseTypes_1 = require("../../../utils/synapseTypes"); var utils_1 = require("../../../utils"); var SynapseClient_1 = require("../../../utils/SynapseClient"); var ErrorBanner_1 = require("../../ErrorBanner"); var useGetQueryResultBundle_1 = (0, tslib_1.__importDefault)(require("../../../utils/hooks/SynapseAPI/useGetQueryResultBundle")); var useShowDesktop_1 = (0, tslib_1.__importDefault)(require("../../../utils/hooks/useShowDesktop")); var Goals_Mobile_1 = (0, tslib_1.__importDefault)(require("./Goals.Mobile")); var Goals_Desktop_1 = (0, tslib_1.__importDefault)(require("./Goals.Desktop")); var queryUtils_1 = require("../../../utils/functions/queryUtils"); var SynapseContext_1 = require("../../../utils/SynapseContext"); var ExpectedColumns; (function (ExpectedColumns) { ExpectedColumns["TABLEID"] = "TableId"; ExpectedColumns["COUNT_SQL"] = "CountSql"; ExpectedColumns["TITLE"] = "Title"; ExpectedColumns["SUMMARY"] = "Summary"; ExpectedColumns["LINK"] = "Link"; ExpectedColumns["ASSET"] = "Asset"; })(ExpectedColumns || (ExpectedColumns = {})); var Goals = function (props) { var entityId = props.entityId; var accessToken = (0, SynapseContext_1.useSynapseContext)().accessToken; var _a = (0, react_1.useState)(), assets = _a[0], setAssets = _a[1]; var _b = (0, react_1.useState)(), error = _b[0], setError = _b[1]; var showDesktop = (0, useShowDesktop_1.default)(); var queryBundleRequest = { concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest', entityId: entityId, partMask: utils_1.SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS | utils_1.SynapseConstants.BUNDLE_MASK_QUERY_RESULTS, query: { sql: "select * from " + entityId + " order by ItemOrder", }, }; var queryResultBundle = (0, useGetQueryResultBundle_1.default)(queryBundleRequest).data; (0, react_1.useEffect)(function () { var getData = function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { var assetColumnIndex_1, assets_1, fileHandleAssociationList, batchFileRequest, files, e_1; var _a; return (0, tslib_1.__generator)(this, function (_b) { switch (_b.label) { case 0: _b.trys.push([0, 2, , 3]); assetColumnIndex_1 = (0, queryUtils_1.getFieldIndex)(ExpectedColumns.ASSET, queryResultBundle); assets_1 = (_a = queryResultBundle === null || queryResultBundle === void 0 ? void 0 : queryResultBundle.queryResult.queryResults.rows.map(function (el) { return el.values[assetColumnIndex_1]; })) !== null && _a !== void 0 ? _a : []; if (assets_1.length === 0) { // wait for data to load return [2 /*return*/]; } fileHandleAssociationList = assets_1.map(function (fileId) { return { associateObjectId: entityId, associateObjectType: synapseTypes_1.FileHandleAssociateType.TableEntity, fileHandleId: fileId, }; }); batchFileRequest = { includeFileHandles: false, includePreSignedURLs: true, includePreviewPreSignedURLs: false, requestedFiles: fileHandleAssociationList, }; return [4 /*yield*/, (0, SynapseClient_1.getFiles)(batchFileRequest, accessToken)]; case 1: files = _b.sent(); setError(undefined); setAssets(files.requestedFiles .filter(function (el) { return el.preSignedURL !== undefined; }) .map(function (el) { return el.preSignedURL; })); return [3 /*break*/, 3]; case 2: e_1 = _b.sent(); console.error('Error on get data', e_1); setError(e_1); return [3 /*break*/, 3]; case 3: return [2 /*return*/]; } }); }); }; getData(); }, [entityId, accessToken, queryResultBundle]); var tableIdColumnIndex = (0, queryUtils_1.getFieldIndex)(ExpectedColumns.TABLEID, queryResultBundle); var countSqlColumnIndex = (0, queryUtils_1.getFieldIndex)(ExpectedColumns.COUNT_SQL, queryResultBundle); var titleColumnIndex = (0, queryUtils_1.getFieldIndex)(ExpectedColumns.TITLE, queryResultBundle); var summaryColumnIndex = (0, queryUtils_1.getFieldIndex)(ExpectedColumns.SUMMARY, queryResultBundle); var linkColumnIndex = (0, queryUtils_1.getFieldIndex)(ExpectedColumns.LINK, queryResultBundle); return (react_1.default.createElement("div", { className: "Goals" + (showDesktop ? '__Desktop' : '') }, error && react_1.default.createElement(ErrorBanner_1.ErrorBanner, { error: error }), queryResultBundle === null || queryResultBundle === void 0 ? void 0 : queryResultBundle.queryResult.queryResults.rows.map(function (el, index) { var _a; var values = el.values; var tableId = tableIdColumnIndex > -1 ? values[tableIdColumnIndex] : undefined; var countSql; if (countSqlColumnIndex > -1 && values[countSqlColumnIndex]) { countSql = values[countSqlColumnIndex]; } else if (tableId) { countSql = "SELECT * FROM " + tableId; } var title = values[titleColumnIndex]; var summary = values[summaryColumnIndex]; var link = values[linkColumnIndex]; // assume that we recieve assets in order of rows and there is an asset for each item // can revisit if this isn't the case. var asset = (_a = assets === null || assets === void 0 ? void 0 : assets[index]) !== null && _a !== void 0 ? _a : ''; var goalsDataProps = { countSql: countSql, title: title, summary: summary, link: link, asset: asset, }; return showDesktop ? (react_1.default.createElement(Goals_Desktop_1.default, (0, tslib_1.__assign)({}, goalsDataProps))) : (react_1.default.createElement(Goals_Mobile_1.default, (0, tslib_1.__assign)({}, goalsDataProps))); }))); }; exports.Goals = Goals; exports.default = exports.Goals; //# sourceMappingURL=Goals.js.map