synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
72 lines • 4.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FeaturedToolsList = void 0;
var tslib_1 = require("tslib");
var utils_1 = require("../../../utils");
var queryUtils_1 = require("../../../utils/functions/queryUtils");
var useGetQueryResultBundle_1 = (0, tslib_1.__importDefault)(require("../../../utils/hooks/SynapseAPI/useGetQueryResultBundle"));
var react_1 = (0, tslib_1.__importStar)(require("react"));
var FeaturedToolCard_1 = require("./FeaturedToolCard");
var ErrorBanner_1 = require("../../ErrorBanner");
var SynapseContext_1 = require("../../../utils/SynapseContext");
/**
* Display a set of FeaturedToolCards (driven by a Table/View). Driven by the following annotations/column names:
* 'id', 'name', 'type', and 'description'.
*/
var FeaturedToolsList = function (_a) {
var entityId = _a.entityId, toolDetailPageURL = _a.toolDetailPageURL, _b = _a.idColumnName, idColumnName = _b === void 0 ? 'id' : _b, _c = _a.nameColumnName, nameColumnName = _c === void 0 ? 'name' : _c, _d = _a.descriptionColumnName, descriptionColumnName = _d === void 0 ? 'description' : _d, _e = _a.typeColumnName, typeColumnName = _e === void 0 ? 'type' : _e, _f = _a.dateColumnName, dateColumnName = _f === void 0 ? 'date' : _f;
var sql = "SELECT \"" + idColumnName + "\", \"" + nameColumnName + "\", \"" + descriptionColumnName + "\", \"" + typeColumnName + "\", \"" + dateColumnName + "\" FROM " + entityId + " ORDER BY ROW_ID DESC LIMIT 3";
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: sql,
},
};
var accessToken = (0, SynapseContext_1.useSynapseContext)().accessToken;
var _g = (0, react_1.useState)([]), tools = _g[0], setTools = _g[1];
var _h = (0, react_1.useState)(), error = _h[0], setError = _h[1];
var _j = (0, useGetQueryResultBundle_1.default)(queryBundleRequest), queryResultBundle = _j.data, queryError = _j.error;
(0, react_1.useEffect)(function () {
var getData = function () {
var _a;
try {
var idIndex_1 = (0, queryUtils_1.getFieldIndex)(idColumnName, queryResultBundle);
var nameColumnIndex_1 = (0, queryUtils_1.getFieldIndex)(nameColumnName, queryResultBundle);
var typeColumnIndex_1 = (0, queryUtils_1.getFieldIndex)(typeColumnName, queryResultBundle);
var descriptionColumnIndex_1 = (0, queryUtils_1.getFieldIndex)(descriptionColumnName, queryResultBundle);
var dateColumnIndex_1 = (0, queryUtils_1.getFieldIndex)(dateColumnName, queryResultBundle);
var tools_1 = (_a = queryResultBundle === null || queryResultBundle === void 0 ? void 0 : queryResultBundle.queryResult.queryResults.rows.map(function (row) {
return {
name: row.values[nameColumnIndex_1],
description: row.values[descriptionColumnIndex_1],
type: row.values[typeColumnIndex_1],
id: row.values[idIndex_1],
date: row.values[dateColumnIndex_1]
};
})) !== null && _a !== void 0 ? _a : [];
if (queryError) {
throw queryError;
}
if (tools_1.length === 0) {
// wait for data to load
return;
}
setTools(tools_1);
}
catch (error) {
console.error(error);
setError(error);
}
};
getData();
}, [entityId, accessToken, queryResultBundle, queryError, idColumnName, nameColumnName, typeColumnName, descriptionColumnName, dateColumnName]);
return error ? (react_1.default.createElement(ErrorBanner_1.ErrorBanner, { error: error })) : (react_1.default.createElement("div", { className: "FeaturedToolList" }, tools.map(function (tool) {
return (react_1.default.createElement(FeaturedToolCard_1.FeaturedToolCard, { key: tool.id, name: tool.name, type: tool.type, description: tool.description, id: tool.id, date: tool.date, toolDetailPageURL: toolDetailPageURL }));
})));
};
exports.FeaturedToolsList = FeaturedToolsList;
exports.default = exports.FeaturedToolsList;
//# sourceMappingURL=FeaturedToolsList.js.map