const Mn = require('backbone.marionette'); const App = require('../../main'); const SslPassthroughModel = require('../../../models/ssl-passthrough-host'); const ListView = require('./list/main'); const ErrorView = require('../../error/main'); const EmptyView = require('../../empty/main'); const template = require('./main.ejs'); module.exports = Mn.View.extend({ id: 'nginx-ssl-passthrough', template: template, ui: { list_region: '.list-region', add: '.add-item', help: '.help', dimmer: '.dimmer', disabled_info: '#ssl-passthrough-disabled-info' }, regions: { list_region: '@ui.list_region' }, events: { 'click @ui.add': function (e) { e.preventDefault(); App.Controller.showNginxSslPassthroughForm(); }, 'click @ui.help': function (e) { e.preventDefault(); App.Controller.showHelp(App.i18n('ssl-passthrough-hosts', 'help-title'), App.i18n('ssl-passthrough-hosts', 'help-content')); } }, templateContext: { showAddButton: App.Cache.User.canManage('ssl_passthrough_hosts') }, onRender: function () { let view = this; view.ui.disabled_info.hide(); App.Api.Nginx.SslPassthroughHosts.getFeatureEnabled().then((response) => { console.debug(response) if (response.ssl_passthrough_enabled === false) { view.ui.disabled_info.show(); } else { view.ui.disabled_info.hide(); } }); App.Api.Nginx.SslPassthroughHosts.getAll(['owner']) .then(response => { if (!view.isDestroyed()) { if (response && response.length) { view.showChildView('list_region', new ListView({ collection: new SslPassthroughModel.Collection(response) })); } else { let manage = App.Cache.User.canManage('ssl_passthrough_hosts'); view.showChildView('list_region', new EmptyView({ title: App.i18n('ssl-passthrough-hosts', 'empty'), subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}), link: manage ? App.i18n('ssl-passthrough-hosts', 'add') : null, btn_color: 'blue', permission: 'ssl-passthrough-hosts', action: function () { App.Controller.showNginxSslPassthroughForm(); } })); } } }) .catch(err => { view.showChildView('list_region', new ErrorView({ code: err.code, message: err.message, retry: function () { App.Controller.showNginxSslPassthrough(); } })); console.error(err); }) .then(() => { view.ui.dimmer.removeClass('active'); }); } });