Browse Source

Fix updating the file property

pull/312/head
Artur Arseniev 9 years ago
parent
commit
17ffe4c3b3
  1. 9
      src/style_manager/view/PropertyFileView.js
  2. 51
      src/style_manager/view/PropertyStackView.js
  3. 23
      src/style_manager/view/PropertyView.js

9
src/style_manager/view/PropertyFileView.js

@ -82,7 +82,7 @@ module.exports = PropertyView.extend({
* @return void
* */
spreadUrl(url) {
this.setValue(url);
this.model.set('value', url);
this.setPreviewView(1);
},
@ -90,9 +90,9 @@ module.exports = PropertyView.extend({
* Shows file preview
* @param string Value
* */
setPreview(url) {
if(this.$preview)
this.$preview.css('background-image', "url(" + url + ")");
setPreview(value) {
const preview = this.$preview;
preview && preview.css('background-image', value);
},
/** @inheritdoc */
@ -132,7 +132,6 @@ module.exports = PropertyView.extend({
onSelect(target) {
that.modal.close();
that.spreadUrl(target.get('src'));
that.valueChanged(e);
}
});
}

51
src/style_manager/view/PropertyStackView.js

@ -79,26 +79,30 @@ module.exports = PropertyCompositeView.extend({
/** @inheritDoc */
getPropsConfig(opts) {
var that = this;
const model = this.model;
const detached = model.get('detached');
var result = PropertyCompositeView.prototype.getPropsConfig.apply(this, arguments);
result.onChange = (el, view, opt) => {
var model = view.model;
var result = that.build();
const subModel = view.model;
const subProperty = subModel.get('property');
this.build();
if (that.model.get('detached')) {
if (detached) {
var propVal = '';
var index = model.collection.indexOf(model);
var index = subModel.collection.indexOf(subModel);
that.getLayers().each(layer => {
var val = layer.get('values')[model.get('property')];
if(val)
this.getLayers().each(layer => {
var val = layer.get('values')[subProperty];
if (val) {
propVal += (propVal ? ',' : '') + val;
}
});
console.log(`Property ${subProperty}, value to set: ${propVal}`);
view.updateTargetStyle(propVal, null, opt);
} else {
that.model.set('value', result, opt);
model.set('value', model.getFullValue(), opt);
}
};
@ -145,25 +149,28 @@ module.exports = PropertyCompositeView.extend({
* @private
* */
build(...args) {
var stackIndex = this.model.get('stackIndex');
if(stackIndex === null)
return;
let result = '';
this.model.get('properties').each(prop => result += `${prop.getFullValue()} `);
var model = this.getLayers().at(stackIndex);
if(!model)
let value = '';
let values = {};
const model = this.model;
const stackIndex = model.get('stackIndex');
const properties = model.get('properties');
if (stackIndex === null) {
return;
}
// Store properties values inside layer, in this way it's more reliable
// to fetch them later
var valObj = {};
this.model.get('properties').each(prop => {
valObj[prop.get('property')] = prop.getFullValue();
console.log(`START Property ${model.get('property')}`);
properties.each(prop => {
const propValue = prop.getFullValue();
values[prop.get('property')] = propValue;
value += `${propValue} `;
});
model.set('values', valObj);
model.set('value', result);
return this.model.getFullValue();
const layerModel = this.getLayers().at(stackIndex);
layerModel && layerModel.set({values, value});
console.log(`END Property ${model.get('property')} value: ${value} values: `, values);
},
/**

23
src/style_manager/view/PropertyView.js

@ -296,9 +296,8 @@ module.exports = Backbone.View.extend({
const target = this.getTarget();
const onChange = this.onChange;
if (this.$input) {
this.setValue(value);
}
console.log('BEFORE valueChanged ', model.get('property'), value, 'this value: ', model.get('value'));
this.setValue(value);
if (!target) {
return;
@ -389,15 +388,19 @@ module.exports = Backbone.View.extend({
* @param {Boolean} force
* */
setValue(value, force) {
var f = force === 0 ? 0 : 1;
var def = this.model.getDefaultValue();
var v = this.model.get('value') || def;
if(value || f){
const model = this.model;
const f = force === 0 ? 0 : 1;
const def = model.getDefaultValue();
let v = model.get('value') || def;
if (value || f) {
v = value;
}
if(this.$input)
this.$input.val(v);
this.model.set({value: v}, {silent: true});
const input = this.$input;
input && input.val(v);
//this.model.set({value: v}, {silent: true});
},
updateVisibility() {

Loading…
Cancel
Save