/* eslint-disable react/no-danger */ import React from 'react'; import PropTypes from 'prop-types'; import SliceHeader from './SliceHeader'; import ChartContainer from '../../chart/ChartContainer'; import '../../../stylesheets/dashboard.css'; const propTypes = { timeout: PropTypes.number, datasource: PropTypes.object, isLoading: PropTypes.bool, isExpanded: PropTypes.bool, widgetHeight: PropTypes.number, widgetWidth: PropTypes.number, exploreChartUrl: PropTypes.string, exportCSVUrl: PropTypes.string, slice: PropTypes.object, chartKey: PropTypes.string, formData: PropTypes.object, filters: PropTypes.object, forceRefresh: PropTypes.func, removeSlice: PropTypes.func, updateSliceName: PropTypes.func, toggleExpandSlice: PropTypes.func, addFilter: PropTypes.func, getFilters: PropTypes.func, clearFilter: PropTypes.func, removeFilter: PropTypes.func, }; const defaultProps = { forceRefresh: () => ({}), removeSlice: () => ({}), updateSliceName: () => ({}), toggleExpandSlice: () => ({}), addFilter: () => ({}), getFilters: () => ({}), clearFilter: () => ({}), removeFilter: () => ({}), }; class GridCell extends React.PureComponent { constructor(props) { super(props); const sliceId = this.props.slice.slice_id; this.addFilter = this.props.addFilter.bind(this, sliceId); this.getFilters = this.props.getFilters.bind(this, sliceId); this.clearFilter = this.props.clearFilter.bind(this, sliceId); this.removeFilter = this.props.removeFilter.bind(this, sliceId); } getDescriptionId(slice) { return 'description_' + slice.slice_id; } getHeaderId(slice) { return 'header_' + slice.slice_id; } width() { return this.props.widgetWidth - 10; } height(slice) { const widgetHeight = this.props.widgetHeight; const headerId = this.getHeaderId(slice); const descriptionId = this.getDescriptionId(slice); const headerHeight = this.refs[headerId] ? this.refs[headerId].offsetHeight : 30; let descriptionHeight = 0; if (this.props.isExpanded && this.refs[descriptionId]) { descriptionHeight = this.refs[descriptionId].offsetHeight + 10; } return widgetHeight - headerHeight - descriptionHeight; } render() { const { exploreChartUrl, exportCSVUrl, isExpanded, isLoading, removeSlice, updateSliceName, toggleExpandSlice, forceRefresh, chartKey, slice, datasource, formData, timeout, } = this.props; return (
); } } GridCell.propTypes = propTypes; GridCell.defaultProps = defaultProps; export default GridCell;