From e79ffd96979e2e435462ffc76139f5b5906eae5d Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Thu, 21 Feb 2019 00:54:00 +0100 Subject: [PATCH] Refactor TraitSelectVIew and listen options changes --- src/trait_manager/view/TraitSelectView.js | 79 +++++++++-------------- src/trait_manager/view/TraitView.js | 1 + 2 files changed, 33 insertions(+), 47 deletions(-) diff --git a/src/trait_manager/view/TraitSelectView.js b/src/trait_manager/view/TraitSelectView.js index 7fac7c22c..3d60814e1 100644 --- a/src/trait_manager/view/TraitSelectView.js +++ b/src/trait_manager/view/TraitSelectView.js @@ -1,21 +1,18 @@ +import { isString, isUndefined } from 'underscore'; const TraitView = require('./TraitView'); const $ = require('backbone').$; module.exports = TraitView.extend({ initialize(o) { TraitView.prototype.initialize.apply(this, arguments); - var ppfx = this.ppfx; - this.tmpl = - '
' + - '
'; + const { ppfx, inputhClass, fieldClass, model } = this; + this.listenTo(model, 'change:options', this.render); + this.tmpl = `
+
+
+
+
+
`; }, /** @@ -25,44 +22,32 @@ module.exports = TraitView.extend({ */ getInputEl() { if (!this.$input) { - var md = this.model; - var opts = md.get('options') || []; - var input = ''; + + opts.forEach(el => { + let attrs = ''; + let name, value, style; + + if (isString(el)) { + name = el; + value = el; + } else { + name = el.name ? el.name : el.value; + value = `${el.value || el.id}`.replace(/"/g, '"'); + style = el.style ? el.style.replace(/"/g, '"') : ''; + attrs += style ? ` style="${style}"` : ''; + } + + input += ``; + }); input += ''; this.input = input; - this.$input = $(this.input); - - var target = this.target; - var name = md.get('name'); - var val = md.get('value'); - - if (md.get('changeProp')) { - val = val || target.get(name); - } else { - var attrs = target.get('attributes'); - val = attrs[name]; - } - - if (val) this.$input.val(val); + this.$input = $(input); + let val = model.get('value') || model.getTargetValue(); + !isUndefined(val) && this.$input.val(val); } return this.$input.get(0); diff --git a/src/trait_manager/view/TraitView.js b/src/trait_manager/view/TraitView.js index b9f3341fa..9ee74f165 100644 --- a/src/trait_manager/view/TraitView.js +++ b/src/trait_manager/view/TraitView.js @@ -156,6 +156,7 @@ module.exports = Backbone.View.extend({ }, render() { + this.$input = null; this.renderLabel(); this.renderField(); this.el.className = this.className;