UNPKG

terra-clinical-data-grid

Version:

An organizational component that renders a collection of data in a grid-like format.

83 lines (71 loc) 2.12 kB
import React from 'react'; import DataGrid from 'terra-clinical-data-grid'; import classNames from 'classnames/bind'; import ContentCellLayout from '../ContentCellLayout'; import styles from '../ClinicalDataGridCommon.test.module.scss'; const cx = classNames.bind(styles); const pinnedColumns = [ { id: 'Column-0', text: 'Patient', }, ]; const overflowColumns = [ { id: 'Column-1', text: 'Height', }, { id: 'Column-2', text: 'Weight', }, { id: 'Column-3', text: 'Diagnoses', }, ]; const patientList = [ ['Bob', '72 in', '79 kg', 'Chest pain'], ['Jim', '75 in', '87 kg', 'Back pain'], ['Sue', '67 in', '58 kg', 'Headache'], ]; class LabeledDataGrid extends React.Component { static getCellText(rowIndex, colIndex) { return patientList[rowIndex][colIndex]; } static buildRows(sectionId, num) { const rows = (new Array(num)).fill().map((rowVal, rowIndex) => ({ id: `${sectionId}-${rowIndex}`, ariaLabel: `Row ${sectionId}-${rowIndex}`, cells: ((new Array(5).fill(0)).map((cellVal, cellIndex) => ({ columnKey: `Column-${cellIndex}`, colIndex: cellIndex }))).map(columnInfo => ({ columnId: columnInfo.columnKey, component: <ContentCellLayout text={LabeledDataGrid.getCellText(rowIndex, columnInfo.colIndex)} label={`${sectionId}-${rowIndex}-${columnInfo.columnKey}`} />, })), })); return rows; } static buildSection(sectionId, numberOfRows) { return { id: sectionId, rows: LabeledDataGrid.buildRows(sectionId, numberOfRows), }; } render() { return ( <div id="label-hidden-data-grid" className={cx('content-wrapper')}> <DataGrid id="label-hidden" pinnedColumns={pinnedColumns} overflowColumns={overflowColumns} sections={[ LabeledDataGrid.buildSection('section_0', 3), ]} fill labelRef="Patient Data Grid Label" descriptionRef="This is a description for a data grid with patient information" /> </div> ); } } export default LabeledDataGrid;