From ebe7478f3b1bf4bcdf3c6884e23d612ae83bf388 Mon Sep 17 00:00:00 2001 From: eneasgesing Date: Mon, 9 Jan 2012 13:24:43 -0200 Subject: [PATCH 01/40] The change in core.create function allow to load an object as source. This allow dynamic chart generation (e.g. from an existing html list or table) --- js/jquery.fn.gantt.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/js/jquery.fn.gantt.js b/js/jquery.fn.gantt.js index 0404fee..df8ad27 100755 --- a/js/jquery.fn.gantt.js +++ b/js/jquery.fn.gantt.js @@ -119,11 +119,20 @@ /** * Retrieve data */ - $.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"}); - $.getJSON(settings.source, function(jsData) { - element.data = jsData; + if(typeof(settings.source) == 'object'){ + + element.data = settings.source; core.init(element); - }); + + } else { + + $.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"}); + $.getJSON(settings.source, function(jsData) { + element.data = jsData; + core.init(element); + }); + } + }, init: function (element) { element.rowsNum = element.data.length; From 02eb1314cdb828bfcbdd69f393429b050f407c09 Mon Sep 17 00:00:00 2001 From: Dave Katten Date: Tue, 7 Feb 2012 18:13:40 -0600 Subject: [PATCH 02/40] Fixed Bug #10. Psuedoselectors were failing on more recent versions of jQuery also: added benefit of caching the variable. --- js/jquery.fn.gantt.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/jquery.fn.gantt.js b/js/jquery.fn.gantt.js index df8ad27..5be478d 100755 --- a/js/jquery.fn.gantt.js +++ b/js/jquery.fn.gantt.js @@ -47,7 +47,7 @@ id = id?id:''; var si = id.indexOf('-')+1; cd = cd.getFullYear()+'-'+cd.getDayForWeek().getWeekOfYear(); - var ed = $(a).attr('id').substring(si, $(a).attr('id').length); + var ed = id.substring(si, id.length); return cd == ed; } }); @@ -59,7 +59,7 @@ var id = $(a).attr('id'); id = id?id:''; var si = id.indexOf('-')+1; - var ed = $(a).attr('id').substring(si, $(a).attr('id').length); + var ed = id.substring(si, id.length); return cd == ed; } }); From b05462105a0f7858ad6946caa61a2f1f1a288c55 Mon Sep 17 00:00:00 2001 From: Marek Date: Wed, 22 Feb 2012 16:39:01 +0100 Subject: [PATCH 03/40] Fix for #21 --- index.htm | 2 +- js/jquery.fn.gantt.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/index.htm b/index.htm index 85b24bd..681401f 100644 --- a/index.htm +++ b/index.htm @@ -5,7 +5,7 @@ - + diff --git a/js/jquery.fn.gantt.js b/js/jquery.fn.gantt.js index 208efa8..ea65ec7 100755 --- a/js/jquery.fn.gantt.js +++ b/js/jquery.fn.gantt.js @@ -922,15 +922,18 @@ .append(_bar); break; case 'weeks': - case 'months': - var dFrom = tools.genId(tools.dateDeserialize(day.from).getTime()); - var dTo = tools.genId(tools.dateDeserialize(day.to).getTime()); + case 'months': + var dtFrom = tools.dateDeserialize(day.from); + var dtTo = tools.dateDeserialize(day.to); + + if (dtFrom.getDate() <= 3 && dtFrom.getMonth() == 0) + dtFrom.setDate(dtFrom.getDate()+4); + if (dtTo.getDate() <= 3 && dtTo.getMonth() == 0) + dtTo.setDate(dtTo.getDate()+4); - if (dFrom.getDate() <= 3 && dFrom.getMonth() == 0) - dFrom.setDate(dFrom.getDate()+4); - if (dTo.getDate() <= 3 && dTo.getMonth() == 0) - dTo.setDate(dTo.getDate()+4); - + var dFrom = tools.genId(dtFrom.getTime()); + var dTo = tools.genId(dtTo.getTime()); + var cFrom = $(element).find('#d'+i+'-'+ dFrom).offset().left; var cTo = $(element).find('#d'+i+'-'+ dTo).offset().left; var dl = Math.round((cTo-cFrom)/tools.getCellSize())+1; @@ -941,7 +944,7 @@ day.desc ? day.desc : '', day.label ? day.label : '' ); - $(element).find('#d'+i+'-'+ tools.genId(tools.dateDeserialize(day.from).getTime(), element.scaleStep)) + $(element).find('#d'+i+'-'+ tools.genId(dtFrom.getTime(), element.scaleStep)) .append(_bar); break; default: From 65358635025c93bdc005e6e55f94b5affb7cc906 Mon Sep 17 00:00:00 2001 From: Sprog Date: Fri, 20 Apr 2012 12:09:21 +0200 Subject: [PATCH 05/40] Fixed the typo hollydays -> holidays in the code --- js/jquery.fn.gantt.js | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/js/jquery.fn.gantt.js b/js/jquery.fn.gantt.js index ea65ec7..a4cf8d4 100755 --- a/js/jquery.fn.gantt.js +++ b/js/jquery.fn.gantt.js @@ -16,15 +16,15 @@ var settings = { source: null, - itemsPerPage: 7, - months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"], - dow: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So"], + itemsPerPage: 10, + months: ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"], + dow: ["Su", "Mo", "Tu", "Mi", "Do", "Fr", "Sa"], startPos: new Date(), navigate: 'buttons', scale: 'days', maxScale: 'months', minScale: 'hours', - waitText: 'Please wait...' + waitText: 'Please wait...' }; $.extend($.expr[':'],{ @@ -274,7 +274,7 @@ var today = new Date(); today = new Date(today.getFullYear(), today.getMonth(), today.getDate()); - var hollydays = settings.holidays ? settings.holidays.join() : ''; + var holidayItems = settings.holidays ? settings.holidays.join() : ''; switch (settings.scale) { @@ -328,13 +328,13 @@ var getDay = day.getDay(); var day_class = dowClass[rgetDay]; var getTime = day.getTime(); - if (hollydays.indexOf((new Date(rday.getFullYear(), rday.getMonth(), rday.getDate())).getTime())>-1) + if (holidayItems.indexOf((new Date(rday.getFullYear(), rday.getMonth(), rday.getDate())).getTime())>-1) - day_class = "hollyday"; + day_class = "holiday"; if (rgetDay != getDay) { - var day_class2 = (today - day == 0) ? ' today' : (hollydays.indexOf(getTime)>-1) ? "hollyday" : dowClass[getDay]; + var day_class2 = (today - day == 0) ? ' today' : (holidayItems.indexOf(getTime)>-1) ? "hollyday" : dowClass[getDay]; daysStr += '
' @@ -377,7 +377,7 @@ var day_class = dowClass[day.getDay()]; - if (hollydays.indexOf((new Date(day.getFullYear(), day.getMonth(), day.getDate())).getTime()) > -1) + if (holidayItems.indexOf((new Date(day.getFullYear(), day.getMonth(), day.getDate())).getTime()) > -1) day_class = "hollyday"; daysStr += '
-1) + if (holidayItems.indexOf((new Date(day.getFullYear(), day.getMonth(), day.getDate())).getTime())>-1) todayCls = " hollyday"; dRow += '
'; }; @@ -640,8 +640,8 @@ var getDay = rday.getDay(); var day_class = dowClass[getDay]; - if (hollydays.indexOf((new Date(rday.getFullYear(), rday.getMonth(), rday.getDate())).getTime()) > -1) - day_class = "hollyday"; + if (holidayItems.indexOf((new Date(rday.getFullYear(), rday.getMonth(), rday.getDate())).getTime()) > -1) + day_class = "holiday"; daysStr += '
' @@ -692,8 +692,8 @@ { day = range[x]; var todayCls = gridDowClass[day.getDay()]; - if (hollydays.indexOf((new Date(day.getFullYear(), day.getMonth(), day.getDate())).getTime()) > -1) - todayCls = " hollyday"; + if (holidayItems.indexOf((new Date(day.getFullYear(), day.getMonth(), day.getDate())).getTime()) > -1) + todayCls = " holiday"; dRow += '
'; }; dataPanel.append($(dRow+'
')); @@ -1505,4 +1505,4 @@ }); }; -})(jQuery); +})(jQuery); \ No newline at end of file From 90d9e57f7542f136ba09866b2bb6598029539774 Mon Sep 17 00:00:00 2001 From: Sprog Date: Fri, 20 Apr 2012 12:10:58 +0200 Subject: [PATCH 06/40] Reverted back to the Polish --- js/jquery.fn.gantt.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/jquery.fn.gantt.js b/js/jquery.fn.gantt.js index a4cf8d4..06c632e 100755 --- a/js/jquery.fn.gantt.js +++ b/js/jquery.fn.gantt.js @@ -16,9 +16,9 @@ var settings = { source: null, - itemsPerPage: 10, - months: ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"], - dow: ["Su", "Mo", "Tu", "Mi", "Do", "Fr", "Sa"], + itemsPerPage: 7, + months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"], + dow: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So"], startPos: new Date(), navigate: 'buttons', scale: 'days', From 72d119f97629a85124c8b2b0683d76ced74a68b7 Mon Sep 17 00:00:00 2001 From: Sprog Date: Fri, 20 Apr 2012 12:12:38 +0200 Subject: [PATCH 07/40] Fixed the typo in the `style.css` file --- style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/style.css b/style.css index 9a0e11b..13a7e37 100644 --- a/style.css +++ b/style.css @@ -110,7 +110,7 @@ body { margin: -1px 0 0 -1px; } -.fn-gantt .hollyday { +.fn-gantt .holiday { background-color: #f9e5e2; height: 23px; margin: 0 0 -1px -1px; From 4cb77dbf9ee093d13002e16003dfa1d1b6f73a29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Biela=C5=84czuk?= Date: Sat, 26 May 2012 23:09:37 +0200 Subject: [PATCH 08/40] Added ID to bars To use ID in bars new field "id" in JSON is required: {"id": "b0", "from": "/Date(1320192000000)/", "to": "/Date(1321401600000)/", "desc": "Id: 1
Name: Planning
Date: 2011-11-02 to 2011-11-16", "label": " Planni...", "customClass": "ganttRed"} --- index.htm | 8 +- js/dataDays.js | 32 +- js/jquery.fn.gantt.js | 3017 +++++++++++++++++++++-------------------- 3 files changed, 1530 insertions(+), 1527 deletions(-) mode change 100755 => 100644 js/jquery.fn.gantt.js diff --git a/index.htm b/index.htm index fda9fe9..b1b90e0 100644 --- a/index.htm +++ b/index.htm @@ -12,10 +12,10 @@ jQuery(function () { var dataPath = location.href.substring(0, location.href.lastIndexOf('/')+1); //$(".gantt").gantt({source: dataPath + "js/dataHours.js", navigate: 'scroll', scale: 'hours', maxScale: 'hours', minScale: 'hours', hollydays: ["\/Date(1293836400000)\/","\/Date(1294268400000)\/","\/Date(1303596000000)\/","\/Date(1306274400000)\/","\/Date(1304200800000)\/","\/Date(1304373600000)\/","\/Date(1307829600000)\/","\/Date(1308780000000)\/","\/Date(1313359200000)\/","\/Date(1320105600000)\/","\/Date(1320966000000)\/","\/Date(1324767600000)\/","\/Date(1324854000000)\/","\/Date(1325372400000)\/","\/Date(1325804400000)\/","\/Date(1333836000000)\/","\/Date(1336514400000)\/","\/Date(1335823200000)\/","\/Date(1335996000000)\/","\/Date(1338069600000)\/","\/Date(1339020000000)\/","\/Date(1344981600000)\/","\/Date(1351724400000)\/","\/Date(1352588400000)\/","\/Date(1356390000000)\/","\/Date(1356476400000)\/"]}); - //$(".gantt").gantt({source: dataPath + "js/dataDays.js", navigate: 'scroll', scale: 'days', maxScale: 'weeks', minScale: 'days', hollydays: ["\/Date(1293836400000)\/","\/Date(1294268400000)\/","\/Date(1303596000000)\/","\/Date(1306274400000)\/","\/Date(1304200800000)\/","\/Date(1304373600000)\/","\/Date(1307829600000)\/","\/Date(1308780000000)\/","\/Date(1313359200000)\/","\/Date(1320105600000)\/","\/Date(1320966000000)\/","\/Date(1324767600000)\/","\/Date(1324854000000)\/","\/Date(1325372400000)\/","\/Date(1325804400000)\/","\/Date(1333836000000)\/","\/Date(1336514400000)\/","\/Date(1335823200000)\/","\/Date(1335996000000)\/","\/Date(1338069600000)\/","\/Date(1339020000000)\/","\/Date(1344981600000)\/","\/Date(1351724400000)\/","\/Date(1352588400000)\/","\/Date(1356390000000)\/","\/Date(1356476400000)\/"]}); - $(".gantt").gantt({ - source: [{"name":"application","desc":"Lübeck","values":[{"from":"/Date(1293874598708)/","to":"/Date(1354268198708)/","desc":"ID: 10
name: CRM
date: 01.01.2011 to 30.11.2012
description: CRM 4.0", "label":"CRM","customClass":"ganttGreen"}]}], - navigate: 'scroll', scale: 'days', hollydays: ["\/Date(1293836400000)\/","\/Date(1294268400000)\/","\/Date(1303596000000)\/","\/Date(1306274400000)\/","\/Date(1304200800000)\/","\/Date(1304373600000)\/","\/Date(1307829600000)\/","\/Date(1308780000000)\/","\/Date(1313359200000)\/","\/Date(1320105600000)\/","\/Date(1320966000000)\/","\/Date(1324767600000)\/","\/Date(1324854000000)\/","\/Date(1325372400000)\/","\/Date(1325804400000)\/","\/Date(1333836000000)\/","\/Date(1336514400000)\/","\/Date(1335823200000)\/","\/Date(1335996000000)\/","\/Date(1338069600000)\/","\/Date(1339020000000)\/","\/Date(1344981600000)\/","\/Date(1351724400000)\/","\/Date(1352588400000)\/","\/Date(1356390000000)\/","\/Date(1356476400000)\/"]}); + $(".gantt").gantt({source: dataPath + "js/dataDays.js", navigate: 'scroll', scale: 'days', maxScale: 'weeks', minScale: 'days', hollydays: ["\/Date(1293836400000)\/","\/Date(1294268400000)\/","\/Date(1303596000000)\/","\/Date(1306274400000)\/","\/Date(1304200800000)\/","\/Date(1304373600000)\/","\/Date(1307829600000)\/","\/Date(1308780000000)\/","\/Date(1313359200000)\/","\/Date(1320105600000)\/","\/Date(1320966000000)\/","\/Date(1324767600000)\/","\/Date(1324854000000)\/","\/Date(1325372400000)\/","\/Date(1325804400000)\/","\/Date(1333836000000)\/","\/Date(1336514400000)\/","\/Date(1335823200000)\/","\/Date(1335996000000)\/","\/Date(1338069600000)\/","\/Date(1339020000000)\/","\/Date(1344981600000)\/","\/Date(1351724400000)\/","\/Date(1352588400000)\/","\/Date(1356390000000)\/","\/Date(1356476400000)\/"]}); + //$(".gantt").gantt({ + // source: [{"name":"application","desc":"Lübeck","values":[{"from":"/Date(1293874598708)/","to":"/Date(1354268198708)/","desc":"ID: 10
name: CRM
date: 01.01.2011 to 30.11.2012
description: CRM 4.0", "label":"CRM","customClass":"ganttGreen"}]}], + // navigate: 'scroll', scale: 'days', hollydays: ["\/Date(1293836400000)\/","\/Date(1294268400000)\/","\/Date(1303596000000)\/","\/Date(1306274400000)\/","\/Date(1304200800000)\/","\/Date(1304373600000)\/","\/Date(1307829600000)\/","\/Date(1308780000000)\/","\/Date(1313359200000)\/","\/Date(1320105600000)\/","\/Date(1320966000000)\/","\/Date(1324767600000)\/","\/Date(1324854000000)\/","\/Date(1325372400000)\/","\/Date(1325804400000)\/","\/Date(1333836000000)\/","\/Date(1336514400000)\/","\/Date(1335823200000)\/","\/Date(1335996000000)\/","\/Date(1338069600000)\/","\/Date(1339020000000)\/","\/Date(1344981600000)\/","\/Date(1351724400000)\/","\/Date(1352588400000)\/","\/Date(1356390000000)\/","\/Date(1356476400000)\/"]}); }); --> diff --git a/js/dataDays.js b/js/dataDays.js index e11088c..3199d90 100644 --- a/js/dataDays.js +++ b/js/dataDays.js @@ -1,16 +1,16 @@ -[{ "name": " Planning ","desc": "Inception","values": [{"from": "/Date(1320192000000)/", "to": "/Date(1321401600000)/", "desc": "Id: 1
Name: Planning
Date: 2011-11-02 to 2011-11-16", "label": " Planni...", "customClass": "ganttRed"}]}, -{ "name": " Gathering requirements ","desc": "Inception","values": [{"from": "/Date(1321401600000)/", "to": "/Date(1322870400000)/", "desc": "Id: 2
Name: Gathering requirements
Date: 2011-11-16 to 2011-12-03", "label": " Gather...", "customClass": "ganttGreen"}]}, -{ "name": " Determine scope ","desc": "Inception","values": [{"from": "/Date(1322611200000)/", "to": "/Date(1323302400000)/", "desc": "Id: 3
Name: Determine scope
Date: 2011-11-30 to 2011-12-08", "label": " Determ...", "customClass": "ganttOrange"}]}, -{ "name": " Analysis and design ","desc": "Iteration 1","values": [{"from": "/Date(1323302400000)/", "to": "/Date(1324684800000)/", "desc": "Id: 4
Name: Analysis and design
Date: 2011-12-08 to 2011-12-24", "label": " Analys..."}]}, -{ "name": " Implementation ","desc": "Iteration 1","values": [{"from": "/Date(1324857600000)/", "to": "/Date(1326758400000)/", "desc": "Id: 5
Name: Implementation
Date: 2011-12-26 to 2012-01-17", "label": " Implem...", "customClass": "ganttRed"}]}, -{ "name": " Deliver prototype ","desc": "Iteration 1","values": [{"from": "/Date(1326758400000)/", "to": "/Date(1326844800000)/", "desc": "Id: 6
Name: Deliver prototype
Date: 2012-01-17 to 2012-01-18", "label": " Delive...", "customClass": "ganttGreen"}]}, -{ "name": " Testing ","desc": "Iteration 1","values": [{"from": "/Date(1326844800000)/", "to": "/Date(1328659200000)/", "desc": "Id: 7
Name: Testing
Date: 2012-01-18 to 2012-02-08", "label": " Testin...", "customClass": "ganttOrange"}]}, -{ "name": " Review and evaluation ","desc": "Iteration 1","values": [{"from": "/Date(1328659200000)/", "to": "/Date(1328832000000)/", "desc": "Id: 8
Name: Review and evaluation
Date: 2012-02-08 to 2012-02-10", "label": " Review..."}]}, -{ "name": " Analysis and enhancement of design ","desc": "Iteration 2","values": [{"from": "/Date(1328832000000)/", "to": "/Date(1329868800000)/", "desc": "Id: 9
Name: Analysis and enhancement of design
Date: 2012-02-10 to 2012-02-22", "label": " Analys...", "customClass": "ganttRed"}]}, -{ "name": " Implementation (enhancement of prototype)","desc": "Iteration 2","values": [{"from": "/Date(1329868800000)/", "to": "/Date(1331337600000)/", "desc": "Id: 10
Name: Implementation (enhancement of prototype)
Date: 2012-02-22 to 2012-03-10", "label": " Implem...", "customClass": "ganttGreen"}]}, -{ "name": " Deliver prototype ","desc": "Iteration 2","values": [{"from": "/Date(1331510400000)/", "to": "/Date(1331596800000)/", "desc": "Id: 11
Name: Deliver prototype
Date: 2012-03-12 to 2012-03-13", "label": " Delive...", "customClass": "ganttOrange"}]}, -{ "name": " Testing ","desc": "Iteration 2","values": [{"from": "/Date(1331596800000)/", "to": "/Date(1332547200000)/", "desc": "Id: 12
Name: Testing
Date: 2012-03-13 to 2012-03-24", "label": " Testin...", "customClass": "ganttRed"}]}, -{ "name": " Review and evaluation ","desc": "Iteration 2","values": [{"from": "/Date(1332720000000)/", "to": "/Date(1332892800000)/", "desc": "Id: 13
Name: Review and evaluation
Date: 2012-03-26 to 2012-03-28", "label": " Review...", "customClass": "ganttGreen"}]}, -{ "name": " Finalising ","desc": "Finalization","values": [{"from": "/Date(1332892800000)/", "to": "/Date(1333065600000)/", "desc": "Id: 14
Name: Finalising
Date: 2012-03-28 to 2012-03-30", "label": " Finali...", "customClass": "ganttOrnage"}]}, -{ "name": " Deployment ","desc": "Finalization","values": [{"from": "/Date(1333065600000)/", "to": "/Date(1333411200000)/", "desc": "Id: 15
Name: Deployment
Date: 2012-03-30 to 2012-04-03", "label": " Deploy..."}]}, -{ "name": " Project review and evaluation ","desc": "Finalization","values": [{"from": "/Date(1333411200000)/", "to": "/Date(1333584000000)/", "desc": "Id: 16
Name: Project review and evaluation
Date: 2012-04-03 to 2012-04-05", "label": " Projec...", "customClass": "ganttRed"}]}] +[{ "name": " Planning ","desc": "Inception","values": [{"id": "b0", "from": "/Date(1320192000000)/", "to": "/Date(1321401600000)/", "desc": "Id: 1
Name: Planning
Date: 2011-11-02 to 2011-11-16", "label": " Planni...", "customClass": "ganttRed"}]}, +{ "name": " Gathering requirements ","desc": "Inception","values": [{"id": "b1", "from": "/Date(1321401600000)/", "to": "/Date(1322870400000)/", "desc": "Id: 2
Name: Gathering requirements
Date: 2011-11-16 to 2011-12-03", "label": " Gather...", "customClass": "ganttGreen"}]}, +{ "name": " Determine scope ","desc": "Inception","values": [{"id": "b2", "from": "/Date(1322611200000)/", "to": "/Date(1323302400000)/", "desc": "Id: 3
Name: Determine scope
Date: 2011-11-30 to 2011-12-08", "label": " Determ...", "customClass": "ganttOrange"}]}, +{ "name": " Analysis and design ","desc": "Iteration 1","values": [{"id": "b3", "from": "/Date(1323302400000)/", "to": "/Date(1324684800000)/", "desc": "Id: 4
Name: Analyss and design
Date: 2011-12-08 to 2011-12-24", "label": " Analys..."}]}, +{ "name": " Implementation ","desc": "Iteration 1","values": [{"from": "/Date(1324857600000)/", "to": "/Date(1326758400000)/", "desc": "Id: 5
Name: Implementation
Date: 2011-12-26 to 2012-01-17", "label": " Implem...", "customClass": "ganttRed"}]}, +{ "name": " Deliver prototype ","desc": "Iteration 1","values": [{"from": "/Date(1326758400000)/", "to": "/Date(1326844800000)/", "desc": "Id: 6
Name: Deliver prototype
Date: 2012-01-17 to 2012-01-18", "label": " Delive...", "customClass": "ganttGreen"}]}, +{ "name": " Testing ","desc": "Iteration 1","values": [{"from": "/Date(1326844800000)/", "to": "/Date(1328659200000)/", "desc": "Id: 7
Name: Testing
Date: 2012-01-18 to 2012-02-08", "label": " Testin...", "customClass": "ganttOrange"}]}, +{ "name": " Review and evaluation ","desc": "Iteration 1","values": [{"from": "/Date(1328659200000)/", "to": "/Date(1328832000000)/", "desc": "Id: 8
Name: Review and evaluation
Date: 2012-02-08 to 2012-02-10", "label": " Review..."}]}, +{ "name": " Analysis and enhancement of design ","desc": "Iteration 2","values": [{"from": "/Date(1328832000000)/", "to": "/Date(1329868800000)/", "desc": "Id: 9
Name: Analysis and enhancement of design
Date: 2012-02-10 to 2012-02-22", "label": " Analys...", "customClass": "ganttRed"}]}, +{ "name": " Implementation (enhancement of prototype)","desc": "Iteration 2","values": [{"from": "/Date(1329868800000)/", "to": "/Date(1331337600000)/", "desc": "Id: 10
Name: Implementation (enhancement of prototype)
Date: 2012-02-22 to 2012-03-10", "label": " Implem...", "customClass": "ganttGreen"}]}, +{ "name": " Deliver prototype ","desc": "Iteration 2","values": [{"from": "/Date(1331510400000)/", "to": "/Date(1331596800000)/", "desc": "Id: 11
Name: Deliver prototype
Date: 2012-03-12 to 2012-03-13", "label": " Delive...", "customClass": "ganttOrange"}]}, +{ "name": " Testing ","desc": "Iteration 2","values": [{"from": "/Date(1331596800000)/", "to": "/Date(1332547200000)/", "desc": "Id: 12
Name: Testing
Date: 2012-03-13 to 2012-03-24", "label": " Testin...", "customClass": "ganttRed"}]}, +{ "name": " Review and evaluation ","desc": "Iteration 2","values": [{"from": "/Date(1332720000000)/", "to": "/Date(1332892800000)/", "desc": "Id: 13
Name: Review and evaluation
Date: 2012-03-26 to 2012-03-28", "label": " Review...", "customClass": "ganttGreen"}]}, +{ "name": " Finalising ","desc": "Finalization","values": [{"from": "/Date(1332892800000)/", "to": "/Date(1333065600000)/", "desc": "Id: 14
Name: Finalising
Date: 2012-03-28 to 2012-03-30", "label": " Finali...", "customClass": "ganttOrnage"}]}, +{ "name": " Deployment ","desc": "Finalization","values": [{"from": "/Date(1333065600000)/", "to": "/Date(1333411200000)/", "desc": "Id: 15
Name: Deployment
Date: 2012-03-30 to 2012-04-03", "label": " Deploy..."}]}, +{ "name": " Project review and evaluation ","desc": "Finalization","values": [{"from": "/Date(1333411200000)/", "to": "/Date(1333584000000)/", "desc": "Id: 16
Name: Project review and evaluation
Date: 2012-04-03 to 2012-04-05", "label": " Projec...", "customClass": "ganttRed"}]}] diff --git a/js/jquery.fn.gantt.js b/js/jquery.fn.gantt.js old mode 100755 new mode 100644 index 06c632e..13b4435 --- a/js/jquery.fn.gantt.js +++ b/js/jquery.fn.gantt.js @@ -1,1508 +1,1511 @@ -/** - * - * JQuery fn.gantt gantt chart plugin v1.2.0 - * Copyright 2011 by Marek Bielańczuk - * http://mbielanczuk.com/ - * Released under the MIT and GPL Licenses. - * - * Date: Fri Nov 04 2011 21:15:52 +0100 - */ - -(function($) { - - $.fn.gantt = function(options) { - - var scales = ['hours', 'days', 'weeks', 'months']; - - var settings = { - source: null, - itemsPerPage: 7, - months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"], - dow: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So"], - startPos: new Date(), - navigate: 'buttons', - scale: 'days', - maxScale: 'months', - minScale: 'hours', - waitText: 'Please wait...' - }; - - $.extend($.expr[':'],{ - findday: function(a,i,m) { - var cd = new Date(parseInt(m[3])); - var id = $(a).attr('id'); - id = id?id:''; - var si = id.indexOf('-')+1; - var ed = new Date(parseInt(id.substring(si, id.length))); - cd = new Date(cd.getFullYear(), cd.getMonth(), cd.getDate()); - ed = new Date(ed.getFullYear(), ed.getMonth(), ed.getDate()); - return cd.getTime() == ed.getTime(); - } - }); - - $.extend($.expr[':'],{ - findweek: function(a,i,m) { - var cd = new Date(parseInt(m[3])); - var id = $(a).attr('id'); - id = id?id:''; - var si = id.indexOf('-')+1; - cd = cd.getFullYear()+'-'+cd.getDayForWeek().getWeekOfYear(); - var ed = id.substring(si, id.length); - return cd == ed; - } - }); - - $.extend($.expr[':'],{ - findmonth: function(a,i,m) { - var cd = new Date(parseInt(m[3])); - cd = cd.getFullYear()+'-'+cd.getMonth(); - var id = $(a).attr('id'); - id = id?id:''; - var si = id.indexOf('-')+1; - var ed = id.substring(si, id.length); - return cd == ed; - } - }); - - Date.prototype.getDayOfYear = function() { - var fd = new Date(this.getFullYear(),0,0); - var sd = new Date(this.getFullYear(),this.getMonth(),this.getDate()); - return Math.ceil((sd - fd) / 86400000); - }; - Date.prototype.getWeekOfYear = function() { - var ys = new Date(this.getFullYear(),0,1); - var sd = new Date(this.getFullYear(),this.getMonth(),this.getDate()); - if (ys.getDay() > 3) - ys = new Date(sd.getFullYear(), 0, 7 - ys.getDay()); - var daysCount = sd.getDayOfYear() - ys.getDayOfYear(); - return Math.ceil(daysCount/7); - }; - Date.prototype.getDaysInMonth = function() { - return 32 - new Date(this.getFullYear(), this.getMonth(), 32).getDate(); - }; - Date.prototype.hasWeek = function() { - var df = new Date(this.valueOf()); - df.setDate(df.getDate()-df.getDay()); - var dt = new Date(this.valueOf()); - dt.setDate(dt.getDate()+(6-dt.getDay())); - - if (df.getMonth() == dt.getMonth()) - return true; - else { - return (df.getMonth() == this.getMonth() && dt.getDate() < 4) - || (df.getMonth() != this.getMonth() && dt.getDate() >= 4); - } - }; - Date.prototype.getDayForWeek = function() { - var df = new Date(this.valueOf()); - df.setDate(df.getDate()-df.getDay()); - var dt = new Date(this.valueOf()); - dt.setDate(dt.getDate()+(6-dt.getDay())); - if ((df.getMonth() == dt.getMonth()) - || (df.getMonth() != dt.getMonth() && dt.getDate() >= 4)) - { - return new Date(dt.setDate(dt.getDate()-3)); - } else - { - return new Date(df.setDate(df.getDate()+3)); - } - }; - - /** - * Core functions for creating grid. - */ - var core = { - /** - * Create header - */ - create: function(element) { - /** - * Retrieve data - */ - if(typeof(settings.source) == 'object'){ - - element.data = settings.source; - core.init(element); - - } else { - - $.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"}); - $.getJSON(settings.source, function(jsData) { - element.data = jsData; - core.init(element); - }); - } - - }, - init: function (element) { - element.rowsNum = element.data.length; - element.pageCount = Math.ceil(element.rowsNum/settings.itemsPerPage); - element.rowsOnLastPage = element.rowsNum - (Math.floor(element.rowsNum/settings.itemsPerPage) * settings.itemsPerPage); - - element.dateStart = tools.getMinDate(element); - element.dateEnd = tools.getMaxDate(element); - - core.render(element); - core.waitToggle(element, true, function() { core.render(element); }); - }, - render: function (element) { - var content = $('
'); - - content.append(core.leftPanel(element)); - var $rightPanel = core.rightPanel(element); - - content.append($rightPanel); - content.append(core.navigation(element)); - - $dataPanel = $rightPanel.find('.dataPanel'); - - element.gantt = $('
').append(content); - - $(element).html(element.gantt); - - element.scrollNavigation.panelMargin = parseInt($dataPanel.css('margin-left').replace('px','')); - element.scrollNavigation.panelMaxPos = ($dataPanel.width() - $rightPanel.width()); - - element.scrollNavigation.canScroll = ($dataPanel.width() > $rightPanel.width()); - - core.markNow(element); - core.fillData(element); - - $(element).css({ - height: $(element).find(".fn-gantt").height() + "px" - }); - - var d = Math.round((settings.startPos/1000 - element.dateStart/1000) / 86400 )-2; - if (d > 0 && element.hPosition != 0) - { - if (element.scaleOldWidth) - { - var mLeft = ($dataPanel.width() - $rightPanel.width()); - var hPos = mLeft*element.hPosition/element.scaleOldWidth; - hPos = hPos > 0 ? 0 : hPos; - $dataPanel.css({'margin-left': hPos+'px'}); - element.scrollNavigation.panelMargin = hPos; - element.hPosition = hPos; - element.scaleOldWidth = null; - } else { - $dataPanel.css({'margin-left': element.hPosition+'px'}); - element.scrollNavigation.panelMargin = element.hPosition; - } - core.repositionLabel(element); - } else { - core.repositionLabel(element); - } - - core.waitToggle(element, false); - }, - leftPanel: function (element) { - /* Left panel */ - var ganttLeftPanel = $('
') - .append($('
') - .css("height", tools.getCellSize()*element.headerRows+"px") - .css("width", "100%")); - - $.each(element.data, function(i, entry) { - if (i >= element.pageNum*settings.itemsPerPage && i < (element.pageNum*settings.itemsPerPage+settings.itemsPerPage)) - { - ganttLeftPanel - .append($('
').append($('').html(entry.name))) - .append($('
').append($('').html(entry.desc))); - } - }); - return ganttLeftPanel; - }, - dataPanel: function(element, width) { - var dataPanel = $('
'); - /* - * Mouse wheel events - */ - var mousewheelevt = (/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel"; - - if (document.attachEvent) - element.attachEvent("on"+mousewheelevt, function(e) { core.wheelScroll(element, e); }); - else if (document.addEventListener) - element.addEventListener(mousewheelevt, function(e) { core.wheelScroll(element, e); }, false); - /* - * Dragging datapanel - */ - - dataPanel.mousedown(function(e){ - if (e.which != 1) - return true; - if (e.preventDefault) e.preventDefault(); - element.scrollNavigation.panelMouseDown = true; - core.mouseScroll(element, e); - }) - .mousemove(function(e){ - if (element.scrollNavigation.panelMouseDown) - { - core.mouseScroll(element, e); - } - }); - - $(document).mouseup(function(e){ - if (e.which != 1) - return true; - element.scrollNavigation.panelMouseDown = false; - element.scrollNavigation.mouseX = null; - var $dataPanel = $(element).find('.fn-gantt .dataPanel'); - $dataPanel.css("cursor", "auto"); - - core.repositionLabel(element); - }); - return dataPanel; - }, - // Creates Data container with header - rightPanel: function(element) { - - var range = null; - var dowClass = [' sn', ' wd', ' wd', ' wd', ' wd', ' wd', ' sa']; - var gridDowClass = [' sn', '', '', '', '', '', ' sa']; - - var years = $("
"); - var daysInYear = 0; - - var months = $("
"); - var daysInMonth = 0; - - var daysStr = ''; - var hoursInDay = 0; - - var dowStr = ''; - var horStr = ''; - - var today = new Date(); - today = new Date(today.getFullYear(), today.getMonth(), today.getDate()); - var holidayItems = settings.holidays ? settings.holidays.join() : ''; - - switch (settings.scale) - { - // hours ///////////////////////////////////////////////////////////////////////////////////////// - case 'hours': - - range = tools.parseTimeRange(element.dateStart, element.dateEnd, element.scaleStep); - - var year = range[0].getFullYear(); - var month = range[0].getMonth(); - var day = range[0]; - - for (var i = 0; i < range.length; i++) - { - var rday = range[i]; - /* - * Fill years - */ - var rfy = rday.getFullYear(); - if (rfy != year) { - years.html(years.html()+ - $('
' - + year - + '
')); - year = rfy; - daysInYear = 0; - } - daysInYear++; - - /* - * Fill months - */ - var rm = rday.getMonth(); - if (rm != month) { - months.append( - $('
' - + settings.months[month] - + '
')); - month = rm; - daysInMonth = 0; - } - daysInMonth++; - - /* - * Fill days & hours - */ - var rgetDay = rday.getDay(); - var getDay = day.getDay(); - var day_class = dowClass[rgetDay]; - var getTime = day.getTime(); - if (holidayItems.indexOf((new Date(rday.getFullYear(), rday.getMonth(), rday.getDate())).getTime())>-1) - - day_class = "holiday"; - - if (rgetDay != getDay) { - - var day_class2 = (today - day == 0) ? ' today' : (holidayItems.indexOf(getTime)>-1) ? "hollyday" : dowClass[getDay]; - - daysStr += '
' - + '
' + day.getDate() + '
'; - - dowStr += '
' - + '
' + settings.dow[getDay] + '
'; - - day = rday; - hoursInDay = 0; - } - hoursInDay++; - - horStr += '
' - + rday.getHours() - + '
'; - } - - /* - * Last year - */ - years.html(years.html()+ - '
' - + year - + '
'); - /* - * Last month - */ - months.html(months.html() + - '
' - + settings.months[month] - + '
'); - - var day_class = dowClass[day.getDay()]; - - if (holidayItems.indexOf((new Date(day.getFullYear(), day.getMonth(), day.getDate())).getTime()) > -1) - day_class = "hollyday"; - - daysStr += '
' - + '
' + day.getDate() + '
'; - - dowStr += '
' - + '
' + settings.dow[day.getDay()] + '
'; - - var dataPanel = core.dataPanel(element, range.length*tools.getCellSize()); - - /* - * Append panel elements - */ - dataPanel.append(years); - dataPanel.append(months); - dataPanel.append($('
').html(daysStr)); - dataPanel.append($('
').html(dowStr)); - dataPanel.append($('
').html(horStr)); - - /* - * Generate grid - */ - for (var i=0; i= element.pageNum*settings.itemsPerPage && i < (element.pageNum*settings.itemsPerPage+settings.itemsPerPage)) - { - var dRow = '
'; - for (var x=0; x-1) - todayCls = " hollyday"; - dRow += '
'; - }; - //dataPanel.append(dRow); - dataPanel.html(dataPanel.html()+dRow+'
'); - } - } - - break; - - // weeks ///////////////////////////////////////////////////////////////////////////////////////// - case 'weeks': - range = tools.parseWeeksRange(element.dateStart, element.dateEnd); - - var year = range[0].getFullYear(); - var month = range[0].getMonth(); - var day = range[0]; - - for (var i = 0; i < range.length; i++) - { - var rday = range[i]; - /* - * Fill years - */ - if (rday.getFullYear() != year) { - years.append( - $('
' - + year - + '
')); - year = rday.getFullYear(); - daysInYear = 0; - } - daysInYear++; - - /* - * Fill months - */ - if (rday.getMonth() != month) { - months.append( - $('
' - + settings.months[month] - + '
')); - month = rday.getMonth(); - daysInMonth = 0; - } - daysInMonth++; - /* - * Fill weeks - */ - daysStr += '
' - + '
'+rday.getWeekOfYear()+'
'; - } - - /* - * Last year - */ - years.append( - '
' - + year - + '
'); - /* - * Last month - */ - months.append( - '
' - + settings.months[month] - + '
'); - - var dataPanel = core.dataPanel(element, range.length*tools.getCellSize()); - - /* - * Append panel elements - */ - dataPanel.append(years); - dataPanel.append(months); - dataPanel.append($('
').html(daysStr)); - dataPanel.append($('
').html(dowStr)); - - /* - * Generate grid - */ - for (var i=0; i= element.pageNum*settings.itemsPerPage && i < (element.pageNum*settings.itemsPerPage+settings.itemsPerPage)) - { - var dRow = '
'; - for (var x=0; x
'; - }; - dataPanel.append($(dRow+'
')); - } - } - - - break; - // months //////////////////////////////////////////////////////////////////////////////////////// - case 'months': - range = tools.parseMonthsRange(element.dateStart, element.dateEnd); - - var year = range[0].getFullYear(); - var month = range[0].getMonth(); - var day = range[0]; - - for (var i = 0; i < range.length; i++) - { - var rday = range[i]; - /* - * Fill years - */ - if (rday.getFullYear() != year) { - years.append( - $('
' - + year - + '
')); - year = rday.getFullYear(); - daysInYear = 0; - } - daysInYear++; - - months.append($('
').html(rday.getMonth()+1)); - - } - - /* - * Last year - */ - years.append( - '
' - + year - + '
'); - /* - * Last month - */ - months.append( - '
"
' - + settings.months[month] - + '
'); - - var dataPanel = core.dataPanel(element, range.length*tools.getCellSize()); - - /* - * Append panel elements - */ - dataPanel.append(years); - dataPanel.append(months); - dataPanel.append($('
').html(daysStr)); - dataPanel.append($('
').html(dowStr)); - - /* - * Generate grid - */ - for (var i=0; i= element.pageNum*settings.itemsPerPage && i < (element.pageNum*settings.itemsPerPage+settings.itemsPerPage)) - { - var dRow = '
'; - for (var x=0; x
'; - }; - dataPanel.append($(dRow+'
')); - } - } - - break; - // days ////////////////////////////////////////////////////////////////////////////////////////// - default: - range = tools.parseDateRange(element.dateStart, element.dateEnd); - - var year = range[0].getFullYear(); - var month = range[0].getMonth(); - var day = range[0]; - - for (var i = 0; i < range.length; i++) - { - var rday = range[i]; - /* - * Fill years - */ - if (rday.getFullYear() != year) { - years.append( - $('
' - + year - + '
')); - year = rday.getFullYear(); - daysInYear = 0; - } - daysInYear++; - - /* - * Fill months - */ - if (rday.getMonth() != month) { - months.append( - $('
' - + settings.months[month] - + '
')); - month = rday.getMonth(); - daysInMonth = 0; - } - daysInMonth++; - - var getDay = rday.getDay(); - var day_class = dowClass[getDay]; - if (holidayItems.indexOf((new Date(rday.getFullYear(), rday.getMonth(), rday.getDate())).getTime()) > -1) - day_class = "holiday"; - - daysStr += '
' - + '
' + rday.getDate() + '
'; - dowStr += '
' - + '
' + settings.dow[getDay] + '
'; - } //for - - /* - * Last year - */ - years.append( - '
' - + year - + '
'); - /* - * Last month - */ - months.append( - '
' - + settings.months[month] - + '
'); - - var dataPanel = core.dataPanel(element, range.length*tools.getCellSize()); - - /* - * Append panel elements - */ - dataPanel.append(years); - dataPanel.append(months); - dataPanel.append($('
').html(daysStr)); - dataPanel.append($('
').html(dowStr)); - - /* - * Generate grid - */ - for (var i=0; i= element.pageNum*settings.itemsPerPage && i < (element.pageNum*settings.itemsPerPage+settings.itemsPerPage)) - { - var dRow = '
'; - for (var x=0; x -1) - todayCls = " holiday"; - dRow += '
'; - }; - dataPanel.append($(dRow+'
')); - } - } - - break; - } - - return $('
').append(dataPanel); - }, - navigation: function (element) { - var ganttNavigate = null; - if (settings.navigate == 'scroll') - { - ganttNavigate = $('