From 97fe12f17dba904ef2d5c7ff25cbec9812c166ff Mon Sep 17 00:00:00 2001 From: guy Date: Wed, 21 Jun 2017 16:00:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=91=E6=8E=A7=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bi/widget.js | 25 +++++++++++++++---- docs/widget.js | 25 +++++++++++++++---- .../abstract.treevaluechooser.js | 25 +++++++++++++++---- 3 files changed, 60 insertions(+), 15 deletions(-) diff --git a/bi/widget.js b/bi/widget.js index 0b676040e..9a0b7488b 100644 --- a/bi/widget.js +++ b/bi/widget.js @@ -17420,6 +17420,8 @@ BI.shortcut('bi.all_value_chooser_pane', BI.AllValueChooserPane);BI.AbstractTree function expandSelectedValue(selectedValues, parents, notSelectedValue) { var next = selectedValues; + var childrenCount = []; + var path = []; //去掉点击的节点之后的结果集 BI.some(parents, function (i, v) { var t = next[v]; @@ -17430,12 +17432,25 @@ BI.shortcut('bi.all_value_chooser_pane', BI.AllValueChooserPane);BI.AbstractTree if (BI.isEmpty(next)) { var split = parents.slice(0, i); var expanded = self._getChildren(split); - BI.each(expanded, function (m, child) { - if (i === parents.length - 1 && child.value === notSelectedValue) { - return true; + path.push(split); + childrenCount.push(expanded.length); + //如果只有一个值且取消的就是这个值 + if (i === parents.length - 1 && expanded.length === 1 && expanded[0] === notSelectedValue) { + for (var j = childrenCount.length - 1; j >= 0; j--) { + if (childrenCount[j] === 1) { + self._deleteNode(selectedValues, path[j]); + } else { + break; + } } - next[child.value] = {}; - }); + } else { + BI.each(expanded, function (m, child) { + if (i === parents.length - 1 && child.value === notSelectedValue) { + return true; + } + next[child.value] = {}; + }); + } next = next[v]; } else { return true; diff --git a/docs/widget.js b/docs/widget.js index 0b676040e..9a0b7488b 100644 --- a/docs/widget.js +++ b/docs/widget.js @@ -17420,6 +17420,8 @@ BI.shortcut('bi.all_value_chooser_pane', BI.AllValueChooserPane);BI.AbstractTree function expandSelectedValue(selectedValues, parents, notSelectedValue) { var next = selectedValues; + var childrenCount = []; + var path = []; //去掉点击的节点之后的结果集 BI.some(parents, function (i, v) { var t = next[v]; @@ -17430,12 +17432,25 @@ BI.shortcut('bi.all_value_chooser_pane', BI.AllValueChooserPane);BI.AbstractTree if (BI.isEmpty(next)) { var split = parents.slice(0, i); var expanded = self._getChildren(split); - BI.each(expanded, function (m, child) { - if (i === parents.length - 1 && child.value === notSelectedValue) { - return true; + path.push(split); + childrenCount.push(expanded.length); + //如果只有一个值且取消的就是这个值 + if (i === parents.length - 1 && expanded.length === 1 && expanded[0] === notSelectedValue) { + for (var j = childrenCount.length - 1; j >= 0; j--) { + if (childrenCount[j] === 1) { + self._deleteNode(selectedValues, path[j]); + } else { + break; + } } - next[child.value] = {}; - }); + } else { + BI.each(expanded, function (m, child) { + if (i === parents.length - 1 && child.value === notSelectedValue) { + return true; + } + next[child.value] = {}; + }); + } next = next[v]; } else { return true; diff --git a/src/component/treevaluechooser/abstract.treevaluechooser.js b/src/component/treevaluechooser/abstract.treevaluechooser.js index d20a7c850..1d929f65e 100644 --- a/src/component/treevaluechooser/abstract.treevaluechooser.js +++ b/src/component/treevaluechooser/abstract.treevaluechooser.js @@ -181,6 +181,8 @@ BI.AbstractTreeValueChooser = BI.inherit(BI.Widget, { function expandSelectedValue(selectedValues, parents, notSelectedValue) { var next = selectedValues; + var childrenCount = []; + var path = []; //去掉点击的节点之后的结果集 BI.some(parents, function (i, v) { var t = next[v]; @@ -191,12 +193,25 @@ BI.AbstractTreeValueChooser = BI.inherit(BI.Widget, { if (BI.isEmpty(next)) { var split = parents.slice(0, i); var expanded = self._getChildren(split); - BI.each(expanded, function (m, child) { - if (i === parents.length - 1 && child.value === notSelectedValue) { - return true; + path.push(split); + childrenCount.push(expanded.length); + //如果只有一个值且取消的就是这个值 + if (i === parents.length - 1 && expanded.length === 1 && expanded[0] === notSelectedValue) { + for (var j = childrenCount.length - 1; j >= 0; j--) { + if (childrenCount[j] === 1) { + self._deleteNode(selectedValues, path[j]); + } else { + break; + } } - next[child.value] = {}; - }); + } else { + BI.each(expanded, function (m, child) { + if (i === parents.length - 1 && child.value === notSelectedValue) { + return true; + } + next[child.value] = {}; + }); + } next = next[v]; } else { return true;