From 343dd38d92e0524b96815e7230d271be8e238cc1 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Fri, 11 Feb 2022 15:45:31 +0100 Subject: [PATCH] Improve StyleManager addProperty --- src/style_manager/index.js | 2 +- src/style_manager/model/Sector.js | 6 +++++- test/specs/style_manager/index.js | 9 +++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/style_manager/index.js b/src/style_manager/index.js index 6fe3ad13f..b64d1dbb2 100644 --- a/src/style_manager/index.js +++ b/src/style_manager/index.js @@ -270,7 +270,7 @@ export default () => { addProperty(sectorId, property, opts = {}) { const sector = this.getSector(sectorId, { warn: 1 }); let prop = null; - if (sector) prop = sector.get('properties').add(property, opts); + if (sector) prop = sector.addProperty(property, opts); return prop; }, diff --git a/src/style_manager/model/Sector.js b/src/style_manager/model/Sector.js index e1c71b5d2..562c9dacc 100644 --- a/src/style_manager/model/Sector.js +++ b/src/style_manager/model/Sector.js @@ -1,5 +1,5 @@ import { Model } from 'common'; -import { extend, isString } from 'underscore'; +import { extend, isString, isArray } from 'underscore'; import Properties from './Properties'; /** @@ -128,6 +128,10 @@ export default class Sector extends Model { return this.getProperties().filter(prop => prop.get('id') === id)[0] || null; } + addProperty(property, opts) { + return this.get('properties').add(this.checkExtend(property), opts); + } + /** * Extend properties * @param {Array} props Start properties diff --git a/test/specs/style_manager/index.js b/test/specs/style_manager/index.js index 7deaa20ed..e6d33298b 100644 --- a/test/specs/style_manager/index.js +++ b/test/specs/style_manager/index.js @@ -277,6 +277,15 @@ describe('StyleManager', () => { var prop1 = obj.getProperty('dim', 'width'); expect(prop1.get('name')).toEqual('Width'); }); + + test('Add built-in', () => { + obj.addBuiltIn('test', { type: 'number' }); + obj.addBuiltIn('test2', { type: 'stack' }); + const added = obj.addProperty('dim', { extend: 'test' }); + expect(added.getType()).toEqual('number'); + const added2 = obj.addProperty('dim', 'test2'); + expect(added2.getType()).toEqual('stack'); + }); }); }); });