DataLinks: respect timezone when displaying datapoint's timestamp in graph context menu (#18461)

This commit is contained in:
Dominik Prokop
2019-08-09 11:03:21 +02:00
committed by GitHub
parent d54851f8e2
commit 81c42fc912
5 changed files with 17 additions and 4 deletions

View File

@@ -77,6 +77,7 @@ export function registerAngularDirectives() {
'items',
['onClose', { watchDepth: 'reference', wrapApply: true }],
['getContextMenuSource', { watchDepth: 'reference', wrapApply: true }],
['formatSourceDate', { watchDepth: 'reference', wrapApply: true }],
]);
// We keep the drilldown terminology here because of as using data-* directive

View File

@@ -1,14 +1,20 @@
import React, { useContext } from 'react';
import { FlotDataPoint } from './GraphContextMenuCtrl';
import { ContextMenu, ContextMenuProps, SeriesIcon, ThemeContext } from '@grafana/ui';
import { dateTime } from '@grafana/data';
import { DateTimeInput } from '@grafana/data';
import { css } from 'emotion';
type GraphContextMenuProps = ContextMenuProps & {
getContextMenuSource: () => FlotDataPoint | null;
formatSourceDate: (date: DateTimeInput, format?: string) => string;
};
export const GraphContextMenu: React.FC<GraphContextMenuProps> = ({ getContextMenuSource, items, ...otherProps }) => {
export const GraphContextMenu: React.FC<GraphContextMenuProps> = ({
getContextMenuSource,
formatSourceDate,
items,
...otherProps
}) => {
const theme = useContext(ThemeContext);
const source = getContextMenuSource();
@@ -35,7 +41,7 @@ export const GraphContextMenu: React.FC<GraphContextMenuProps> = ({ getContextMe
font-size: ${theme.typography.size.sm};
`}
>
<strong>{dateTime(source.datapoint[0]).format(timeFormat)}</strong>
<strong>{formatSourceDate(source.datapoint[0], timeFormat)}</strong>
<div>
<SeriesIcon color={source.series.color} />
<span

View File

@@ -65,6 +65,7 @@ export class GraphContextMenuCtrl {
setSource = (source: FlotDataPoint | null) => {
this.source = source;
};
getSource = () => {
return this.source;
};

View File

@@ -11,7 +11,7 @@ import { DataProcessor } from './data_processor';
import { axesEditorComponent } from './axes_editor';
import config from 'app/core/config';
import TimeSeries from 'app/core/time_series2';
import { DataFrame, DataLink } from '@grafana/data';
import { DataFrame, DataLink, DateTimeInput } from '@grafana/data';
import { getColorFromHexRgbOrName, LegacyResponseData, VariableSuggestion } from '@grafana/ui';
import { getProcessedDataFrames } from 'app/features/dashboard/state/PanelQueryState';
import { PanelQueryRunnerFormat } from 'app/features/dashboard/state/PanelQueryRunner';
@@ -340,6 +340,10 @@ class GraphCtrl extends MetricsPanelCtrl {
onContextMenuClose = () => {
this.contextMenuCtrl.toggleMenu();
};
formatDate = (date: DateTimeInput, format?: string) => {
return this.dashboard.formatDate.apply(this.dashboard, [date, format]);
};
}
export { GraphCtrl, GraphCtrl as PanelCtrl };

View File

@@ -11,6 +11,7 @@ const template = `
items="ctrl.contextMenuCtrl.menuItems"
onClose="ctrl.onContextMenuClose"
getContextMenuSource="ctrl.contextMenuCtrl.getSource"
formatSourceDate="ctrl.formatDate"
x="ctrl.contextMenuCtrl.position.x"
y="ctrl.contextMenuCtrl.position.y"
></graph-context-menu>