From 8f7d3b7db6acd807781ca57ffcbe06f2ec731d10 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Tue, 14 Dec 2021 12:50:23 +0100 Subject: [PATCH] Add getLayerLabel to Stack --- src/style_manager/model/PropertyStack.js | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/style_manager/model/PropertyStack.js b/src/style_manager/model/PropertyStack.js index ed0c7162f..540e1eca9 100644 --- a/src/style_manager/model/PropertyStack.js +++ b/src/style_manager/model/PropertyStack.js @@ -35,6 +35,9 @@ export default Property.extend({ // Parse single layer value string parseLayer: null, + // Custom layer label function + layerLabel: null, + // Current selected layer selectedLayer: null, }, @@ -243,6 +246,33 @@ export default Property.extend({ return layer && this.selectLayer(layer); }, + /** + * Get layer label + * @param {[Layer]} layer + * @returns {String} + */ + getLayerLabel(layer) { + let result = ''; + + if (layer) { + const layerLabel = this.get('layerLabel'); + const values = layer.getValues(); + const index = layer.getIndex(); + + if (layerLabel) { + result = layerLabel(layer, { index, values }); + } else { + const parts = []; + this.getProperties().map(prop => { + parts.push(values[prop.getId()]); + }); + result = parts.filter(Boolean).join(' '); + } + } + + return result; + }, + /** * Get selected layer * @returns {[Layer] | null}