UNPKG

huge-table

Version:

Table component to handle huge sets of data, based on Facebook's FixedDataTable

152 lines (120 loc) 5.67 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; exports.handleArrayOfData = handleArrayOfData; exports.getComponentDataType = getComponentDataType; exports.getComponentContent = getComponentContent; exports.generateChildCellData = generateChildCellData; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _ImageCell = require('./ImageCell'); var _UrlCell = require('./UrlCell'); var _TextCell = require('./TextCell'); var _constants = require('./constants'); var Constants = _interopRequireWildcard(_constants); var _CellExpander = require('./CellExpander'); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function handleArrayOfData(_ref) { var columnDataType = _ref.columnDataType, cellData = _ref.cellData, width = _ref.width, height = _ref.height, key = _ref.key, columnKey = _ref.columnKey, rowIndex = _ref.rowIndex, mixedContentImage = _ref.mixedContentImage, cellCustomRenderer = _ref.cellCustomRenderer, disableClickEvents = _ref.disableClickEvents; var childrenCellData = generateChildCellData(cellData); var properties = { disableClickEvents: disableClickEvents, columnDataType: columnDataType, cellData: childrenCellData[0], width: width, key: key, columnKey: columnKey, mixedContentImage: mixedContentImage, height: height, rowIndex: rowIndex }; if (childrenCellData.length === 1) { return cellCustomRenderer(properties); } else { return _react2.default.createElement( _CellExpander.CellExpander, { firstElement: cellCustomRenderer(properties), totalRows: properties.height, rowIndex: properties.rowIndex }, childrenCellData.map(function (cellData, key) { return cellCustomRenderer(_extends({}, properties, { cellData: cellData, key: key })); }) ); } } function getComponentDataType(_ref2) { var columnDataType = _ref2.columnDataType, cellData = _ref2.cellData, width = _ref2.width, height = _ref2.height, key = _ref2.key, columnKey = _ref2.columnKey, mixedContentImage = _ref2.mixedContentImage, _ref2$cellCustomRende = _ref2.cellCustomRenderer, cellCustomRenderer = _ref2$cellCustomRende === undefined ? getComponentContent : _ref2$cellCustomRende, cellStyles = _ref2.cellStyles, disableClickEvents = _ref2.disableClickEvents, rowIndex = _ref2.rowIndex; if (!columnDataType) { return null; } var props = { cellStyles: cellStyles, columnDataType: columnDataType, cellData: cellData, key: key, columnKey: columnKey, mixedContentImage: mixedContentImage, width: width, height: height, rowIndex: rowIndex, disableClickEvents: disableClickEvents }; // console.log('%cLogging-----props.height in cellutils- ==', 'color: blue; font-size:16px;', props.rowIndex); if (Array.isArray(cellData.main)) { return handleArrayOfData(_extends({}, props, { cellCustomRenderer: cellCustomRenderer })); } else { return cellCustomRenderer(props); } } function getComponentContent(_ref3) { var columnDataType = _ref3.columnDataType, cellData = _ref3.cellData, width = _ref3.width, key = _ref3.key, columnKey = _ref3.columnKey, mixedContentImage = _ref3.mixedContentImage, _ref3$disableClickEve = _ref3.disableClickEvents, disableClickEvents = _ref3$disableClickEve === undefined ? false : _ref3$disableClickEve; // eslint-disable-line react/no-multi-comp switch (columnDataType) { case Constants.ColumnTypes.URL: return _react2.default.createElement(_UrlCell.UrlCell, { cellData: cellData, width: width, key: key, columnKey: columnKey, disabled: disableClickEvents }); case Constants.ColumnTypes.IMAGE: return _react2.default.createElement(_ImageCell.ImageCell, { cellData: cellData, width: width, key: key, disabled: disableClickEvents, columnKey: columnKey, mixedContentImage: mixedContentImage }); case Constants.ColumnTypes.AUTO: if (cellData.main && cellData.main.src) { return _react2.default.createElement(_ImageCell.ImageCell, { cellData: cellData, width: width, key: key, disabled: disableClickEvents, columnKey: columnKey, mixedContentImage: mixedContentImage }); } else { return _react2.default.createElement(_TextCell.TextCell, { cellData: cellData, width: width, key: key, columnKey: columnKey }); } default: return _react2.default.createElement(_TextCell.TextCell, { cellData: cellData, width: width, key: key, columnKey: columnKey, disabled: disableClickEvents }); } } function generateChildCellData(cellData) { if (!cellData || !cellData.main) { return null; } var results = []; cellData.main.forEach(function (value, i) { var obj = {}; Object.keys(cellData).forEach(function (property) { if (Array.isArray(cellData[property])) { obj[property] = cellData[property][i]; } else { obj[property] = cellData[property]; } }); results.push(obj); }); return results; }