synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
127 lines • 7.85 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SynapseTableCell = void 0;
var tslib_1 = require("tslib");
var react_fontawesome_1 = require("@fortawesome/react-fontawesome");
var lodash_es_1 = require("lodash-es");
var react_1 = (0, tslib_1.__importDefault)(require("react"));
var getEndpoint_1 = require("../../utils/functions/getEndpoint");
var SynapseConstants_1 = require("../../utils/SynapseConstants");
var synapseTypes_1 = require("../../utils/synapseTypes");
var DirectDownload_1 = (0, tslib_1.__importDefault)(require("../DirectDownload"));
var EntityIdList_1 = (0, tslib_1.__importDefault)(require("../EntityIdList"));
var EntityLink_1 = require("../EntityLink");
var GenericCard_1 = require("../GenericCard");
var SynapseTableConstants_1 = require("../table/SynapseTableConstants");
var UserCard_1 = (0, tslib_1.__importDefault)(require("../UserCard"));
var ElementWithTooltip_1 = require("../widgets/ElementWithTooltip");
var SynapseTableCell = function (_a) {
var columnType = _a.columnType, columnValue = _a.columnValue, isBold = _a.isBold, mapEntityIdToHeader = _a.mapEntityIdToHeader, mapUserIdToHeader = _a.mapUserIdToHeader, columnLinkConfig = _a.columnLinkConfig, rowIndex = _a.rowIndex, columnName = _a.columnName, selectColumns = _a.selectColumns, columnModels = _a.columnModels, tableEntityId = _a.tableEntityId, rowData = _a.rowData;
var isShortString = function (s, maxCharCount) {
if (maxCharCount === void 0) { maxCharCount = 20; }
return !s || s.length <= maxCharCount;
};
if (!columnValue) {
return (react_1.default.createElement("p", { className: "SRC-center-text SRC-inactive" },
" ",
SynapseTableConstants_1.NOT_SET_DISPLAY_VALUE));
}
if (columnLinkConfig) {
return (react_1.default.createElement(GenericCard_1.SynapseCardLabel, { value: columnValue, columnName: columnName, selectColumns: selectColumns, columnModels: columnModels, isHeader: false, labelLink: columnLinkConfig, rowData: rowData }));
}
switch (columnType) {
case synapseTypes_1.ColumnType.ENTITYID:
if (Object.prototype.hasOwnProperty.call(mapEntityIdToHeader, columnValue)) {
return (react_1.default.createElement(EntityLink_1.EntityLink, { entity: mapEntityIdToHeader[columnValue], className: "" + isBold }));
}
break;
case synapseTypes_1.ColumnType.DATE_LIST: {
var jsonData_1 = JSON.parse(columnValue);
return (react_1.default.createElement("p", null,
jsonData_1.map(function (val, index) {
return (react_1.default.createElement("span", { key: index, className: isBold },
new Date(val).toLocaleString(),
index !== jsonData_1.length - 1 ? ', ' : ''));
}),
' '));
}
case synapseTypes_1.ColumnType.BOOLEAN_LIST: {
var jsonData_2 = JSON.parse(columnValue);
return (react_1.default.createElement("p", null, jsonData_2.map(function (val, index) {
return (react_1.default.createElement("span", { key: index, className: isBold },
val ? 'true' : 'false',
index !== jsonData_2.length - 1 ? ', ' : ''));
})));
}
case synapseTypes_1.ColumnType.FILEHANDLEID:
return (react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement(DirectDownload_1.default, { associatedObjectId: tableEntityId, associatedObjectType: synapseTypes_1.FileHandleAssociateType.TableEntity, fileHandleId: columnValue, displayFileName: true })));
case synapseTypes_1.ColumnType.ENTITYID_LIST: {
var jsonData = JSON.parse(columnValue);
return react_1.default.createElement(EntityIdList_1.default, { entityIdList: jsonData });
}
// handle other list types
case synapseTypes_1.ColumnType.STRING_LIST:
case synapseTypes_1.ColumnType.INTEGER_LIST:
case synapseTypes_1.ColumnType.USERID_LIST: {
var jsonData_3 = JSON.parse(columnValue);
return (react_1.default.createElement("p", null, jsonData_3.map(function (val, index) {
return (react_1.default.createElement("span", { key: val, className: isBold },
val,
index !== jsonData_3.length - 1 ? ', ' : ''));
})));
}
case synapseTypes_1.ColumnType.DATE:
return (react_1.default.createElement("p", { className: isBold }, new Date(Number(columnValue)).toLocaleString()));
case synapseTypes_1.ColumnType.USERID:
if (Object.prototype.hasOwnProperty.call(mapUserIdToHeader, columnValue)) {
var _b = mapUserIdToHeader[columnValue], ownerId = _b.ownerId, userName = _b.userName;
if (mapUserIdToHeader[columnValue].isIndividual === false) {
// isUserGroupHeader
var icon = userName === SynapseConstants_1.AUTHENTICATED_USERS ? 'globe-americas' : 'users';
if (userName === SynapseConstants_1.AUTHENTICATED_USERS) {
return (react_1.default.createElement("span", null,
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: icon }),
" All registered Synapse users"));
}
return (react_1.default.createElement("a", { target: "_blank", rel: "noopener noreferrer", href: getEndpoint_1.PRODUCTION_ENDPOINT_CONFIG.PORTAL + "#!Team:" + ownerId },
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: icon }),
" ",
userName));
}
else {
// isUserCard
return (react_1.default.createElement(UserCard_1.default, { userProfile: mapUserIdToHeader[columnValue], preSignedURL: mapUserIdToHeader[columnValue].clientPreSignedURL, size: 'SMALL USER CARD' }));
}
}
break;
case synapseTypes_1.ColumnType.STRING:
case synapseTypes_1.ColumnType.DOUBLE:
case synapseTypes_1.ColumnType.INTEGER:
case synapseTypes_1.ColumnType.BOOLEAN:
case synapseTypes_1.ColumnType.LINK:
case synapseTypes_1.ColumnType.LARGETEXT: {
var isShort = isShortString(columnValue);
if (isShort) {
return react_1.default.createElement("p", { className: isBold },
" ",
columnValue);
}
else {
return (react_1.default.createElement("div", { className: isBold },
react_1.default.createElement(ElementWithTooltip_1.ElementWithTooltip, { tooltipText: columnValue, callbackFn: lodash_es_1.noop, idForToolTip: columnName + "_" + rowIndex },
react_1.default.createElement("p", { className: isBold },
" ",
columnValue))));
}
}
default:
console.warn("ColumnType " + columnType + " has unspecified handler. Rendering the column value.");
return react_1.default.createElement("p", { className: isBold }, columnValue);
}
// We can reach this if we don't get a mapping of IDs to entities or principals.
// TODO: If we don't have a id:data mapping, we should render a component that can fetch the required data, rather than breaking from the case.
return react_1.default.createElement("p", { className: isBold }, columnValue);
};
exports.SynapseTableCell = SynapseTableCell;
//# sourceMappingURL=SynapseTableCell.js.map