mirror of
https://github.com/timberjoegithub/grafana-statusmap.git
synced 2026-07-22 07:49:47 +00:00
- fix linter warnings - use yarn: remove Gruntfile.js and package-lock.json ++
114 lines
3.5 KiB
TypeScript
114 lines
3.5 KiB
TypeScript
import _ from 'lodash';
|
|
|
|
function migrate_V0_V1(panel: any) {
|
|
// Remove unused fields.
|
|
if (_.has(panel, 'xAxis.labelFormat')) {
|
|
delete panel.xAxis.labelFormat;
|
|
}
|
|
if (_.has(panel, 'xAxis.minBucketWidthToShowWeekends')) {
|
|
delete panel.xAxis.minBucketWidthToShowWeekends;
|
|
}
|
|
if (_.has(panel, 'xAxis.showCrosshair')) {
|
|
delete panel.xAxis.showCrosshair;
|
|
}
|
|
if (_.has(panel, 'xAxis.showWeekends')) {
|
|
delete panel.xAxis.showWeekends;
|
|
}
|
|
if (_.has(panel, 'yAxis.showCrosshair')) {
|
|
delete panel.yAxis.showCrosshair;
|
|
}
|
|
if (_.has(panel, 'data.unitFormat')) {
|
|
delete panel.data;
|
|
}
|
|
|
|
// Migrate cardSpacing value. Seems rare (update from version 0.0.2).
|
|
if (_.has(panel, 'cards.cardSpacing')) {
|
|
if (!_.has(panel, 'cards.cardVSpacing')) {
|
|
if (panel.cards.cardSpacing) {
|
|
panel.cards.cardVSpacing = panel.cards.cardSpacing;
|
|
panel.cards.cardHSpacing = panel.cards.cardSpacing;
|
|
}
|
|
}
|
|
delete panel.cards.cardSpacing;
|
|
}
|
|
|
|
// Migrate initial config for urls in tooltip (pull/86).
|
|
// 'usingUrl' was used to show tooltip with urls on click or not.
|
|
if (_.has(panel, 'usingUrl')) {
|
|
if (!_.has(panel, 'tooltip.freezeOnClick')) {
|
|
panel.tooltip.freezeOnClick = panel.usingUrl;
|
|
}
|
|
delete panel.usingUrl;
|
|
}
|
|
|
|
// 'urls' array is now tooltip.items array. Also items are changed.
|
|
if (_.has(panel, 'urls')) {
|
|
if (!_.has(panel, 'tooltip.items')) {
|
|
panel.tooltip.items = [];
|
|
let hasRealItems = true;
|
|
if (panel.urls.length === 0) {
|
|
hasRealItems = false;
|
|
}
|
|
if (panel.urls.length === 1) {
|
|
let url = panel.urls[0];
|
|
if (url.base_url === '' && url.label === '') {
|
|
hasRealItems = false;
|
|
}
|
|
}
|
|
if (hasRealItems) {
|
|
panel.tooltip.showItems = true;
|
|
for (let url of panel.urls) {
|
|
let item = {
|
|
urlTemplate: _.toString(url.base_url),
|
|
urlText: _.toString(url.label),
|
|
urlIcon: _.toString(url.icon_fa),
|
|
urlToLowerCase: url.forcelowercase,
|
|
valueDateFormat: '',
|
|
};
|
|
// replace $vars with new ${__vars} if url template is not empty
|
|
if (item.urlTemplate !== '') {
|
|
// $time was a graph time with prepended &
|
|
item.urlTemplate = _.replace(url.base_url, /\$time/g, '&${__url_time_range}');
|
|
// $series_label was a y axis label
|
|
item.urlTemplate = _.replace(item.urlTemplate, /\$series_label/, '${__y_label}');
|
|
// $series_extra was a value from bucket. This value has format options and index.
|
|
let valueVar = '__value';
|
|
if (url.useExtraSeries === true) {
|
|
// index?
|
|
if (url.extraSeries.index > -1) {
|
|
valueVar += '_' + url.extraSeries.index;
|
|
}
|
|
|
|
let format = _.toString(url.extraSeries.format);
|
|
if (format === 'YYYY/MM/DD/HH_mm_ss') {
|
|
valueVar += '_date';
|
|
item.valueDateFormat = format;
|
|
}
|
|
}
|
|
|
|
item.urlTemplate = _.replace(item.urlTemplate, /\$series_extra/, `\${${valueVar}}`);
|
|
}
|
|
panel.tooltip.items.push(item);
|
|
}
|
|
}
|
|
}
|
|
delete panel.urls;
|
|
}
|
|
|
|
// create statusmap metadata
|
|
panel.statusmap = {
|
|
ConfigVersion: 'v1',
|
|
};
|
|
}
|
|
|
|
export function migratePanelConfig(panel: any) {
|
|
if (_.has(panel, 'statusmap')) {
|
|
if (panel.statusmap.ConfigVersion === 'v1') {
|
|
return;
|
|
}
|
|
} else {
|
|
migrate_V0_V1(panel);
|
|
}
|
|
return;
|
|
}
|