chore: code fmt
Some checks failed
Build & Release pipeline / build (push) Has been cancelled
Buf CI / buf (push) Has been cancelled
Codestyle checks / codestyle (push) Has been cancelled

This commit is contained in:
jamesread
2025-12-01 01:59:10 +00:00
parent 56365af24b
commit 39009fcdd1
5 changed files with 127 additions and 69 deletions

View File

@@ -1,11 +1,7 @@
<template>
<ActionButton v-if="component.type == 'link'" :actionData="component.action" :key="component.title" />
<DashboardComponentDirectory v-else-if="component.type == 'directory'" :component="component" />
<div v-else-if="component.type == 'directory'">
</div>
<DashboardComponentDisplay v-else-if="component.type == 'display'" :component="component" />

View File

@@ -1007,18 +1007,26 @@ func findDirectoriesInEntityFieldsets(entityType string, dashboards []*config.Da
func findDirectoriesInEntityFieldsetsRecursive(entityType string, component *config.DashboardComponent, directories *[]string) {
if component.Entity == entityType {
collectDirectoriesFromComponent(component, directories)
}
if len(component.Contents) > 0 {
searchSubcomponentsForDirectories(entityType, component.Contents, directories)
}
}
func collectDirectoriesFromComponent(component *config.DashboardComponent, directories *[]string) {
for _, subitem := range component.Contents {
if subitem.Type == "directory" {
*directories = append(*directories, subitem.Title)
}
}
}
}
if len(component.Contents) > 0 {
for _, subitem := range component.Contents {
func searchSubcomponentsForDirectories(entityType string, contents []*config.DashboardComponent, directories *[]string) {
for _, subitem := range contents {
findDirectoriesInEntityFieldsetsRecursive(entityType, subitem, directories)
}
}
}
func (api *oliveTinAPI) GetEntity(ctx ctx.Context, req *connect.Request[apiv1.GetEntityRequest]) (*connect.Response[apiv1.Entity], error) {

View File

@@ -30,20 +30,22 @@ func (rr *DashboardRenderRequest) findActionForEntity(title string, entity *enti
continue
}
if entity == nil {
if binding.Entity == nil {
if matchesEntity(binding, entity) {
return buildAction(binding, rr)
}
} else {
if binding.Entity != nil && binding.Entity.UniqueKey == entity.UniqueKey {
return buildAction(binding, rr)
}
}
}
return nil
}
func matchesEntity(binding *executor.ActionBinding, entity *entities.Entity) bool {
if entity == nil {
return binding.Entity == nil
}
return binding.Entity != nil && binding.Entity.UniqueKey == entity.UniqueKey
}
func buildEffectivePolicy(policy *config.ConfigurationPolicy) *apiv1.EffectivePolicy {
ret := &apiv1.EffectivePolicy{
ShowDiagnostics: policy.ShowDiagnostics,

View File

@@ -70,15 +70,29 @@ func cloneItem(subitem *config.DashboardComponent, ent *entities.Entity, entityT
clone := &apiv1.DashboardComponent{}
clone.CssClass = entities.ParseTemplateWith(subitem.CssClass, ent)
if subitem.Type == "" || subitem.Type == "link" {
if isLinkType(subitem.Type) {
return cloneLinkItem(subitem, ent, clone, rr)
}
return cloneNonLinkItem(subitem, ent, entityType, clone, rr)
}
func isLinkType(itemType string) bool {
return itemType == "" || itemType == "link"
}
func cloneLinkItem(subitem *config.DashboardComponent, ent *entities.Entity, clone *apiv1.DashboardComponent, rr *DashboardRenderRequest) *apiv1.DashboardComponent {
clone.Type = "link"
clone.Title = entities.ParseTemplateWith(subitem.Title, ent)
clone.Action = rr.findActionForEntity(subitem.Title, ent)
} else {
return clone
}
func cloneNonLinkItem(subitem *config.DashboardComponent, ent *entities.Entity, entityType string, clone *apiv1.DashboardComponent, rr *DashboardRenderRequest) *apiv1.DashboardComponent {
clone.Title = entities.ParseTemplateWith(subitem.Title, ent)
clone.Type = subitem.Type
if clone.Type == "directory" && ent != nil && entityType != "" {
if isDirectoryWithEntity(clone.Type, ent, entityType) {
clone.EntityType = entityType
clone.EntityKey = ent.UniqueKey
}
@@ -86,7 +100,10 @@ func cloneItem(subitem *config.DashboardComponent, ent *entities.Entity, entityT
if len(subitem.Contents) > 0 {
clone.Contents = buildEntityFieldsetContents(subitem.Contents, ent, entityType, rr)
}
}
return clone
}
func isDirectoryWithEntity(itemType string, ent *entities.Entity, entityType string) bool {
return itemType == "directory" && ent != nil && entityType != ""
}

View File

@@ -32,26 +32,38 @@ func getEntityFromRequest(rr *DashboardRenderRequest) *entities.Entity {
}
func findAndRenderDashboard(rr *DashboardRenderRequest, dashboardTitle string) *apiv1.Dashboard {
for _, dashboard := range rr.cfg.Dashboards {
if dashboard.Title != dashboardTitle {
continue
if dashboard := findDashboardByTitle(rr, dashboardTitle); dashboard != nil {
return renderDashboardIfValid(dashboard, rr)
}
return renderDirectoryDashboard(rr, dashboardTitle)
}
func findDashboardByTitle(rr *DashboardRenderRequest, dashboardTitle string) *config.DashboardComponent {
for _, dashboard := range rr.cfg.Dashboards {
if dashboard.Title == dashboardTitle {
return dashboard
}
}
return nil
}
func renderDashboardIfValid(dashboard *config.DashboardComponent, rr *DashboardRenderRequest) *apiv1.Dashboard {
if len(dashboard.Contents) == 0 {
logEmptyDashboard(dashboard.Title, rr.AuthenticatedUser.Username)
return nil
}
return buildDashboardFromConfig(dashboard, rr)
}
func renderDirectoryDashboard(rr *DashboardRenderRequest, dashboardTitle string) *apiv1.Dashboard {
directoryComponent := findDirectoryComponent(rr, dashboardTitle)
if directoryComponent == nil {
return nil
}
directoryComponent := findDirectoryComponent(rr, dashboardTitle)
if directoryComponent != nil {
entity := getEntityFromRequest(rr)
return buildDashboardFromConfigWithEntity(directoryComponent, rr, entity)
}
return nil
}
func findDirectoryComponent(rr *DashboardRenderRequest, title string) *config.DashboardComponent {
@@ -64,11 +76,19 @@ func findDirectoryComponent(rr *DashboardRenderRequest, title string) *config.Da
}
func searchDirectoryInComponent(component *config.DashboardComponent, title string) *config.DashboardComponent {
if component.Title == title && len(component.Contents) > 0 && component.Type != "fieldset" {
if isMatchingDirectory(component, title) {
return component
}
for _, subitem := range component.Contents {
return searchDirectoryInSubcomponents(component.Contents, title)
}
func isMatchingDirectory(component *config.DashboardComponent, title string) bool {
return component.Title == title && len(component.Contents) > 0 && component.Type != "fieldset"
}
func searchDirectoryInSubcomponents(contents []*config.DashboardComponent, title string) *config.DashboardComponent {
for _, subitem := range contents {
if found := searchDirectoryInComponent(subitem, title); found != nil {
return found
}
@@ -252,24 +272,39 @@ func getDashboardComponentIcon(item *config.DashboardComponent, cfg *config.Conf
}
func getDashboardComponentType(item *config.DashboardComponent, action *apiv1.Action) string {
if hasContents(item) {
return getTypeForComponentWithContents(item)
}
if isAllowedType(item.Type) {
return item.Type
}
return getDefaultType(action)
}
func hasContents(item *config.DashboardComponent) bool {
return len(item.Contents) > 0
}
func getTypeForComponentWithContents(item *config.DashboardComponent) string {
if item.Type != "fieldset" {
return "directory"
}
return "fieldset"
}
func isAllowedType(itemType string) bool {
allowedTypes := []string{
"stdout-most-recent-execution",
"display",
}
return slices.Contains(allowedTypes, itemType)
}
if len(item.Contents) > 0 {
if item.Type != "fieldset" {
return "directory"
}
return "fieldset"
} else if slices.Contains(allowedTypes, item.Type) {
return item.Type
}
func getDefaultType(action *apiv1.Action) string {
if action == nil {
return "display"
}
return "link"
}