diff --git a/configure/src/metaconfigs/layer-header-config.json b/configure/src/metaconfigs/layer-header-config.json index a59e27207..fc63441a2 100644 --- a/configure/src/metaconfigs/layer-header-config.json +++ b/configure/src/metaconfigs/layer-header-config.json @@ -30,6 +30,14 @@ "description": "", "type": "textnotrim", "width": 8 + }, + { + "field": "expanded", + "name": "Expanded", + "description": "Whether all child layers under the header default to being expanded (as opposed to being collapsed).", + "type": "checkbox", + "width": 2, + "defaultChecked": false } ] } diff --git a/src/essence/Tools/Layers/LayersTool.css b/src/essence/Tools/Layers/LayersTool.css index 27f5e6567..7d4208ab7 100644 --- a/src/essence/Tools/Layers/LayersTool.css +++ b/src/essence/Tools/Layers/LayersTool.css @@ -138,6 +138,13 @@ #layersTool #searchLayers > div#clear.shown { opacity: 1; } +#layersTool #searchLayers > div#restore{ + position: absolute; + right: 60px; + background: var(--color-a1); + padding-top: 1px; + height: 34px; +} #layersTool #searchLayers > div#expand { position: absolute; right: 30px; diff --git a/src/essence/Tools/Layers/LayersTool.js b/src/essence/Tools/Layers/LayersTool.js index cc26ae6ce..54fdff6b7 100644 --- a/src/essence/Tools/Layers/LayersTool.js +++ b/src/essence/Tools/Layers/LayersTool.js @@ -52,6 +52,7 @@ var markup = [ '', "", '
', + '
', '
', '
', "", @@ -1061,7 +1062,7 @@ function interfaceWithMMGIS(fromInit) { // prettier-ignore $('#layersToolList').append( [ - `
  • `, + `
  • `, `
    `, '
    ', '', @@ -1988,6 +1989,14 @@ function interfaceWithMMGIS(fromInit) { } }) + $('#searchLayers > #restore').on('click', function () { + // Collapse all layers + $('#searchLayers > #collapse').click() + + // Expand individual headers based on its configuration settings + traverseHeaderLayersExpandedState(L_.configData.layers, {}, 0) + }) + $('#filterLayers .right > div').on('click', function () { $(this).toggleClass('on') var isOn = $(this).hasClass('on') @@ -2228,8 +2237,26 @@ function interfaceWithMMGIS(fromInit) { }) //Start collapsed - if (LayersTool.vars.expanded !== true) + if (LayersTool.vars.expanded !== true) { $('#searchLayers > #collapse').click() + // Expand individual headers based on its configuration settings + traverseHeaderLayersExpandedState(L_.configData.layers, {}, 0) + } + + function traverseHeaderLayersExpandedState(node, parent, depth) { + for (var i = 0; i < node.length; i++) { + if (node[i].type == 'header') { + if ((node[i].expanded && node[i].expanded === true) + || (node[i].expanded === undefined + && $(`#layersToolList > li#header_${parent.name}`).attr('childrenon') === true)) { + LayersTool.toggleHeader(`header_${node[i].name}`) + } + } + + if (node[i].sublayers) + traverseHeaderLayersExpandedState(node[i].sublayers, node[i], depth + 1) + } + } // Sublayer things