huge-table
Version:
Table component to handle huge sets of data, based on Facebook's FixedDataTable
152 lines (120 loc) • 5.67 kB
JavaScript
'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;
}