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

127 lines 7.85 kB
"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