From f34d7614076fc1dc33da2b0a2ec7696dd7a3656b Mon Sep 17 00:00:00 2001 From: yumoqing Date: Wed, 30 Jul 2025 14:26:37 +0800 Subject: [PATCH 1/6] bugfix --- bricks/tree.js | 19 ++++++++++++------- bricks/utils.js | 4 ++++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/bricks/tree.js b/bricks/tree.js index 7f8697c..aaa4832 100644 --- a/bricks/tree.js +++ b/bricks/tree.js @@ -123,10 +123,15 @@ bricks.TreeNode = class extends bricks.VBox { widget.add_widget(this.check_w); this.check_w.bind('changed', this.tree.node_checked.bind(this.tree, this)) } - var icon_url = this.icons_urls.leaf; - if (this.is_leaf) icon_url = this.icons_urls.leaf; - else if (this.node_state == 'expand') this.icon_url = this.icons_urls.open; - else this.icon_url = this.icons_urls.close; + var icon_url; + if ( isString(this.icons_urls){ + icon_url = this.icons_urls); + } else { + icon_url = this.icons_urls.leaf; + if (this.is_leaf) icon_url = this.icons_urls.leaf; + else if (this.node_state == 'expand') this.icon_url = this.icons_urls.open; + else this.icon_url = this.icons_urls.close; + } var img = new bricks.Svg({ rate:1, url:this.icon_url @@ -160,9 +165,9 @@ bricks.TreeNode = class extends bricks.VBox { var icons = null; if (this.tree.node_typeicons){ icons = this.tree.node_typeicons[ntype]; - var dt = this.tree.node_typeicons.default_type; - if (dt){ - icon = this.tree.node_typeicons[dt]; + if (!icons){ + var dt = this.tree.node_typeicons.default_type; + icons = this.tree.node_typeicons[dt]; } } } diff --git a/bricks/utils.js b/bricks/utils.js index 2e5e002..486b7e6 100644 --- a/bricks/utils.js +++ b/bricks/utils.js @@ -1,6 +1,10 @@ var bricks = window.bricks || {}; bricks.bug = false; +function isString(value) { + return typeof value === 'string' || value instanceof String; +} + function parseRGB(colorStr) { const match = colorStr.match(/^rgb\s*\(\s*(\d+),\s*(\d+),\s*(\d+)\s*\)$/); if (!match) return null; From 1a4650461899cf5a3187c7ddd48270d1c945e470 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Wed, 30 Jul 2025 16:13:24 +0800 Subject: [PATCH 2/6] bugfix --- bricks/tree.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/bricks/tree.js b/bricks/tree.js index aaa4832..11db31a 100644 --- a/bricks/tree.js +++ b/bricks/tree.js @@ -10,6 +10,7 @@ bricks.TreeNode = class extends bricks.VBox { this.parent_node = pnode; this.children_loaded = false; this.user_data = data; + this.setup_icon_urls() this.is_leaf_field = this.tree.is_leafField || 'is_leaf'; this.is_leaf = this.user_data[this.is_leaf_field]; this.params = bricks.extend(this.tree.params, {id:this.user_data[this.tree.opts.idField]}); @@ -34,7 +35,6 @@ bricks.TreeNode = class extends bricks.VBox { } this.container.hide(); } - this.setup_icon_urls() } getValue(){ var v = this.user_data; @@ -124,17 +124,18 @@ bricks.TreeNode = class extends bricks.VBox { this.check_w.bind('changed', this.tree.node_checked.bind(this.tree, this)) } var icon_url; - if ( isString(this.icons_urls){ - icon_url = this.icons_urls); + if ( isString(this.icons_urls)){ + icon_url = this.icons_urls; } else { icon_url = this.icons_urls.leaf; if (this.is_leaf) icon_url = this.icons_urls.leaf; else if (this.node_state == 'expand') this.icon_url = this.icons_urls.open; else this.icon_url = this.icons_urls.close; } + console.log('icons=', this.icons_urls, 'icon_url=', icon_url, this.user_data); var img = new bricks.Svg({ rate:1, - url:this.icon_url + url:icon_url }); widget.add_widget(img); if (this.tree.node_view){ @@ -159,10 +160,9 @@ bricks.TreeNode = class extends bricks.VBox { this.str_w.set_text(this.user_data[this.tree.opts.textField]); } setup_icon_urls(){ - + var icons = null; if (this.tree.opts.typeField){ - var ntype = this.user_data[this.opts.typeField]; - var icons = null; + var ntype = this.user_data[this.tree.opts.typeField]; if (this.tree.node_typeicons){ icons = this.tree.node_typeicons[ntype]; if (!icons){ @@ -170,6 +170,7 @@ bricks.TreeNode = class extends bricks.VBox { icons = this.tree.node_typeicons[dt]; } } + console.log('ntype=', ntype, 'icons=', icons, this.user_data, this.tree.opts.typeField); } if (! icons){ icons = { From 9ccf63391d17e04215d9d22aa6694e426cd37054 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 31 Jul 2025 11:34:40 +0800 Subject: [PATCH 3/6] bugfix --- bricks/tree.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bricks/tree.js b/bricks/tree.js index 11db31a..95b7926 100644 --- a/bricks/tree.js +++ b/bricks/tree.js @@ -319,6 +319,7 @@ bricks.Tree = class extends bricks.VScrollPanel { var d = event.params; var node = this; if (this.selected_node){ + console.log('selected node exists') node = this.selected_node; if (d instanceof FormData){ d.append(this.parentField, node.get_id()); @@ -326,6 +327,7 @@ bricks.Tree = class extends bricks.VScrollPanel { d[this.parentField] = node.get_id(); } } else if (this.opts.params.id) { + console.log('selected node not exists') if (d instanceof FormData){ d.append(this.parentField, this.opts.params.id); } else { From 4635f7cc49074dc15e0a7d01b31a09026cbc499a Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 31 Jul 2025 11:55:02 +0800 Subject: [PATCH 4/6] bugfix --- bricks/tree.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bricks/tree.js b/bricks/tree.js index 95b7926..06efe66 100644 --- a/bricks/tree.js +++ b/bricks/tree.js @@ -13,7 +13,8 @@ bricks.TreeNode = class extends bricks.VBox { this.setup_icon_urls() this.is_leaf_field = this.tree.is_leafField || 'is_leaf'; this.is_leaf = this.user_data[this.is_leaf_field]; - this.params = bricks.extend(this.tree.params, {id:this.user_data[this.tree.opts.idField]}); + this.params = bricks.extend({}, this.tree.params) + this.params = bricks.extend(this.params, {id:this.user_data[this.tree.opts.idField]}); if (this.tree.opts.typeField){ this.params.type = this.user_data[this.tree.opts.typeField]; } @@ -326,10 +327,10 @@ bricks.Tree = class extends bricks.VScrollPanel { } else { d[this.parentField] = node.get_id(); } - } else if (this.opts.params.id) { + } else if (this.tree.opts.params.id) { console.log('selected node not exists') if (d instanceof FormData){ - d.append(this.parentField, this.opts.params.id); + d.append(this.parentField, this.tree.opts.params.id); } else { d[this.parentField] = this.opts.params.id; } From 600cc0b91c4d137977db4b46fbfe3c7b16b3dd34 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 31 Jul 2025 11:56:40 +0800 Subject: [PATCH 5/6] bugfix --- bricks/tree.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bricks/tree.js b/bricks/tree.js index 06efe66..ab7d2ec 100644 --- a/bricks/tree.js +++ b/bricks/tree.js @@ -327,10 +327,10 @@ bricks.Tree = class extends bricks.VScrollPanel { } else { d[this.parentField] = node.get_id(); } - } else if (this.tree.opts.params.id) { + } else if (this.opts.params.id) { console.log('selected node not exists') if (d instanceof FormData){ - d.append(this.parentField, this.tree.opts.params.id); + d.append(this.parentField, this.opts.params.id); } else { d[this.parentField] = this.opts.params.id; } From c31db30118ab80977c00bcee6f9c5e3e1b2cd931 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Fri, 1 Aug 2025 11:55:01 +0800 Subject: [PATCH 6/6] bugfix --- bricks/tree.js | 5 +++++ bricks/widget.js | 1 + 2 files changed, 6 insertions(+) diff --git a/bricks/tree.js b/bricks/tree.js index ab7d2ec..9235325 100644 --- a/bricks/tree.js +++ b/bricks/tree.js @@ -301,6 +301,11 @@ bricks.Tree = class extends bricks.VScrollPanel { } else if (opts.selected_data){ d = this.selected_node.user_data } + d.meta_data = { + referer: this.id, + title: opts.label, + icon: opts.icon + } this.dispatch(opts.name, d); break; } diff --git a/bricks/widget.js b/bricks/widget.js index f1eeaa1..01a9518 100644 --- a/bricks/widget.js +++ b/bricks/widget.js @@ -35,6 +35,7 @@ bricks.JsWidget = class { this._container = false; this.parent = null; this.sizable_elements = []; + this.set_id(bricks.uuid()); if (options.css){ this.set_css(options.css); }