@studion/infra-code-blocks
Version:
Studion common infra components
136 lines (135 loc) • 3.81 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createStatPercentagePanel = createStatPercentagePanel;
exports.createTimeSeriesPercentagePanel = createTimeSeriesPercentagePanel;
exports.createTimeSeriesPanel = createTimeSeriesPanel;
exports.createBurnRatePanel = createBurnRatePanel;
exports.createTablePanel = createTablePanel;
exports.createTracesPanel = createTracesPanel;
const percentageFieldConfig = {
unit: 'percent',
min: 0,
max: 100,
};
function createStatPercentagePanel(title, position, dataSource, metric) {
return {
title,
gridPos: position,
type: 'stat',
datasource: dataSource,
targets: [
{
expr: metric.query,
legendFormat: metric.label,
},
],
fieldConfig: {
defaults: {
...percentageFieldConfig,
...(metric.thresholds
? {
thresholds: {
mode: 'absolute',
steps: metric.thresholds,
},
}
: {}),
},
},
};
}
function createTimeSeriesPercentagePanel(title, position, dataSource, metric) {
return createTimeSeriesPanel(title, position, dataSource, metric, percentageFieldConfig.unit, percentageFieldConfig.min, percentageFieldConfig.max);
}
function createTimeSeriesPanel(title, position, dataSource, metric, unit, min, max) {
return {
title,
type: 'timeseries',
datasource: dataSource,
gridPos: position,
targets: [
{
expr: metric.query,
legendFormat: metric.label,
},
],
fieldConfig: {
defaults: {
unit,
min,
max,
...(metric.thresholds
? {
thresholds: {
mode: 'absolute',
steps: metric.thresholds,
},
}
: {}),
},
},
};
}
function createBurnRatePanel(title, position, dataSource, metric) {
return {
type: 'stat',
title,
gridPos: position,
datasource: dataSource,
targets: [
{
expr: metric.query,
legendFormat: metric.label,
},
],
options: {
reduceOptions: {
calcs: ['last'],
fields: '',
values: false,
},
colorMode: 'value',
graphMode: 'none',
textMode: 'value',
},
fieldConfig: {
defaults: {
unit: 'none',
thresholds: {
mode: 'absolute',
steps: [
{ color: 'green', value: null },
{ color: 'orange', value: 1 },
{ color: 'red', value: 2 },
],
},
},
},
};
}
function createTablePanel(title, position, dataSource, targets, transformations, overrides) {
return {
type: 'table',
title,
gridPos: position,
datasource: dataSource,
targets,
transformations,
fieldConfig: {
defaults: {},
overrides,
},
};
}
function createTracesPanel(title, position, dataSource, targets) {
return {
type: 'traces',
title,
gridPos: position,
datasource: dataSource,
targets,
fieldConfig: {
defaults: {},
},
};
}