in web/ui/react-app/src/pages/graph/Panel.tsx [221:316]
render() {
const { pastQueries, metricNames, options } = this.props;
return (
<div className="panel">
<Row>
<Col>
<ExpressionInput
value={this.state.exprInputValue}
onExpressionChange={this.handleExpressionChange}
executeQuery={this.executeQuery}
loading={this.state.loading}
autocompleteSections={{
'Query History': pastQueries,
'Metric Names': metricNames,
}}
/>
</Col>
</Row>
<Row>
<Col>{this.state.error && <Alert color="danger">{this.state.error}</Alert>}</Col>
</Row>
<Row>
<Col>
<Nav tabs>
<NavItem>
<NavLink
className={options.type === 'table' ? 'active' : ''}
onClick={() => this.handleChangeType(PanelType.Table)}
>
Table
</NavLink>
</NavItem>
<NavItem>
<NavLink
className={options.type === 'graph' ? 'active' : ''}
onClick={() => this.handleChangeType(PanelType.Graph)}
>
Graph
</NavLink>
</NavItem>
{!this.state.loading && !this.state.error && this.state.stats && <QueryStatsView {...this.state.stats} />}
</Nav>
<TabContent activeTab={options.type}>
<TabPane tabId="table">
{options.type === 'table' && (
<>
<div className="table-controls">
<TimeInput
time={options.endTime}
useLocalTime={this.props.useLocalTime}
range={options.range}
placeholder="Evaluation time"
onChangeTime={this.handleChangeEndTime}
/>
</div>
<DataTable data={this.state.data} />
</>
)}
</TabPane>
<TabPane tabId="graph">
{this.props.options.type === 'graph' && (
<>
<GraphControls
range={options.range}
endTime={options.endTime}
useLocalTime={this.props.useLocalTime}
resolution={options.resolution}
stacked={options.stacked}
onChangeRange={this.handleChangeRange}
onChangeEndTime={this.handleChangeEndTime}
onChangeResolution={this.handleChangeResolution}
onChangeStacking={this.handleChangeStacking}
/>
<GraphTabContent
data={this.state.data}
stacked={options.stacked}
useLocalTime={this.props.useLocalTime}
lastQueryParams={this.state.lastQueryParams}
/>
</>
)}
</TabPane>
</TabContent>
</Col>
</Row>
<Row>
<Col>
<Button className="float-right" color="link" onClick={this.props.removePanel} size="sm">
Remove Panel
</Button>
</Col>
</Row>
</div>
);
}
}