2020-04-08 12:21:26 -05:00
|
|
|
import React from 'react';
|
2022-04-22 08:33:13 -05:00
|
|
|
|
2020-04-08 12:21:26 -05:00
|
|
|
import { PanelModel, PanelPlugin } from '@grafana/data';
|
|
|
|
import { TagsInput } from '@grafana/ui';
|
2022-04-22 08:33:13 -05:00
|
|
|
|
2020-04-08 12:21:26 -05:00
|
|
|
import { AnnoListPanel } from './AnnoListPanel';
|
2023-01-23 12:03:44 -06:00
|
|
|
import { defaultPanelOptions, PanelOptions } from './panelcfg.gen';
|
2020-04-08 12:21:26 -05:00
|
|
|
|
2022-05-25 06:07:32 -05:00
|
|
|
export const plugin = new PanelPlugin<PanelOptions>(AnnoListPanel)
|
2021-01-20 00:59:48 -06:00
|
|
|
.setPanelOptions((builder) => {
|
2020-04-08 12:21:26 -05:00
|
|
|
builder
|
2021-07-21 15:58:30 -05:00
|
|
|
.addRadio({
|
|
|
|
category: ['Annotation query'],
|
|
|
|
path: 'onlyFromThisDashboard',
|
|
|
|
name: 'Query filter',
|
2022-05-25 06:07:32 -05:00
|
|
|
defaultValue: defaultPanelOptions.onlyFromThisDashboard,
|
2021-07-21 15:58:30 -05:00
|
|
|
settings: {
|
|
|
|
options: [
|
|
|
|
{ value: false, label: 'All dashboards' },
|
|
|
|
{ value: true, label: 'This dashboard' },
|
2022-05-25 06:07:32 -05:00
|
|
|
],
|
2021-07-21 15:58:30 -05:00
|
|
|
},
|
|
|
|
})
|
|
|
|
.addRadio({
|
|
|
|
category: ['Annotation query'],
|
|
|
|
path: 'onlyInTimeRange',
|
|
|
|
name: 'Time range',
|
2022-05-25 06:07:32 -05:00
|
|
|
defaultValue: defaultPanelOptions.onlyInTimeRange,
|
2021-07-21 15:58:30 -05:00
|
|
|
settings: {
|
|
|
|
options: [
|
|
|
|
{ value: false, label: 'None' },
|
|
|
|
{ value: true, label: 'This dashboard' },
|
2022-05-25 06:07:32 -05:00
|
|
|
],
|
2021-07-21 15:58:30 -05:00
|
|
|
},
|
|
|
|
})
|
|
|
|
.addCustomEditor({
|
|
|
|
category: ['Annotation query'],
|
|
|
|
id: 'tags',
|
|
|
|
path: 'tags',
|
|
|
|
name: 'Tags',
|
|
|
|
description: 'Match annotation tags',
|
|
|
|
editor(props) {
|
|
|
|
return <TagsInput tags={props.value} onChange={props.onChange} />;
|
|
|
|
},
|
|
|
|
})
|
|
|
|
.addNumberInput({
|
|
|
|
category: ['Annotation query'],
|
|
|
|
path: 'limit',
|
|
|
|
name: 'Limit',
|
2022-05-25 06:07:32 -05:00
|
|
|
defaultValue: defaultPanelOptions.limit,
|
2021-07-21 15:58:30 -05:00
|
|
|
})
|
2020-04-08 12:21:26 -05:00
|
|
|
.addBooleanSwitch({
|
2021-07-21 15:58:30 -05:00
|
|
|
category: ['Display'],
|
2020-04-08 12:21:26 -05:00
|
|
|
path: 'showUser',
|
|
|
|
name: 'Show user',
|
2022-05-25 06:07:32 -05:00
|
|
|
defaultValue: defaultPanelOptions.showUser,
|
2020-04-08 12:21:26 -05:00
|
|
|
})
|
|
|
|
.addBooleanSwitch({
|
2021-07-21 15:58:30 -05:00
|
|
|
category: ['Display'],
|
2020-04-08 12:21:26 -05:00
|
|
|
path: 'showTime',
|
|
|
|
name: 'Show time',
|
2022-05-25 06:07:32 -05:00
|
|
|
defaultValue: defaultPanelOptions.showTime,
|
2020-04-08 12:21:26 -05:00
|
|
|
})
|
|
|
|
.addBooleanSwitch({
|
2021-07-21 15:58:30 -05:00
|
|
|
category: ['Display'],
|
2020-04-08 12:21:26 -05:00
|
|
|
path: 'showTags',
|
|
|
|
name: 'Show tags',
|
2022-05-25 06:07:32 -05:00
|
|
|
defaultValue: defaultPanelOptions.showTags,
|
2020-04-08 12:21:26 -05:00
|
|
|
})
|
2021-07-21 15:58:30 -05:00
|
|
|
.addRadio({
|
|
|
|
category: ['Link behavior'],
|
|
|
|
path: 'navigateToPanel',
|
|
|
|
name: 'Link target',
|
2022-05-25 06:07:32 -05:00
|
|
|
defaultValue: defaultPanelOptions.navigateToPanel,
|
2021-07-21 15:58:30 -05:00
|
|
|
settings: {
|
|
|
|
options: [
|
|
|
|
{ value: true, label: 'Panel' },
|
|
|
|
{ value: false, label: 'Dashboard' },
|
2022-05-25 06:07:32 -05:00
|
|
|
],
|
2021-07-21 15:58:30 -05:00
|
|
|
},
|
|
|
|
})
|
2020-04-08 12:21:26 -05:00
|
|
|
.addTextInput({
|
2021-07-21 15:58:30 -05:00
|
|
|
category: ['Link behavior'],
|
2020-04-08 12:21:26 -05:00
|
|
|
path: 'navigateBefore',
|
2021-07-21 15:58:30 -05:00
|
|
|
name: 'Time before',
|
2022-05-25 06:07:32 -05:00
|
|
|
defaultValue: defaultPanelOptions.navigateBefore,
|
2020-04-08 12:21:26 -05:00
|
|
|
description: '',
|
|
|
|
})
|
|
|
|
.addTextInput({
|
2021-07-21 15:58:30 -05:00
|
|
|
category: ['Link behavior'],
|
2020-04-08 12:21:26 -05:00
|
|
|
path: 'navigateAfter',
|
2021-07-21 15:58:30 -05:00
|
|
|
name: 'Time after',
|
2022-05-25 06:07:32 -05:00
|
|
|
defaultValue: defaultPanelOptions.navigateAfter,
|
2020-04-08 12:21:26 -05:00
|
|
|
description: '',
|
|
|
|
});
|
|
|
|
})
|
|
|
|
// TODO, we should support this directly in the plugin infrastructure
|
2022-05-25 06:07:32 -05:00
|
|
|
.setPanelChangeHandler((panel: PanelModel<PanelOptions>, prevPluginId: string, prevOptions: unknown) => {
|
2020-04-08 12:21:26 -05:00
|
|
|
if (prevPluginId === 'ryantxu-annolist-panel') {
|
2022-05-25 06:07:32 -05:00
|
|
|
return prevOptions as PanelOptions;
|
2020-04-08 12:21:26 -05:00
|
|
|
}
|
2022-05-25 06:07:32 -05:00
|
|
|
|
2020-04-08 12:21:26 -05:00
|
|
|
return panel.options;
|
|
|
|
});
|