UiKanbanSpecifier buildTodoKanban() {
new UiKanbanSpecifier().ui { (1)
column 'To Do', Style.ALIGN_CENTER, { (2)
custom "Custom header html code"
}, Gantt2Controller.&changeTodoProgression as MethodClosure, [newProgression: 0], {
custom "Custom html code" (3)
todos.forEach { Todo todo ->
card todo, Gantt2Controller.&showTodo as MethodClosure, todo.id, { (4)
cardField todo.what_ (5)
cardFieldRaw "Custom html code" (6)
cardAction ActionIcon.SHOW * IconStyle.SCALE_DOWN, Gantt2Controller.&doSomething as MethodClosure, todo.id (7)
}
}
}
}
}
Table of Contents
-
Gerendert in HTML
-
Gerendert in Mails
-
Gerendert in PDF
-
Gerendert in CSV

Codebeispiel
Kanban-Codebeispiel 1
Drop-Aktion
@Transactional
def changeTodoProgression(Integer newProgression) {
Todo todo = Todo.get(params.long('cardId')) (10)
todo.progression = newProgression
render status: 200
}
Kontextmenü in einem Service registrieren
@PostConstruct
void init() {
TaackUiService.registerContextualMenuClosure(Todo, new UiMenuSpecifier().ui { Long id -> (8)
menu 'Show Gantt', Gantt2Controller.&showGanttByTodo as MethodClosure, id (9)
})
}
| 1 | Kanban-Spezifizierer erstellen |
| 2 | Kanban-Spalte mit Beschriftung, Stil und einer optionalen Header-Closure (nur custom) erstellen; optional können eine Aktion und Parameter übergeben werden, die bei Drag+Drop in die Spalte aufgerufen werden |
| 3 | Optional benutzerdefinierten HTML-Code für den Spaltenkörper hinzufügen |
| 4 | Karten in der Spalte erstellen; optional können eine Aktion und Parameter für MouseDoubleClic auf die Karte übergeben werden |
| 5 | Eine Zeile mit einem Feld in der Karte erstellen; beachten Sie den Unterstrich am Ende des Feldnamens |
| 6 | Benutzerdefinierter HTML-Code, der unverändert gerendert wird. cardField mit einem String wird bereinigt (nur einfache Formatierungen und Links bleiben erhalten); verwenden Sie cardFieldRaw für von der Anwendung erzeugtes HTML, niemals für vom Benutzer eingegebene Daten |
| 7 | Optional ein Icon mit einer Aktion bei Klick hinzufügen |
| 8 | Kontextmenü für MouseRight auf die Karte registrieren |
| 9 | Einen Menüeintrag mit verknüpfter Aktion hinzufügen |
| 10 | Die ID der abgelegten Karte wird über den Parameter cardId zusammen mit den Spaltenparametern übergeben |
Um das Kanban in einem Block anzuzeigen, verwenden Sie kanban oder kanbanFilter, um einen Filter zu verknüpfen:
taackUiService.show(new UiBlockSpecifier().ui {
kanbanFilter buildTodoFilter(), buildTodoKanban()
}, buildMenu())
DSL-Symbolhierarchie
Figure 1. Symbolhierarchiediagramm für Kanban DSL