summaryrefslogtreecommitdiffstats
path: root/module/web/static/js/views/settings
diff options
context:
space:
mode:
Diffstat (limited to 'module/web/static/js/views/settings')
-rw-r--r--module/web/static/js/views/settings/configSectionView.js97
-rw-r--r--module/web/static/js/views/settings/pluginChooserModal.js65
-rw-r--r--module/web/static/js/views/settings/settingsView.js170
3 files changed, 0 insertions, 332 deletions
diff --git a/module/web/static/js/views/settings/configSectionView.js b/module/web/static/js/views/settings/configSectionView.js
deleted file mode 100644
index 14ce4a0b9..000000000
--- a/module/web/static/js/views/settings/configSectionView.js
+++ /dev/null
@@ -1,97 +0,0 @@
-define(['jquery', 'underscore', 'backbone', 'app', '../abstract/itemView', '../input/inputLoader'],
- function($, _, Backbone, App, itemView, load_input) {
-
- // Renders settings over view page
- return itemView.extend({
-
- tagName: 'div',
-
- template: _.compile($("#template-config").html()),
- templateItem: _.compile($("#template-config-item").html()),
-
- // Will only render one time with further attribute updates
- rendered: false,
-
- events: {
- 'click .btn-primary': 'submit',
- 'click .btn-reset': 'reset'
- },
-
- initialize: function() {
- this.listenTo(this.model, 'destroy', this.destroy);
- },
-
- render: function() {
- if (!this.rendered) {
- this.$el.html(this.template(this.model.toJSON()));
-
- // initialize the popover
- this.$('.page-header a').popover({
- placement: 'left',
-// trigger: 'hover'
- });
-
- var container = this.$('.control-content');
- var self = this;
- _.each(this.model.get('items'), function(item) {
- var el = $('<div>').html(self.templateItem(item.toJSON()));
- var inputView = load_input(item.get('input'));
- var input = new inputView(item.get('input'), item.get('value'),
- item.get('default_value'), item.get('description')).render();
- item.set('inputView', input);
-
- self.listenTo(input, 'change', _.bind(self.render, self));
- el.find('.controls').append(input.el);
- container.append(el);
- });
- this.rendered = true;
- }
- // Enable button if something is changed
- if (this.model.hasChanges())
- this.$('.btn-primary').removeClass('disabled');
- else
- this.$('.btn-primary').addClass('disabled');
-
- // Mark all inputs that are modified
- _.each(this.model.get('items'), function(item) {
- var input = item.get('inputView');
- var el = input.$el.parent().parent();
- if (item.isChanged())
- el.addClass('info');
- else
- el.removeClass('info');
- });
-
- return this;
- },
-
- onDestroy: function(){
- // TODO: correct cleanup after building up so many views and models
- },
-
- submit: function(e) {
- e.stopPropagation();
- // TODO: success / failure popups
- var self = this;
- this.model.save({success: function(){
- self.render();
- App.settingsView.refresh();
- }});
-
- },
-
- reset: function(e) {
- e.stopPropagation();
- // restore the original value
- _.each(this.model.get('items'), function(item) {
- if (item.has('inputView')) {
- var input = item.get('inputView');
- input.setVal(item.get('value'));
- input.render();
- }
- });
- this.render();
- }
-
- });
- }); \ No newline at end of file
diff --git a/module/web/static/js/views/settings/pluginChooserModal.js b/module/web/static/js/views/settings/pluginChooserModal.js
deleted file mode 100644
index 65c412d9c..000000000
--- a/module/web/static/js/views/settings/pluginChooserModal.js
+++ /dev/null
@@ -1,65 +0,0 @@
-define(['jquery', 'underscore', 'app', 'views/abstract/modalView', 'text!tpl/default/pluginChooserDialog.html', 'select2'],
- function($, _, App, modalView, template) {
- return modalView.extend({
-
- events: {
- 'click .btn-add': 'add'
- },
- template: _.compile(template),
- plugins: null,
- select: null,
-
- initialize: function() {
- // Inherit parent events
- this.events = _.extend({}, modalView.prototype.events, this.events);
- var self = this;
- $.ajax(App.apiRequest('getAvailablePlugins', null, {success: function(data) {
- self.plugins = _.sortBy(data, function(item){return item.name;});
- self.render();
- }}));
- },
-
- onRender: function() {
- // TODO: could be a seperate input type if needed on multiple pages
- if (this.plugins)
- this.select = this.$('#pluginSelect').select2({
- escapeMarkup: function(m) {
- return m;
- },
- formatResult: this.format,
- formatSelection: this.formatSelection,
- data: {results: this.plugins, text: function(item) {
- return item.label;
- }},
- id: function(item) {
- return item.name;
- }
- });
- },
-
- onShow: function() {
- },
-
- onHide: function() {
- },
-
- format: function(data) {
- var s = '<div class="plugin-select" style="background-image: url(icons/' + data.name + '">' + data.label;
- s += "<br><span>" + data.description + "<span></div>";
- return s;
- },
-
- formatSelection: function(data) {
- return '<img class="logo-select" src="icons/' + data.name + '"> ' + data.label;
- },
-
- add: function(e) {
- e.stopPropagation();
- if (this.select) {
- var plugin = this.select.val();
- App.settingsView.openConfig(plugin);
- this.hide();
- }
- }
- });
- }); \ No newline at end of file
diff --git a/module/web/static/js/views/settings/settingsView.js b/module/web/static/js/views/settings/settingsView.js
deleted file mode 100644
index d6f874c47..000000000
--- a/module/web/static/js/views/settings/settingsView.js
+++ /dev/null
@@ -1,170 +0,0 @@
-define(['jquery', 'underscore', 'backbone', 'app', 'models/ConfigHolder', './configSectionView'],
- function($, _, Backbone, App, ConfigHolder, configSectionView) {
-
- // Renders settings over view page
- return Backbone.View.extend({
-
- el: "body",
- templateMenu: _.compile($("#template-menu").html()),
-
- events: {
- 'click .settings-menu li > a': 'change_section',
- 'click .btn-add': 'choosePlugin',
- 'click .iconf-remove': 'deleteConfig'
- },
-
- menu: null,
- selected: null,
- content: null,
- modal: null,
-
- coreConfig: null, // It seems collections are not needed
- pluginConfig: null,
-
- // currently open configHolder
- config: null,
- lastConfig: null,
- isLoading: false,
-
- initialize: function() {
- this.menu = this.$('.settings-menu');
- this.content = this.$('.setting-box > form');
- // set a height with css so animations will work
- this.content.height(this.content.height());
- this.refresh();
-
- console.log("Settings initialized");
- },
-
- refresh: function() {
- var self = this;
- $.ajax(App.apiRequest("getCoreConfig", null, {success: function(data) {
- self.coreConfig = data;
- self.render();
- }}));
- $.ajax(App.apiRequest("getPluginConfig", null, {success: function(data) {
- self.pluginConfig = data;
- self.render();
- }}));
- },
-
- render: function() {
- var plugins = [],
- addons = [];
-
- // separate addons and default plugins
- // addons have an activated state
- _.each(this.pluginConfig, function(item) {
- if (item.activated === null)
- plugins.push(item);
- else
- addons.push(item);
- });
-
- this.menu.html(this.templateMenu({
- core: this.coreConfig,
- plugin: plugins,
- addon: addons
- }));
-
- // mark the selected element
- this.$('li[data-name="' + this.selected + '"]').addClass("active");
- },
-
- openConfig: function(name) {
- // Do nothing when this config is already open
- if (this.config && this.config.get('name') === name)
- return;
-
- this.lastConfig = this.config;
- this.config = new ConfigHolder({name: name});
- this.loading();
-
- var self = this;
- this.config.fetch({success: function() {
- if (!self.isLoading)
- self.show();
-
- }, failure: _.bind(this.failure, this)});
-
- },
-
- loading: function() {
- this.isLoading = true;
- var self = this;
- this.content.fadeOut({complete: function() {
- if (self.config.isLoaded())
- self.show();
-
- self.isLoading = false;
- }});
-
- },
-
- show: function() {
- // TODO animations are bit sloppy
- this.content.css('display', 'block');
- var oldHeight = this.content.height();
-
- // this will destroy the old view
- if (this.lastConfig)
- this.lastConfig.trigger('destroy');
- else
- this.content.empty();
-
- // reset the height
- this.content.css('height', '');
- // append the new element
- this.content.append(new configSectionView({model: this.config}).render().el);
- // get the new height
- var height = this.content.height();
- // set the old height again
- this.content.height(oldHeight);
- this.content.animate({
- opacity: 'show',
- height: height
- });
- },
-
- failure: function() {
- // TODO
- this.config = null;
- },
-
- change_section: function(e) {
- // TODO check for changes
- // TODO move this into render?
-
- var el = $(e.target).closest('li');
-
- this.selected = el.data("name");
- this.openConfig(this.selected);
-
- this.menu.find("li.active").removeClass("active");
- el.addClass("active");
- e.preventDefault();
- },
-
- choosePlugin: function(e) {
- var self = this;
- _.requireOnce(['views/settings/pluginChooserModal'], function(Modal) {
- if (self.modal === null)
- self.modal = new Modal();
-
- self.modal.show();
- });
- },
-
- deleteConfig: function(e) {
- e.stopPropagation();
- var el = $(e.target).parent().parent();
- var name = el.data("name");
- var self = this;
- $.ajax(App.apiRequest("deleteConfig", {plugin: name}, { success: function() {
- self.refresh();
- }}));
-
- }
-
- });
- }); \ No newline at end of file