1
0
mirror of https://github.com/keeweb/keeweb.git synced 2024-06-20 06:56:40 +02:00
keeweb/app/scripts/views/open-config-view.js
2016-03-12 20:24:31 +03:00

81 lines
2.1 KiB
JavaScript

'use strict';
var Backbone = require('backbone'),
Locale = require('../util/locale'),
Keys = require('../const/keys');
var OpenConfigView = Backbone.View.extend({
template: require('templates/open-config.hbs'),
events: {
'click .open__config-btn-cancel': 'cancel',
'click .open__config-btn-ok': 'apply',
'input input': 'changeInput',
'keyup input': 'keyup'
},
render: function() {
this.renderTemplate(this.model);
this.$el.find(':input:first').focus();
this.checkValidity();
return this;
},
cancel: function() {
this.trigger('cancel');
},
apply: function() {
var data = this.getData();
if (data) {
this.trigger('apply', data);
}
},
changeInput: function() {
this.checkValidity();
},
keyup: function(e) {
if (e.which === Keys.DOM_VK_RETURN) {
this.apply();
}
},
checkValidity: function() {
var isValid = this.getData();
this.$el.find('.open__config-btn-ok').prop('disabled', !isValid);
},
getData: function() {
var data = { storage: this.model.id };
this.model.fields.every(function(field) {
var input = this.$el.find('#open__config-field-' + field.id)[0];
if (data && input.checkValidity()) {
data[field.id] = input.value;
} else {
data = null;
return false;
}
return true;
}, this);
return data;
},
setDisabled: function(disabled) {
disabled = !!disabled;
this.$el.find(':input:not(.open__config-btn-cancel)').prop('disabled', disabled);
this.$el.toggleClass('open__config--disabled', disabled);
if (disabled) {
this.$el.find('.open__config-error').text('');
}
},
setError: function(err) {
var errText = err && err.notFound ? Locale.openConfigErrorNotFound : Locale.openConfigError.replace('{}', err);
this.$el.find('.open__config-error').text(errText);
}
});
module.exports = OpenConfigView;