diff options
Diffstat (limited to 'pyload/web/app/scripts/views')
-rw-r--r-- | pyload/web/app/scripts/views/accounts/accountEdit.js | 10 | ||||
-rw-r--r-- | pyload/web/app/scripts/views/input/inputRenderer.js | 22 | ||||
-rw-r--r-- | pyload/web/app/scripts/views/settings/configSectionView.js | 23 |
3 files changed, 36 insertions, 19 deletions
diff --git a/pyload/web/app/scripts/views/accounts/accountEdit.js b/pyload/web/app/scripts/views/accounts/accountEdit.js index b9109390b..503860a5e 100644 --- a/pyload/web/app/scripts/views/accounts/accountEdit.js +++ b/pyload/web/app/scripts/views/accounts/accountEdit.js @@ -1,5 +1,5 @@ -define(['jquery', 'underscore', 'app', 'views/abstract/modalView', 'hbs!tpl/accounts/editAccount'], - function($, _, App, modalView, template) { +define(['jquery', 'underscore', 'app', 'views/abstract/modalView', 'views/input/inputRenderer', 'hbs!tpl/accounts/editAccount', 'hbs!tpl/settings/configItem'], + function($, _, App, modalView, renderForm, template, templateItem) { 'use strict'; return modalView.extend({ @@ -16,6 +16,10 @@ define(['jquery', 'underscore', 'app', 'views/abstract/modalView', 'hbs!tpl/acco }, onRender: function() { + renderForm(this.$('.account-config'), + this.model.get('config'), + templateItem + ); }, save: function() { @@ -23,7 +27,7 @@ define(['jquery', 'underscore', 'app', 'views/abstract/modalView', 'hbs!tpl/acco if (password !== '') { this.model.setPassword(password); } - + this.model.save(); this.hide(); return false; }, diff --git a/pyload/web/app/scripts/views/input/inputRenderer.js b/pyload/web/app/scripts/views/input/inputRenderer.js new file mode 100644 index 000000000..c20f15708 --- /dev/null +++ b/pyload/web/app/scripts/views/input/inputRenderer.js @@ -0,0 +1,22 @@ +define(['jquery', 'underscore', './inputLoader'], function($, _, load_input) { + 'use strict'; + + // Renders list of ConfigItems to an container + // Optionally binds change event to view + return function(container, items, template, onChange, view) { + _.each(items, function(item) { + var json = item.toJSON(); + var el = $('<div>').html(template(json)); + var InputView = load_input(item.get('input')); + var input = new InputView(json).render(); + item.set('inputView', input); + + if (_.isFunction(onChange) && view) { + view.listenTo(input, 'change', onChange); + } + + el.find('.controls').append(input.el); + container.append(el); + }); + }; +});
\ No newline at end of file diff --git a/pyload/web/app/scripts/views/settings/configSectionView.js b/pyload/web/app/scripts/views/settings/configSectionView.js index 0d9b0762f..38d4cb869 100644 --- a/pyload/web/app/scripts/views/settings/configSectionView.js +++ b/pyload/web/app/scripts/views/settings/configSectionView.js @@ -1,6 +1,6 @@ -define(['jquery', 'underscore', 'backbone', 'app', '../abstract/itemView', '../input/inputLoader', +define(['jquery', 'underscore', 'backbone', 'app', '../abstract/itemView', '../input/inputRenderer', 'hbs!tpl/settings/config', 'hbs!tpl/settings/configItem'], - function($, _, Backbone, App, itemView, load_input, template, templateItem) { + function($, _, Backbone, App, itemView, renderForm, template, templateItem) { 'use strict'; // Renders settings over view page @@ -9,7 +9,6 @@ define(['jquery', 'underscore', 'backbone', 'app', '../abstract/itemView', '../i tagName: 'div', template: template, - templateItem: templateItem, // Will only render one time with further attribute updates rendered: false, @@ -33,19 +32,11 @@ define(['jquery', 'underscore', 'backbone', 'app', '../abstract/itemView', '../i // trigger: 'hover' }); - var container = this.$('.control-content'); - var self = this; - _.each(this.model.get('items'), function(item) { - var json = item.toJSON(); - var el = $('<div>').html(self.templateItem(json)); - var InputView = load_input(item.get('input')); - var input = new InputView(json).render(); - item.set('inputView', input); - - self.listenTo(input, 'change', _.bind(self.render, self)); - el.find('.controls').append(input.el); - container.append(el); - }); + // Renders every single element + renderForm(this.$('.control-content'), + this.model.get('items'), templateItem, + _.bind(this.render, this), this); + this.rendered = true; } // Enable button if something is changed |