diff --git a/public/styles/style.css b/public/styles/style.css
index b23f6808..75d4b26b 100644
--- a/public/styles/style.css
+++ b/public/styles/style.css
@@ -15,6 +15,10 @@ body {
/* overflow-y: hidden; */
}
+.night .collapseImage {
+ filter: invert(100%);
+}
+
#container {
background-color: #fff;
width: 960px;
diff --git a/views/default.handlebars b/views/default.handlebars
index af6a81e8..a8739b1c 100644
--- a/views/default.handlebars
+++ b/views/default.handlebars
@@ -2798,9 +2798,9 @@
r += '
';
r += '' + extra;
r += '';
- if ((view == 1) || (view == 3)) {
+ if ((view == 1) || (view == 2) || (view == 3)) {
var collapsed = CollapsedGroups[node.meshid];
- r += '
'; // Collapse action
+ r += '
'; // Collapse action
}
r += '
' + EscapeHtml(meshes[node.meshid].name) + '' + getMeshActions(mesh2, meshrights) + '
';
if (view == 2) { r += ''; }
@@ -2819,9 +2819,9 @@
if (view == 2) { r += ''; }
r += '';
- if ((view == 1) || (view == 3)) {
+ if ((view == 1) || (view == 2) || (view == 3)) {
var collapsed = CollapsedGroups['pwr:' + pwr];
- r += ' '; // Collapse action
+ r += ' '; // Collapse action
}
r += ' ' + PowerStateStr2(node.pwr) + ' ';
@@ -2856,7 +2856,12 @@
if ((node.conn & 8) != 0) { states.push('' + "Relay" + ''); }
if ((node.conn & 16) != 0) { states.push('' + "MQTT" + ''); }
}
- r += ' |
';
+
+ var collapseName = node.meshid;
+ if (sort == 1) { collapseName = 'pwr:' + node.pwr; }
+ else if (sort == 3) { collapseName = 'tag:**xx**xx*TaG*xx**xx**'; }
+ var collapsed = (sort != 3) & CollapsedGroups[collapseName];
+ r += ' ';
r += ' ';
r += ' ';
r += ' ';
@@ -2882,7 +2887,9 @@
if (node.tags) {
for (var j in node.tags) {
var tag = node.tags[j];
- if (groups[tag] == null) { groups[tag] = r; groupCount[tag] = 1; } else { groups[tag] += r; groupCount[tag] += 1; }
+ var collapsed = CollapsedGroups['tag:' + tag];
+ var r2 = r.replace('**xx**xx*TaG*xx**xx**', tag + (collapsed?' style=display:none':''));
+ if (groups[tag] == null) { groups[tag] = r2; groupCount[tag] = 1; } else { groups[tag] += r2; groupCount[tag] += 1; }
if (view == 3) break;
}
}
@@ -2907,17 +2914,20 @@
for (var j in groupNames) {
var i = groupNames[j];
if (view == 2) {
- r += ' ' + i + ' ' + groups[i];
+ r += ' | ';
+ var collapsed = CollapsedGroups['tag:' + i];
+ r += ' '; // Collapse action
+ r += ' ' + i + ' ' + groups[i];
} else {
r += '';
var collapsed = CollapsedGroups['tag:' + i];
- r += ' '; // Collapse action
+ r += ' '; // Collapse action
r += ' ' + i + ' ';
r += ''; // Open collapse div
r += groups[i];
r += ' ';
- tagDeviceHeaderId++;
}
+ tagDeviceHeaderId++;
}
}
@@ -2946,7 +2956,7 @@
// Collapsing header & start collapsing area
deviceHeaderId2++;
var collapsed = CollapsedGroups[mesh._id];
- r += ''; // Collapse action
+ r += ''; // Collapse action
r += '' + EscapeHtml(mesh.name) + '';
r += getMeshActions(mesh, meshrights);
@@ -2957,12 +2967,12 @@
}
if (mesh.mtype == 2) {
r += ' | ';
- if (view == 1) { r += ''; } // Open collapse div
+ r += ' '; // Open collapse div
r += ' ' + "No devices in this group";
if ((meshrights & 4) != 0) { r += ', ' + "add one" + ''; }
}
r += '. | ';
- if (view == 1) { r += ''; } // End collapsing area
+ r += ''; // End collapsing area
current = mesh._id;
count++;
@@ -3074,11 +3084,22 @@
oldviewmode = view;
}
- function toggleCollapseGroup(id, id2) {
- var x = (QS('DevxCol' + id)['display'] == 'none');
- if (x) { delete CollapsedGroups[id2]; } else { CollapsedGroups[id2] = true; }
+ function toggleCollapseGroup(id, id2, type) {
+ var x;
+ if (type == 2) {
+ // Table rows collapse
+ var rows = document.getElementsByName('DevxCol' + id2);
+ if (rows.length == 0) return;
+ x = (rows[0].style['display'] == 'none');
+ if (x) { delete CollapsedGroups[id2]; } else { CollapsedGroups[id2] = true; }
+ for (var i = 0; i < rows.length; i++) { rows[i].style['display'] = (x ? '' : 'none'); }
+ } else {
+ // Simple DIV collapse
+ x = (QS('DevxCol' + id)['display'] == 'none');
+ if (x) { delete CollapsedGroups[id2]; } else { CollapsedGroups[id2] = true; }
+ QV('DevxCol' + id, x);
+ }
Q('DevxColImg' + id).src = x?'images/c2.png':'images/c1.png';
- QV('DevxCol' + id, x);
putstore('_collapse', JSON.stringify(CollapsedGroups));
}
| |