api調整: node不提供type
考量到前端動態增刪連結會改變type, 就讓前端計算即可.
重新排版 & 消除tab
加入.drag_line
.drag_line跟一般的link一樣.
不過在HTML裡面, 引用的marker不同. 差別在於箭頭不會為了避免與節點重疊而稍微後移.
編輯器大幅改寫
只用d3的data binding (1-way) 無法發揮AngularJS 2-way data-binding的強大力量,
編輯器之前把d3js code一古腦往directive塞的作法已經走到瓶頸. 要讓AngularJS能發揮,
勢必不能再用d3產生DOM, 而是把SVG直接寫在template裡面, 再依照想要的行為添加directive.

改寫後, directive.js內的code被重寫、並移到edit_graph.ctp及controller.js
程式的行為與意圖大大提昇, 更容易理解.
controller上的public function依照參數而非scope上的變數工作, 責任切割更清楚.
拜ng-show、interpolate的強大威力，focus機制不再依賴大量變數.
這裡要注意'event bubbling'向上傳遞的機制, 經常會需要中途攔截. 這些在HTML中都看得到.

原本放在左邊tab的功能現在移入svg裡以按鈕呈現.

新增連結的程式碼放在api.genlink模組, 以mousedown, mouseup, mousemove此三事件為基礎完成.
注意拖拉的處理函式, 是svg上的d3-mousemove. 不是ng-mousemove, 是d3-mousemove.
d3-系列directive是我仿照ng-事件系列寫的, 差別在於不用jQuery而是d3 bind事件.
在這個例子, 只能用d3, 不能用jQuery. 原因待研究.
參考 http://bl.ocks.org/benzguo/4370043
新增pan/zoom功能, 參考網頁同上.