1. 程式人生 > >JQuery.Gantt(甘特圖) 開發指南

JQuery.Gantt(甘特圖) 開發指南

JQuery.Gantt是一個開源的基於JQuery庫的用於實現甘特圖效果的可擴充套件功能的JS元件庫。


  • 原始碼下載

  • 前端頁面
    • 資源引用
首先我們需要將下載到的原始碼中的CSS、IMG、JS等資源放入我們自己的專案中,然後在我們自己的頁面中引用需要的資原始檔。
      • CSS樣式檔案
<link rel="stylesheet" href="css/style.css" />
  • JS指令碼檔案
<script src="js/jquery-1.7.min.js"></script>
<script src="js/jquery.fn.gantt.js" charset ="GB2312"></script>
<script src="js/jquery.cookie.js"></script>
 注:如果需要甘特圖中顯示中文,則需要在js檔案引用中加上charset特性並設定為GB2312,否則中文內容將顯示為亂碼。
    • 頁面佈局
     在需要顯示甘特圖的地方加入以下這個div。
<div class="gantt"></div>
  • 元件配置
    • Gantt 配置
$(".selector").gantt({
        source:"ajax/data.json",
        scale:"weeks",
        minScale:"weeks",
        maxScale:"months",
        onItemClick:function(data){
                alert("Item clicked - show some details");},
        onAddClick:function(dt, rowId){
                alert("Empty space clicked - add an item!");},
        onRender:function(){
                console.log("chart rendered");}});
引數 預設值 接收型別
source null Array, String (url)
itemsPerPage 7 Number
months ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] Array
dow ["S", "M", "T", "W", "T", "F", "S"] Array
navigate "buttons" String ("buttons","scroll")
scale
"days" String
maxScale "months" String
minScale "hours" String
waitText "Please Wait..." String
onItemClick: function (data) { return; } 有資料範圍內的點選事件
onAddClick function (dt, rowId) { return; } 無資料範圍內的點選事件
onRender function () { return; } 渲染事件
useCookie false 如果需要使用cookie則需要引用JS指令碼檔案:jquery.cookie.js 
scrollToToday true Boolean
  • Source 配置
source:[{
        name:"Example",
        desc:"Lorem ipsum dolor sit amet.",
        values:[...]}]
引數 預設值 接收型別 解釋
name null String 每一行最左側的一列以粗體顯示
desc null String 每一行左側第二列
values null Array 甘特圖日期範圍項
  • Value 配置
values:[{
        to:"/Date(1328832000000)/",from:"/Date(1333411200000)/",
        desc:"Something",
        label:"Example Value",
        customClass:"ganttRed",
        dataObj: foo.bar[i]}]
引數 接收型別 解釋
to String (Date) 結束時間,以毫秒為換算單位
from String (Date) 開始時間,以毫秒為換算單位
desc String 滑鼠懸停顯示文字
label String 甘特項顯示文字
customClass String 甘特項的自定義class
dataObj All 一個直接應用於甘特項的資料物件
  • 程式碼說明
    • jquery.cookie.js
     用於cookie管理,如果需要在甘特圖中使用cookie則需要在頁面中引用該js檔案,否則不需要引用。
    • jquery.fn.gantt.js
     JQuery.Gantt元件的核心指令碼檔案,所有的甘特圖功能程式碼都在這個檔案中。      程式碼結構解析:
  • $.fn.gantt = function (options):甘特圖部件物件
    • 基礎設定項
      • cookieKey:cookie的鍵
      • scales:時間範圍的級別
      • settings:部件設定集
        • source:資料來源
        • itemsPerPage:分頁的每頁資料行數
        • months:列頭處月份名稱
        • dow:列頭處星期名稱
        • startPos:預設開始位置日期
        • navigate:底部導航,buttons為按鈕式的,scroll為滑塊式的
        • scale:甘特圖每一列的時間範圍
        • useCookie:是否使用cookie,如果使用需要引用jquery.cookie.js
        • maxScale:最大時間範圍
        • minScale:最小時間範圍
        • waitText:等待提示文字
        • onItemClick:有資料範圍內點選事件
        • onAddClick:無資料範圍內點選事件
        • onRender:渲染事件
        • scrollToToday:設定是否滾動到今天
    • 選擇器方法(a:元素,i:索引,m:值): $.extend($.expr[":"], {});
      • findday:以毫秒為時間單位匹配一個指定的日期
      • findweek:以毫秒為時間單位匹配一個指定的周
      • findmonth:以毫秒為時間單位匹配一個指定的月
    • 日期原型
      • Date.prototype.getWeekId:獲取weekid用於標識week的div的id特性,返回字串,格式為dh-YYYY-WW,其中的ww是一年中的第幾周
      • Date.prototype.genRepDate:按部件設定屬性中scale的值獲取時間範圍,以秒為時間單位
      • Date.prototype.getDayOfYear:獲取日期在一年中的第幾天
      • Date.prototype.getWeekOfYear:獲取日期在一年中的第幾周
      • Date.prototype.getDaysInMonth:獲取日期所在月份的天數
      • Date.prototype.hasWeek:如果日期駐留在一週的邊界,返回真
      • Date.prototype.getDayForWeek:返回一週的開始日期的日期物件
    • Grid管理器(負責導航和渲染):core
      • elementFromPoint:獲取位於指定點的最高處的元素
      • create:建立圖表
      • init:初始化檢視,計算行數、頁數、可見的開始時間與結束時間
      • render:渲染grid
      • leftPanel:建立左側Panel
      • dataPanel:建立右側資料Panel
      • rightPanel:建立右側頭部Panel
      • navigation:導航
      • createProgressBar:建立進度條
      • markNow:移除”wd“class新增”today“class到當前的scale模式
      • fillData:填充圖表,解析資料並填充到panel
      • navigateTo:導航到
      • navigatePage:導航到指定的頁面
      • zoomInOut:變更空間軸級次(zoom)
      • mouseScroll:通過滑鼠移動圖表
      • wheelScroll:通過滑鼠滾輪移動圖表
      • sliderScroll:通過滑塊控制圖表
      • scrollPanel:更新滾動panel的margin
      • synchronizeScroller:同步滾動
      • repositionLabel:重新定位資料標籤
      • waitToggle:切換等待
    • 實用功能:tools
      • getMaxDate:返回最大可能的日期在scale值的標準下
      • getMinDate:返回最小可能的日期在scale值的標準下
      • parseDateRange:返回一個日期物件陣列介於from和to之間,時間單位為天
      • parseTimeRange:返回一個日期物件陣列介於from和to之間,時間單位為小時
      • parseWeeksRange:返回一個日期物件陣列介於from和to,時間單位為周
      • parseMonthsRange:返回一個日期物件陣列介於from和to,時間單位為月
      • dateDeserialize:從字串反序列化成日期
      • genId:用日期建立ID
      • getCellSize:獲取當前單元格的大小
      • getRightPanelSize:獲取當前右panel的大小
      • getPageHeight:獲取當前頁面的高度
      • getProgressBarMargin:獲取當前進度條的margin大小
    • 選項擴充套件:this.each(function () {};);