59 lines
1.4 KiB
TypeScript
59 lines
1.4 KiB
TypeScript
import { PanelBuilders, SceneDataTransformer, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';
|
|
import { DataSourceRef } from '@grafana/schema';
|
|
|
|
import { PANEL_STYLES } from '../../home/Insights';
|
|
|
|
export function getMostFiredRulesScene(datasource: DataSourceRef, panelTitle: string) {
|
|
const query = new SceneQueryRunner({
|
|
datasource,
|
|
queries: [
|
|
{
|
|
refId: 'A',
|
|
expr: 'topk(5, sum by(group, labels_grafana_folder) (count_over_time({from="state-history"} | json | current = `Alerting` [1w])))',
|
|
instant: true,
|
|
},
|
|
],
|
|
});
|
|
|
|
const transformation = new SceneDataTransformer({
|
|
$data: query,
|
|
transformations: [
|
|
{
|
|
id: 'sortBy',
|
|
options: {
|
|
fields: {},
|
|
sort: [
|
|
{
|
|
field: 'Value #A',
|
|
desc: true,
|
|
},
|
|
],
|
|
},
|
|
},
|
|
{
|
|
id: 'organize',
|
|
options: {
|
|
excludeByName: {
|
|
Time: true,
|
|
},
|
|
indexByName: {
|
|
group: 0,
|
|
labels_grafana_folder: 1,
|
|
'Value #A': 2,
|
|
},
|
|
renameByName: {
|
|
group: 'Group',
|
|
labels_grafana_folder: 'Folder',
|
|
'Value #A': 'Number of fires',
|
|
},
|
|
},
|
|
},
|
|
],
|
|
});
|
|
|
|
return new SceneFlexItem({
|
|
...PANEL_STYLES,
|
|
body: PanelBuilders.table().setTitle(panelTitle).setDescription(panelTitle).setData(transformation).build(),
|
|
});
|
|
}
|