package adminview import ( "fmt" "git.haelnorr.com/h/oslstats/internal/db" ) templ RolesList(roles *db.List[db.Role]) {

Role Management

if len(roles.Items) == 0 {

No roles found

} else {
@roleTableHeader("display_name", "Name", roles.PageOpts.OrderBy, string(roles.PageOpts.Order)) @roleTableHeader("is_system", "Type", roles.PageOpts.OrderBy, string(roles.PageOpts.Order)) for _, role := range roles.Items { @roleRow(role) }
DescriptionActions
if roles.Total > 0 { Showing { fmt.Sprintf("%d", roles.PageOpts.StartItem()) } - { fmt.Sprintf("%d", roles.PageOpts.EndItem(roles.Total)) } of { fmt.Sprintf("%d", roles.Total) } roles } else { No roles }
if roles.Total > 0 && roles.PageOpts.TotalPages(roles.Total) > 1 {
@paginationButton("First", "<<", fmt.Sprintf("submitRolesPage(1, perPage, order, orderBy)"), !roles.PageOpts.HasPrevPage()) @paginationButton("Previous", "<", fmt.Sprintf("submitRolesPage(%d, perPage, order, orderBy)", roles.PageOpts.Page-1), !roles.PageOpts.HasPrevPage()) for _, pageNum := range roles.PageOpts.GetPageRange(roles.Total, 7) { @pageNumberButton(pageNum, roles.PageOpts.Page, "submitRolesPage") } @paginationButton("Next", ">", fmt.Sprintf("submitRolesPage(%d, perPage, order, orderBy)", roles.PageOpts.Page+1), !roles.PageOpts.HasNextPage(roles.Total)) @paginationButton("Last", ">>", fmt.Sprintf("submitRolesPage(%d, perPage, order, orderBy)", roles.PageOpts.TotalPages(roles.Total)), !roles.PageOpts.HasNextPage(roles.Total))
}
}

Loading preview...

} templ roleTableHeader(field string, label string, currentField string, currentOrder string) { {{ isActive := currentField == field baseClasses := "px-6 py-3 text-left text-sm font-semibold text-text cursor-pointer select-none hover:text-blue transition-colors" arrow := "" if isActive { if currentOrder == "ASC" { arrow = " ↑" } else { arrow = " ↓" } } }} { label } if arrow != "" { { arrow } } } templ roleRow(role *db.Role) { { role.DisplayName } { role.Description } if role.IsSystem { SYSTEM } else { Custom } }