You've already forked nginx-proxy-manager
							
							
				mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-10-30 18:05:34 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			91 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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 () {
 | |
| 		const 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 () {
 | |
| 		const 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
 | |
| 		const 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);
 | |
| 	}
 | |
| });
 |