netdata/netdata

View on GitHub
src/web/gui/src/dashboard.js/charting/_morris.js

Summary

Maintainability
D
2 days
Test Coverage

// DEPRECATED: will be removed!

// morris

NETDATA.morrisInitialize = function(callback) {
    if (typeof netdataNoMorris === 'undefined' || !netdataNoMorris) {

        // morris requires raphael
        if (!NETDATA.chartLibraries.raphael.initialized) {
            if (NETDATA.chartLibraries.raphael.enabled) {
                NETDATA.raphaelInitialize(function() {
                    NETDATA.morrisInitialize(callback);
                });
            } else {
                NETDATA.chartLibraries.morris.enabled = false;
                if (typeof callback === "function")
                    return callback();
            }
        } else {
            NETDATA._loadCSS(NETDATA.morris_css);

            $.ajax({
                url: NETDATA.morris_js,
                cache: true,
                dataType: "script",
                xhrFields: { withCredentials: true } // required for the cookie
            })
            .done(function() {
                NETDATA.registerChartLibrary('morris', NETDATA.morris_js);
            })
            .fail(function() {
                NETDATA.chartLibraries.morris.enabled = false;
                NETDATA.error(100, NETDATA.morris_js);
            })
            .always(function() {
                if (typeof callback === "function")
                    return callback();
            });
        }
    } else {
        NETDATA.chartLibraries.morris.enabled = false;
        if (typeof callback === "function")
            return callback();
    }
};

NETDATA.morrisChartUpdate = function(state, data) {
    state.morris_instance.setData(data.result.data);
    return true;
};

NETDATA.morrisChartCreate = function(state, data) {

    state.morris_options = {
            element: state.element_chart.id,
            data: data.result.data,
            xkey: 'time',
            ykeys: data.dimension_names,
            labels: data.dimension_names,
            lineWidth: 2,
            pointSize: 3,
            smooth: true,
            hideHover: 'auto',
            parseTime: true,
            continuousLine: false,
            behaveLikeLine: false
    };

    if (state.chart.chart_type === 'line')
        state.morris_instance = new Morris.Line(state.morris_options);

    else if (state.chart.chart_type === 'area') {
        state.morris_options.behaveLikeLine = true;
        state.morris_instance = new Morris.Area(state.morris_options);
    }
    else // stacked
        state.morris_instance = new Morris.Area(state.morris_options);

    return true;
};