From 041496474d300d728d36be54a161769bc227f2ab Mon Sep 17 00:00:00 2001 From: Prateeksha Singh Date: Thu, 15 Feb 2018 08:49:47 +0530 Subject: [PATCH] more treeview decoupling --- frappe/model/sync.py | 2 - frappe/public/js/frappe/ui/tree.js | 46 +++++++++++++++++++++-- frappe/public/js/frappe/views/treeview.js | 37 ++---------------- 3 files changed, 45 insertions(+), 40 deletions(-) diff --git a/frappe/model/sync.py b/frappe/model/sync.py index de2bca903c..d970a103e7 100644 --- a/frappe/model/sync.py +++ b/frappe/model/sync.py @@ -50,8 +50,6 @@ def sync_for(app_name, force=0, sync_everything = False, verbose=False, reset_pe # show progress bar update_progress_bar("Updating DocTypes for {0}".format(app_name), i, l) - print() - def get_doc_files(files, start_path, force=0, sync_everything = False, verbose=False): """walk and sync all doctypes and pages""" diff --git a/frappe/public/js/frappe/ui/tree.js b/frappe/public/js/frappe/ui/tree.js index 3d0028e13e..62e395ee63 100644 --- a/frappe/public/js/frappe/ui/tree.js +++ b/frappe/public/js/frappe/ui/tree.js @@ -7,7 +7,7 @@ frappe.ui.Tree = class { constructor({ parent, label, icon_set, toolbar, expandable, with_skeleton=1, // eslint-disable-line - get_nodes, get_all_nodes, get_label, on_render, on_click // eslint-disable-line + args, method, get_label, on_render, on_click // eslint-disable-line }) { $.extend(this, arguments[0]); this.setup_treenode_class(); @@ -26,6 +26,40 @@ frappe.ui.Tree = class { this.setup_root_node(); } + get_nodes(value, is_root) { + var args = Object.assign({}, this.args); + args.parent = value; + args.is_root = is_root; + + return new Promise(resolve => { + frappe.call({ + method: this.method, + args: args, + callback: (r) => { + resolve(r.message); + } + }); + }); + } + + get_all_nodes(value, is_root) { + var args = Object.assign({}, this.args); + args.parent = value; + args.is_root = is_root; + + args.tree_method = this.method; + + return new Promise(resolve => { + frappe.call({ + method: 'frappe.desk.treeview.get_all_nodes', + args: args, + callback: (r) => { + resolve(r.message); + } + }); + }); + } + setup_treenode_class() { let tree = this; this.TreeNode = class { @@ -57,7 +91,7 @@ frappe.ui.Tree = class { value: this.label } }); - this.expand_node(this.root_node); + this.expand_node(this.root_node, false); } refresh() { @@ -107,7 +141,6 @@ frappe.ui.Tree = class { set_selected_node(node) { this.selected_node = node; - this.on_click && this.on_click(node); } load_children(node, deep=false) { @@ -154,8 +187,13 @@ frappe.ui.Tree = class { if(node.$toolbar) this.show_toolbar(node); } - expand_node(node) { + expand_node(node, click = true) { this.set_selected_node(node); + + if(click) { + this.on_click && this.on_click(node); + } + if(node.expandable) { this.toggle_node(node); } diff --git a/frappe/public/js/frappe/views/treeview.js b/frappe/public/js/frappe/views/treeview.js index 6eb2c190b7..6b5d6444da 100644 --- a/frappe/public/js/frappe/views/treeview.js +++ b/frappe/public/js/frappe/views/treeview.js @@ -132,49 +132,18 @@ frappe.views.TreeView = Class.extend({ }, make_tree: function() { $(this.parent).find(".tree").remove(); - let get_nodes = (value, is_root) => { - var args = Object.assign({}, this.args); - args.parent = value; - args.is_root = is_root; - - return new Promise(resolve => { - frappe.call({ - method: this.get_tree_nodes, - args: args, - callback: (r) => { resolve(r.message); } - }) - }); - } - - let get_all_nodes = (value, is_root) => { - var args = Object.assign({}, this.args); - args.parent = value; - args.is_root = is_root; - - args.tree_method = this.get_tree_nodes; - - return new Promise(resolve => { - frappe.call({ - method: 'frappe.desk.treeview.get_all_nodes', - args: args, - callback: (r) => { - resolve(r.message); - } - }) - }); - } this.tree = new frappe.ui.Tree({ parent: this.body, label: this.args[this.opts.root_label] || this.root_label || this.opts.root_label, expandable: true, + args: this.args, + method: this.get_tree_nodes, + // array of button props: {label, condition, click, btnClass} toolbar: this.get_toolbar(), - get_nodes: get_nodes, - get_all_nodes: get_all_nodes, - get_label: this.opts.get_label, on_render: this.opts.onrender, on_click: (node) => { this.select_node(node); },