From 14a7394b01fe802df154548e1698929a5a881ffd Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 10 Sep 2023 12:21:20 +0100 Subject: [PATCH] Renamed to bbtreeview Added checkboxes --- bbtreeview.css | 4 +- bbtreeview.js | 152 ++++++++++++++++++++++-------- checkbox.png | Bin 0 -> 337 bytes src/UCkji.png | Bin 0 -> 13067 bytes src/checkbox.svg | 64 +++++++++++++ src/treeview-check-boxes12231.png | Bin 0 -> 7519 bytes uncheckbox.png | Bin 0 -> 234 bytes 7 files changed, 178 insertions(+), 42 deletions(-) create mode 100644 checkbox.png create mode 100644 src/UCkji.png create mode 100644 src/checkbox.svg create mode 100644 src/treeview-check-boxes12231.png create mode 100644 uncheckbox.png diff --git a/bbtreeview.css b/bbtreeview.css index 7cd4bd9..c6733c7 100644 --- a/bbtreeview.css +++ b/bbtreeview.css @@ -51,10 +51,10 @@ ul.bbtreeview div.li > div.folder { } ul.bbtreeview li > div.li > div.checkbox { - background-image: url("folder.png"); + background-image: url("uncheckbox.png"); } ul.bbtreeview li.x > div.li > div.checkbox { - background-image: url("folder.png"); + background-image: url("checkbox.png"); } ul.bbtreeview div.li > span { diff --git a/bbtreeview.js b/bbtreeview.js index 686759e..1f90b00 100644 --- a/bbtreeview.js +++ b/bbtreeview.js @@ -61,6 +61,32 @@ BBTreeview.prototype.AddItem = function(options) { a.Toggle(myNode); }); + // Setup checkbox events + if (a.Options.ShowCheckbox) { + node.Checkbox.addEventListener("mousedown", function(e){ + e.stopPropagation(); + e.preventDefault(); + + node.Checked = !node.Checked; + + a.CheckNode(node, node.Checked); + }); + + node.Checkbox.addEventListener("click", function(e){ + e.stopPropagation(); + e.preventDefault(); + + // do nothing + }); + + node.Checkbox.addEventListener("dblclick", function(e){ + e.stopPropagation(); + e.preventDefault(); + + // do nothing + }); + } + // node.Label.addEventListener("click", function(e){ // e.stopPropagation(); // e.preventDefault(); @@ -147,6 +173,7 @@ BBTreeview.prototype.Default = function() { ParentID: null, Name: "", Hint: "", + Value: "hello", Icon: "folder", Checked: false } @@ -154,13 +181,41 @@ BBTreeview.prototype.Default = function() { }; +BBTreeview.prototype.CheckNode = function(node, value) { + const a = this; + + a.setNodeCheckbox(node.Node, value); + + // Update children + node.Node.querySelectorAll("li").forEach(function(e) { + a.setNodeCheckbox(e, value); + }); + + // Invalidate ParentNode + node.ParentNode = a.GetParentNode(node.Node); + + // Update parent state + if (node.ParentNode != null) { + let uncheckedCount = 0; + node.ParentNode.querySelectorAll("li").forEach(function(e) { + if (e.classList.contains("x")) { + return; + } + + uncheckedCount++; + }); + + a.setNodeCheckbox(node.ParentNode, (uncheckedCount <= 0)); + } +}; + BBTreeview.prototype.CollapseNode = function(node) { const a = this; node.Node.classList.remove("e"); node.Node.classList.add("c"); - node.Items.forEach(function(e) { + a.GetChildNodes(node.Node).forEach(function(e) { e.classList.add("hidden"); }); }; @@ -171,7 +226,7 @@ BBTreeview.prototype.ExpandNode = function(node) { node.Node.classList.remove("c"); node.Node.classList.add("e"); - node.Items.forEach(function(e) { + a.GetChildNodes(node.Node).forEach(function(e) { e.classList.remove("hidden"); }); }; @@ -188,17 +243,55 @@ BBTreeview.prototype.Find = function(id) { let response = { ID: id, Node: node[0], - ParentNode: a.getParentNode(node[0]), + ParentNode: a.GetParentNode(node[0]), ChildNode: a.getChildNode(node[0]), Container: node[0].querySelectorAll("div.li")[0], Label: node[0].querySelectorAll("span")[0], - Items: a.getChildren(node[0]) + Checked: node[0].classList.contains("x"), + Checkbox: (a.Options.ShowCheckbox ? node[0].querySelectorAll("div.icon.checkbox")[0] : null), + Value: node[0].getAttribute("data-bbtv-value") }; // console.log(response); return response; }; + +BBTreeview.prototype.GetChildNodes = function(node) { + const a = this; + + const childNode = a.getChildNode(node); + if (childNode == null) { + return []; + } + + let nodes = childNode.querySelectorAll("li"); + if (nodes.length <= 0) { + return []; + } + + let result = []; + nodes.forEach(function(e) { + if (typeof(e.parentNode) == "undefined") { + return; + } + + if (e.parentNode != childNode) { + return; + } + + result.push(e); + }); + + return result; +}; + +BBTreeview.prototype.GetParentNode = function(node) { + const a = this; + + return a.parentsUntilTagName(node, "li"); +}; + BBTreeview.prototype.Toggle = function(node) { const a = this; @@ -251,7 +344,7 @@ BBTreeview.prototype.generateID = function() { BBTreeview.prototype.generateNodeHtml = function(options) { const a = this; - let html = '
  • '; + let html = '
  • '; html += '
    ' if (a.Options.ShowCheckbox) { @@ -278,35 +371,6 @@ BBTreeview.prototype.getChildNode = function(node) { return result[0]; }; -BBTreeview.prototype.getChildren = function(node) { - const a = this; - - const childNode = a.getChildNode(node); - if (childNode == null) { - return []; - } - - let nodes = childNode.querySelectorAll("li"); - if (nodes.length <= 0) { - return []; - } - - let result = []; - nodes.forEach(function(e) { - if (typeof(e.parentNode) == "undefined") { - return; - } - - if (e.parentNode != childNode) { - return; - } - - result.push(e); - }); - - return result; -}; - BBTreeview.prototype.getNode = function(el) { const a = this; @@ -337,12 +401,6 @@ BBTreeview.prototype.getOptions = function(options) { return _options; }; -BBTreeview.prototype.getParentNode = function(node) { - const a = this; - - return a.parentsUntilTagName(node, "li"); -}; - BBTreeview.prototype.isNullOrWhitespace = function(value) { if (typeof (value) == "undefined") { return true; @@ -383,4 +441,18 @@ BBTreeview.prototype.parentsUntilTagName = function(el, tagName) { } return node; +}; + +BBTreeview.prototype.setNodeCheckbox = function(el, value) { + const a = this; + + if (value) { + if (!el.classList.contains("x")) { + el.classList.add("x"); + } + } else { + if (el.classList.contains("x")) { + el.classList.remove("x"); + } + } }; \ No newline at end of file diff --git a/checkbox.png b/checkbox.png new file mode 100644 index 0000000000000000000000000000000000000000..d5615108deb291e4dae5fd696e77e71b708894b6 GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~g3ml%978PplO=vN2znVyNJ~#=Sm~zljEOse zJ-%_rzc)8G?-kHn#i(%7K}~I$wSb_{hxhmGMHRO4Wiar&v@|wydNnhM2OOMwdAa}n z-~a#H+fP`}a#+F6Lq>)FNinmbjKb~*_5qD16EwL>jyfvv8nLk1G4XC>eq`>jbGd`~ zfv<|Y8F*&QoXOfK(xvNgfcJ_9OX^|<9%c{LE9MX0-{1efQAERS!ol!_AA6cN1v0cT zK0iNyKgXB#%mTZW65ETPpNnnMa%5Cl%Dmuph@_F|!@$E>;JVWk ee!c?-7#RL!!2&kmQ0Fn+$4Io`ZI4a#z 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

    LFKV12( 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 + + + + + + diff --git a/src/treeview-check-boxes12231.png b/src/treeview-check-boxes12231.png new file mode 100644 index 0000000000000000000000000000000000000000..6809043689f1d29a86d4f4bc4863d2145a0f3b28 GIT binary patch literal 7519 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 literal 0 HcmV?d00001 diff --git a/uncheckbox.png b/uncheckbox.png new file mode 100644 index 0000000000000000000000000000000000000000..8b6fd109ddc1a92ecd2875850d2acbe2771b4990 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~g7uy*jv*HQ$r8UB1ig$Uq@|}btaMX&#>Ab# z9^bg*-SU4GYf8=LmXs|v_VpXV| zV5K3>Gh>0t&4eoqS`rRHRzH4!U$3RC{5a}KNyD2aD}^|AAD!~T#0hB%>smGBWf~e8 Z88(|+-jrup><4rTgQu&X%Q~loCIDfbN7(=X literal 0 HcmV?d00001