| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | const Mn         = require('backbone.marionette');const Cache      = require('../cache');const Controller = require('../controller');const Api        = require('../api');const Helpers    = require('../../lib/helpers');const template   = require('./main.ejs');module.exports = Mn.View.extend({    template: template,    id:       'dashboard',    columns:  0,    stats: {},    ui: {        links: 'a'    },    events: {        'click @ui.links': function (e) {            e.preventDefault();            Controller.navigate($(e.currentTarget).attr('href'), true);        }    },    templateContext: function () {        let view = this;        return {            getUserName: function () {                return Cache.User.get('nickname') || Cache.User.get('name');            },            getHostStat: function (type) {                if (view.stats && typeof view.stats.hosts !== 'undefined' && typeof view.stats.hosts[type] !== 'undefined') {                    return Helpers.niceNumber(view.stats.hosts[type]);                }                return '-';            },            canShow: function (perm) {                return Cache.User.isAdmin() || Cache.User.canView(perm);            },            columns: view.columns        };    },    onRender: function () {        let view = this;        if (typeof view.stats.hosts === 'undefined') {            Api.Reports.getHostStats()                .then(response => {                    if (!view.isDestroyed()) {                        view.stats.hosts = response;                        view.render();                    }                })                .catch(err => {                    console.log(err);                });        }    },    /**     * @param {Object}  [model]     */    preRender: function (model) {        this.columns = 0;        // calculate the available columns based on permissions for the objects        // and store as a variable        //let view = this;        let perms = ['proxy_hosts', 'redirection_hosts', 'streams', 'dead_hosts'];        perms.map(perm => {            this.columns += Cache.User.isAdmin() || Cache.User.canView(perm) ? 1 : 0;        });        // Prevent double rendering on initial calls        if (typeof model !== 'undefined') {            this.render();        }    },    initialize: function () {        this.preRender();        this.listenTo(Cache.User, 'change', this.preRender);    }});
 |