agkan 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/board/server.d.ts +2 -2
- package/dist/board/server.d.ts.map +1 -1
- package/dist/board/server.js +205 -141
- package/dist/board/server.js.map +1 -1
- package/dist/cli/commands/board.d.ts.map +1 -1
- package/dist/cli/commands/board.js +2 -1
- package/dist/cli/commands/board.js.map +1 -1
- package/package.json +1 -1
package/dist/board/server.d.ts
CHANGED
|
@@ -3,6 +3,6 @@ import { TaskService } from '../services/TaskService';
|
|
|
3
3
|
import { TaskTagService } from '../services/TaskTagService';
|
|
4
4
|
import { MetadataService } from '../services/MetadataService';
|
|
5
5
|
import { StorageProvider } from '../db/types/storage';
|
|
6
|
-
export declare function createBoardApp(taskService?: TaskService, taskTagService?: TaskTagService, metadataService?: MetadataService, db?: StorageProvider): Hono;
|
|
7
|
-
export declare function startBoardServer(port: number): void;
|
|
6
|
+
export declare function createBoardApp(taskService?: TaskService, taskTagService?: TaskTagService, metadataService?: MetadataService, db?: StorageProvider, boardTitle?: string): Hono;
|
|
7
|
+
export declare function startBoardServer(port: number, boardTitle?: string): void;
|
|
8
8
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAI9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAI9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAsxBtD,wBAAgB,cAAc,CAC5B,WAAW,CAAC,EAAE,WAAW,EACzB,cAAc,CAAC,EAAE,cAAc,EAC/B,eAAe,CAAC,EAAE,eAAe,EACjC,EAAE,CAAC,EAAE,eAAe,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAWN;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAMxE"}
|
package/dist/board/server.js
CHANGED
|
@@ -52,37 +52,12 @@ function renderCard(task, tags) {
|
|
|
52
52
|
${tagBadges ? `<div class="card-tags">${tagBadges}</div>` : ''}
|
|
53
53
|
</div>`;
|
|
54
54
|
}
|
|
55
|
-
|
|
56
|
-
const columns = STATUSES.map((status) => {
|
|
57
|
-
const tasks = tasksByStatus.get(status) || [];
|
|
58
|
-
const color = STATUS_COLORS[status];
|
|
59
|
-
const label = STATUS_LABELS[status];
|
|
60
|
-
const cards = tasks.map((t) => renderCard(t, tagMap.get(t.id) || [])).join('');
|
|
61
|
-
return `
|
|
62
|
-
<div class="column" data-status="${status}">
|
|
63
|
-
<div class="column-header" style="border-top-color:${color}">
|
|
64
|
-
<span class="column-title" style="color:${color}">${label}</span>
|
|
65
|
-
<span class="column-header-right">
|
|
66
|
-
<span class="column-count">${tasks.length}</span>
|
|
67
|
-
<button class="add-btn" data-status="${status}" title="Add task">+</button>
|
|
68
|
-
</span>
|
|
69
|
-
</div>
|
|
70
|
-
<div class="column-body" id="col-${status}">
|
|
71
|
-
${cards}
|
|
72
|
-
</div>
|
|
73
|
-
</div>`;
|
|
74
|
-
}).join('');
|
|
75
|
-
return `<!DOCTYPE html>
|
|
76
|
-
<html lang="en">
|
|
77
|
-
<head>
|
|
78
|
-
<meta charset="UTF-8">
|
|
79
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
80
|
-
<title>agkan board</title>
|
|
81
|
-
<style>
|
|
55
|
+
const BOARD_STYLES = `
|
|
82
56
|
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
83
57
|
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #f1f5f9; color: #1e293b; }
|
|
84
|
-
header { background: #1e293b; color: white; padding: 12px 20px; }
|
|
58
|
+
header { background: #1e293b; color: white; padding: 12px 20px; display: flex; align-items: center; justify-content: space-between; }
|
|
85
59
|
header h1 { font-size: 18px; font-weight: 700; }
|
|
60
|
+
.board-title { font-size: 14px; font-weight: 400; opacity: 0.75; }
|
|
86
61
|
.board { display: flex; gap: 12px; padding: 16px; overflow-x: auto; min-height: calc(100vh - 48px); align-items: flex-start; }
|
|
87
62
|
.column { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; width: 240px; flex-shrink: 0; display: flex; flex-direction: column; border-top: 3px solid transparent; }
|
|
88
63
|
.column-header { padding: 10px 12px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #e2e8f0; }
|
|
@@ -150,50 +125,11 @@ function renderBoard(tasksByStatus, tagMap) {
|
|
|
150
125
|
.detail-panel-footer button:hover { background: #2563eb; border-color: #2563eb; }
|
|
151
126
|
.detail-edit-input { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; background: white; color: #1e293b; }
|
|
152
127
|
.detail-edit-input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
|
|
153
|
-
.detail-edit-textarea { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical; min-height:
|
|
128
|
+
.detail-edit-textarea { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical; min-height: 240px; background: white; color: #1e293b; }
|
|
154
129
|
.detail-edit-textarea:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
|
|
155
130
|
.detail-edit-select { width: 100%; border: 1px solid #e2e8f0; border-radius: 6px; padding: 7px 10px; font-size: 13px; font-family: inherit; background: white; color: #1e293b; }
|
|
156
|
-
.detail-edit-select:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }
|
|
157
|
-
|
|
158
|
-
</head>
|
|
159
|
-
<body>
|
|
160
|
-
<header><h1>agkan board</h1></header>
|
|
161
|
-
<div class="board">${columns}</div>
|
|
162
|
-
<div class="modal-overlay" id="add-modal">
|
|
163
|
-
<div class="modal">
|
|
164
|
-
<h2>Add Task</h2>
|
|
165
|
-
<label for="add-title">Title</label>
|
|
166
|
-
<input type="text" id="add-title" placeholder="Task title">
|
|
167
|
-
<label for="add-body">Description</label>
|
|
168
|
-
<textarea id="add-body" placeholder="Optional"></textarea>
|
|
169
|
-
<label for="add-priority">Priority</label>
|
|
170
|
-
<select id="add-priority">
|
|
171
|
-
<option value="">None</option>
|
|
172
|
-
${models_1.PRIORITIES.map((p) => `<option value="${p}">${p.charAt(0).toUpperCase() + p.slice(1)}</option>`).join('\n ')}
|
|
173
|
-
</select>
|
|
174
|
-
<input type="hidden" id="add-status">
|
|
175
|
-
<div class="modal-actions">
|
|
176
|
-
<button id="add-cancel">Cancel</button>
|
|
177
|
-
<button id="add-submit" class="primary">Add</button>
|
|
178
|
-
</div>
|
|
179
|
-
</div>
|
|
180
|
-
</div>
|
|
181
|
-
<div class="context-menu" id="context-menu">
|
|
182
|
-
<div class="context-menu-item danger" id="ctx-delete">Delete task</div>
|
|
183
|
-
</div>
|
|
184
|
-
<div class="detail-panel" id="detail-panel">
|
|
185
|
-
<div class="detail-panel-resize-handle" id="detail-panel-resize-handle"></div>
|
|
186
|
-
<div class="detail-panel-header">
|
|
187
|
-
<h2 id="detail-panel-title">Task Detail</h2>
|
|
188
|
-
<button class="detail-panel-close" id="detail-panel-close" title="Close">×</button>
|
|
189
|
-
</div>
|
|
190
|
-
<div class="detail-panel-body" id="detail-panel-body"></div>
|
|
191
|
-
<div class="detail-panel-footer">
|
|
192
|
-
<button id="detail-save-btn">Save</button>
|
|
193
|
-
</div>
|
|
194
|
-
</div>
|
|
195
|
-
<div class="toast" id="toast">Failed to update task</div>
|
|
196
|
-
<script>
|
|
131
|
+
.detail-edit-select:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.2); }`;
|
|
132
|
+
const BOARD_SCRIPT = `
|
|
197
133
|
let draggedCard = null;
|
|
198
134
|
let sourceBody = null;
|
|
199
135
|
|
|
@@ -547,11 +483,54 @@ function renderBoard(tasksByStatus, tagMap) {
|
|
|
547
483
|
});
|
|
548
484
|
});
|
|
549
485
|
|
|
550
|
-
// Board polling: reload when updated_at changes (skip during drag
|
|
486
|
+
// Board polling: reload when updated_at changes (skip during drag)
|
|
551
487
|
let lastUpdatedAt = null;
|
|
488
|
+
async function refreshBoardCards() {
|
|
489
|
+
try {
|
|
490
|
+
const res = await fetch('/api/board/cards');
|
|
491
|
+
if (!res.ok) return;
|
|
492
|
+
const data = await res.json();
|
|
493
|
+
const columns = data.columns;
|
|
494
|
+
columns.forEach(col => {
|
|
495
|
+
const body = document.getElementById('col-' + col.status);
|
|
496
|
+
if (!body) return;
|
|
497
|
+
body.innerHTML = col.html;
|
|
498
|
+
const colEl = body.closest('.column');
|
|
499
|
+
if (colEl) colEl.querySelector('.column-count').textContent = col.count;
|
|
500
|
+
// Re-attach drag event listeners to new cards
|
|
501
|
+
body.querySelectorAll('.card').forEach(card => {
|
|
502
|
+
card.addEventListener('dragstart', e => {
|
|
503
|
+
draggedCard = card;
|
|
504
|
+
sourceBody = card.parentElement;
|
|
505
|
+
card.classList.add('dragging');
|
|
506
|
+
e.dataTransfer.effectAllowed = 'move';
|
|
507
|
+
});
|
|
508
|
+
card.addEventListener('dragend', () => {
|
|
509
|
+
card.classList.remove('dragging');
|
|
510
|
+
draggedCard = null;
|
|
511
|
+
sourceBody = null;
|
|
512
|
+
});
|
|
513
|
+
card.addEventListener('click', async e => {
|
|
514
|
+
if (e.defaultPrevented) return;
|
|
515
|
+
const taskId = card.dataset.id;
|
|
516
|
+
try {
|
|
517
|
+
const res = await fetch('/api/tasks/' + taskId);
|
|
518
|
+
if (!res.ok) throw new Error('Server error');
|
|
519
|
+
const data = await res.json();
|
|
520
|
+
renderDetailPanel(data);
|
|
521
|
+
detailPanel.classList.add('open');
|
|
522
|
+
} catch {
|
|
523
|
+
showToast('Failed to load task details');
|
|
524
|
+
}
|
|
525
|
+
});
|
|
526
|
+
});
|
|
527
|
+
});
|
|
528
|
+
} catch {
|
|
529
|
+
// Ignore network errors during card refresh
|
|
530
|
+
}
|
|
531
|
+
}
|
|
552
532
|
async function pollBoardUpdates() {
|
|
553
533
|
if (draggedCard !== null) return;
|
|
554
|
-
if (detailPanel.classList.contains('open')) return;
|
|
555
534
|
try {
|
|
556
535
|
const res = await fetch('/api/board/updated-at');
|
|
557
536
|
if (!res.ok) return;
|
|
@@ -560,15 +539,90 @@ function renderBoard(tasksByStatus, tagMap) {
|
|
|
560
539
|
if (lastUpdatedAt === null) {
|
|
561
540
|
lastUpdatedAt = ts;
|
|
562
541
|
} else if (ts !== lastUpdatedAt) {
|
|
563
|
-
|
|
542
|
+
lastUpdatedAt = ts;
|
|
543
|
+
if (detailPanel.classList.contains('open')) {
|
|
544
|
+
await refreshBoardCards();
|
|
545
|
+
} else {
|
|
546
|
+
location.reload();
|
|
547
|
+
}
|
|
564
548
|
}
|
|
565
549
|
} catch {
|
|
566
550
|
// Ignore network errors during polling
|
|
567
551
|
}
|
|
568
552
|
}
|
|
569
553
|
setInterval(pollBoardUpdates, 10000);
|
|
570
|
-
pollBoardUpdates()
|
|
571
|
-
|
|
554
|
+
pollBoardUpdates();`;
|
|
555
|
+
function renderColumn(status, tasks, tagMap) {
|
|
556
|
+
const color = STATUS_COLORS[status];
|
|
557
|
+
const label = STATUS_LABELS[status];
|
|
558
|
+
const cards = tasks.map((t) => renderCard(t, tagMap.get(t.id) || [])).join('');
|
|
559
|
+
return `
|
|
560
|
+
<div class="column" data-status="${status}">
|
|
561
|
+
<div class="column-header" style="border-top-color:${color}">
|
|
562
|
+
<span class="column-title" style="color:${color}">${label}</span>
|
|
563
|
+
<span class="column-header-right">
|
|
564
|
+
<span class="column-count">${tasks.length}</span>
|
|
565
|
+
<button class="add-btn" data-status="${status}" title="Add task">+</button>
|
|
566
|
+
</span>
|
|
567
|
+
</div>
|
|
568
|
+
<div class="column-body" id="col-${status}">
|
|
569
|
+
${cards}
|
|
570
|
+
</div>
|
|
571
|
+
</div>`;
|
|
572
|
+
}
|
|
573
|
+
const BOARD_PRIORITY_OPTIONS = models_1.PRIORITIES.map((p) => `<option value="${p}">${p.charAt(0).toUpperCase() + p.slice(1)}</option>`).join('\n ');
|
|
574
|
+
const BOARD_BODY_STATIC = `
|
|
575
|
+
<div class="modal-overlay" id="add-modal">
|
|
576
|
+
<div class="modal">
|
|
577
|
+
<h2>Add Task</h2>
|
|
578
|
+
<label for="add-title">Title</label>
|
|
579
|
+
<input type="text" id="add-title" placeholder="Task title">
|
|
580
|
+
<label for="add-body">Description</label>
|
|
581
|
+
<textarea id="add-body" placeholder="Optional"></textarea>
|
|
582
|
+
<label for="add-priority">Priority</label>
|
|
583
|
+
<select id="add-priority">
|
|
584
|
+
<option value="">None</option>
|
|
585
|
+
${BOARD_PRIORITY_OPTIONS}
|
|
586
|
+
</select>
|
|
587
|
+
<input type="hidden" id="add-status">
|
|
588
|
+
<div class="modal-actions">
|
|
589
|
+
<button id="add-cancel">Cancel</button>
|
|
590
|
+
<button id="add-submit" class="primary">Add</button>
|
|
591
|
+
</div>
|
|
592
|
+
</div>
|
|
593
|
+
</div>
|
|
594
|
+
<div class="context-menu" id="context-menu">
|
|
595
|
+
<div class="context-menu-item danger" id="ctx-delete">Delete task</div>
|
|
596
|
+
</div>
|
|
597
|
+
<div class="detail-panel" id="detail-panel">
|
|
598
|
+
<div class="detail-panel-resize-handle" id="detail-panel-resize-handle"></div>
|
|
599
|
+
<div class="detail-panel-header">
|
|
600
|
+
<h2 id="detail-panel-title">Task Detail</h2>
|
|
601
|
+
<button class="detail-panel-close" id="detail-panel-close" title="Close">×</button>
|
|
602
|
+
</div>
|
|
603
|
+
<div class="detail-panel-body" id="detail-panel-body"></div>
|
|
604
|
+
<div class="detail-panel-footer">
|
|
605
|
+
<button id="detail-save-btn">Save</button>
|
|
606
|
+
</div>
|
|
607
|
+
</div>
|
|
608
|
+
<div class="toast" id="toast">Failed to update task</div>
|
|
609
|
+
<script>${BOARD_SCRIPT}
|
|
610
|
+
</script>`;
|
|
611
|
+
function renderBoard(tasksByStatus, tagMap, boardTitle) {
|
|
612
|
+
const columns = STATUSES.map((status) => renderColumn(status, tasksByStatus.get(status) || [], tagMap)).join('');
|
|
613
|
+
const titleHtml = boardTitle ? `<span class="board-title">${escapeHtml(boardTitle)}</span>` : '';
|
|
614
|
+
return `<!DOCTYPE html>
|
|
615
|
+
<html lang="en">
|
|
616
|
+
<head>
|
|
617
|
+
<meta charset="UTF-8">
|
|
618
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
619
|
+
<title>agkan board</title>
|
|
620
|
+
<style>${BOARD_STYLES}
|
|
621
|
+
</style>
|
|
622
|
+
</head>
|
|
623
|
+
<body>
|
|
624
|
+
<header><h1>agkan board</h1>${titleHtml}</header>
|
|
625
|
+
<div class="board">${columns}</div>${BOARD_BODY_STATIC}
|
|
572
626
|
</body>
|
|
573
627
|
</html>`;
|
|
574
628
|
}
|
|
@@ -601,48 +655,38 @@ function buildTaskUpdateInput(body) {
|
|
|
601
655
|
}
|
|
602
656
|
return { input };
|
|
603
657
|
}
|
|
604
|
-
function
|
|
605
|
-
const
|
|
606
|
-
const
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
const
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
`);
|
|
637
|
-
const tagsRow = stmtTags.get();
|
|
638
|
-
const fingerprint = `${baseRow.max_updated_at}|${tagsRow.max_created_at}|${tagsRow.count}`;
|
|
639
|
-
const updatedAt = baseRow.max_updated_at === null && tagsRow.max_created_at === null ? null : fingerprint;
|
|
640
|
-
return c.json({ updatedAt });
|
|
641
|
-
});
|
|
642
|
-
app.get('/api/tasks', (c) => {
|
|
643
|
-
const tasks = ts.listTasks({}, 'id', 'asc');
|
|
644
|
-
return c.json({ tasks });
|
|
645
|
-
});
|
|
658
|
+
function buildTasksByStatus(tasks) {
|
|
659
|
+
const tasksByStatus = new Map();
|
|
660
|
+
for (const status of STATUSES) {
|
|
661
|
+
tasksByStatus.set(status, []);
|
|
662
|
+
}
|
|
663
|
+
for (const task of tasks) {
|
|
664
|
+
tasksByStatus.get(task.status)?.push(task);
|
|
665
|
+
}
|
|
666
|
+
for (const [status, statusTasks] of tasksByStatus) {
|
|
667
|
+
tasksByStatus.set(status, sortByPriority(statusTasks));
|
|
668
|
+
}
|
|
669
|
+
return tasksByStatus;
|
|
670
|
+
}
|
|
671
|
+
function getBoardUpdatedAt(database) {
|
|
672
|
+
const baseRow = database
|
|
673
|
+
.prepare(`
|
|
674
|
+
SELECT MAX(updated_at) as max_updated_at FROM (
|
|
675
|
+
SELECT updated_at FROM tasks UNION ALL SELECT updated_at FROM task_metadata
|
|
676
|
+
)
|
|
677
|
+
`)
|
|
678
|
+
.get();
|
|
679
|
+
const tagsRow = database
|
|
680
|
+
.prepare(`
|
|
681
|
+
SELECT MAX(created_at) as max_created_at, COUNT(*) as count FROM task_tags
|
|
682
|
+
`)
|
|
683
|
+
.get();
|
|
684
|
+
if (baseRow.max_updated_at === null && tagsRow.max_created_at === null)
|
|
685
|
+
return null;
|
|
686
|
+
return `${baseRow.max_updated_at}|${tagsRow.max_created_at}|${tagsRow.count}`;
|
|
687
|
+
}
|
|
688
|
+
function registerTaskApiRoutes(app, { ts, tts, ms }) {
|
|
689
|
+
app.get('/api/tasks', (c) => c.json({ tasks: ts.listTasks({}, 'id', 'asc') }));
|
|
646
690
|
app.post('/api/tasks', async (c) => {
|
|
647
691
|
const body = await c.req.json();
|
|
648
692
|
if (!body.title || typeof body.title !== 'string' || !body.title.trim()) {
|
|
@@ -650,54 +694,74 @@ function createBoardApp(taskService, taskTagService, metadataService, db) {
|
|
|
650
694
|
}
|
|
651
695
|
const status = body.status && STATUSES.includes(body.status) ? body.status : 'backlog';
|
|
652
696
|
const priority = body.priority && (0, models_1.isPriority)(body.priority) ? body.priority : undefined;
|
|
653
|
-
|
|
654
|
-
return c.json(task, 201);
|
|
697
|
+
return c.json(ts.createTask({ title: body.title.trim(), body: body.body || undefined, status, priority }), 201);
|
|
655
698
|
});
|
|
656
699
|
app.get('/api/tasks/:id', (c) => {
|
|
657
700
|
const id = Number(c.req.param('id'));
|
|
658
|
-
if (isNaN(id))
|
|
701
|
+
if (isNaN(id))
|
|
659
702
|
return c.json({ error: 'Invalid task id' }, 400);
|
|
660
|
-
}
|
|
661
703
|
const task = ts.getTask(id);
|
|
662
|
-
if (!task)
|
|
704
|
+
if (!task)
|
|
663
705
|
return c.json({ error: 'Task not found' }, 404);
|
|
664
|
-
}
|
|
665
|
-
const tags = tts.getTagsForTask(id);
|
|
666
|
-
const metadata = ms.listMetadata(id);
|
|
667
|
-
return c.json({ task, tags, metadata });
|
|
706
|
+
return c.json({ task, tags: tts.getTagsForTask(id), metadata: ms.listMetadata(id) });
|
|
668
707
|
});
|
|
669
708
|
app.patch('/api/tasks/:id', async (c) => {
|
|
670
709
|
const id = Number(c.req.param('id'));
|
|
671
|
-
if (isNaN(id))
|
|
710
|
+
if (isNaN(id))
|
|
672
711
|
return c.json({ error: 'Invalid task id' }, 400);
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
const { input, error } = buildTaskUpdateInput(body);
|
|
676
|
-
if (error) {
|
|
712
|
+
const { input, error } = buildTaskUpdateInput(await c.req.json());
|
|
713
|
+
if (error)
|
|
677
714
|
return c.json({ error }, 400);
|
|
678
|
-
}
|
|
679
715
|
const task = ts.updateTask(id, input);
|
|
680
|
-
if (!task)
|
|
716
|
+
if (!task)
|
|
681
717
|
return c.json({ error: 'Task not found' }, 404);
|
|
682
|
-
}
|
|
683
718
|
return c.json(task);
|
|
684
719
|
});
|
|
685
720
|
app.delete('/api/tasks/:id', (c) => {
|
|
686
721
|
const id = Number(c.req.param('id'));
|
|
687
|
-
if (isNaN(id))
|
|
722
|
+
if (isNaN(id))
|
|
688
723
|
return c.json({ error: 'Invalid task id' }, 400);
|
|
689
|
-
|
|
690
|
-
const task = ts.getTask(id);
|
|
691
|
-
if (!task) {
|
|
724
|
+
if (!ts.getTask(id))
|
|
692
725
|
return c.json({ error: 'Task not found' }, 404);
|
|
693
|
-
}
|
|
694
726
|
ts.deleteTask(id);
|
|
695
727
|
return c.json({ success: true });
|
|
696
728
|
});
|
|
729
|
+
}
|
|
730
|
+
function buildBoardCardsPayload(tasksByStatus, tagMap) {
|
|
731
|
+
return STATUSES.map((status) => {
|
|
732
|
+
const tasks = tasksByStatus.get(status) || [];
|
|
733
|
+
const html = tasks.map((t) => renderCard(t, tagMap.get(t.id) || [])).join('');
|
|
734
|
+
return { status, html, count: tasks.length };
|
|
735
|
+
});
|
|
736
|
+
}
|
|
737
|
+
function registerBoardRoutes(app, services) {
|
|
738
|
+
const { ts, tts, database, boardTitle } = services;
|
|
739
|
+
app.get('/', (c) => {
|
|
740
|
+
const tasksByStatus = buildTasksByStatus(ts.listTasks({}, 'id', 'asc'));
|
|
741
|
+
return c.html(renderBoard(tasksByStatus, tts.getAllTaskTags(), boardTitle));
|
|
742
|
+
});
|
|
743
|
+
app.get('/api/board/updated-at', (c) => c.json({ updatedAt: getBoardUpdatedAt(database) }));
|
|
744
|
+
app.get('/api/board/cards', (c) => {
|
|
745
|
+
const tasksByStatus = buildTasksByStatus(ts.listTasks({}, 'id', 'asc'));
|
|
746
|
+
const columns = buildBoardCardsPayload(tasksByStatus, tts.getAllTaskTags());
|
|
747
|
+
return c.json({ columns });
|
|
748
|
+
});
|
|
749
|
+
registerTaskApiRoutes(app, services);
|
|
750
|
+
}
|
|
751
|
+
function createBoardApp(taskService, taskTagService, metadataService, db, boardTitle) {
|
|
752
|
+
const app = new hono_1.Hono();
|
|
753
|
+
const services = {
|
|
754
|
+
ts: taskService ?? new TaskService_1.TaskService(),
|
|
755
|
+
tts: taskTagService ?? new TaskTagService_1.TaskTagService(),
|
|
756
|
+
ms: metadataService ?? new MetadataService_1.MetadataService(),
|
|
757
|
+
database: db ?? (0, connection_1.getDatabase)(),
|
|
758
|
+
boardTitle,
|
|
759
|
+
};
|
|
760
|
+
registerBoardRoutes(app, services);
|
|
697
761
|
return app;
|
|
698
762
|
}
|
|
699
|
-
function startBoardServer(port) {
|
|
700
|
-
const app = createBoardApp();
|
|
763
|
+
function startBoardServer(port, boardTitle) {
|
|
764
|
+
const app = createBoardApp(undefined, undefined, undefined, undefined, boardTitle);
|
|
701
765
|
(0, node_server_1.serve)({ fetch: app.fetch, port }, () => {
|
|
702
766
|
console.log(`Board running at http://localhost:${port}`);
|
|
703
767
|
});
|
package/dist/board/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/board.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/board.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmBxD"}
|
|
@@ -8,6 +8,7 @@ function setupBoardCommand(program) {
|
|
|
8
8
|
.command('board')
|
|
9
9
|
.description('Start a local Kanban board viewer at localhost')
|
|
10
10
|
.option('-p, --port <number>', 'Port to listen on', '8080')
|
|
11
|
+
.option('-t, --title <text>', 'Board title to display in the header')
|
|
11
12
|
.action((options) => {
|
|
12
13
|
try {
|
|
13
14
|
const port = parseInt(options.port, 10);
|
|
@@ -16,7 +17,7 @@ function setupBoardCommand(program) {
|
|
|
16
17
|
process.exit(1);
|
|
17
18
|
return;
|
|
18
19
|
}
|
|
19
|
-
(0, server_1.startBoardServer)(port);
|
|
20
|
+
(0, server_1.startBoardServer)(port, options.title);
|
|
20
21
|
}
|
|
21
22
|
catch (error) {
|
|
22
23
|
(0, error_handler_1.handleError)(error, {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../../src/cli/commands/board.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../../src/cli/commands/board.ts"],"names":[],"mappings":";;AAIA,8CAmBC;AAtBD,+CAAsD;AACtD,0DAAqD;AAErD,SAAgB,iBAAiB,CAAC,OAAgB;IAChD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,CAAC;SAC1D,MAAM,CAAC,oBAAoB,EAAE,sCAAsC,CAAC;SACpE,MAAM,CAAC,CAAC,OAAyC,EAAE,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;gBAC5C,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,IAAA,yBAAgB,EAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,2BAAW,EAAC,KAAc,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|