Я работаю над очень простым c плагином панели, который делаю сам. Я использовал Angular одну из документации Grafana. Этакий пример "Hello world".
Но почему-то данные из источника данных не отображаются. Я читал, что функция handleDataFrame выполняет роль подключения данных из источника данных к панели. Но похоже, что функция никогда не вызывается.
Вот код:
import { MetricsPanelCtrl } from 'grafana/app/plugins/sdk';
import defaultsDeep from 'lodash/defaultsDeep';
import { DataFrame } from '@grafana/data';
interface KeyValue {
key: string;
value: any;
}
export default class SimpleCtrl extends MetricsPanelCtrl {
static templateUrl = 'partials/module.html';
panelDefaults = {
text: 'Hello World',
};
// Simple example showing the last value of all data
firstValues: KeyValue[] = [];
/** @ngInject */
constructor($scope, $injector) {
super($scope, $injector);
defaultsDeep(this.panel, this.panelDefaults);
// Get results directly as DataFrames
(this as any).dataFormat = 'series';
this.events.on('init-edit-mode', this.onInitEditMode.bind(this));
this.events.on('render', this.onRender.bind(this));
this.events.on('data-error', this.onDataError.bind(this));
}
onInitEditMode() {
this.addEditorTab('Options', `public/plugins/${this.pluginId}/partials/options.html`, 2);
}
onRender() {
if (!this.firstValues || !this.firstValues.length) {
return;
}
// Tells the screen capture system that you finished
this.renderingCompleted();
}
onDataError(err: any) {
console.log('onDataError', err);
}
// 6.3+ get typed DataFrame directly
handleDataFrame(data: DataFrame[]) {
const values: KeyValue[] = [];
for (const frame of data) {
for (let i = 0; i < frame.fields.length; i++) {
values.push({
key: frame.fields[i].name,
value: frame.fields[i].values,
});
}
}
console.log(values);
this.firstValues = values;
}
}
export { SimpleCtrl as PanelCtrl };
<div>
<h2>{{ctrl.panel.text}}</h2>
<h2>{{ctrl.firstValues}}</h2>
<div ng-repeat="first in ctrl.firstValues">
<b>{{first.key}}:</b> {{first.value}}
</div>
</div>
Из-за этого {{ctrl.firstValues}} пуст, а также следующий код.
Вы знаете, почему handleDataFrame не работает должным образом?