[fix] treeview fixes frappe/erpnext#7318
This commit is contained in:
parent
51c97cf118
commit
9eb24e8a13
3 changed files with 30 additions and 20 deletions
|
|
@ -60,6 +60,10 @@ $(document).on("save", function(event, doc) {
|
|||
});
|
||||
|
||||
frappe.views.set_list_as_dirty = function(doctype) {
|
||||
if(frappe.views.trees[doctype]) {
|
||||
frappe.views.trees[doctype].tree.refresh();
|
||||
}
|
||||
|
||||
var list_page = "List/" + doctype;
|
||||
if(frappe.pages[list_page]) {
|
||||
if(frappe.pages[list_page].doclistview) {
|
||||
|
|
|
|||
|
|
@ -24,6 +24,9 @@ frappe.ui.Tree = Class.extend({
|
|||
});
|
||||
this.rootnode.toggle();
|
||||
},
|
||||
refresh: function() {
|
||||
this.selected_node.reload_parent();
|
||||
},
|
||||
get_selected_node: function() {
|
||||
return this.selected_node;
|
||||
},
|
||||
|
|
@ -50,11 +53,11 @@ frappe.ui.TreeNode = Class.extend({
|
|||
},
|
||||
make: function() {
|
||||
var me = this;
|
||||
this.$a = $('<span class="tree-link">')
|
||||
this.tree_link = $('<span class="tree-link">')
|
||||
.click(function(event) {
|
||||
me.tree.selected_node = me;
|
||||
me.tree.wrapper.find(".tree-link.active").removeClass("active");
|
||||
me.$a.addClass("active");
|
||||
me.tree_link.addClass("active");
|
||||
if(me.tree.toolbar) {
|
||||
me.show_toolbar();
|
||||
}
|
||||
|
|
@ -82,9 +85,9 @@ frappe.ui.TreeNode = Class.extend({
|
|||
icon_html = '<i class="fa fa-fw fa-folder text-muted" style="font-size: 14px;"></i>';
|
||||
}
|
||||
$(icon_html + ' <a class="tree-label grey h6">' + this.get_label() + "</a>").
|
||||
appendTo(this.$a);
|
||||
appendTo(this.tree_link);
|
||||
|
||||
this.$a.find('i, a').click(function() {
|
||||
this.tree_link.find('i, a').click(function() {
|
||||
setTimeout(function() { me.toolbar.find(".btn-expand").click(); }, 100);
|
||||
});
|
||||
},
|
||||
|
|
@ -113,7 +116,7 @@ frappe.ui.TreeNode = Class.extend({
|
|||
},
|
||||
make_toolbar: function() {
|
||||
var me = this;
|
||||
this.toolbar = $('<span class="tree-node-toolbar btn-group"></span>').insertAfter(this.$a);
|
||||
this.toolbar = $('<span class="tree-node-toolbar btn-group"></span>').insertAfter(this.tree_link);
|
||||
|
||||
$.each(this.tree.toolbar, function(i, item) {
|
||||
if(item.toggle_btn) {
|
||||
|
|
@ -179,20 +182,20 @@ frappe.ui.TreeNode = Class.extend({
|
|||
}
|
||||
|
||||
// open close icon
|
||||
this.$a.find('i').removeClass();
|
||||
this.tree_link.find('i').removeClass();
|
||||
if(!this.expanded) {
|
||||
this.$a.find('i').addClass('fa fa-fw fa-folder-open text-muted');
|
||||
this.tree_link.find('i').addClass('fa fa-fw fa-folder-open text-muted');
|
||||
} else {
|
||||
this.$a.find('i').addClass('fa fa-fw fa-folder text-muted');
|
||||
this.tree_link.find('i').addClass('fa fa-fw fa-folder text-muted');
|
||||
}
|
||||
}
|
||||
|
||||
// select this link
|
||||
this.tree.wrapper.find('.selected')
|
||||
.removeClass('selected');
|
||||
this.$a.toggleClass('selected');
|
||||
this.tree_link.toggleClass('selected');
|
||||
this.expanded = !this.expanded;
|
||||
|
||||
|
||||
this.expanded ?
|
||||
this.parent.addClass('opened') :
|
||||
this.parent.removeClass('opened');
|
||||
|
|
@ -202,7 +205,7 @@ frappe.ui.TreeNode = Class.extend({
|
|||
this.load();
|
||||
},
|
||||
reload_parent: function() {
|
||||
this.parent_node.load();
|
||||
this.parent_node.load_all();
|
||||
},
|
||||
load_all: function(callback) {
|
||||
var me = this;
|
||||
|
|
@ -240,7 +243,7 @@ frappe.ui.TreeNode = Class.extend({
|
|||
if (data) {
|
||||
$.each(data, function(i, v) {
|
||||
var child_node = node.addnode(v);
|
||||
child_node.$a
|
||||
child_node.tree_link
|
||||
.data('node-data', v)
|
||||
.data('node', child_node);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
// MIT License. See license.txt
|
||||
|
||||
frappe.provide("frappe.treeview_settings");
|
||||
frappe.provide('frappe.views.trees');
|
||||
cur_tree = null;
|
||||
|
||||
frappe.views.TreeFactory = frappe.views.Factory.extend({
|
||||
|
|
@ -17,7 +18,7 @@ frappe.views.TreeFactory = frappe.views.Factory.extend({
|
|||
return false;
|
||||
}
|
||||
$.extend(options, frappe.treeview_settings[route[1]] || {});
|
||||
new frappe.views.TreeView(options);
|
||||
frappe.views.trees[options.doctype] = new frappe.views.TreeView(options);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
@ -145,7 +146,8 @@ frappe.views.TreeView = Class.extend({
|
|||
condition: function(node) { return !node.root && me.can_write; },
|
||||
click: function(node) {
|
||||
frappe.model.rename_doc(me.doctype, node.label, function(new_name) {
|
||||
node.$a.html(new_name);
|
||||
node.tree_link.find('a').text(new_name);
|
||||
node.label = new_name;
|
||||
});
|
||||
},
|
||||
btnClass: "hidden-xs"
|
||||
|
|
@ -185,12 +187,13 @@ frappe.views.TreeView = Class.extend({
|
|||
var d = new frappe.ui.Dialog({
|
||||
title: __('New {0}',[__(me.doctype)]),
|
||||
fields: me.fields
|
||||
})
|
||||
});
|
||||
|
||||
me.args["parent_"+me.doctype.toLowerCase().replace(/ /g,'_')] = me.args["parent"];
|
||||
var args = $.extend({}, me.args);
|
||||
args["parent_"+me.doctype.toLowerCase().replace(/ /g,'_')] = me.args["parent"];
|
||||
|
||||
d.set_value("is_group", 0);
|
||||
d.set_values(me.args);
|
||||
d.set_values(args);
|
||||
|
||||
// create
|
||||
d.set_primary_action(__("Create New"), function() {
|
||||
|
|
@ -210,18 +213,18 @@ frappe.views.TreeView = Class.extend({
|
|||
v.root_type = null;
|
||||
}
|
||||
|
||||
$.extend(me.args, v)
|
||||
$.extend(args, v)
|
||||
|
||||
return frappe.call({
|
||||
method: me.opts.add_tree_node || "frappe.desk.treeview.add_node",
|
||||
args: me.args,
|
||||
args: args,
|
||||
callback: function(r) {
|
||||
if(!r.exc) {
|
||||
d.hide();
|
||||
if(node.expanded) {
|
||||
node.toggle_node();
|
||||
}
|
||||
node.reload();
|
||||
node.load_all();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue