grafana/public/app/features/scenes/components/SceneTimePicker.tsx
Torkel Ödegaard 8d92417a16
Scenes: Improve typing of scene state to avoid type guards and casting (#52422)
* Trying to get rid of type guard but failing

* Improve typing of scene object state

* Fixed wrongly renamed event

* Tweaks
2022-07-19 17:46:49 +02:00

44 lines
1.3 KiB
TypeScript

import React from 'react';
import { RefreshPicker, ToolbarButtonRow } from '@grafana/ui';
import { TimePickerWithHistory } from 'app/core/components/TimePicker/TimePickerWithHistory';
import { SceneObjectBase } from '../core/SceneObjectBase';
import { SceneComponentProps, SceneObjectStatePlain } from '../core/types';
export interface SceneTimePickerState extends SceneObjectStatePlain {
hidePicker?: boolean;
}
export class SceneTimePicker extends SceneObjectBase<SceneTimePickerState> {
static Component = SceneTimePickerRenderer;
}
function SceneTimePickerRenderer({ model }: SceneComponentProps<SceneTimePicker>) {
const { hidePicker } = model.useState();
const timeRange = model.getTimeRange();
const timeRangeState = timeRange.useState();
if (hidePicker) {
return null;
}
return (
<ToolbarButtonRow>
<TimePickerWithHistory
value={timeRangeState}
onChange={timeRange.onTimeRangeChange}
timeZone={'browser'}
fiscalYearStartMonth={0}
onMoveBackward={() => {}}
onMoveForward={() => {}}
onZoom={() => {}}
onChangeTimeZone={() => {}}
onChangeFiscalYearStartMonth={() => {}}
/>
<RefreshPicker onRefresh={timeRange.onRefresh} onIntervalChanged={timeRange.onIntervalChanged} />
</ToolbarButtonRow>
);
}