| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | const Mn         = require('backbone.marionette');const template   = require('./main.ejs');const HeaderView = require('./header/main');const MenuView   = require('./menu/main');const FooterView = require('./footer/main');const Cache      = require('../cache');module.exports = Mn.View.extend({    id:          'app',    className:   'page',    template:    template,    modal_setup: false,    modal: null,    ui: {        modal: '#modal-dialog'    },    regions: {        header_region:      {            el:             '#header',            replaceElement: true        },        menu_region:        {            el:             '#menu',            replaceElement: true        },        footer_region:      '.footer',        app_content_region: '#app-content',        modal_region:       '#modal-dialog'    },    /**     * @param {Object}  view     */    showAppContent: function (view) {        this.showChildView('app_content_region', view);    },    /**     * @param {Object}    view     * @param {Function}  [show_callback]     * @param {Function}  [shown_callback]     */    showModalDialog: function (view, show_callback, shown_callback) {        this.showChildView('modal_region', view);        let modal = this.getRegion('modal_region').$el.modal('show');        modal.on('hidden.bs.modal', function (/*e*/) {            if (show_callback) {                modal.off('show.bs.modal', show_callback);            }            if (shown_callback) {                modal.off('shown.bs.modal', shown_callback);            }            modal.off('hidden.bs.modal');            view.destroy();        });        if (show_callback) {            modal.on('show.bs.modal', show_callback);        }        if (shown_callback) {            modal.on('shown.bs.modal', shown_callback);        }    },    /**     *     * @param {Function}  [hidden_callback]     */    closeModal: function (hidden_callback) {        let modal = this.getRegion('modal_region').$el.modal('hide');        if (hidden_callback) {            modal.on('hidden.bs.modal', hidden_callback);        }    },    onRender: function () {        this.showChildView('header_region', new HeaderView({            model: Cache.User        }));        this.showChildView('menu_region', new MenuView());        this.showChildView('footer_region', new FooterView());    },    reset: function () {        this.getRegion('header_region').reset();        this.getRegion('footer_region').reset();        this.getRegion('modal_region').reset();    }});
 |