118 lines
2.6 KiB
JavaScript
118 lines
2.6 KiB
JavaScript
var CoreView = require('backbone/core-view');
|
|
var ViewFactory = require('builder/components/view-factory');
|
|
var renderLoading = require('builder/components/loading/render-loading');
|
|
var enterUrl = require('./enter-url.tpl');
|
|
|
|
/**
|
|
* Represents the Mapbox tab content.
|
|
*/
|
|
|
|
module.exports = CoreView.extend({
|
|
|
|
events: {
|
|
'keydown': '_onKeyDown',
|
|
'keyup': '_onKeyUp'
|
|
},
|
|
|
|
initialize: function (opts) {
|
|
if (!opts.submitButton) throw new Error('submitButton is required');
|
|
if (!opts.modalFooter) throw new Error('modalFooter is required');
|
|
|
|
this._submitButton = opts.submitButton;
|
|
this._modalFooter = opts.modalFooter;
|
|
this._onClickBinded = this._onClickOK.bind(this);
|
|
|
|
this._bindSubmitButton();
|
|
this._initBinds();
|
|
},
|
|
|
|
render: function () {
|
|
this.clearSubViews();
|
|
|
|
var view;
|
|
|
|
switch (this.model.get('currentView')) {
|
|
case 'validatingInputs':
|
|
this._disableModalFooter(true);
|
|
|
|
view = ViewFactory.createByHTML(
|
|
renderLoading({
|
|
title: _t('components.modals.add-basemap.validating')
|
|
})
|
|
);
|
|
break;
|
|
case 'enterURL':
|
|
default:
|
|
this._disableModalFooter(false);
|
|
|
|
view = ViewFactory.createByHTML(
|
|
enterUrl({
|
|
url: this.model.get('url'),
|
|
lastErrorMsg: this.model.get('lastErrorMsg')
|
|
})
|
|
);
|
|
}
|
|
this.addView(view);
|
|
this.$el.append(view.render().el);
|
|
|
|
this._updateOkBtn();
|
|
this._onKeyUp();
|
|
return this;
|
|
},
|
|
|
|
_initBinds: function () {
|
|
this.model.bind('change', this.render, this);
|
|
},
|
|
|
|
_hasValues: function () {
|
|
return this._urlVal();
|
|
},
|
|
|
|
_urlVal: function () {
|
|
return this.$('.js-url').val();
|
|
},
|
|
|
|
_onClickOK: function (e) {
|
|
this.killEvent(e);
|
|
|
|
if (this._hasValues()) {
|
|
var url = this._urlVal();
|
|
|
|
this.model.validateInputs(url);
|
|
}
|
|
},
|
|
|
|
_disableModalFooter: function (disable) {
|
|
this._modalFooter.toggleClass('is-disabled', disable);
|
|
},
|
|
|
|
_updateOkBtn: function () {
|
|
this._submitButton.find('span').text(_t('components.modals.add-basemap.add-btn'));
|
|
},
|
|
|
|
_onKeyDown: function (e) {
|
|
e.stopPropagation();
|
|
|
|
this.$('.js-error').removeClass('is-visible');
|
|
},
|
|
|
|
_onKeyUp: function (e) {
|
|
e && e.stopPropagation();
|
|
this._submitButton.toggleClass('is-disabled', !this._hasValues());
|
|
},
|
|
|
|
_bindSubmitButton: function () {
|
|
this._submitButton.on('click', this._onClickBinded);
|
|
},
|
|
|
|
_unBindSubmitButton: function () {
|
|
this._submitButton.off('click', this._onClickBinded);
|
|
},
|
|
|
|
clean: function () {
|
|
this._unBindSubmitButton();
|
|
CoreView.prototype.clean.call(this);
|
|
}
|
|
|
|
});
|