jQuery Gantt Edit:(一)參數以及方法說明

jQuery Gantt editorjavascript

 

jQuery Gantt Edit(如下簡稱GE)是一款開源的基於jQuery的甘特圖插件,做者:robicch. GitHub地址:https://github.com/robicch/jQueryGantthtml

首先是GE的主要特色:java

  • 基於jQuery
  • MIT許可:你能夠在任何地方重複使用
  • json數據傳輸
  • 支持國際化
  • 任務管理與工做流處理
  • 管理任務依賴(從屬)
  • 管理做業(資源,角色,進度)
  • 服務器同步
  • 支持撤銷重作
  • 瀏覽器兼容(能夠兼容IE8及以上版本,其餘基本都支持)

如何使用git

首先下載組件資源,點我下載,源碼裏面的gantt.html已是一個能夠使用的甘特圖github

使用火狐或者谷歌來調試代碼json

首先定義一個全局變量ge;這裏關於做用域的問題稍後討論數組

var ge = new GanttMaster();

任務對甘特圖的操做數據修改均可以使用ge.saveProject()來保存瀏覽器

ge.saveProject()

使用ge.loadProject( [yourJsonProject] )加載項目服務器

ge.loadProject(json)

對於甘特圖的項目數據結構數據結構

{
tasks:[…]
resources: […]
roles: […]
deletedTaskIds:[…]
selectedRow: 7
canWrite: true
canWriteOnParent: true
minEditableDate:1349906300000
maxEditableDate:3499063999999 }

其中tasks,roles,resources都是數組

tasks:裏面放的就是乾圖特要顯示的數據,中數據的順序就是甘特圖上顯示的順序,這裏顯示的任務數據全部參數

{
「id」:」tmp_fk1345562123031″,
「name」:」approval」,
「code」:」APP」,
「level」:2,
「status」:」STATUS_SUSPENDED」,
「start」:1348696800000,
「duration」:10,
「end」:1349906399999,
「startIsMilestone」:false,
「endIsMilestone」:false,
「assigs」:[…],
「depends」:」7:3,8″,
「description」:」Approval of testing」,
「progress」:20
}
  • id:使用來與服務器同步的,若是是從服務器讀取的數據那麼任務將不可拖動,若是任務是從客戶端建立的,那麼id前面會加一個"tmp_"的前綴
  • level:整形,是決定你任務分級的參數,也就是在甘特圖上的縮進,根任務或者叫總任務的level是0,而後子任務是level是1,以此類推,級別必須與任務結構一致,你不能在沒有n的狀況下寫n+1 級,同時level是控制任務從屬(父子關係)和左側任務縮進的關鍵
  • start,end:這裏用的是js13位時間戳來表示任務的開始時間與結束時間
  • duration:整形,表示你再工做的時間,好比說你的工做中包含了假期,甘特圖會根據你開始時間(start)和持續時間(duration)來計算你的結束日期,在下面會有說明
  • startIsMilestone, endIsMilestone:布爾型,一旦設置爲true,那麼任務就不能移動,你能夠修改任務時間,可是該任務不會隨着子任務和進程修改而修改.
  • depends:任務依賴關係,支持多任務依賴關係(通俗來講就那個完成以後再能進行那個),只支持從完成到開始狀態的依賴,7:3,8的意思是在第7個任務結束後3天和第八個任務結束的最長時間開始本任務
  • status:表示任務的狀態,支持的狀態有(狀態轉換下面會有說明)
    •   STATUS_ACTIVE:執行中,
    •   STATUS_DONE:完成,
    •   STATUS_FAILED:失敗,
    •   STATUS_SUSPENDED:暫停/掛起,
    •   STATUS_UNDEFINED:無心義
  • 這裏的狀態容許你想工做流那樣使用依賴關係,加入任務B依賴任務A.那個任務B的狀態就是暫停/掛起狀態,直到任務A的狀態從執行中變爲完成.完整的狀態轉化的信息,將在下面介紹
  • progress:任務進度率,就是百分比.沒有限制,能夠超過100%
  • assigs:數組,任務分配,每個assigs對象都具備如下結構
    {
    「resourceId」:」tmp_1″,
    「id」:」tmp_1345560373990″,
    「roleId」:」tmp_1″,
    「effort」:36000000
    }
    •   resourceId:惟一的id,與resource相關聯
    •   id:assige對象的惟一id
    •   roleId:惟一角色id,與roles想關聯
    •   effort:預計影響的工做量,也是13位時間戳

 

