From d5b3bf1ec41af8103ab0acacf51da5ec49d60020 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Tue, 14 Dec 2021 13:32:00 +0100 Subject: [PATCH] Fix getStyleFromLayers with no layers --- src/style_manager/model/PropertyStack.js | 11 ++++++++--- test/specs/style_manager/model/Properties.js | 13 +++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/style_manager/model/PropertyStack.js b/src/style_manager/model/PropertyStack.js index 540e1eca9..a575f5b36 100644 --- a/src/style_manager/model/PropertyStack.js +++ b/src/style_manager/model/PropertyStack.js @@ -24,7 +24,7 @@ export default Property.extend({ layerSeparator: ', ', // The separator used to join layer values - layerJoin: ', ', + layerJoin: '', // Prepend new layers in the list prepend: 0, @@ -328,6 +328,7 @@ export default Property.extend({ */ getStyleFromLayers() { let result = {}; + const name = this.getName(); const layers = this.getLayers(); const styles = layers.map(l => this.getStyleFromLayer(l)); styles.forEach(style => { @@ -341,12 +342,13 @@ export default Property.extend({ }); if (this.isDetached()) { - result[this.getName()] = ''; + result[name] = ''; } else { const style = this.getProperties().reduce((acc, prop) => { acc[prop.getName()] = ''; return acc; }, {}); + result[name] = result[name] || ''; result = { ...result, ...style }; } @@ -354,7 +356,10 @@ export default Property.extend({ }, __getJoinLayers() { - return this.get('layerJoin'); + const join = this.get('layerJoin'); + const sep = this.get('layerSeparator'); + + return join || (isString(sep) ? sep : join); }, __getFullValue() { diff --git a/test/specs/style_manager/model/Properties.js b/test/specs/style_manager/model/Properties.js index 193d6aff6..8082d2390 100644 --- a/test/specs/style_manager/model/Properties.js +++ b/test/specs/style_manager/model/Properties.js @@ -272,6 +272,19 @@ describe('StyleManager properties logic', () => { }); }); + test('Removing all layers', () => { + compTypeProp.removeLayerAt(1); + compTypeProp.removeLayerAt(0); + expect(compTypeProp.getLayers().length).toBe(0); + expect(rule1.getStyle()).toEqual({ + __p: false, + [propTest]: '', + [propATest]: '', + [propBTest]: '', + [propCTest]: '', + }); + }); + test('Adding new layer, updates the rule', () => { compTypeProp.addLayer( {