package routes import ( "fmt" "github.com/LazyBachelor/LazyPM/internal/models" "github.com/LazyBachelor/LazyPM/pkg/web/components" "github.com/LazyBachelor/LazyPM/pkg/web/components/base" ) type DashboardProps struct { Issues []*models.Issue SelectedIssue *models.Issue BaseURL string QueryParam string EmptyText string } templ Dashboard(props DashboardProps) { @BaseLayout() { @DashboardContent(props) } } templ DashboardContent(props DashboardProps) { {{ issuesJSON, _ := templ.JSONString(props.Issues) xData := fmt.Sprintf(`{ selectedId: '%s', issues: %s }`, props.SelectedIssue.ID, issuesJSON) }}
@DashboardIssueList(props.Issues, props.SelectedIssue.ID)
} templ DashboardIssueList(issues []*models.Issue, selectedID string) {
@base.Table( []templ.Component{ base.PlainText("ID"), base.PlainText("Title"), base.PlainText("Status"), base.PlainText("Type"), base.PlainText("Priority"), }, []templ.Component{ DashboardIssueRows(issues, selectedID), }, templ.Attributes{}, )
} templ DashboardIssueRows(issues []*models.Issue, selectedID string) { if len(issues) == 0 { No issues } for _, issue := range issues { { issue.ID } i.id === '%s')?.title || %q`, issue.ID, issue.Title) }> @components.StatusBadge(issue.Status) @components.TypeBadge(issue.IssueType) @components.PriorityBadge(issue.Priority) } }