import { View } from 'framework/views/view'; import { Keys } from 'const/keys'; import { Locale } from 'util/locale'; import template from 'templates/open-config.hbs'; class OpenConfigView extends View { template = template; events = { 'click .open__config-btn-cancel': 'cancel', 'click .open__config-btn-ok': 'apply', 'input input': 'changeInput', 'keyup input': 'keyup' }; render() { super.render(this.model); this.$el.find(':input:first').focus(); this.checkValidity(); } cancel() { this.emit('cancel'); } apply() { const data = this.getData(); if (data) { this.emit('apply', data); } } changeInput() { this.checkValidity(); } keyup(e) { if (e.which === Keys.DOM_VK_RETURN) { this.apply(); } } checkValidity() { const isValid = this.getData(); this.$el.find('.open__config-btn-ok').prop('disabled', !isValid); } getData() { let data = { storage: this.model.id }; this.model.fields.every(function (field) { const 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(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(err) { const errText = err && err.notFound ? Locale.openConfigErrorNotFound : Locale.openConfigError.replace('{}', err); this.$el.find('.open__config-error').text(errText); } } export { OpenConfigView };