diff --git a/OliveTin.proto b/OliveTin.proto index 77bf19c..7caf6c6 100644 --- a/OliveTin.proto +++ b/OliveTin.proto @@ -55,6 +55,7 @@ message DashboardComponent { string type = 2; repeated DashboardComponent contents = 3; string icon = 4; + string css_class = 5; } message StartActionRequest { diff --git a/internal/config/config.go b/internal/config/config.go index 59350aa..5f812b0 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -149,6 +149,7 @@ type DashboardComponent struct { Type string Entity string Icon string + CssClass string Contents []DashboardComponent } diff --git a/internal/grpcapi/grpcApiDashboard.go b/internal/grpcapi/grpcApiDashboard.go index 5352dc1..8519662 100644 --- a/internal/grpcapi/grpcApiDashboard.go +++ b/internal/grpcapi/grpcApiDashboard.go @@ -30,6 +30,7 @@ func getDashboardComponentContents(dashboard *config.DashboardComponent, cfg *co Type: getDashboardComponentType(&subitem), Contents: getDashboardComponentContents(&subitem, cfg), Icon: getDashboardComponentIcon(&subitem, cfg), + CssClass: subitem.CssClass, } ret = append(ret, newitem) diff --git a/internal/grpcapi/grpcApiDashboardEntities.go b/internal/grpcapi/grpcApiDashboardEntities.go index b20e9fe..37e4576 100644 --- a/internal/grpcapi/grpcApiDashboardEntities.go +++ b/internal/grpcapi/grpcApiDashboardEntities.go @@ -25,6 +25,7 @@ func buildEntityFieldset(tpl *config.DashboardComponent, entityTitle string, ent Title: sv.ReplaceEntityVars(prefix, tpl.Title), Type: "fieldset", Contents: buildEntityFieldsetContents(tpl.Contents, prefix), + CssClass: sv.ReplaceEntityVars(prefix, tpl.CssClass), } } @@ -33,6 +34,7 @@ func buildEntityFieldsetContents(contents []config.DashboardComponent, prefix st for _, subitem := range contents { clone := &pb.DashboardComponent{} + clone.CssClass = sv.ReplaceEntityVars(prefix, subitem.CssClass) if subitem.Type == "" || subitem.Type == "link" { clone.Type = "link" diff --git a/webui.dev/js/marshaller.js b/webui.dev/js/marshaller.js index 9bbe2c2..fce3add 100644 --- a/webui.dev/js/marshaller.js +++ b/webui.dev/js/marshaller.js @@ -462,6 +462,10 @@ function marshalDisplay (item, fieldset) { display.innerHTML = item.title display.classList.add('display') + if (item.cssClass !== '') { + display.classList.add(item.cssClass) + } + fieldset.appendChild(display) }