From 562b37cd47fa67c87c33b56105c76a3b3b672f17 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Thu, 2 Feb 2017 11:00:39 +0530 Subject: [PATCH] [gantt] fix multiple task updates (#2655) --- frappe/desk/gantt.py | 16 ++++++++++ frappe/public/js/frappe/list/doclistview.js | 34 +++++++++++++++++---- 2 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 frappe/desk/gantt.py diff --git a/frappe/desk/gantt.py b/frappe/desk/gantt.py new file mode 100644 index 0000000000..521884beaa --- /dev/null +++ b/frappe/desk/gantt.py @@ -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() \ No newline at end of file diff --git a/frappe/public/js/frappe/list/doclistview.js b/frappe/public/js/frappe/list/doclistview.js index 9948e0caa6..fc8723dad5 100644 --- a/frappe/public/js/frappe/list/doclistview.js +++ b/frappe/public/js/frappe/list/doclistview.js @@ -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(