- Gin HTTP server sa dashboard i API endpointima - JSON API: GET /api/tasks, GET /api/task/:id, POST /api/task/:id/move - HTML dashboard sa Kanban prikazom (5 kolona) - HTMX za interaktivnost (klik na task → detalj panel) - Embedded static fajlovi (htmx.min.js, sortable.min.js) - Config: dodat KAOS_PORT - 10 server testova, 77 ukupno — svi prolaze - Očišćeni duplikati taskova iz v0.1 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
91 lines
2.0 KiB
Markdown
91 lines
2.0 KiB
Markdown
# T10: Drag & Drop — premesti task prevlačenjem
|
|
|
|
**Kreirao:** planer
|
|
**Datum:** 2026-02-20
|
|
**Agent:** coder
|
|
**Model:** Sonnet
|
|
**Zavisi od:** T09
|
|
|
|
---
|
|
|
|
## Opis
|
|
|
|
Dodaj Sortable.js na kanban board — prevuci task iz jedne kolone
|
|
u drugu. Na drop, HTMX pošalje POST i Go premesti fajl.
|
|
|
|
## Fajlovi za izmenu
|
|
|
|
```
|
|
code/web/
|
|
├── templates/
|
|
│ ├── dashboard.html ← dodaj Sortable inicijalizaciju
|
|
│ └── partials/
|
|
│ └── column.html ← dodaj sortable atribute
|
|
└── static/
|
|
└── style.css ← drag stilovi (ghost, placeholder)
|
|
```
|
|
|
|
## Kako radi
|
|
|
|
```html
|
|
<div class="column" id="col-ready" data-folder="ready">
|
|
<div class="task-card" data-id="T08">...</div>
|
|
</div>
|
|
|
|
<script>
|
|
document.querySelectorAll('.column').forEach(col => {
|
|
new Sortable(col, {
|
|
group: 'tasks',
|
|
animation: 150,
|
|
onEnd: function(evt) {
|
|
const taskId = evt.item.dataset.id;
|
|
const toFolder = evt.to.dataset.folder;
|
|
htmx.ajax('POST', `/task/${taskId}/move?to=${toFolder}`, {
|
|
target: '#board',
|
|
swap: 'outerHTML'
|
|
});
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
```
|
|
|
|
## Pravila premestanja
|
|
|
|
Dozvoljena kretanja:
|
|
- backlog → ready (operater odobri)
|
|
- ready → backlog (operater povuče nazad)
|
|
- review → done (operater odobri)
|
|
- review → ready (operater vrati na doradu)
|
|
|
|
Zabranjena kretanja (agent radi ovo, ne operater):
|
|
- ready → active (samo agent)
|
|
- active → review (samo agent)
|
|
|
|
Server validira i odbije nedozvoljene poteze sa porukom.
|
|
|
|
## Vizuelni feedback
|
|
|
|
- Drag: kartica postaje poluprozirna
|
|
- Drop zona: highlight kad se kartica prevlači iznad
|
|
- Uspešan drop: zeleni flash
|
|
- Neuspešan drop: crveni flash + kartica se vrati
|
|
|
|
## Testovi
|
|
|
|
- Premesti T08 iz backlog u ready → fajl premešten, board ažuriran
|
|
- Pokušaj premesti u active → server odbije, kartica se vrati
|
|
- Drag & drop ne kvari postojeći klik za detalj
|
|
|
|
## Očekivani izlaz
|
|
|
|
Prevuci task iz kolone u kolonu. Server premesti fajl. Board se ažurira.
|
|
|
|
---
|
|
|
|
## Pitanja
|
|
|
|
---
|
|
|
|
## Odgovori
|