resources:數組包含如下數據結構

{
「id」:」tmp_1″,
「name」:」Resource 1″
}

roles:數組包含如下數據結構  

{
「id」:」tmp_1″,
「name」:」Project Manager」
}

deleteTaskIds:刪除的任務數,裏面包含的是在客戶端刪除的任務數據的ids,那些id是以temp開頭的都不會保存到服務器,而是會被悄悄的刪除

selectedRow:如今正在被編輯的行

canWrite:布爾值,若是你又意向去編輯/建立/刪除任務,就把他設置爲ture

canWritOnParent:這個提及來有點模糊,好比說你是一個複雜項目下某個子任務的負責人,你修改的時間有可能形象到上層項目進度,那麼就能夠設置爲false來組織對top-project的修改

minEditableDate,maxEditableDate:設置最小時間和最大時間

 

 狀態轉化規則

*注意:這裏狀態的大小寫要區分不支持小寫

  • any status->STATUS_DONE:任意狀態到完成.
    • 當前任務若是沒有前置任務,當前任務設置爲完成狀態
    • 子任務全部項變爲完成狀態
    • 依賴於這個任務的依賴項的暫停/掛起和未定義狀態會變爲執行狀態,其餘不改變 
  • STATUS_FAILED -> STATUS_DONE:失敗到完成
    • 當前任務變爲完成狀態,
    • 子任務不改變(失敗狀態下的子任務也必定是失敗狀態)
    • 依賴項不改變(失敗狀態下的依賴項頁必定是失敗狀態)    
  • STATUS_UNDEFINED -> STATUS_ACTIVE:未定義到執行中
    • 當前任務變爲未定義狀態,
    • 子任務變爲未定義狀態
    • 依賴項變爲未定義狀態
  • STATUS_SUSPENDED -> STATUS_ACTIVE:從暫定/掛起到執行中
    • 當前任務沒有前置任務且沒有父任務變爲活動狀態,有則沒法變
    • 子任務變爲暫停/掛起狀態
    • 依賴項變爲暫停/掛起狀態
  • STATUS_DONE -> STATUS_ACTIVE:完成到活動
    • 當前任務若是沒前置任務和父任務,則變爲活動狀態.若是有父級須要父級爲活動狀態
    • 子任務不改變狀態
    • 依賴項變爲暫定/掛起狀態
  • any status-> STATUS_SUSPENDED:任意狀態到暫停/掛起
    • 當前任務變爲暫停/掛起狀態
    • 子集變爲暫停/掛起狀態
    • 依賴項變爲暫停/掛起狀態
  • any status-> STATUS_UNDEFINED:任意狀態到未定義
    • 當前任務變爲未定義
    • 子集變爲未定義
    • 依賴項變爲未定義  
  • any status-> STATUS_FAILED:任意狀態到失敗
    • 當前任務變爲失敗
    • 子任務變爲失敗
    • 依賴項變爲失敗  

 總結一下:

  • 想變爲活動須要父任務爲活動,前置任務爲完成
  • 修改狀態只會向下影響沒法向上影響(隻影響本身的子任務和依賴項)
  • 想要修改狀態須要父級和前置任務的狀態去匹配,基本上是失敗,未定義,暫停/掛起隨便改,活動須要前置任務完成,父任務活動,完成須要父任務活動,當前任務爲活動
相關文章
相關標籤/搜索