From ce60321ee11721dbe1e697a173584ea1d6862244 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Thu, 14 Sep 2017 02:10:34 +0200 Subject: [PATCH] Setup default values on property models --- src/style_manager/model/Property.js | 10 +++++++ src/style_manager/model/PropertyComposite.js | 13 +++++++++ .../view/PropertyCompositeView.js | 12 -------- src/style_manager/view/PropertyFileView.js | 4 +-- src/style_manager/view/PropertyRadioView.js | 2 +- src/style_manager/view/PropertyStackView.js | 1 - src/style_manager/view/PropertyView.js | 29 ++++++++++--------- 7 files changed, 41 insertions(+), 30 deletions(-) diff --git a/src/style_manager/model/Property.js b/src/style_manager/model/Property.js index 202a7d5bc0..7826f40201 100644 --- a/src/style_manager/model/Property.js +++ b/src/style_manager/model/Property.js @@ -67,12 +67,22 @@ module.exports = Backbone.Model.extend({ return result; }, + /** + * Get the default value + * @return {string} + * @private + */ + getDefaultValue() { + return this.get('defaults'); + }, + /** * Get a complete value of the property. * This probably will replace the getValue when all * properties models will be splitted * @param {string} val Custom value to replace the one on the model * @return {string} + * @private */ getFullValue(val) { const fn = this.get('functionName'); diff --git a/src/style_manager/model/PropertyComposite.js b/src/style_manager/model/PropertyComposite.js index 5bb659c75b..dbccc5235f 100644 --- a/src/style_manager/model/PropertyComposite.js +++ b/src/style_manager/model/PropertyComposite.js @@ -18,6 +18,19 @@ module.exports = Property.extend({ properties: [], }), + getDefaultValue() { + let value = this.get('defaults'); + + if (value) { + return value; + } + + value = ''; + const properties = this.get('properties'); + properties.each((prop, index) => value += `${prop.getDefaultValue()} `); + return value.trim(); + }, + getFullValue() { if (this.get('detached')) { return ''; diff --git a/src/style_manager/view/PropertyCompositeView.js b/src/style_manager/view/PropertyCompositeView.js index 0b7298a4fa..744c25ab2f 100644 --- a/src/style_manager/view/PropertyCompositeView.js +++ b/src/style_manager/view/PropertyCompositeView.js @@ -91,18 +91,6 @@ module.exports = PropertyView.extend({ return result; }, - /** - * Get default value of the property - * @return {string} - * */ - getDefaultValue() { - var str = ''; - this.props.each((prop, index) => { - str += prop.get('defaults') + prop.get('unit') + ' '; - }); - return this.model.get('defaults') || str.replace(/ +$/,''); - }, - /** * Extract string from composite value * @param {number} index Index diff --git a/src/style_manager/view/PropertyFileView.js b/src/style_manager/view/PropertyFileView.js index a6a64ea5f6..a844124100 100644 --- a/src/style_manager/view/PropertyFileView.js +++ b/src/style_manager/view/PropertyFileView.js @@ -30,7 +30,7 @@ module.exports = PropertyView.extend({ /** @inheritdoc */ renderInput() { if (!this.$input) { - this.$input = $('', {placeholder: this.defaultValue, type: 'text' }); + this.$input = $('', {placeholder: this.model.getDefaultValue(), type: 'text' }); } if (!this.$preview) { @@ -107,7 +107,7 @@ module.exports = PropertyView.extend({ * @return void * */ removeFile(...args) { - this.model.set('value',this.defaultValue); + this.model.set('value', this.model.getDefaultValue()); PropertyView.prototype.cleanValue.apply(this, args); this.setPreviewView(0); }, diff --git a/src/style_manager/view/PropertyRadioView.js b/src/style_manager/view/PropertyRadioView.js index 1f337b583b..14bd57313a 100644 --- a/src/style_manager/view/PropertyRadioView.js +++ b/src/style_manager/view/PropertyRadioView.js @@ -55,7 +55,7 @@ module.exports = PropertyView.extend({ /** @inheritdoc */ setValue(value) { - var v = this.model.get('value') || this.defaultValue; + var v = this.model.get('value') || this.model.getDefaultValue(); if(value) v = value; diff --git a/src/style_manager/view/PropertyStackView.js b/src/style_manager/view/PropertyStackView.js index 293dfda8b4..24940c7513 100644 --- a/src/style_manager/view/PropertyStackView.js +++ b/src/style_manager/view/PropertyStackView.js @@ -153,7 +153,6 @@ module.exports = PropertyCompositeView.extend({ model.set('values', valObj); model.set('value', result); - //return this.createValue();//this.model.getFullValue(); return this.model.getFullValue(); }, diff --git a/src/style_manager/view/PropertyView.js b/src/style_manager/view/PropertyView.js index e951d83faf..96326a1e72 100644 --- a/src/style_manager/view/PropertyView.js +++ b/src/style_manager/view/PropertyView.js @@ -29,23 +29,24 @@ module.exports = Backbone.View.extend({ this.onChange = o.onChange || {}; this.onInputRender = o.onInputRender || {}; this.customValue = o.customValue || {}; - this.defaultValue = this.model.get('defaults'); - this.property = this.model.get('property'); + const model = this.model; + this.property = model.get('property'); this.input = this.$input = null; const pfx = this.pfx; this.className = pfx + 'property'; this.inputHolderId = '#' + pfx + 'input-holder'; - this.sector = this.model.collection && this.model.collection.sector; + this.sector = model.collection && model.collection.sector; - if(!this.model.get('value')) - this.model.set('value', this.model.get('defaults')); + if (!model.get('value')) { + model.set('value', model.getDefaultValue()); + } this.listenTo(this.propTarget, 'update', this.targetUpdated); - this.listenTo(this.model, 'destroy remove', this.remove); - this.listenTo(this.model, 'change:value', this.valueChanged); - this.listenTo(this.model, 'targetUpdated', this.targetUpdated); - this.listenTo(this.model, 'change:visible', this.updateVisibility); - this.listenTo(this.model, 'change:status', this.updateStatus); + this.listenTo(model, 'destroy remove', this.remove); + this.listenTo(model, 'change:value', this.valueChanged); + this.listenTo(model, 'targetUpdated', this.targetUpdated); + this.listenTo(model, 'change:visible', this.updateVisibility); + this.listenTo(model, 'change:status', this.updateStatus); this.events[`click .${pfx}clear`] = 'clear'; this.delegateEvents(); }, @@ -233,7 +234,7 @@ module.exports = Backbone.View.extend({ if(targetProp) this.componentValue = targetProp; else - this.componentValue = this.defaultValue + (this.unit || ''); // todo model + this.componentValue = this.model.getDefaultValue() + (this.unit || ''); // todo model // Check if wrap inside function is required if (propModel.get('functionName')) { @@ -296,7 +297,7 @@ module.exports = Backbone.View.extend({ * @private */ getDefaultValue() { - return this.model.get('defaults'); + return this.model.getDefaultValue(); }, /** @@ -455,7 +456,7 @@ module.exports = Backbone.View.extend({ * */ setValue(value, force) { var f = force === 0 ? 0 : 1; - var def = this.model.get('defaults'); + var def = this.model.getDefaultValue(); var v = this.model.get('value') || def; if(value || f){ v = value; @@ -517,7 +518,7 @@ module.exports = Backbone.View.extend({ renderInput() { if(!this.$input){ this.$input = $('', { - placeholder: this.model.get('defaults'), + placeholder: this.model.getDefaultValue(), type: 'text' }); this.$el.find(this.inputHolderId).html(this.$input);