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

5
src/trait_manager/view/TraitSelectView.js

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

Loading…
Cancel
Save