// Code generated by templ - DO NOT EDIT.

// templ: version: v0.3.857
package components

//lint:file-ignore SA4006 This context is only used if a nested component is present.

import "github.com/a-h/templ"
import templruntime "github.com/a-h/templ/runtime"

import (
	"fmt"
	"github.com/bketelsen/inventory"
)

func Dashboard(reports []inventory.Report) templ.Component {
	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
			return templ_7745c5c3_CtxErr
		}
		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
		if !templ_7745c5c3_IsBuffer {
			defer func() {
				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
				if templ_7745c5c3_Err == nil {
					templ_7745c5c3_Err = templ_7745c5c3_BufErr
				}
			}()
		}
		ctx = templ.InitializeContext(ctx)
		templ_7745c5c3_Var1 := templ.GetChildren(ctx)
		if templ_7745c5c3_Var1 == nil {
			templ_7745c5c3_Var1 = templ.NopComponent
		}
		ctx = templ.ClearChildren(ctx)
		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div id=\"inventory-container\" class=\"h-full relative rounded p-2 my-2 mx-28\"><main><div class=\"p-4 mx-auto max-w-(--breakpoint-2xl) md:p-6\"><div class=\"grid grid-cols-12 gap-4 md:gap-6\"><div class=\"stats col-span-12 stats-vertical lg:stats-horizontal bg-base-200 shadow-lg\">")
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		templ_7745c5c3_Err = Metric("Servers", fmt.Sprintf("%d", len(reports)), "Hosts Reporting Data", "mdi:server-network").Render(ctx, templ_7745c5c3_Buffer)
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		templ_7745c5c3_Err = Metric("Services", fmt.Sprintf("%d", serviceCount(reports)), "Services Running", "mdi:gear-outline").Render(ctx, templ_7745c5c3_Buffer)
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		templ_7745c5c3_Err = Metric("Listeners", fmt.Sprintf("%d", listenerCount(reports)), "Network Listeners", "mdi:network").Render(ctx, templ_7745c5c3_Buffer)
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		templ_7745c5c3_Err = Metric("Containers", fmt.Sprintf("%d", containerCount(reports)), "Containers Running", "mdi:train-car-container").Render(ctx, templ_7745c5c3_Buffer)
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</div><div class=\"col-span-12\"><div class=\"card card-border bg-base-200 shadow-lg\"><div class=\"card-body\"><h2 class=\"card-title\">Servers</h2>")
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		templ_7745c5c3_Err = ServerList(reports).Render(ctx, templ_7745c5c3_Buffer)
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "</div></div></div><div class=\"col-span-12\"><div class=\"card bg-base-200 shadow-lg\"><div class=\"card-body\"><h2 class=\"card-title\">Reported Services</h2>")
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		templ_7745c5c3_Err = ServiceList(reports).Render(ctx, templ_7745c5c3_Buffer)
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "</div></div></div><div class=\"col-span-12\"><div class=\"card bg-base-200 shadow-lg\"><div class=\"card-body\"><h2 class=\"card-title\">Running Containers</h2>")
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		templ_7745c5c3_Err = ContainerList(reports).Render(ctx, templ_7745c5c3_Buffer)
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</div></div></div><div class=\"col-span-12\"><div class=\"card bg-base-200 shadow-lg\"><div class=\"card-body\"><h2 class=\"card-title\">Network Listeners</h2>")
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		templ_7745c5c3_Err = ListenerList(reports).Render(ctx, templ_7745c5c3_Buffer)
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "</div></div></div></div></div></main></div>")
		if templ_7745c5c3_Err != nil {
			return templ_7745c5c3_Err
		}
		return nil
	})
}

func serviceCount(reports []inventory.Report) int {
	count := 0
	for _, report := range reports {
		count += len(report.Services)
	}
	return count
}

func listenerCount(reports []inventory.Report) int {
	count := 0
	for _, report := range reports {
		count += len(report.Listeners)
	}
	return count
}

func containerCount(reports []inventory.Report) int {
	count := 0
	for _, report := range reports {
		count += len(report.Containers)
	}
	return count
}

var _ = templruntime.GeneratedTemplate
