かんばん(Kanban) とは、1950 年代にトヨタで開発されたスケジューリングシステムの一つである。
しかし、かんばん方式として改めて定義されたのは 2007 年のことである。
- まず初めに
- boards プロパティに渡すのは連想配列ではなく配列
- D&D を拒否したいボードは dropEl コールバックで return false する
- dropEl コールバックに渡される引数
- 要素に渡した id は data-eid 属性として要素に付与される
- boards.{board_index}.item.{item_index} に渡したプロパティは dataset に入る
- nil
まず初めに
GitHub - riktar/jkanban: Vanilla Javascript plugin for manage kanban boards
プロジェクトで触った時に出くわしたちょっと困ったところを備忘録としてただ書くだけの記事です。
導入とか基本的な使い方は他の記事の方が詳しいです。
同じところを迷った人が参考にしてくれると嬉しいな。
素直にかんばんアプリ使えばいいのに簡易的にこの機能欲しがる人って結構多いんですよね
D&D を拒否したいボードは dropEl コールバックで return false する
他のボードから要素を D&D させたくないとか、もしくは他のボードに要素を D&D させたくない、といった状況があるかと思います。
そういった場合に使えるオプションの一つに dropEl プロパティがありまして、
こちらは要素のドロップ時に call されるコールバックを指定できます。
そして dropEl コールバックの中で return false すれば D&D がキャンセルできます。
下記 issue でそういった実装に至りました。
普通に便利だし usage に書いたらいいのに
Cancel Drop after async function · Issue #50 · riktar/jkanban · GitHub
dropEl コールバックに渡される引数
el: D&D した要素そのもの(div.kanban-item)
target: 移動先のボード(main.kanban-drag)
source: 移動元のコンテナ(main.kanban-drag)
sibling: el の下の兄弟要素(div.kanban-item)
sibling に関しては兄弟要素がなければ普通に null が渡されます。
要素に渡した id は data-eid 属性として要素に付与される
[ { "id" : "board-id-1", "title" : "Board Title", "class" : "class1,class2,...", "dragTo": ['another-board-id',...], "item" : [ { "id" : "item-id-1", // ← これ "title" : "Item 1" "class" : ["myClass",...] }, { "id" : "item-id-2", // ← これ "title" : "Item 2" } ] }, ]
上記の例で言えば、
"id": "item-id-1" を要素に渡すとして、
<div class="kanban-item" date-eid="item-id-1">
のように付与されます。
特にバックエンドとの連携で ID をそのまんま渡すことも少なくないので、
各コールバックで data-eid を利用するシーンもあるんじゃないかと思います。
replaceElement(id, element) 等の引数に用いられてる id とは data-eid のこと
つまり、要素に渡した ID のことです。
boards.{board_index}.item.{item_index} に渡したプロパティは dataset に入る
riktar/jkanban の Usage > About custom properties の項にも記述されていることです。
[ { "id" : "board-id-1", "title" : "Board Title", "class" : "class1,class2,...", "dragTo": ['another-board-id',...], "item" : [ { "id" : "item-id-1", "title" : "Item 1", "username": "username1" // これが data-username="username1" になる }, ] }, ]
要素にフラグ等を付与して細かいハンドリングをしたい時に有用です。
nil
思ったより融通の利くライブラリで割と好みです。
要素の見た目を詳細に定義したかったら title に詰め込まなきゃいけないのだけ不満。