91 lines
2.6 KiB
JavaScript
91 lines
2.6 KiB
JavaScript
// ERPNext - web based ERP (http://erpnext.com)
|
|
// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
// gantt chart for project tasks
|
|
|
|
wn.require('lib/js/lib/jQuery.Gantt/css/style.css');
|
|
wn.require('lib/js/lib/jQuery.Gantt/js/jquery.fn.gantt.min.js');
|
|
|
|
erpnext.show_task_gantt = function(parent, project) {
|
|
|
|
$(parent).css('min-height', '300px').html('<div class="alert">Loading...</div>')
|
|
|
|
var get_source = function(r) {
|
|
var source = [];
|
|
// projects
|
|
$.each(r.message, function(i,v) {
|
|
if(v.exp_start_date && v.exp_end_date) {
|
|
source.push({
|
|
name: v.project,
|
|
desc: v.subject,
|
|
values: [{
|
|
label: v.subject,
|
|
desc: v.description || v.subject,
|
|
from: '/Date("'+v.exp_start_date+'")/',
|
|
to: '/Date("'+v.exp_end_date+'")/',
|
|
customClass: {
|
|
'Open':'ganttRed',
|
|
'Pending Review':'ganttOrange',
|
|
'Working':'',
|
|
'Completed':'ganttGreen',
|
|
'Cancelled':'ganttGray'
|
|
}[v.status],
|
|
dataObj: v
|
|
}]
|
|
})
|
|
}
|
|
});
|
|
return source
|
|
}
|
|
wn.call({
|
|
method: 'projects.page.projects.projects.get_tasks',
|
|
args: {
|
|
project: project || ''
|
|
},
|
|
callback: function(r) {
|
|
$(parent).empty();
|
|
if(!r.message.length) {
|
|
$(parent).html('<div class="alert">No Tasks Yet.</div>');
|
|
} else {
|
|
var gantt_area = $('<div class="gantt">').appendTo(parent);
|
|
gantt_area.gantt({
|
|
source: get_source(r),
|
|
navigate: project ? "button" : "scroll",
|
|
scale: "weeks",
|
|
minScale: "day",
|
|
maxScale: "months",
|
|
onItemClick: function(data) {
|
|
wn.set_route('Form', 'Task', data.name);
|
|
},
|
|
onAddClick: function(dt, rowId) {
|
|
newdoc('Task');
|
|
}
|
|
});
|
|
}
|
|
|
|
$('<button class="btn"><i class="icon icon-plus"></i>\
|
|
Create a new Task</button>').click(function() {
|
|
wn.model.with_doctype('Task', function() {
|
|
var new_name = LocalDB.create('Task');
|
|
if(project)
|
|
locals.Task[new_name].project = project;
|
|
wn.set_route('Form', 'Task', new_name);
|
|
});
|
|
}).appendTo(parent);
|
|
}
|
|
})
|
|
}
|