brotherton-erpnext/public/js/gantt_task.js
2012-11-16 11:46:43 +05:30

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);
}
})
}