2016-08-13 21:13:16 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const Backbone = require('backbone');
|
2016-08-13 22:19:15 +02:00
|
|
|
const Locale = require('../util/locale');
|
2016-08-13 21:13:16 +02:00
|
|
|
|
2016-08-13 22:19:15 +02:00
|
|
|
let GeneratorPresetsView = Backbone.View.extend({
|
2016-08-13 21:13:16 +02:00
|
|
|
template: require('templates/generator-presets.hbs'),
|
|
|
|
|
|
|
|
events: {
|
2016-08-13 22:19:15 +02:00
|
|
|
'click .back-button': 'returnToApp',
|
|
|
|
'change .gen-ps__list': 'changePreset',
|
|
|
|
'click .gen-ps__btn-create': 'createPreset',
|
|
|
|
'click .gen-ps__btn-delete': 'deletePreset',
|
|
|
|
'input #gen-ps__field-name': 'changeName'
|
2016-08-13 21:13:16 +02:00
|
|
|
},
|
|
|
|
|
2016-08-13 22:19:15 +02:00
|
|
|
selected: null,
|
|
|
|
|
2016-08-13 21:13:16 +02:00
|
|
|
initialize: function() {
|
|
|
|
this.appModel = this.model;
|
|
|
|
},
|
|
|
|
|
|
|
|
render: function() {
|
2016-08-13 22:19:15 +02:00
|
|
|
let presets = this.appModel.settings.get('generatorPresets') || [];
|
|
|
|
if (!this.selected || presets.indexOf(this.selected) < 0) {
|
|
|
|
this.selected = presets[0];
|
|
|
|
}
|
2016-08-13 21:13:16 +02:00
|
|
|
this.renderTemplate({
|
2016-08-13 22:19:15 +02:00
|
|
|
empty: !presets.length,
|
|
|
|
presets: presets,
|
|
|
|
selected: this.selected
|
2016-08-13 21:13:16 +02:00
|
|
|
}, true);
|
|
|
|
return this;
|
|
|
|
},
|
|
|
|
|
|
|
|
returnToApp: function() {
|
|
|
|
Backbone.trigger('edit-generator-presets');
|
2016-08-13 22:19:15 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
changePreset: function(e) {
|
|
|
|
let id = e.target.value;
|
|
|
|
let presets = this.appModel.settings.get('generatorPresets');
|
|
|
|
this.selected = presets.filter(p => p.id === id)[0];
|
|
|
|
this.render();
|
|
|
|
},
|
|
|
|
|
|
|
|
createPreset: function() {
|
|
|
|
let presets = this.appModel.settings.get('generatorPresets') || [];
|
|
|
|
let name;
|
|
|
|
let id;
|
|
|
|
for (let i = 1; ; i++) {
|
|
|
|
let newName = Locale.genPsNew + ' ' + i;
|
|
|
|
if (!presets.filter(p => p.name === newName).length) {
|
|
|
|
name = newName;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (let i = 1; ; i++) {
|
|
|
|
let newId = 'custom' + i;
|
|
|
|
if (!presets.filter(p => p.id === newId).length) {
|
|
|
|
id = newId;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
let preset = { id, name };
|
|
|
|
presets.push(preset);
|
|
|
|
this.selected = preset;
|
|
|
|
this.appModel.settings.set('generatorPresets', presets);
|
|
|
|
this.render();
|
|
|
|
},
|
|
|
|
|
|
|
|
deletePreset: function() {
|
|
|
|
let presets = this.appModel.settings.get('generatorPresets');
|
|
|
|
presets = presets.filter(p => p.id !== this.selected.id);
|
|
|
|
this.appModel.settings.set('generatorPresets', presets.length ? presets : null);
|
|
|
|
this.render();
|
|
|
|
},
|
|
|
|
|
|
|
|
changeName: function(e) {
|
|
|
|
let name = $.trim(e.target.value);
|
|
|
|
if (name && name !== this.selected.name) {
|
|
|
|
let presets = this.appModel.settings.get('generatorPresets');
|
|
|
|
let another = presets.filter(p => p.name.toLowerCase() === name.toLowerCase())[0];
|
|
|
|
if (another) {
|
|
|
|
$(e.target).addClass('input--error');
|
|
|
|
return;
|
|
|
|
} else {
|
|
|
|
$(e.target).removeClass('input--error');
|
|
|
|
}
|
|
|
|
this.selected.name = name;
|
|
|
|
this.appModel.settings.set('generatorPresets', presets);
|
|
|
|
this.$el.find('.gen-ps__list option[selected]').text(name);
|
|
|
|
}
|
2016-08-13 21:13:16 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
module.exports = GeneratorPresetsView;
|