Skip to content

Commit b46bb3c

Browse files
authored
Add feature to set Layer header expanded state individually (#726)
* Expand layers feature * Fix bug with keeping header expanded/unexpanded state * Expand individual headers only if LayersTool.vars.expanded is not set to true
1 parent b0b03e9 commit b46bb3c

File tree

3 files changed

+44
-2
lines changed

3 files changed

+44
-2
lines changed

configure/src/metaconfigs/layer-header-config.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@
3030
"description": "",
3131
"type": "textnotrim",
3232
"width": 8
33+
},
34+
{
35+
"field": "expanded",
36+
"name": "Expanded",
37+
"description": "Whether all child layers under the header default to being expanded (as opposed to being collapsed).",
38+
"type": "checkbox",
39+
"width": 2,
40+
"defaultChecked": false
3341
}
3442
]
3543
}

src/essence/Tools/Layers/LayersTool.css

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,13 @@
138138
#layersTool #searchLayers > div#clear.shown {
139139
opacity: 1;
140140
}
141+
#layersTool #searchLayers > div#restore{
142+
position: absolute;
143+
right: 60px;
144+
background: var(--color-a1);
145+
padding-top: 1px;
146+
height: 34px;
147+
}
141148
#layersTool #searchLayers > div#expand {
142149
position: absolute;
143150
right: 30px;

src/essence/Tools/Layers/LayersTool.js

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ var markup = [
5252
'<i class="mdi mdi-magnify mdi-18px"></i>',
5353
"<input type='text' placeholder='Search Layers (# for tags)' />",
5454
'<div id="clear"><i class="mdi mdi-close mdi-18px"></i></div>',
55+
'<div id="restore"><i class="mdi mdi-restore mdi-18px"></i></div>',
5556
'<div id="expand"><i class="mdi mdi-arrow-expand-vertical mdi-18px"></i></div>',
5657
'<div id="collapse"><i class="mdi mdi-arrow-collapse-vertical mdi-18px"></i></div>',
5758
"</div>",
@@ -1062,7 +1063,7 @@ function interfaceWithMMGIS(fromInit) {
10621063
// prettier-ignore
10631064
$('#layersToolList').append(
10641065
[
1065-
`<li class="layersToolHeader" id="header_${headerI}" name="${node[i].name}" type="${node[i].type}" depth="${depth}" childrenon="true" style="margin-bottom: 1px;">`,
1066+
`<li class="layersToolHeader" id="header_${node[i].name}" name="${node[i].name}" type="${node[i].type}" depth="${depth}" childrenon="true" style="margin-bottom: 1px;">`,
10661067
`<div class="title" id="headerstart" style="border-left: ${depth * DEPTH_SIZE}px solid ${INDENT_COLOR};">`,
10671068
'<div class="layersToolColor ' + node[i].type + '">',
10681069
'<i class="mdi mdi-drag-vertical mdi-12px"></i>',
@@ -1989,6 +1990,14 @@ function interfaceWithMMGIS(fromInit) {
19891990
}
19901991
})
19911992

1993+
$('#searchLayers > #restore').on('click', function () {
1994+
// Collapse all layers
1995+
$('#searchLayers > #collapse').click()
1996+
1997+
// Expand individual headers based on its configuration settings
1998+
traverseHeaderLayersExpandedState(L_.configData.layers, {}, 0)
1999+
})
2000+
19922001
$('#filterLayers .right > div').on('click', function () {
19932002
$(this).toggleClass('on')
19942003
var isOn = $(this).hasClass('on')
@@ -2229,8 +2238,26 @@ function interfaceWithMMGIS(fromInit) {
22292238
})
22302239

22312240
//Start collapsed
2232-
if (LayersTool.vars.expanded !== true)
2241+
if (LayersTool.vars.expanded !== true) {
22332242
$('#searchLayers > #collapse').click()
2243+
// Expand individual headers based on its configuration settings
2244+
traverseHeaderLayersExpandedState(L_.configData.layers, {}, 0)
2245+
}
2246+
2247+
function traverseHeaderLayersExpandedState(node, parent, depth) {
2248+
for (var i = 0; i < node.length; i++) {
2249+
if (node[i].type == 'header') {
2250+
if ((node[i].expanded && node[i].expanded === true)
2251+
|| (node[i].expanded === undefined
2252+
&& $(`#layersToolList > li#header_${parent.name}`).attr('childrenon') === true)) {
2253+
LayersTool.toggleHeader(`header_${node[i].name}`)
2254+
}
2255+
}
2256+
2257+
if (node[i].sublayers)
2258+
traverseHeaderLayersExpandedState(node[i].sublayers, node[i], depth + 1)
2259+
}
2260+
}
22342261

22352262
// Sublayer things
22362263

0 commit comments

Comments
 (0)