浏览代码

[gantt] fix multiple task updates (#2655)

version-14
Faris Ansari 8 年前
committed by Rushabh Mehta
父节点
当前提交
562b37cd47
共有 2 个文件被更改,包括 44 次插入6 次删除
  1. +16
    -0
      frappe/desk/gantt.py
  2. +28
    -6
      frappe/public/js/frappe/list/doclistview.js

+ 16
- 0
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()

+ 28
- 6
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); frappe.set_route('Form', task.doctype, task.id);
}, },
on_date_change: function(task, start, end) { 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) { on_progress_change: function(task, progress) {
var progress_fieldname = 'progress'; var progress_fieldname = 'progress';
@@ -558,7 +554,6 @@ frappe.views.DocListView = frappe.ui.Listing.extend({


if(progress_fieldname) { if(progress_fieldname) {
set_value(task.doctype, task.id, progress_fieldname, parseInt(progress)) set_value(task.doctype, task.id, progress_fieldname, parseInt(progress))
.then(show_success);
} }
}, },
on_view_change: function(mode) { 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) { render_rows_Kanban: function(values) {
var me = this; var me = this;
frappe.require( frappe.require(


正在加载...
取消
保存