Explore: Add tracing switch (#25539)

* Add tracing switch to explore

* Prettify
This commit is contained in:
Andrej Ocenas
2020-06-11 14:54:02 +02:00
committed by GitHub
parent 85d5d8a0e6
commit 40b3473a10
2 changed files with 90 additions and 23 deletions
@@ -0,0 +1,68 @@
import React from 'react';
import { shallow, ShallowWrapper } from 'enzyme';
import { UnConnectedExploreToolbar } from './ExploreToolbar';
import { ExploreMode } from '@grafana/data';
import { ExploreId } from '../../types';
import { ToggleButtonGroup } from '@grafana/ui';
jest.mock('./state/selectors', () => {
return {
__esModule: true,
getExploreDatasources: () => [] as any,
};
});
describe('ExploreToolbar', () => {
it('displays correct modes', () => {
let wrapper = shallow(createToolbar([ExploreMode.Tracing, ExploreMode.Logs]));
checkModes(wrapper, ['Logs', 'Tracing']);
wrapper = shallow(createToolbar([ExploreMode.Logs]));
checkModes(wrapper, []);
wrapper = shallow(createToolbar([ExploreMode.Logs, ExploreMode.Tracing, ExploreMode.Metrics]));
checkModes(wrapper, ['Metrics', 'Logs', 'Tracing']);
});
});
function checkModes(wrapper: ShallowWrapper, modes: string[]) {
expect(
wrapper
.find(ToggleButtonGroup)
.children()
.map(node => node.children().text())
).toEqual(modes);
}
function createToolbar(supportedModes: ExploreMode[]) {
return (
<UnConnectedExploreToolbar
datasourceMissing={false}
loading={false}
range={{} as any}
timeZone={'UTC'}
splitted={false}
syncedTimes={false}
supportedModes={supportedModes}
selectedMode={ExploreMode.Tracing}
hasLiveOption={false}
isLive={false}
isPaused={false}
queries={[]}
containerWidth={0}
changeDatasource={(() => {}) as any}
clearAll={(() => {}) as any}
cancelQueries={(() => {}) as any}
runQueries={(() => {}) as any}
closeSplit={(() => {}) as any}
split={(() => {}) as any}
syncTimes={(() => {}) as any}
changeRefreshInterval={(() => {}) as any}
changeMode={(() => {}) as any}
updateLocation={(() => {}) as any}
setDashboardQueriesToUpdateOnLoad={(() => {}) as any}
exploreId={ExploreId.left}
onChangeTime={(() => {}) as any}
/>
);
}
+22 -23
View File
@@ -6,21 +6,20 @@ import classNames from 'classnames';
import { css } from 'emotion'; import { css } from 'emotion';
import { ExploreId, ExploreItemState } from 'app/types/explore'; import { ExploreId, ExploreItemState } from 'app/types/explore';
import { ToggleButtonGroup, ToggleButton, Tooltip, LegacyForms, SetInterval, Icon, IconButton } from '@grafana/ui'; import { Icon, IconButton, LegacyForms, SetInterval, ToggleButton, ToggleButtonGroup, Tooltip } from '@grafana/ui';
const { ButtonSelect } = LegacyForms; import { DataQuery, ExploreMode, RawTimeRange, TimeRange, TimeZone } from '@grafana/data';
import { RawTimeRange, TimeZone, TimeRange, DataQuery, ExploreMode } from '@grafana/data';
import { DataSourcePicker } from 'app/core/components/Select/DataSourcePicker'; import { DataSourcePicker } from 'app/core/components/Select/DataSourcePicker';
import { StoreState } from 'app/types/store'; import { StoreState } from 'app/types/store';
import { import {
changeDatasource,
cancelQueries, cancelQueries,
changeDatasource,
changeMode,
changeRefreshInterval,
clearQueries, clearQueries,
splitClose,
runQueries, runQueries,
splitClose,
splitOpen, splitOpen,
syncTimes, syncTimes,
changeRefreshInterval,
changeMode,
} from './state/actions'; } from './state/actions';
import { updateLocation } from 'app/core/actions'; import { updateLocation } from 'app/core/actions';
import { getTimeZone } from '../profile/state/selectors'; import { getTimeZone } from '../profile/state/selectors';
@@ -34,6 +33,8 @@ import { LiveTailControls } from './useLiveTailControls';
import { getExploreDatasources } from './state/selectors'; import { getExploreDatasources } from './state/selectors';
import { setDashboardQueriesToUpdateOnLoad } from '../dashboard/state/reducers'; import { setDashboardQueriesToUpdateOnLoad } from '../dashboard/state/reducers';
const { ButtonSelect } = LegacyForms;
const getStyles = memoizeOne(() => { const getStyles = memoizeOne(() => {
return { return {
liveTailButtons: css` liveTailButtons: css`
@@ -238,22 +239,20 @@ export class UnConnectedExploreToolbar extends PureComponent<Props> {
{showModeToggle ? ( {showModeToggle ? (
<div className="query-type-toggle"> <div className="query-type-toggle">
<ToggleButtonGroup label="" transparent={true}> <ToggleButtonGroup label="" transparent={true}>
<ToggleButton {[ExploreMode.Metrics, ExploreMode.Logs, ExploreMode.Tracing]
key={ExploreMode.Metrics} .filter(mode => supportedModes.includes(mode))
value={ExploreMode.Metrics} .map(mode => {
onChange={this.onModeChange} return (
selected={selectedMode === ExploreMode.Metrics} <ToggleButton
> key={mode}
{'Metrics'} value={mode}
</ToggleButton> onChange={this.onModeChange}
<ToggleButton selected={selectedMode === mode}
key={ExploreMode.Logs} >
value={ExploreMode.Logs} {mode}
onChange={this.onModeChange} </ToggleButton>
selected={selectedMode === ExploreMode.Logs} );
> })}
{'Logs'}
</ToggleButton>
</ToggleButtonGroup> </ToggleButtonGroup>
</div> </div>
) : null} ) : null}