package routes
import (
"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) {
@components.SearchForm(components.SearchFormProps{
RootURL: props.BaseURL,
SearchQuery: props.QueryParam,
Target: "#issue-list-container",
})
if props.SelectedIssue != nil {
if props.SelectedIssue.Status != "closed" {
}
}
@DashboardIssueList(props.Issues, props.SelectedIssue.ID)
if props.SelectedIssue != nil {
@components.IssueDetail(components.IssueDetailProps{
Issue: props.SelectedIssue,
})
}
}
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 {
{{
var active string
if selectedID == issue.ID {
active = "bg-primary/10"
}
}}
| { issue.ID } |
{ issue.Title } |
@components.StatusBadge(issue.Status)
|
@components.TypeBadge(issue.IssueType)
|
@components.PriorityBadge(issue.Priority)
|
}
}