From edd28fc9ea73bb653eebb414e68de28cc5ad4265 Mon Sep 17 00:00:00 2001 From: Alisher Nazarkhanov <70004309+nazarkhanov@users.noreply.github.com> Date: Thu, 26 Dec 2024 18:25:13 +0500 Subject: [PATCH 1/2] Handle groups --- src/plugins/sortable/plugin.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/plugins/sortable/plugin.js b/src/plugins/sortable/plugin.js index 84b29e1f..2866d8e6 100644 --- a/src/plugins/sortable/plugin.js +++ b/src/plugins/sortable/plugin.js @@ -237,5 +237,11 @@ function moveSortableToTarget(node, target, builder) { if (builder && node instanceof Rule) { builder.setRuleInputValue(node, node.value); } + if (builder && node instanceof Group) { + for (var i = 0; i < node.rules.length; i++) { + var rule = node.rules[i]; + builder.setRuleInputValue(rule, rule.value); + } + } } } From e6fd210324d1e8c884d145d042145801c7eb1cae Mon Sep 17 00:00:00 2001 From: Alisher Nazarkhanov <70004309+nazarkhanov@users.noreply.github.com> Date: Fri, 27 Dec 2024 08:46:46 +0500 Subject: [PATCH 2/2] Handle subgroups --- src/plugins/sortable/plugin.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/plugins/sortable/plugin.js b/src/plugins/sortable/plugin.js index 2866d8e6..f7128f25 100644 --- a/src/plugins/sortable/plugin.js +++ b/src/plugins/sortable/plugin.js @@ -233,15 +233,23 @@ function moveSortableToTarget(node, target, builder) { if (method) { node[method](builder.getModel(parent)); - // refresh radio value - if (builder && node instanceof Rule) { - builder.setRuleInputValue(node, node.value); - } - if (builder && node instanceof Group) { - for (var i = 0; i < node.rules.length; i++) { - var rule = node.rules[i]; - builder.setRuleInputValue(rule, rule.value); - } - } + if (builder) refreshRadioValue(builder, node); + } +} + +/** + * Refreshes the value of radio inputs in all nodes + * @memberof module:plugins.Sortable + * @param {QueryBuilder} builder + * @param {Node} node + * @private + */ +function refreshRadioValue(builder, node) { + if (node instanceof Rule) { + builder.setRuleInputValue(node, node.value); + } else if (node instanceof Group) { + node.rules.forEach(function(node) { + refreshRadioValue(builder, node); + }); } }