This repository has been archived on 2023-04-02. You can view files and clone it, but cannot push or open issues or pull requests.
gitops-tbrnt/monitoring/vendor/grafonnet/dashboard.libsonnet

148 lines
4.2 KiB
Plaintext

local timepickerlib = import 'timepicker.libsonnet';
{
new(
title,
editable=false,
style='dark',
tags=[],
time_from='now-6h',
time_to='now',
timezone='browser',
refresh='',
timepicker=timepickerlib.new(),
graphTooltip='default',
hideControls=false,
schemaVersion=14,
uid='',
description=null,
):: {
local it = self,
_annotations:: [],
[if uid != '' then 'uid']: uid,
editable: editable,
[if description != null then 'description']: description,
gnetId: null,
graphTooltip:
if graphTooltip == 'shared_tooltip' then 2
else if graphTooltip == 'shared_crosshair' then 1
else if graphTooltip == 'default' then 0
else graphTooltip,
hideControls: hideControls,
id: null,
links: [],
panels:: [],
refresh: refresh,
rows: [],
schemaVersion: schemaVersion,
style: style,
tags: tags,
time: {
from: time_from,
to: time_to,
},
timezone: timezone,
timepicker: timepicker,
title: title,
version: 0,
addAnnotations(annotations):: self {
_annotations+:: annotations,
},
addAnnotation(a):: self.addAnnotations([a]),
addTemplates(templates):: self {
templates+: templates,
},
addTemplate(t):: self.addTemplates([t]),
templates:: [],
annotations: { list: it._annotations },
templating: { list: it.templates },
_nextPanel:: 2,
addRow(row)::
self {
// automatically number panels in added rows.
// https://github.com/kausalco/public/blob/master/klumps/grafana.libsonnet
local n = std.length(row.panels),
local nextPanel = super._nextPanel,
local panels = std.makeArray(n, function(i)
row.panels[i] { id: nextPanel + i }),
_nextPanel: nextPanel + n,
rows+: [row { panels: panels }],
},
addPanels(newpanels)::
self {
// automatically number panels in added rows.
// https://github.com/kausalco/public/blob/master/klumps/grafana.libsonnet
local n = std.foldl(function(numOfPanels, p)
(if 'panels' in p then
numOfPanels + 1 + std.length(p.panels)
else
numOfPanels + 1), newpanels, 0),
local nextPanel = super._nextPanel,
local _panels = std.makeArray(
std.length(newpanels), function(i)
newpanels[i] {
id: nextPanel + (
if i == 0 then
0
else
if 'panels' in _panels[i - 1] then
(_panels[i - 1].id - nextPanel) + 1 + std.length(_panels[i - 1].panels)
else
(_panels[i - 1].id - nextPanel) + 1
),
[if 'panels' in newpanels[i] then 'panels']: std.makeArray(
std.length(newpanels[i].panels), function(j)
newpanels[i].panels[j] {
id: 1 + j +
nextPanel + (
if i == 0 then
0
else
if 'panels' in _panels[i - 1] then
(_panels[i - 1].id - nextPanel) + 1 + std.length(_panels[i - 1].panels)
else
(_panels[i - 1].id - nextPanel) + 1
),
}
),
}
),
_nextPanel: nextPanel + n,
panels+::: _panels,
},
addPanel(panel, gridPos):: self.addPanels([panel { gridPos: gridPos }]),
addRows(rows):: std.foldl(function(d, row) d.addRow(row), rows, self),
addLink(link):: self {
links+: [link],
},
required:: [],
__requires: it.required,
addRequired(type, name, id, version):: self {
required+: [{ type: type, name: name, id: id, version: version }],
},
inputs:: [],
__inputs: it.inputs,
addInput(
name,
label,
type,
pluginId,
pluginName,
description='',
):: self {
inputs+: [{
name: name,
label: label,
type: type,
pluginId: pluginId,
pluginName: pluginName,
description: description,
}],
},
},
}