fix(mobile): collapsed nodes not expanding
diff --git a/erpnext/public/js/hierarchy_chart/hierarchy_chart_mobile.js b/erpnext/public/js/hierarchy_chart/hierarchy_chart_mobile.js
index d48b4c8..58530ea 100644
--- a/erpnext/public/js/hierarchy_chart/hierarchy_chart_mobile.js
+++ b/erpnext/public/js/hierarchy_chart/hierarchy_chart_mobile.js
@@ -88,7 +88,7 @@
me.$sibling_group = $(`<div class="sibling-group mt-4 mb-4"></div>`);
me.page.main.append(me.$sibling_group);
- me.setup_hierarchy()
+ me.setup_hierarchy();
me.render_root_nodes();
}
}
@@ -194,9 +194,9 @@
collapse_node() {
let node = this.selected_node;
- if (node.expandable) {
+ if (node.expandable && node.$children) {
node.$children.hide();
- node.expanded = false;
+ node.expanded = 0;
// add a collapsed level to show the collapsed parent
// and a button beside it to move to that level
@@ -212,10 +212,7 @@
frappe.run_serially([
() => this.get_child_nodes(node.parent_id, node.id),
(child_nodes) => this.get_node_group(child_nodes, node.parent_id),
- (node_group) => {
- node_parent.find('.collapsed-level')
- .append(node_group);
- },
+ (node_group) => node_parent.find('.collapsed-level').append(node_group),
() => this.setup_node_group_action()
]);
}
@@ -268,7 +265,7 @@
}
node.$children.show();
- node.expanded = true;
+ node.expanded = 1;
}
add_node(node, data) {
@@ -380,13 +377,16 @@
node_element.click(function() {
if (node.is_root) {
+ var el = $(this).detach();
me.$hierarchy.empty();
- me.add_node_to_hierarchy(node, true);
+ $(`#connectors`).empty();
+ me.add_node_to_hierarchy(el, node);
} else if (node_element.is(':visible') && node_element.hasClass('active-path')) {
me.remove_levels_after_node(node);
me.remove_orphaned_connectors();
} else {
- me.add_node_to_hierarchy(node, true);
+ var el = $(this).detach();
+ me.add_node_to_hierarchy(el, node);
me.collapse_node();
}
@@ -417,15 +417,15 @@
});
}
- add_node_to_hierarchy(node) {
- this.$hierarchy.append(`
- <li class="level">
- <div class="node-level d-flex flex-row">
- </div>
- </li>
- `);
+ add_node_to_hierarchy(node_element, node) {
+ this.$hierarchy.append(`<li class="level"></li>`);
+ node_element.removeClass('active-child active-path');
+ this.$hierarchy.find('.level:last').append(node_element);
- node.$link.appendTo(this.$hierarchy.find('.level:last'));
+ let node_object = this.nodes[node.id];
+ node_object.expanded = 0;
+ node_object.$children = undefined;
+ this.nodes[node.id] = node_object;
}
get_node_group(nodes, parent, collapsed=true) {
@@ -478,9 +478,11 @@
expand_sibling_group_node(parent) {
let node_object = this.nodes[parent];
let node = node_object.$link;
+
node.removeClass('active-child active-path');
node_object.expanded = 0;
node_object.$children = undefined;
+ this.nodes[node.id] = node_object;
// show parent's siblings and expand parent node
frappe.run_serially([
@@ -491,17 +493,21 @@
this.$sibling_group.empty().append(node_group);
},
() => this.setup_node_group_action(),
- () => {
- this.$hierarchy.empty().append(`
- <li class="level"></li>
- `);
- this.$hierarchy.find('.level').append(node);
- $(`#connectors`).empty();
- this.expand_node(node_object);
- }
+ () => this.reattach_and_expand_node(node, node_object)
]);
}
+ reattach_and_expand_node(node, node_object) {
+ var el = node.detach();
+
+ this.$hierarchy.empty().append(`
+ <li class="level"></li>
+ `);
+ this.$hierarchy.find('.level').append(el);
+ $(`#connectors`).empty();
+ this.expand_node(node_object);
+ }
+
remove_levels_after_node(node) {
let level = $(`#${node.id}`).parent().parent().index();