meerkat-dashboard / meerkat

Drag-and-drop dashboards for Icinga
https://meerkat.run
GNU Affero General Public License v3.0
18 stars 2 forks source link

Templating / Element Groups #229

Open s2156945 opened 1 year ago

s2156945 commented 1 year ago

Prerequisites The text size / zoom thing needs to be fixed such that text size scales exactly with the element sizes

Is your feature request related to a problem? Please describe. These things are boring and repetitive

Describe the solution you'd like For the purpose of this discussion, a dashboard is:

  1. A group of elements
  2. A background and a size
  3. Everything else - title, folder, URL

One way of doing templates would be to template the whole dashboard (like Meerkat V2) - i.e. all 3 parts of a dashboard. What I am proposing is to make the template based on a group of elements (#1) optionally with a background (#2).

Implicitly, all conventionally defined dashboards would be available as templates (possibly this would be a dropdown on each dashboard - this is a dashboard/elementgroup/both).

Templating / substitutions: to create a template - an elementgroup with substitutions:

A new element type "elementgroup" would allow:

So basic template function would be:

A table could be implemented by:

Tables could be simplified by a "table" element which gives rows and columns of any element with:

When an elementgroup is included on a dashboard, the geometry of each element would be transformed (scaled and translated) by simple algebra, where xo = "x of original", xr = "x resulting", xe = "x of elementgroup" etc. h = ho he / 100 w = wo we / 100 x = xe + xo we / 100 y = ye + yo he / 100

Summary pages could include whole dashboards as a smaller representation, clicking on the elementgroup (whole area or background) could optionally take the user to the original dashboard.

Describe alternatives you've considered Creating dashboards from scripts which directly produce JSON and the background images. Creating templates from complete dashboards (like Meerkat V2)

Additional context

This is a bit of a brain dump, needs some clarification / examples on my part.

s2156945 commented 1 year ago

image "Table" type dashboard example.

The "table" element would also need horizontal + vertical spacing values.

It would make sense to me to use jinja or similar as it may be useful to use maths e.g. to convert a row number to an index or ID in a check name see - https://jbmoelker.github.io/jinja-compat-tests/