Files
Drew Slobodnjak 2196727226 TimeSeries: Add Time Comparison (#104672)
* TimeComparison: Add time comparison option

* Display control conditionally based on option

* Provide timeCompare option to panels that opt in

* Only render time compare if panel supports it

* Create a custom time range compare component

* Move custom component

* Remove button checked

* Move time compare options out of field config

* Fix types and remove from fieldConfigProperty enum

* Remove from field config registry

* Add headerActions to V2 schema

* Remove dependency on timeCompare support registry

* Add feature flag

* Subscribe to options change in wrapper

* Remove custom rendering to simplify wrapper

* Bump scenes version

* Hide checkbox

* Remove unneeded query refresh during disable

* Fix import order in timeseries module

* Add util tests

* Support time comparison toggle for new viz panels

* Revert grafana-app-sdk and manifest changes

* Revert yarn lock
2025-07-24 13:07:28 -07:00

36 lines
1.4 KiB
TypeScript

import { PanelPlugin } from '@grafana/data';
import { t } from '@grafana/i18n';
import { config } from '@grafana/runtime';
import { commonOptionsBuilder } from '@grafana/ui';
import { optsWithHideZeros } from '@grafana/ui/internal';
import { TimeSeriesPanel } from './TimeSeriesPanel';
import { TimezonesEditor } from './TimezonesEditor';
import { defaultGraphConfig, getGraphFieldConfig } from './config';
import { graphPanelChangedHandler } from './migrations';
import { FieldConfig, Options } from './panelcfg.gen';
import { TimeSeriesSuggestionsSupplier } from './suggestions';
export const plugin = new PanelPlugin<Options, FieldConfig>(TimeSeriesPanel)
.setPanelChangeHandler(graphPanelChangedHandler)
.useFieldConfig(getGraphFieldConfig(defaultGraphConfig))
.setPanelOptions((builder) => {
commonOptionsBuilder.addTooltipOptions(builder, false, true, optsWithHideZeros);
commonOptionsBuilder.addLegendOptions(builder);
if (config.featureToggles.timeComparison) {
commonOptionsBuilder.addTimeCompareOption(builder);
}
builder.addCustomEditor({
id: 'timezone',
name: t('timeseries.name-time-zone', 'Time zone'),
path: 'timezone',
category: [t('timeseries.category-axis', 'Axis')],
editor: TimezonesEditor,
defaultValue: undefined,
});
})
.setSuggestionsSupplier(new TimeSeriesSuggestionsSupplier())
.setDataSupport({ annotations: true, alertStates: true });