A whole app, from the ticket to the demo row.
Helpdesk
This is the app in A complete app. One entity, its workflow, a dashboard, the ticket page, and a demo row.
app helpdesk "Helpdesk" {
tagline "Tickets from new to resolved."
category "Support"
icon inbox
tier free
}
entity Ticket "Ticket" plural "Tickets" {
subject: text required label "Subject"
reporter: text pii
priority: enum low, normal, high
owner: ref User on delete nullify
workflow {
initial New
states New, Triage, InProgress, Resolved
terminal Resolved
triage: New -> Triage
start: Triage -> InProgress requires owner
note: InProgress -> InProgress
resolve: InProgress -> Resolved requires resolution
}
}
query my_open(who: text) = select subject, priority from Ticket where owner == who sort priority desc limit 20
page dashboard "Dashboard" list {
board Ticket summary [subject, priority, owner] label "Open tickets"
stat "Unassigned" = count(Ticket where owner == null)
list from my_open(who: me) columns [subject, priority]
}
page ticket-detail "Ticket" detail Ticket {
jobs label "Workflow" summary [subject, priority, owner]
section "Details" {
field subject
field reporter
}
action "Resolve" event resolve confirm "Resolve this ticket?"
}
nav [dashboard, ticket-detail]
home dashboard
seed demo {
Ticket acme { subject: "Printer offline", priority: "high" } state Triage
}