From 1d371e0a1e7cdcd78928f50e90eb0b6b7ce51253 Mon Sep 17 00:00:00 2001 From: Derek Brans Date: Tue, 25 Aug 2015 14:49:56 -0700 Subject: [PATCH] Gantt chart - add minutes and seconds durations --- src/diagrams/gantt/ganttDb.js | 42 +++++++++++++++++------------- src/diagrams/gantt/ganttDb.spec.js | 26 +++++++++++++++--- 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/src/diagrams/gantt/ganttDb.js b/src/diagrams/gantt/ganttDb.js index cca8cacf2..ca19d1e37 100644 --- a/src/diagrams/gantt/ganttDb.js +++ b/src/diagrams/gantt/ganttDb.js @@ -77,7 +77,7 @@ var getStartDate = function(prevTime, dateFormat, str){ } return task.endTime; } - + // Check for actual date set if(moment(str,dateFormat.trim(),true).isValid()){ return moment(str,dateFormat.trim(),true).toDate(); @@ -86,27 +86,33 @@ var getStartDate = function(prevTime, dateFormat, str){ log.debug('With date format:'+dateFormat.trim()); //log.debug('----'); } - + // Default date - now return new Date(); }; var getEndDate = function(prevTime, dateFormat, str){ str = str.trim(); - - // Check for actual date + + // Check for actual date if(moment(str,dateFormat.trim(),true).isValid()){ - + return moment(str,dateFormat.trim()).toDate(); } var d = moment(prevTime); // Check for length - var re = /^([\d]+)([wdh])/; + var re = /^([\d]+)([wdhms])/; var durationStatement = re.exec(str.trim()); - + if(durationStatement!== null){ switch(durationStatement[2]){ + case 's': + d.add(durationStatement[1], 'seconds'); + break; + case 'm': + d.add(durationStatement[1], 'minutes'); + break; case 'h': d.add(durationStatement[1], 'hours'); break; @@ -144,21 +150,21 @@ var parseId = function(idStr){ var compileData = function(prevTask, dataStr){ var ds; - + if(dataStr.substr(0,1) === ':'){ ds = dataStr.substr(1,dataStr.length); } else{ ds=dataStr; } - + var data = ds.split(','); - - + + var task = {}; var df = exports.getDateFormat(); - - + + // Get tags like active, done cand crit var matchFound = true; while(matchFound){ @@ -167,7 +173,7 @@ var compileData = function(prevTask, dataStr){ task.active = true; data.shift(1); matchFound = true; - + } if(data[0].match(/^\s*done\s*$/)){ task.done = true; @@ -184,8 +190,8 @@ var compileData = function(prevTask, dataStr){ for(i=0;i