mirror of
https://github.com/grafana/grafana.git
synced 2024-11-23 09:26:43 -06:00
Heatmap: Replace the heatmap panel with new implementation (#50229)
This commit is contained in:
parent
497310a9cb
commit
dd5a3b7747
@ -58,6 +58,7 @@ export interface FeatureToggles {
|
||||
autoMigrateGraphPanels?: boolean;
|
||||
prometheusWideSeries?: boolean;
|
||||
canvasPanelNesting?: boolean;
|
||||
useLegacyHeatmapPanel?: boolean;
|
||||
cloudMonitoringExperimentalUI?: boolean;
|
||||
logRequestsInstrumentedAsUnknown?: boolean;
|
||||
dataConnectionsConsole?: boolean;
|
||||
|
@ -40,7 +40,8 @@ var skipPaths = []string{
|
||||
"public/app/plugins/panel/barchart/models.cue",
|
||||
"public/app/plugins/panel/canvas/models.cue",
|
||||
"public/app/plugins/panel/histogram/models.cue",
|
||||
"public/app/plugins/panel/heatmap-new/models.cue",
|
||||
"public/app/plugins/panel/heatmap/models.cue",
|
||||
"public/app/plugins/panel/heatmap-old/models.cue",
|
||||
"public/app/plugins/panel/candlestick/models.cue",
|
||||
"public/app/plugins/panel/state-timeline/models.cue",
|
||||
"public/app/plugins/panel/status-history/models.cue",
|
||||
|
@ -120,7 +120,7 @@ func verifyCorePluginCatalogue(t *testing.T, ctx context.Context, pm *PluginMana
|
||||
"gettingstarted": {},
|
||||
"graph": {},
|
||||
"heatmap": {},
|
||||
"heatmap-new": {},
|
||||
"heatmap-old": {},
|
||||
"histogram": {},
|
||||
"icon": {},
|
||||
"live": {},
|
||||
|
@ -238,6 +238,11 @@ var (
|
||||
State: FeatureStateAlpha,
|
||||
FrontendOnly: true,
|
||||
},
|
||||
{
|
||||
Name: "useLegacyHeatmapPanel",
|
||||
Description: "Continue to use the angular/flot based heatmap panel",
|
||||
State: FeatureStateStable,
|
||||
},
|
||||
{
|
||||
Name: "cloudMonitoringExperimentalUI",
|
||||
Description: "Use grafana-experimental UI in Cloud Monitoring",
|
||||
|
@ -175,6 +175,10 @@ const (
|
||||
// Allow elements nesting
|
||||
FlagCanvasPanelNesting = "canvasPanelNesting"
|
||||
|
||||
// FlagUseLegacyHeatmapPanel
|
||||
// Continue to use the angular/flot based heatmap panel
|
||||
FlagUseLegacyHeatmapPanel = "useLegacyHeatmapPanel"
|
||||
|
||||
// FlagCloudMonitoringExperimentalUI
|
||||
// Use grafana-experimental UI in Cloud Monitoring
|
||||
FlagCloudMonitoringExperimentalUI = "cloudMonitoringExperimentalUI"
|
||||
|
@ -628,16 +628,7 @@
|
||||
"url": "https://grafana.com"
|
||||
},
|
||||
"description": "Like a histogram over time",
|
||||
"links": [
|
||||
{
|
||||
"name": "Brendan Gregg - Heatmaps",
|
||||
"url": "http://www.brendangregg.com/heatmaps.html"
|
||||
},
|
||||
{
|
||||
"name": "Brendan Gregg - Latency Heatmaps",
|
||||
"url": " http://www.brendangregg.com/HeatMaps/latency.html"
|
||||
}
|
||||
],
|
||||
"links": null,
|
||||
"logos": {
|
||||
"small": "public/app/plugins/panel/heatmap/img/icn-heatmap-panel.svg",
|
||||
"large": "public/app/plugins/panel/heatmap/img/icn-heatmap-panel.svg"
|
||||
@ -662,9 +653,9 @@
|
||||
"signatureOrg": ""
|
||||
},
|
||||
{
|
||||
"name": "Heatmap (new)",
|
||||
"name": "Heatmap (legacy)",
|
||||
"type": "panel",
|
||||
"id": "heatmap-new",
|
||||
"id": "heatmap-old",
|
||||
"enabled": true,
|
||||
"pinned": false,
|
||||
"info": {
|
||||
@ -672,11 +663,20 @@
|
||||
"name": "Grafana Labs",
|
||||
"url": "https://grafana.com"
|
||||
},
|
||||
"description": "This heatmap panel will replace the heatmap panel in 9.1",
|
||||
"links": null,
|
||||
"description": "Legacy heatmap panel based on angular, d3, and flot",
|
||||
"links": [
|
||||
{
|
||||
"name": "Brendan Gregg - Heatmaps",
|
||||
"url": "http://www.brendangregg.com/heatmaps.html"
|
||||
},
|
||||
{
|
||||
"name": "Brendan Gregg - Latency Heatmaps",
|
||||
"url": " http://www.brendangregg.com/HeatMaps/latency.html"
|
||||
}
|
||||
],
|
||||
"logos": {
|
||||
"small": "public/app/plugins/panel/heatmap-new/img/icn-heatmap-panel.svg",
|
||||
"large": "public/app/plugins/panel/heatmap-new/img/icn-heatmap-panel.svg"
|
||||
"small": "public/app/plugins/panel/heatmap-old/img/icn-heatmap-panel.svg",
|
||||
"large": "public/app/plugins/panel/heatmap-old/img/icn-heatmap-panel.svg"
|
||||
},
|
||||
"build": {},
|
||||
"screenshots": null,
|
||||
@ -690,9 +690,9 @@
|
||||
},
|
||||
"latestVersion": "",
|
||||
"hasUpdate": false,
|
||||
"defaultNavUrl": "/plugins/heatmap-new/",
|
||||
"defaultNavUrl": "/plugins/heatmap-old/",
|
||||
"category": "",
|
||||
"state": "beta",
|
||||
"state": "deprecated",
|
||||
"signature": "internal",
|
||||
"signatureType": "",
|
||||
"signatureOrg": ""
|
||||
|
@ -224,10 +224,17 @@ export class PanelModel implements DataConfigSource, IPanelModel {
|
||||
(this as any)[property] = model[property];
|
||||
}
|
||||
|
||||
// Special 'graph' migration logic
|
||||
if (this.type === 'graph' && config?.featureToggles?.autoMigrateGraphPanels) {
|
||||
this.autoMigrateFrom = this.type;
|
||||
this.type = 'timeseries';
|
||||
switch (this.type) {
|
||||
case 'graph':
|
||||
if (config?.featureToggles?.autoMigrateGraphPanels) {
|
||||
this.autoMigrateFrom = this.type;
|
||||
this.type = 'timeseries';
|
||||
}
|
||||
break;
|
||||
case 'heatmap-new':
|
||||
this.autoMigrateFrom = this.type;
|
||||
this.type = 'heatmap';
|
||||
break;
|
||||
}
|
||||
|
||||
// defaults
|
||||
|
@ -40,6 +40,7 @@ const tempoPlugin = async () =>
|
||||
const alertmanagerPlugin = async () =>
|
||||
await import(/* webpackChunkName: "alertmanagerPlugin" */ 'app/plugins/datasource/alertmanager/module');
|
||||
|
||||
import { config } from '@grafana/runtime';
|
||||
import * as alertGroupsPanel from 'app/plugins/panel/alertGroups/module';
|
||||
import * as alertListPanel from 'app/plugins/panel/alertlist/module';
|
||||
import * as annoListPanel from 'app/plugins/panel/annolist/module';
|
||||
@ -50,7 +51,6 @@ import * as dashListPanel from 'app/plugins/panel/dashlist/module';
|
||||
import * as debugPanel from 'app/plugins/panel/debug/module';
|
||||
import * as gaugePanel from 'app/plugins/panel/gauge/module';
|
||||
import * as gettingStartedPanel from 'app/plugins/panel/gettingstarted/module';
|
||||
import * as heatmapPanelNG from 'app/plugins/panel/heatmap-new/module';
|
||||
import * as histogramPanel from 'app/plugins/panel/histogram/module';
|
||||
import * as livePanel from 'app/plugins/panel/live/module';
|
||||
import * as logsPanel from 'app/plugins/panel/logs/module';
|
||||
@ -73,10 +73,24 @@ const canvasPanel = async () => await import(/* webpackChunkName: "canvasPanel"
|
||||
const iconPanel = async () => await import(/* webpackChunkName: "iconPanel" */ 'app/plugins/panel/icon/module');
|
||||
const graphPanel = async () => await import(/* webpackChunkName: "graphPlugin" */ 'app/plugins/panel/graph/module');
|
||||
const heatmapPanel = async () =>
|
||||
await import(/* webpackChunkName: "heatmapPlugin" */ 'app/plugins/panel/heatmap/module');
|
||||
await import(/* webpackChunkName: "heatmapPanel" */ 'app/plugins/panel/heatmap/module');
|
||||
const heatmapPanelOLD = async () =>
|
||||
await import(/* webpackChunkName: "heatmapPanelOLD" */ 'app/plugins/panel/heatmap-old/module');
|
||||
|
||||
const tableOldPanel = async () =>
|
||||
await import(/* webpackChunkName: "tableOldPlugin" */ 'app/plugins/panel/table-old/module');
|
||||
|
||||
// Automatically migrate heatmap panel.
|
||||
if (config.featureToggles.useLegacyHeatmapPanel) {
|
||||
const heatmap = config.panels['heatmap'];
|
||||
const legacy = config.panels['heatmap-old'];
|
||||
legacy.id = heatmap.id;
|
||||
legacy.module = heatmap.module;
|
||||
legacy.state = heatmap.state;
|
||||
config.panels['heatmap'] = legacy;
|
||||
}
|
||||
delete config.panels['heatmap-old'];
|
||||
|
||||
const builtInPlugins: any = {
|
||||
'app/plugins/datasource/graphite/module': graphitePlugin,
|
||||
'app/plugins/datasource/cloudwatch/module': cloudwatchPlugin,
|
||||
@ -112,8 +126,7 @@ const builtInPlugins: any = {
|
||||
'app/plugins/panel/dashlist/module': dashListPanel,
|
||||
'app/plugins/panel/alertlist/module': alertListPanel,
|
||||
'app/plugins/panel/annolist/module': annoListPanel,
|
||||
'app/plugins/panel/heatmap/module': heatmapPanel,
|
||||
'app/plugins/panel/heatmap-new/module': heatmapPanelNG,
|
||||
'app/plugins/panel/heatmap/module': config.featureToggles.useLegacyHeatmapPanel ? heatmapPanelOLD : heatmapPanel,
|
||||
'app/plugins/panel/table/module': tablePanel,
|
||||
'app/plugins/panel/table-old/module': tableOldPanel,
|
||||
'app/plugins/panel/news/module': newsPanel,
|
||||
|
@ -1,18 +0,0 @@
|
||||
{
|
||||
"type": "panel",
|
||||
"name": "Heatmap (new)",
|
||||
"id": "heatmap-new",
|
||||
"state": "beta",
|
||||
|
||||
"info": {
|
||||
"description": "This heatmap panel will replace the heatmap panel in 9.1",
|
||||
"author": {
|
||||
"name": "Grafana Labs",
|
||||
"url": "https://grafana.com"
|
||||
},
|
||||
"logos": {
|
||||
"small": "img/icn-heatmap-panel.svg",
|
||||
"large": "img/icn-heatmap-panel.svg"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
# Heatmap Panel (NEXT GEN) - Native Plugin
|
||||
# Heatmap Panel - Native Plugin
|
||||
|
||||
The Heatmap panel allows you to view histograms over time and is **included** with Grafana.
|
||||
|
@ -155,6 +155,9 @@ export class HeatmapCtrl extends MetricsPanelCtrl {
|
||||
this.events.on(PanelEvents.editModeInitialized, this.onInitEditMode.bind(this));
|
||||
|
||||
this.onCardColorChange = this.onCardColorChange.bind(this);
|
||||
|
||||
// Make sure we do not save the version so migration to react version is kicked off
|
||||
delete this.panel.pluginVersion;
|
||||
}
|
||||
|
||||
onInitEditMode() {
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
22
public/app/plugins/panel/heatmap-old/plugin.json
Normal file
22
public/app/plugins/panel/heatmap-old/plugin.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"type": "panel",
|
||||
"name": "Heatmap (legacy)",
|
||||
"id": "heatmap-old",
|
||||
"state": "deprecated",
|
||||
|
||||
"info": {
|
||||
"description": "Legacy heatmap panel based on angular, d3, and flot",
|
||||
"author": {
|
||||
"name": "Grafana Labs",
|
||||
"url": "https://grafana.com"
|
||||
},
|
||||
"logos": {
|
||||
"small": "img/icn-heatmap-panel.svg",
|
||||
"large": "img/icn-heatmap-panel.svg"
|
||||
},
|
||||
"links": [
|
||||
{ "name": "Brendan Gregg - Heatmaps", "url": "http://www.brendangregg.com/heatmaps.html" },
|
||||
{ "name": "Brendan Gregg - Latency Heatmaps", "url": " http://www.brendangregg.com/HeatMaps/latency.html" }
|
||||
]
|
||||
}
|
||||
}
|
@ -47,7 +47,7 @@ describe('Heatmap Migrations', () => {
|
||||
},
|
||||
"color": Object {
|
||||
"exponent": 0.5,
|
||||
"fill": "dark-orange",
|
||||
"fill": "#b4ff00",
|
||||
"max": 100,
|
||||
"min": 5,
|
||||
"mode": "scheme",
|
@ -140,6 +140,7 @@ export function angularToReactHeatmap(angular: any): { fieldConfig: FieldConfigS
|
||||
break;
|
||||
}
|
||||
}
|
||||
options.color.fill = color.cardColor;
|
||||
options.color.min = color.min;
|
||||
options.color.max = color.max;
|
||||
|
@ -17,7 +17,7 @@ package grafanaschema
|
||||
import "github.com/grafana/thema"
|
||||
|
||||
Panel: thema.#Lineage & {
|
||||
name: "heatmap-new"
|
||||
name: "heatmap"
|
||||
seqs: [
|
||||
{
|
||||
schemas: [
|
@ -12,10 +12,6 @@
|
||||
"logos": {
|
||||
"small": "img/icn-heatmap-panel.svg",
|
||||
"large": "img/icn-heatmap-panel.svg"
|
||||
},
|
||||
"links": [
|
||||
{ "name": "Brendan Gregg - Heatmaps", "url": "http://www.brendangregg.com/heatmaps.html" },
|
||||
{ "name": "Brendan Gregg - Latency Heatmaps", "url": " http://www.brendangregg.com/HeatMaps/latency.html" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ export class HeatmapSuggestionsSupplier {
|
||||
|
||||
builder.getListAppender<PanelOptions, {}>({
|
||||
name: '',
|
||||
pluginId: 'heatmap-new',
|
||||
pluginId: 'heatmap',
|
||||
options: {},
|
||||
fieldConfig: {
|
||||
defaults: {
|
Loading…
Reference in New Issue
Block a user