| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | 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;        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);    }});
 |