import * as React from 'react'; export type SetTransform = (a: any) => void; export interface Props { config?: any; transforms?: any; setTransforms?: SetTransform; } export interface State {} export class ComponentTableTransformColumn extends React.Component< Props, State > { constructor(props) { super(props); } handleOrderChange(evt) { evt.preventDefault(); let config = this.props.config, transforms = this.props.transforms, orderColumn = config.columnName, orderMethod = 'ASC'; if (transforms.order) { if (transforms.order.column === config.columnName) { orderMethod = transforms.order.method === 'ASC' ? 'DESC' : 'ASC'; } } transforms.order = { column: orderColumn, method: orderMethod, }; this.props.setTransforms(transforms); this.setState({ updatedAt: new Date() }); } handleInputChange(evt) { const config = this.props.config, transforms = this.props.transforms, value = evt.target.value; if (value) { transforms.filters[config.columnName] = { column: config.columnName, value: value, }; } else { delete transforms.filters[config.columnName]; } this.props.setTransforms(transforms); this.setState({ updatedAt: new Date() }); } render() { let content, className = null, classNameArray = [], nameClassNameArray = ['d-flex', 'flex-row'], nameElmt = null, filterInput = null, config = this.props.config, transforms = this.props.transforms, filter = transforms.filters[config.columnName], orderUrl = `?order_column=${config.columnName}`, sortSymbol = null, filterValue = ''; if (config.isMetric) { classNameArray.push('col-metric'); } if (transforms.order && transforms.order.column === config.columnName) { nameClassNameArray.push('active'); if (transforms.order.method) { if (transforms.order.method == 'ASC') { sortSymbol = ; } else { sortSymbol = ; } orderUrl = orderUrl + `&order_method=${transforms.order.method}`; } } if (filter) { filterValue = filter.value; } if (config.dataType) { switch (config.dataType) { case 'categorical': filterInput = ( ); break; default: break; } } if (config.isSortable) { nameElmt = (