added kanban and reporting
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
{{define "board.html"}}
|
||||
{{template "shell-start" .}}
|
||||
<header class="page-head board-page-head">
|
||||
<div><p class="eyebrow">SHARED WORKSPACE</p><h1>Team board</h1><p>Plan, assign, and move work forward together.</p></div>
|
||||
<details class="new-task-panel" {{if .Error}}open{{end}}>
|
||||
<summary class="button primary">+ Add task</summary>
|
||||
<form method="post" action="/board/tasks" class="new-task-form">
|
||||
<input type="hidden" name="csrf" value="{{.CSRF}}">
|
||||
<div class="new-task-form-head"><div><p class="eyebrow">NEW CARD</p><h2>Add work to the board</h2></div></div>
|
||||
<label>Task title<input name="title" required maxlength="160" autofocus placeholder="What needs to be done?"></label>
|
||||
<label>Description <small>Optional</small><textarea name="description" rows="4" maxlength="4000" placeholder="Add context, acceptance criteria, or links…"></textarea></label>
|
||||
<div class="form-row">
|
||||
<label>Assignee<select name="assignee_id"><option value="">Unassigned</option>{{range .Users}}<option value="{{.ID}}">{{.DisplayName}}</option>{{end}}</select></label>
|
||||
<label>Column<select name="status"><option value="backlog">Backlog</option><option value="in_progress">In progress</option><option value="blocked">Blocked</option><option value="done">Done</option></select></label>
|
||||
</div>
|
||||
<label>Due date <small>Optional · Persian</small><span class="jalali-field"><input name="due_date" data-jalali-picker autocomplete="off" inputmode="numeric" placeholder="{{.TodayJalali}}" pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}"><button type="button" class="jalali-trigger" aria-label="Choose due date" title="Open Persian calendar">▦</button></span></label>
|
||||
<button class="button dark full" type="submit">Create task</button>
|
||||
</form>
|
||||
</details>
|
||||
</header>
|
||||
{{template "notice" .}}
|
||||
|
||||
<div class="kanban-board" data-board data-csrf="{{.CSRF}}">
|
||||
{{range .Board}}
|
||||
<section class="kanban-column {{.Status}}" data-board-column="{{.Status}}">
|
||||
<header class="kanban-column-head">
|
||||
<div><span class="column-dot"></span><strong>{{.Title}}</strong><small>{{.Hint}}</small></div>
|
||||
<b>{{len .Tasks}}</b>
|
||||
</header>
|
||||
<div class="kanban-cards" data-drop-zone="{{.Status}}">
|
||||
{{range .Tasks}}
|
||||
<article class="kanban-card" draggable="true" data-task-id="{{.ID}}">
|
||||
<div class="card-topline"><span class="task-id">#{{.ID}}</span>{{if .DueDate}}<span class="task-due">Due {{dateFA .DueDate}}</span>{{end}}</div>
|
||||
<h3>{{.Title}}</h3>
|
||||
{{if .Description}}<p>{{.Description}}</p>{{end}}
|
||||
<div class="task-meta">
|
||||
{{if .AssigneeID.Valid}}<span class="task-assignee"><i class="avatar">{{initial .AssigneeName}}</i><span>{{.AssigneeName}}</span></span>{{else}}<span class="task-assignee unassigned"><i>?</i><span>Unassigned</span></span>{{end}}
|
||||
<span class="task-creator">by {{.CreatorName}}</span>
|
||||
</div>
|
||||
<div class="task-actions">
|
||||
<form method="post" action="/board/tasks/{{.ID}}/move">
|
||||
<input type="hidden" name="csrf" value="{{$.CSRF}}">
|
||||
<select name="status" aria-label="Move task">
|
||||
<option value="backlog" {{if eq .Status "backlog"}}selected{{end}}>Backlog</option>
|
||||
<option value="in_progress" {{if eq .Status "in_progress"}}selected{{end}}>In progress</option>
|
||||
<option value="blocked" {{if eq .Status "blocked"}}selected{{end}}>Blocked</option>
|
||||
<option value="done" {{if eq .Status "done"}}selected{{end}}>Done</option>
|
||||
</select>
|
||||
<button class="text-button task-move-button" type="submit">Move</button>
|
||||
</form>
|
||||
{{if or (eq .CreatorID $.User.ID) (eq $.User.Role "admin")}}
|
||||
<details class="task-remove">
|
||||
<summary>Remove</summary>
|
||||
<form method="post" action="/board/tasks/{{.ID}}/delete">
|
||||
<input type="hidden" name="csrf" value="{{$.CSRF}}">
|
||||
<button class="text-button" type="submit">Confirm</button>
|
||||
</form>
|
||||
</details>
|
||||
{{end}}
|
||||
</div>
|
||||
</article>
|
||||
{{end}}
|
||||
{{if not .Tasks}}<div class="kanban-empty"><span>Drop tasks here</span></div>{{end}}
|
||||
</div>
|
||||
</section>
|
||||
{{end}}
|
||||
</div>
|
||||
<script src="/static/board.js" defer></script>
|
||||
{{template "shell-end" .}}
|
||||
{{end}}
|
||||
Reference in New Issue
Block a user