mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 00:55:47 -06:00
Removes the functionality of being able to collapse/expand the logs container. When both graph and table are collapsed and you reload the page then the start page should not be displayed. When both graph and table are collapsed and you reload the page then the graph and table panels should be displayed. Fix so that reducer tests are run. On of the test used fit() instead of it() which had the consequence of only 1 reducer test was executed and the rest skipped. There was some failing tests that now is updated and now passes. Fixes #17098
88 lines
2.6 KiB
TypeScript
88 lines
2.6 KiB
TypeScript
import React, { PureComponent } from 'react';
|
|
import { hot } from 'react-hot-loader';
|
|
import { connect } from 'react-redux';
|
|
import { TimeRange, TimeZone, AbsoluteTimeRange } from '@grafana/ui';
|
|
|
|
import { ExploreId, ExploreItemState } from 'app/types/explore';
|
|
import { StoreState } from 'app/types';
|
|
|
|
import { toggleGraph, changeTime } from './state/actions';
|
|
import Graph from './Graph';
|
|
import Panel from './Panel';
|
|
import { getTimeZone } from '../profile/state/selectors';
|
|
import { toUtc, dateTime } from '@grafana/ui/src/utils/moment_wrapper';
|
|
|
|
interface GraphContainerProps {
|
|
exploreId: ExploreId;
|
|
graphResult?: any[];
|
|
loading: boolean;
|
|
range: TimeRange;
|
|
timeZone: TimeZone;
|
|
showingGraph: boolean;
|
|
showingTable: boolean;
|
|
split: boolean;
|
|
toggleGraph: typeof toggleGraph;
|
|
changeTime: typeof changeTime;
|
|
width: number;
|
|
}
|
|
|
|
export class GraphContainer extends PureComponent<GraphContainerProps> {
|
|
onClickGraphButton = () => {
|
|
this.props.toggleGraph(this.props.exploreId, this.props.showingGraph);
|
|
};
|
|
|
|
onChangeTime = (absRange: AbsoluteTimeRange) => {
|
|
const { exploreId, timeZone, changeTime } = this.props;
|
|
const range = {
|
|
from: timeZone.isUtc ? toUtc(absRange.from) : dateTime(absRange.from),
|
|
to: timeZone.isUtc ? toUtc(absRange.to) : dateTime(absRange.to),
|
|
};
|
|
|
|
changeTime(exploreId, range);
|
|
};
|
|
|
|
render() {
|
|
const { exploreId, graphResult, loading, showingGraph, showingTable, range, split, width, timeZone } = this.props;
|
|
const graphHeight = showingGraph && showingTable ? 200 : 400;
|
|
const timeRange = { from: range.from.valueOf(), to: range.to.valueOf() };
|
|
|
|
return (
|
|
<Panel label="Graph" collapsible isOpen={showingGraph} loading={loading} onToggle={this.onClickGraphButton}>
|
|
{graphResult && (
|
|
<Graph
|
|
data={graphResult}
|
|
height={graphHeight}
|
|
id={`explore-graph-${exploreId}`}
|
|
onChangeTime={this.onChangeTime}
|
|
range={timeRange}
|
|
timeZone={timeZone}
|
|
split={split}
|
|
width={width}
|
|
/>
|
|
)}
|
|
</Panel>
|
|
);
|
|
}
|
|
}
|
|
|
|
function mapStateToProps(state: StoreState, { exploreId }) {
|
|
const explore = state.explore;
|
|
const { split } = explore;
|
|
const item: ExploreItemState = explore[exploreId];
|
|
const { graphResult, graphIsLoading, range, showingGraph, showingTable } = item;
|
|
const loading = graphIsLoading;
|
|
return { graphResult, loading, range, showingGraph, showingTable, split, timeZone: getTimeZone(state.user) };
|
|
}
|
|
|
|
const mapDispatchToProps = {
|
|
toggleGraph,
|
|
changeTime,
|
|
};
|
|
|
|
export default hot(module)(
|
|
connect(
|
|
mapStateToProps,
|
|
mapDispatchToProps
|
|
)(GraphContainer)
|
|
);
|