[gantt] fix multiple task updates (#2655)

This commit is contained in:
Faris Ansari 2017-02-02 11:00:39 +05:30 committed by Rushabh Mehta
parent 5e4860b4e6
commit 562b37cd47
2 changed files with 44 additions and 6 deletions

16
frappe/desk/gantt.py Normal file
View file

@ -0,0 +1,16 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
import frappe, json
@frappe.whitelist()
def update_task(args, field_map):
"""Updates Doc (called via gantt) based on passed `field_map`"""
args = frappe._dict(json.loads(args))
field_map = frappe._dict(json.loads(field_map))
d = frappe.get_doc(args.doctype, args.name)
d.set(field_map.start, args.start)
d.set(field_map.end, args.end)
d.save()

View file

@ -545,11 +545,7 @@ frappe.views.DocListView = frappe.ui.Listing.extend({
frappe.set_route('Form', task.doctype, task.id);
},
on_date_change: function(task, start, end) {
set_value(task.doctype, task.id, field_map.start, start.format('YYYY-MM-DD'))
.then(function() {
set_value(task.doctype, task.id, field_map.end, end.format('YYYY-MM-DD'))
})
.then(show_success);
me.update_gantt_task(task, start, end);
},
on_progress_change: function(task, progress) {
var progress_fieldname = 'progress';
@ -558,7 +554,6 @@ frappe.views.DocListView = frappe.ui.Listing.extend({
if(progress_fieldname) {
set_value(task.doctype, task.id, progress_fieldname, parseInt(progress))
.then(show_success);
}
},
on_view_change: function(mode) {
@ -596,6 +591,33 @@ frappe.views.DocListView = frappe.ui.Listing.extend({
});
},
update_gantt_task: function(task, start, end) {
var me = this;
if(me.gantt.updating_task) {
setTimeout(me.update_gantt_task.bind(me, task, start, end), 500)
return;
}
me.gantt.updating_task = true;
var field_map = frappe.views.calendar[this.doctype].field_map;
frappe.call({
method: 'frappe.desk.gantt.update_task',
args: {
args: {
doctype: task.doctype,
name: task.id,
start: start.format('YYYY-MM-DD'),
end: end.format('YYYY-MM-DD')
},
field_map: field_map
},
callback: function() {
me.gantt.updating_task = false;
show_alert({message:__("Saved"), indicator:'green'}, 1);
}
})
},
render_rows_Kanban: function(values) {
var me = this;
frappe.require(