Browse Source

Fix issues with composite types due to valueOnIndex

pull/312/head
Artur Arseniev 9 years ago
parent
commit
b9ebcfb7c3
  1. 8
      src/style_manager/model/Properties.js
  2. 16
      src/style_manager/model/Property.js
  3. 24
      src/style_manager/view/PropertyCompositeView.js
  4. 1
      src/style_manager/view/PropertyView.js

8
src/style_manager/model/Properties.js

@ -1,11 +1,3 @@
/*
var Backbone = require('backbone');
var Property = require('./Property');
module.exports = Backbone.Collection.extend({
model: Property,
});
*/
import TypeableCollection from 'domain_abstract/model/TypeableCollection';
const Property = require('./Property');

16
src/style_manager/model/Property.js

@ -67,6 +67,22 @@ module.exports = Backbone.Model.extend({
return result;
},
/**
* Parse a raw value, generally fetched from the target, for this property
* @param {string} value
* @return {string}
*/
parseValue(value) {
if (!this.get('functionName')) {
return value;
}
let valueStr = value + '';
let start = valueStr.indexOf('(') + 1;
let end = valueStr.lastIndexOf(')');
return valueStr.substring(start, end);
},
/**
* Get the default value
* @return {string}

24
src/style_manager/view/PropertyCompositeView.js

@ -98,17 +98,21 @@ module.exports = PropertyView.extend({
* @return {string}
* */
valueOnIndex(index, view) {
var result = null;
var a = this.getComponentValue().split(' ');
if(a.length && a[index]){
result = a[index];
if(view && view.model && view.model.get('functionName')){
var v = this.fetchFromFunction(result);
if(v)
result = v;
}
let value;
const model = view.model;
const targetValue = this.getTargetValue({ignoreDefault: 1});
// If the target value of the composite is not empty I'll fetch
// the corresponding value from the requested index, otherwise try
// to get the value of the sub-property
if (targetValue) {
const values = targetValue.split(' ');
value = model.parseValue(values[index]);
} else {
value = view.getTargetValue({ignoreCustomValue: 1});
}
return result;
return value;
},
});

1
src/style_manager/view/PropertyView.js

@ -274,6 +274,7 @@ module.exports = Backbone.View.extend({
}
result = target.getStyle()[model.get('property')];
result = model.parseValue(result);
if (!result && !opts.ignoreDefault) {
result = this.getDefaultValue();

Loading…
Cancel
Save