????
Current Path : /usr/lib/python3.6/site-packages/glances/outputs/static/js/ |
Current File : //usr/lib/python3.6/site-packages/glances/outputs/static/js/services.js |
import { store } from './store.js'; import Favico from 'favico.js'; // prettier-ignore const fetchAll = () => fetch('api/3/all', { method: 'GET' }).then((response) => response.json()); // prettier-ignore const fetchAllViews = () => fetch('api/3/all/views', { method: 'GET' }).then((response) => response.json()); // prettier-ignore const fetchAllLimits = () => fetch('api/3/all/limits', { method: 'GET' }).then((response) => response.json()); // prettier-ignore const fetchArgs = () => fetch('api/3/args', { method: 'GET' }).then((response) => response.json()); // prettier-ignore const fetchConfig = () => fetch('api/3/config', { method: 'GET' }).then((response) => response.json()); class GlancesHelperService { limits = {}; limitSuffix = ['critical', 'careful', 'warning']; setLimits(limits) { this.limits = limits; } getAlert(pluginName, limitNamePrefix, current, maximum, log) { current = current || 0; maximum = maximum || 100; log = log || false; var log_str = log ? '_log' : ''; var value = (current * 100) / maximum; if (this.limits[pluginName] != undefined) { for (var i = 0; i < this.limitSuffix.length; i++) { var limitName = limitNamePrefix + this.limitSuffix[i]; var limit = this.limits[pluginName][limitName]; if (value >= limit) { var pos = limitName.lastIndexOf('_'); var className = limitName.substring(pos + 1); return className + log_str; } } } return 'ok' + log_str; } getAlertLog(pluginName, limitNamePrefix, current, maximum) { return this.getAlert(pluginName, limitNamePrefix, current, maximum, true); } } export const GlancesHelper = new GlancesHelperService(); class GlancesStatsService { data = undefined; init(REFRESH_TIME = 60) { let timeout = undefined; const fetchData = () => { store.status = 'PENDING'; return Promise.all([fetchAll(), fetchAllViews()]) .then((response) => { const data = { stats: response[0], views: response[1], isBsd: response[0]['system']['os_name'] === 'FreeBSD', isLinux: response[0]['system']['os_name'] === 'Linux', isSunOS: response[0]['system']['os_name'] === 'SunOS', isMac: response[0]['system']['os_name'] === 'Darwin', isWindows: response[0]['system']['os_name'] === 'Windows' }; this.data = data; store.data = data; store.status = 'SUCCESS'; }) .catch((error) => { console.log(error); store.status = 'FAILURE'; }) .then(() => { if (timeout) { clearTimeout(timeout); } timeout = setTimeout(fetchData, REFRESH_TIME * 1000); // in milliseconds }); }; fetchData(); fetchAllLimits().then((response) => { GlancesHelper.setLimits(response); }); fetchArgs().then((response = {}) => { store.args = { ...store.args, ...response }; }); fetchConfig().then((response = {}) => { store.config = { ...store.config, ...response }; }); } getData() { return this.data; } } export const GlancesStats = new GlancesStatsService(); class GlancesFavicoService { constructor() { this.favico = new Favico({ animation: 'none' }); } badge(nb) { this.favico.badge(nb); } reset() { this.favico.reset(); } } export const GlancesFavico = new GlancesFavicoService();