| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import React, { PureComponent } from 'react';
- import { hot } from 'react-hot-loader';
- import { connect } from 'react-redux';
- import { ExploreId, ExploreItemState } from 'app/types/explore';
- import { StoreState } from 'app/types';
- import { toggleTable } from './state/actions';
- import Table from './Table';
- import Panel from './Panel';
- import TableModel from 'app/core/table_model';
- interface TableContainerProps {
- exploreId: ExploreId;
- loading: boolean;
- onClickCell: (key: string, value: string) => void;
- showingTable: boolean;
- tableResult?: TableModel;
- toggleTable: typeof toggleTable;
- }
- export class TableContainer extends PureComponent<TableContainerProps> {
- onClickTableButton = () => {
- this.props.toggleTable(this.props.exploreId, this.props.showingTable);
- };
- render() {
- const { loading, onClickCell, showingTable, tableResult } = this.props;
- return (
- <Panel label="Table" loading={loading} collapsible isOpen={showingTable} onToggle={this.onClickTableButton}>
- {tableResult && <Table data={tableResult} loading={loading} onClickCell={onClickCell} />}
- </Panel>
- );
- }
- }
- function mapStateToProps(state: StoreState, { exploreId }) {
- const explore = state.explore;
- const item: ExploreItemState = explore[exploreId];
- const { tableIsLoading, showingTable, tableResult } = item;
- const loading = tableIsLoading;
- return { loading, showingTable, tableResult };
- }
- const mapDispatchToProps = {
- toggleTable,
- };
- export default hot(module)(
- connect(
- mapStateToProps,
- mapDispatchToProps
- )(TableContainer)
- );
|