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