mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-09-14 21:09:50 +02:00
New release
This commit is contained in:
@@ -51,6 +51,7 @@ exports.findTaskById = function(id) {
|
||||
};
|
||||
|
||||
exports.getTasks=function(){
|
||||
//compileTasks();
|
||||
var i;
|
||||
for(i=10000;i<tasks.length;i++){
|
||||
tasks[i].startTime = moment(tasks[i].startTime).format(dateFormat);
|
||||
@@ -62,6 +63,7 @@ exports.getTasks=function(){
|
||||
|
||||
|
||||
var getStartDate = function(prevTime, dateFormat, str){
|
||||
//console.log('Deciding start date:'+JSON.stringify(str));
|
||||
//log.debug('Deciding start date:'+str);
|
||||
//log.debug('with dateformat:'+dateFormat);
|
||||
|
||||
@@ -70,12 +72,15 @@ var getStartDate = function(prevTime, dateFormat, str){
|
||||
// Test for after
|
||||
var re = /^after\s+([\d\w\-]+)/;
|
||||
var afterStatement = re.exec(str.trim());
|
||||
|
||||
if(afterStatement!==null){
|
||||
var task = exports.findTaskById(afterStatement[1]);
|
||||
//console.log('xxx'+JSON.stringify(task));
|
||||
if(typeof task === 'undefined'){
|
||||
var dt = new Date();
|
||||
dt.setHours(0,0,0,0);
|
||||
return dt;
|
||||
//return undefined;
|
||||
}
|
||||
return task.endTime;
|
||||
}
|
||||
@@ -217,8 +222,103 @@ var compileData = function(prevTask, dataStr){
|
||||
return task;
|
||||
};
|
||||
|
||||
var parseData = function(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){
|
||||
matchFound = false;
|
||||
if(data[0].match(/^\s*active\s*$/)){
|
||||
task.active = true;
|
||||
data.shift(1);
|
||||
matchFound = true;
|
||||
|
||||
}
|
||||
if(data[0].match(/^\s*done\s*$/)){
|
||||
task.done = true;
|
||||
data.shift(1);
|
||||
matchFound = true;
|
||||
}
|
||||
if(data[0].match(/^\s*crit\s*$/)){
|
||||
task.crit = true;
|
||||
data.shift(1);
|
||||
matchFound = true;
|
||||
}
|
||||
}
|
||||
var i;
|
||||
for(i=0;i<data.length;i++){
|
||||
data[i] = data[i].trim();
|
||||
}
|
||||
|
||||
|
||||
switch(data.length){
|
||||
case 1:
|
||||
task.id = parseId();
|
||||
task.startTime = {type: 'prevTaskEnd'};
|
||||
task.endTime = {data: data[0]};
|
||||
break;
|
||||
case 2:
|
||||
task.id = parseId();
|
||||
task.startTime = {type:'getStartDate',startData:data[0]};
|
||||
task.endTime = {data: data[1]};
|
||||
break;
|
||||
case 3:
|
||||
task.id = parseId(data[0]);
|
||||
task.startTime = {type:'getStartDate',startData: data[1]};
|
||||
task.endTime = {data: data[2]};
|
||||
break;
|
||||
default:
|
||||
|
||||
}
|
||||
|
||||
return task;
|
||||
};
|
||||
|
||||
|
||||
|
||||
var lastTask;
|
||||
var lastTaskID;
|
||||
var rawTasks = [];
|
||||
var taskDb = {};
|
||||
exports.addTaskNew = function(descr,data){
|
||||
var rawTask = {
|
||||
section:currentSection,
|
||||
type:currentSection,
|
||||
description:descr,
|
||||
processed:false,
|
||||
raw:{data:data}
|
||||
};
|
||||
var taskInfo = parseData(data);
|
||||
rawTask.raw.startTime = taskInfo.startTime;
|
||||
rawTask.raw.endTime = taskInfo.endTime;
|
||||
rawTask.id = taskInfo.id;
|
||||
rawTask.prevTaskId = lastTaskID;
|
||||
rawTask.active = taskInfo.active;
|
||||
rawTask.done = taskInfo.done;
|
||||
rawTask.crit = taskInfo.crit;
|
||||
var pos = rawTasks.push(rawTask);
|
||||
|
||||
lastTaskID = rawTask.id;
|
||||
// Store cross ref
|
||||
taskDb[rawTask.id]= pos;
|
||||
|
||||
};
|
||||
|
||||
exports.addTask = function(descr,data){
|
||||
|
||||
var newTask = {
|
||||
@@ -238,6 +338,41 @@ exports.addTask = function(descr,data){
|
||||
tasks.push(newTask);
|
||||
};
|
||||
|
||||
var compileTasks=function(){
|
||||
console.log('Compiling tasks'+rawTasks.length);
|
||||
|
||||
var df = exports.getDateFormat();
|
||||
|
||||
var compileTask = function(pos){
|
||||
var task = rawTasks[pos];
|
||||
var startTime = '';
|
||||
switch(rawTasks[pos].raw.startTime.type){
|
||||
case 'prevTaskEnd':
|
||||
rawTasks[pos].startTime = rawTasks[taskDb[pos].prevTaskId].endTime;
|
||||
break;
|
||||
case 'getStartDate':
|
||||
var startTime = getStartDate(undefined, df, rawTasks[pos].raw.startTime.startData);
|
||||
if(startTime){
|
||||
rawTasks[pos].startTime = startTime;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(rawTasks[pos].startTime){
|
||||
rawTasks[pos].endTime = getEndDate(rawTasks[pos].startTime, df, rawTasks[pos].raw.endTime.data);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
var i;
|
||||
for(i=0;i<rawTasks.length;i++){
|
||||
console.log('Pre ompiling: '+JSON.stringify(rawTasks[i]));
|
||||
compileTask(i);
|
||||
//console.log('Compiling: '+rawTasks[taskDb[i]].id);
|
||||
console.log('Compiling: '+JSON.stringify(rawTasks[i],null,2));
|
||||
}
|
||||
};
|
||||
|
||||
exports.parseError = function(err,hash){
|
||||
global.mermaidAPI.parseError(err,hash);
|
||||
};
|
||||
|
Reference in New Issue
Block a user