Browse Source

Ensure selected value in select Trait type. Fixes #2896

pull/2977/head
Artur Arseniev 6 years ago
parent
commit
a3d394f65d
  1. 16
      src/trait_manager/model/TraitFactory.js
  2. 5
      src/trait_manager/view/TraitSelectView.js

16
src/trait_manager/model/TraitFactory.js

@ -5,25 +5,19 @@ export default (config = {}) => ({
* @return {Array<Object>}
*/
build(props) {
var objs = [];
const objs = [];
if (typeof props === 'string') props = [props];
for (var i = 0; i < props.length; i++) {
var obj = {};
var prop = props[i];
for (let i = 0; i < props.length; i++) {
const obj = {};
const prop = props[i];
obj.name = prop;
// Define type
switch (prop) {
case 'target':
obj.type = 'select';
break;
}
// Define options
switch (prop) {
case 'target':
obj.default = false;
obj.options = config.optionsTarget;
break;
}

5
src/trait_manager/view/TraitSelectView.js

@ -29,6 +29,7 @@ export default TraitView.extend({
const { model, em } = this;
const propName = model.get('name');
const opts = model.get('options') || [];
const values = [];
let input = '<select>';
opts.forEach(el => {
@ -50,12 +51,14 @@ export default TraitView.extend({
const resultName =
em.t(`traitManager.traits.options.${propName}.${value}`) || name;
input += `<option value="${value}"${attrs}>${resultName}</option>`;
values.push(value);
});
input += '</select>';
this.$input = $(input);
const val = model.getTargetValue();
!isUndefined(val) && this.$input.val(val);
const valResult = values.indexOf(val) >= 0 ? val : model.get('default');
!isUndefined(valResult) && this.$input.val(valResult);
}
return this.$input.get(0);

Loading…
Cancel
Save