diff --git a/server/models/project.js b/server/models/project.js index 5dd3ca4..74c34bd 100644 --- a/server/models/project.js +++ b/server/models/project.js @@ -89,6 +89,14 @@ var ProjectSchema = new mongoose.Schema({ type: Number, default: 0 }, + themecolor: { + type: String, + default: '' + }, + themebgcolor: { + type: String, + default: '' + }, progressCalc: { type: Number, default: 0 diff --git a/server/models/todo.js b/server/models/todo.js index d8ff21e..25ff979 100644 --- a/server/models/todo.js +++ b/server/models/todo.js @@ -71,6 +71,13 @@ var TodoSchema = new mongoose.Schema({ hoursworked: { type: Number, }, + themecolor: { + type: String, + }, + themebgcolor: { + type: String, + default: '', + }, modified: { type: Boolean, }, @@ -375,47 +382,55 @@ TodoSchema.statics.calculateTreeTodo = async function (actualphase, userId, idpr .then(() => { // console.log('objdata', objdata); // 2) Calculate the Todos of this project - return Todo.calculateTodoHoursAndProgress(userId, idproj, myrecproj.actualphase); + if (!!myrecproj) + return Todo.calculateTodoHoursAndProgress(userId, idproj, myrecproj.actualphase); + else + return null }) .then((objdatatodos) => { - if (myrecproj.actualphase === actualphase) { - // console.log('objdatatodos', objdatatodos); - objdata.addDataTodo(objdatatodos); + if (!!objdatatodos) { + if (!!myrecproj) { + if (myrecproj.actualphase === actualphase) { + // console.log('objdatatodos', objdatatodos); + objdata.addDataTodo(objdatatodos); - // End Calculate - objdata.endDataCalc(); + // End Calculate + objdata.endDataCalc(); - // Update into the DB: - return Project.updateCalc(userId, idproj, objdata, null) - .then((ris) => { - if (ris) - return objdata.getData(); - else - return null; - }); - } else { - return null; + // Update into the DB: + return Project.updateCalc(userId, idproj, objdata, null) + .then((ris) => { + if (ris) + return objdata.getData(); + else + return null; + }); + } + } } + return null; }) .then((ris) => { if (calcalsoUpper) { - if (!!myrecproj.id_parent) { - // Calculate also the upper Projects ! - return new Promise((resolve, reject) => { - Todo.calculateTreeTodo(actualphase, userId, myrecproj.id_parent, true, masterproj, false); - resolve(ris) - }); - } else { - return new Promise((resolve, reject) => { - resolve() - }); + if (!!myrecproj) { + if (!!myrecproj.id_parent) { + // Calculate also the upper Projects ! + return new Promise((resolve, reject) => { + Todo.calculateTreeTodo(actualphase, userId, myrecproj.id_parent, true, masterproj, false); + resolve(ris) + }); + } else { + return new Promise((resolve, reject) => { + resolve() + }); + } } - } else { - return new Promise((resolve, reject) => { - resolve() - }); } + + return new Promise((resolve, reject) => { + resolve() + }); }) }; diff --git a/server/tools/general.js b/server/tools/general.js index d6e2070..9b8ca7c 100644 --- a/server/tools/general.js +++ b/server/tools/general.js @@ -56,7 +56,7 @@ module.exports = { allfieldTodo: function () { return ['userId', 'pos', 'category', 'descr', 'priority', 'statustodo', 'created_at', 'modify_at', - 'completed_at', 'expiring_at', 'enableExpiring', 'id_prev', 'progress', 'modified', 'phase', 'assigned_to_userId', 'hoursplanned', 'hoursworked', 'start_date'] + 'completed_at', 'expiring_at', 'enableExpiring', 'id_prev', 'progress', 'modified', 'phase', 'assigned_to_userId', 'hoursplanned', 'hoursworked', 'start_date', 'themecolor', 'themebgcolor'] }, allfieldTodoWithId: function () { @@ -65,7 +65,7 @@ module.exports = { // #TODO Projects++ Add fields ... allfieldProject: function () { - return ['userId', 'pos', 'typeproj', 'id_main_project', 'id_parent', 'descr', 'longdescr', 'hoursplanned', 'hoursleft', 'hoursworked', 'priority', 'statusproj', 'created_at', 'modify_at', + return ['userId', 'pos', 'typeproj', 'id_main_project', 'id_parent', 'descr', 'longdescr', 'hoursplanned', 'hoursleft', 'themecolor', 'themebgcolor', 'hoursworked', 'priority', 'statusproj', 'created_at', 'modify_at', 'completed_at', 'expiring_at', 'enableExpiring', 'id_prev', 'progressCalc', 'modified', 'live_url', 'test_url', 'begin_development', 'begin_test', 'totalphases', 'actualphase', 'hoursweeky_plannedtowork', 'endwork_estimate' , 'privacyread', 'privacywrite'] },