UNPKG

3.28 kBJavaScriptView Raw
1import React from 'react';
2
3import { ImageCell } from './ImageCell';
4import { UrlCell } from './UrlCell';
5import { TextCell } from './TextCell';
6import * as Constants from './constants';
7import { CellExpander } from './CellExpander';
8
9export function handleArrayOfData({columnDataType, cellData, width, height, key, columnKey,rowIndex, mixedContentImage, cellCustomRenderer, disableClickEvents}) {
10 const childrenCellData = generateChildCellData(cellData);
11
12 const properties = {
13 disableClickEvents,
14 columnDataType,
15 cellData: childrenCellData[0],
16 width,
17 key,
18 columnKey,
19 mixedContentImage,
20 height,
21 rowIndex,
22 };
23
24 if (childrenCellData.length === 1) {
25 return cellCustomRenderer(properties);
26 } else {
27 return (
28 <CellExpander firstElement={cellCustomRenderer(properties)} totalRows={properties.height} rowIndex={properties.rowIndex}>
29 {childrenCellData.map((cellData, key) => cellCustomRenderer({...properties, cellData, key}))}
30 </CellExpander>
31 );
32 }
33}
34
35export function getComponentDataType ({
36 columnDataType,
37 cellData,
38 width, height, key, columnKey,
39 mixedContentImage,
40 cellCustomRenderer = getComponentContent,
41 cellStyles,
42 disableClickEvents,
43 rowIndex}) {
44 if (!columnDataType) {
45 return null;
46 }
47
48 const props = {cellStyles, columnDataType, cellData, key, columnKey, mixedContentImage, width, height,rowIndex, disableClickEvents };// console.log('%cLogging-----props.height in cellutils- ==', 'color: blue; font-size:16px;', props.rowIndex);
49
50 if (Array.isArray(cellData.main)) {
51 return handleArrayOfData({...props, cellCustomRenderer});
52 } else {
53 return cellCustomRenderer(props);
54 }
55}
56
57export function getComponentContent({columnDataType, cellData, width, key, columnKey, mixedContentImage, disableClickEvents = false }) { // eslint-disable-line react/no-multi-comp
58 switch(columnDataType) {
59 case Constants.ColumnTypes.URL:
60 return <UrlCell cellData={cellData} width={width} key={key} columnKey={columnKey} disabled={disableClickEvents} />;
61
62 case Constants.ColumnTypes.IMAGE:
63 return <ImageCell cellData={cellData} width={width} key={key} disabled={disableClickEvents} columnKey={columnKey} mixedContentImage={mixedContentImage} />;
64
65 case Constants.ColumnTypes.AUTO:
66 if (cellData.main && cellData.main.src) {
67 return <ImageCell cellData={cellData} width={width} key={key} disabled={disableClickEvents} columnKey={columnKey} mixedContentImage={mixedContentImage} />;
68 } else {
69 return <TextCell cellData={cellData} width={width} key={key} columnKey={columnKey} />;
70 }
71
72 default:
73 return <TextCell cellData={cellData} width={width} key={key} columnKey={columnKey} disabled={disableClickEvents} />;
74 }
75}
76
77export function generateChildCellData (cellData) {
78 if (!cellData || !cellData.main) {
79 return null;
80 }
81
82 const results = [];
83
84 cellData.main.forEach((value, i) => {
85 const obj = {};
86
87 Object
88 .keys(cellData)
89 .forEach((property) => {
90
91 if (Array.isArray(cellData[property])) {
92 obj[property] = cellData[property][i];
93 } else {
94 obj[property] = cellData[property];
95 }
96 });
97
98 results.push(obj);
99 });
100
101 return results;
102}