jQuery Flot库的Categories插件不工作

Categories plugin for jQuery Flot library not working

本文关键字:工作 插件 Categories Flot 库的 jQuery      更新时间:2023-09-26

我正在使用jQuery Flot库制作一个图表,其中x轴包含文本单位(月)而不是数字。所以我使用Flot的分类插件,并从其主网站克隆示例代码。但是月份并没有显示出来,只是显示了条形图。代码如下:

代码片段得到的问题是在评论块"站点统计图表"之间。我上传完整的代码只是为了让大家知道我在做什么,并且可以检测是否有其他部分的问题影响这个代码片段。

Flot类别下载自http://www.flotcharts.org/flot/jquery.flot.categories.js

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ProjectDashboard.aspx.cs" Inherits="SELPORTAL.project.ProjectDashboard" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Project Dashboard</title>
    <script type="text/javascript">
        pageSetUp();
        loadScript("js/plugin/flot/jquery.flot.cust.js", loadFlotResize);
        function loadFlotResize() {
            loadScript("js/plugin/flot/jquery.flot.resize.js", loadFlotFillbetween);
        }
        function loadFlotFillbetween() {
            loadScript("js/plugin/flot/jquery.flot.fillbetween.js", loadFlotOrderBar);
        }
        function loadFlotOrderBar() {
            loadScript("js/plugin/flot/jquery.flot.orderBar.js", loadFlotPie);
        }
        function loadFlotPie() {
            loadScript("js/plugin/flot/jquery.flot.pie.js", loadFlotCategories);
        }
        function loadFlotCategories() {
            loadScript("js/plugin/flot/jquery.flot.categories.js", loadDebug);
        }
        function loadDebug() {
            loadScript("js/plugin/flot/jquery.flot.debug.js", loadFlotToolTip);
        }
        function loadFlotToolTip() {
            loadScript("js/plugin/flot/jquery.flot.tooltip.js", generateAllFlotCharts);
        }
        /* chart colors default */
        var $chrt_border_color = "#efefef";
        var $chrt_grid_color = "#DDD"
        var $chrt_main = "#E24913";         /* red       */
        var $chrt_second = "#6595b4";       /* blue      */
        var $chrt_third = "#FF9F01";        /* orange    */
        var $chrt_fourth = "#7e9d3a";       /* green     */
        var $chrt_fifth = "#BD362F";        /* dark red  */
        var $chrt_mono = "#000";
        var MONTH_NAMES = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
        var categories = {};
        var ongoingProjects = [];
        var issues = {};
        $(function () {
            var jsonData = $("#projectsYearCategory").val();
            parseDataReceived(jsonData);
            fillOngoingTable();
        });

        function parseDataReceived(json) {
            var obj = JSON.parse(json);
            categories = obj.allProjects;
            ongoingProjects = obj.ongoingProjects;
            issues = obj.issues;
            for (var i = 0; i < ongoingProjects.length; i++) {
                ongoingProjects[i].deadline = getDateFromJsonDate(ongoingProjects[i].deadline);
            }
            for (var category in issues) {
                for (var i = 0; i < issues[category].length; i++) {
                    issues[category][i] = [getTickDateString(getDateFromJsonDate(issues[category][i].Item1)), issues[category][i].Item2];
                }
            }
            console.log(categories);
            console.log(ongoingProjects);
            console.log(issues);
        }
        function getDateFromJsonDate(d) {
            return new Date(parseInt(d.substr(6)));
        }
        function getDateString(d) {
            return (d.getMonth() + 1) + "/" + d.getDate() + "/" + d.getFullYear();
        }
        function getTickDateString(d) {
            return MONTH_NAMES[d.getMonth()] + "-" + d.getFullYear();
        }
        function fillOngoingTable() {
            var tblBody = $('#tbl_ongoing tbody');
            for (var i = 0; i < ongoingProjects.length; i++) {
                var row = $('<tr>');
                row.append($('<td>').text(ongoingProjects[i].name));
                row.append($('<td>').text(ongoingProjects[i].model));
                row.append($('<td>').text(ongoingProjects[i].grade));
                row.append($('<td>').text(getDateString(ongoingProjects[i].deadline)));
                tblBody.append(row);
            }
        }
        function generateAllFlotCharts() {
            for (var category in categories) {
                var projects = categories[category];
                var ongoing = [];
                var upcoming = [];
                var completed = [];
                var drop = [];
                for (var year in projects) {
                    ongoing.push([year, projects[year]["Ongoing"]]);
                    upcoming.push([year, projects[year]['Upcoming']]);
                    completed.push([year, projects[year]['Completed']]);
                    drop.push([year, projects[year]['Drop']]);
                }
                var ds = new Array();
                ds.push({
                    data: ongoing,
                    label: "Ongoing",
                    bars: {
                        show: true,
                        barWidth: 0.1,
                        order: 1,
                    }
                });
                ds.push({
                    data: upcoming,
                    label: "Upcoming",
                    bars: {
                        show: true,
                        barWidth: 0.1,
                        order: 2,
                    }
                });
                ds.push({
                    data: completed,
                    label: "Completed",
                    bars: {
                        show: true,
                        barWidth: 0.1,
                        order: 3,
                    }
                });
                ds.push({
                    data: drop,
                    label: "Drop",
                    bars: {
                        show: true,
                        barWidth: 0.1,
                        order: 4,
                    }
                });
                //Display graph
                $.plot($("#bar-chart-" + category.toLowerCase()), ds, {
                    colors: [$chrt_second, $chrt_fourth, "#666", "#BBB"],
                    grid: {
                        show: true,
                        hoverable: true,
                        clickable: true,
                        tickColor: $chrt_border_color,
                        borderWidth: 0,
                        borderColor: $chrt_border_color,
                    },
                    legend: true,
                    xaxis: {
                        tickDecimals: 0,
                    },
                    yaxis: {
                        tickDecimals: 0,
                        min: 0,
                    },
                    tooltip: true,
                    tooltipOpts: {
                        content: "<span>%s: %y project(s)</span>",
                        defaultTheme: false
                    }
                });
            }
            /* pie chart */
            if ($('#pie-chart').length) {
                var data_pie = [];
                var series = Math.floor(Math.random() * 10) + 1;
                for (var i = 0; i < series; i++) {
                    data_pie[i] = {
                        label: "Series" + (i + 1),
                        data: Math.floor(Math.random() * 100) + 1
                    }
                }
                $.plot($("#pie-chart"), data_pie, {
                    series: {
                        pie: {
                            show: true,
                            innerRadius: 0.5,
                            radius: 1,
                            label: {
                                show: false,
                                radius: 2 / 3,
                                formatter: function (label, series) {
                                    return '<div style="font-size:11px;text-align:center;padding:4px;color:white;">' + label + '<br/>' + Math.round(series.percent) + '%</div>';
                                },
                                threshold: 0.1
                            }
                        }
                    },
                    legend: {
                        show: true,
                        noColumns: 1, // number of colums in legend table
                        labelFormatter: null, // fn: string -> string
                        labelBoxBorderColor: "#000", // border color for the little label boxes
                        container: null, // container (as jQuery object) to put legend in, null means default on top of graph
                        position: "ne", // position of default legend container within plot
                        margin: [5, 10], // distance from grid edge to default legend container within plot
                        backgroundColor: "#efefef", // null means auto-detect
                        backgroundOpacity: 1 // set to 0 to avoid background
                    },
                    grid: {
                        hoverable: true,
                        clickable: true
                    },
                });
            }
            /* end pie chart */
            /* site stats chart */
            if ($("#line-chart-issues").length) {
                var issuesSDK = issues["SDK"];
                var issuesMobile = issues["Mobile"];
                var issuesCamera = issues["Camera"];
                console.log(issuesSDK);
                console.log(issuesMobile);
                console.log(issuesCamera);
                var data = [["January", 10], ["February", 8], ["March", 4], ["April", 13], ["May", 17], ["June", 9]];
                $.plot("#line-chart-issues", [data], {
                    series: {
                        bars: {
                            show: true,
                            barWidth: 0.6,
                            align: "center"
                        }
                    },
                    xaxis: {
                        mode: "categories",
                        tickLength: 0
                    }
                });
            }
            /* end site stats */
        }
    </script>
</head>

categories插件需要xaxis选项中的类别数组:

xaxis: {
    mode: "categories",
    categories: ["Category One", "Category Two", "Category Three"] // I don't see you doing this anywhere in your code!
}

您只需要从http://www.flotcharts.org/flot/jquery.flot.js使所有兼容的

1:确保将此java脚本添加到代码中

    <script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script>
<script language="javascript" type="text/javascript" src="../../jquery.flot.categories.js"></script>

你的功能可以像这个

$(function() {
    var data = [ ["January", 10], ["February", 8], ["March", 4], ["April", 13], ["May", 17], ["June", 9] ];
    $.plot("#placeholder", [ data ], {
        series: {
            bars: {
                show: true,
                barWidth: 0.6,
                align: "center"
            }
        },
        xaxis: {
            mode: "categories",
            tickLength: 0
        }
    });

});