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