高图中的自定义分页问题

时间:2016-07-14 04:58:33

标签: javascript jquery highcharts pagination

我创建了一个使用高图表的图表。对于分页,我尝试过以下代码,但它不起作用。另外,由于我已经对系列图进行了分组,因此不确定如何过滤数据。

完整的Highchart代码:

 $(function () {   

    Highcharts.dateFormats = {
        W: function (timestamp) {
            var date = new Date(timestamp),
                day = date.getUTCDay() == 0 ? 7 : date.getUTCDay(),
                dayNumber;
            date.setDate(date.getUTCDate() + 4 - day);
            dayNumber = Math.floor((date.getTime() - new Date(date.getUTCFullYear(), 1, 1)) / 86400000);
            return 1 + Math.floor(dayNumber / 7);

        }
    }
    function defined(obj) {
        return obj !== undefined && obj !== null;
    }
    var longerGridLines = function (chart) {
        var d;
        Highcharts.each($('.highcharts-grid')[0].children, function (p, i) {
            d = p.attributes.d.value
            d = d.substring(d.indexOf(' ') + 1, d.length - 1);
            d = d.substring(d.indexOf(' ') + 1, d.length - 1);
            p.attributes.d.value = 'M 0 ' + d;
        })
    },
    projects = [
                        { 'projectname': 'Tire Sales', 'projectstatus': 'repeat' },
                        { 'projectname': 'Spark Plug', 'projectstatus': 'once' },
                        { 'projectname': 'Hoods & Moff', 'projectstatus': 'once' },
                        { 'projectname': 'Audio System', 'projectstatus': 'repeat' },
                        { 'projectname': 'Accessories', 'projectstatus': 'once' },
    ];
    $('#ao-projectssummry-chart').highcharts({
        chart: {
            type: "columnrange",
            inverted: true,
            marginLeft: 300,
            events: {
                load: function () {                   
                    longerGridLines(this);
                    var chart = this;

                    var currentMax = chart.xAxis[0].getExtremes().max;                    

                    $('.customLabel').click(function () {
                        Highcharts.each($('.customLabel'), function (p, i) {
                            $(p).removeClass('customLabelSelected');
                        })
                        $(this).addClass('customLabelSelected');
                        var text = this.offsetParent.innerHTML,
                          index = parseInt(text.substring(0, text.indexOf(' '))) - 1;
                        $('.cross').remove();
                        var xAxis = chart.xAxis[0],
                          distance = xAxis.toPixels(1) - xAxis.toPixels(0),
                          plotTop = xAxis.toPixels(index - 0.5),
                          width = chart.chartWidth;
                        chart.renderer.rect(0, plotTop, width, distance)
                          .attr({
                              fill: 'rgba(200,200,200,0.5)',
                              zIndex: 1
                          }).addClass('cross')
                          .add();
                    })
                },
                redraw: function () {
                    longerGridLines(this)
                }
            }
        },
        title: {
            text: null
        },
        credits: {
            enabled: false
        },
        legend: {
            enabled: false
        },
        tooltip: {
            //formatter: function () {
            //    return '<b>' + this.categories.value + '><br/>'

            //}
        },
        yAxis: {
            title: null,
            crosshair: {
                width: 2,
                color: "#F26C6D",
                snap: true,
                formatter: function () {
                    return '<b>' + this.series.name + '</b><br/>' +
                        Highcharts.dateFormat('%e. %b', new Date(this.x));
                }
            },
            labels: {
                format: '{value:Week %W}'
            },
            gridLineWidth: 1,
            gridZIndex: 0,
            type: 'datetime',
            min: Date.UTC(2016, 1, 1),
            max: Date.UTC(2016, 12, 31),
        },
        xAxis: {            
            categories: [
               'Model', 'Optimize', 'Pilot', 'Deploy', 'Monitor'
            ],
            min: 0,
            max: 4,
            title: null,
            gridLineWidth: 1,
            gridZIndex: 0,

            labels: {
                width: 200,
                marginLeft: 0,
                useHTML: true,

                formatter: function () {
                    if(projects[this.axis.categories.indexOf(this.value)].projectstatus == "repeat") {
                        var projecttype = "<i class='fa fa-refresh fa-lg'></i>";                        
                    }
                    else {
                        var projecttype = '1';
                    }
                    return '<div class="ProjectListsrow"><span class="ao-projectname">' + projects[this.axis.categories.indexOf(this.value)].projectname + '</span><span class = "ao-projectstatus-label ao-' + this.value + '">' + this.value + '</span> <span class="ao-projecttype-icon">' + projecttype + ' </span>   </div>'
                }         
            },
            crosshair: {
                snap: true
            }
        },
        plotOptions: {
            series: {
                pointWidth: 4,
                borderRadius: 0,
                point: {
                    events: {
                        mouseOver: function () {
                            $('.cross').remove();
                            Highcharts.each($('.customLabel'), function (p, i) {
                                $(p).removeClass('customLabelSelected');
                            })
                            $($('.customLabel')[this.x]).addClass('customLabelSelected')
                            var xAxis = this.series.xAxis,
                              distance = xAxis.toPixels(1) - xAxis.toPixels(0),
                              plotTop = xAxis.toPixels(this.x - 0.5),
                              width = this.series.chart.chartWidth;
                            this.series.chart.renderer.rect(0, plotTop, width, distance)
                              .attr({
                                  fill: 'rgba(200,200,200,0.5)',
                                  zIndex: 1
                              }).addClass('cross')
                              .add();
                        },
                        mouseOut: function () {
                            Highcharts.each($('.customLabel'), function (p, i) {
                                $(p).removeClass('customLabelSelected');
                            })
                            $('.cross').remove();
                        }
                    }
                },
                marker: {
                    enbled: false
                },
                groupPadding: 0.5

            },
            line: {
                lineWidth: -1,
                marker: {
                    enabled: true,
                    radius: 0,
                    symbol: 'circle'
                }

            }
        },
        series: aoDashboardData()



    });

    var stepWidth = 2
    var chart = $('#ao-projectssummry-chart').highcharts();
    chartlength = chart.series.length;

    $('#ao-dashboard-paging-ending').click(function () {
        $(".ao-loader").show();
        MinAssortmentValue = Math.min.apply(Math, chartlength);
        console.log(MinAssortmentValue);
        setTimeout(function () {
            chart.xAxis[0].setExtremes(1, MinAssortmentValue - 1);
            $(".ao-loader").hide();
        }, 600)
    });

    $('#ao-dashboard-paging-back').click(function () {
        $(".ao-loader").show();
        MinAssortmentValue = Math.min.apply(Math, chartlength)
        var chart = $('#ao-projectssummry-chart').highcharts();
        var currentMin = chart.xAxis[0].getExtremes().min;
        var currentMax = chart.xAxis[0].getExtremes().max;
        if (currentMin > stepWidth) {
            setTimeout(function () {
                chart.xAxis[0].setExtremes(currentMin - stepWidth, currentMax - stepWidth);
                $(".ao-loader").hide();
            }, 600)
        }
        if ((currentMin - MinAssortmentValue) < stepWidth) {
            setTimeout(function () {
                chart.xAxis[0].setExtremes(1, stepWidth);
                $(".ao-loader").hide();
            }, 600)
        }
    });

    $('#ao-dashboard-paging-forward').click(function () {
        $(".ao-loader").show();
        MaxAssortmentValue = Math.max.apply(Math, chartlength);
        MinAssortmentValue = Math.min.apply(Math, chartlength)
        var chart = $('#ao-projectssummry-chart').highcharts();
        var currentMin = chart.xAxis[0].getExtremes().min;
        var currentMax = chart.xAxis[0].getExtremes().max;
        if ((MaxAssortmentValue - currentMax) > stepWidth) {
            setTimeout(function () {
                chart.xAxis[0].setExtremes(currentMin + stepWidth, currentMax + stepWidth);
                $(".ao-loader").hide();
            }, 600)
        }
        if ((MaxAssortmentValue - currentMax) < stepWidth) {
            setTimeout(function () {
                chart.xAxis[0].setExtremes(MaxAssortmentValue + 4, MaxAssortmentValue);
                $(".ao-loader").hide();
            }, 600)
        }
    });

    $('#ao-dashboard-paging-begin').click(function () {
        MaxAssortmentValue = Math.max.apply(Math, chartlength);
        var chart = $('#ao-projectssummry-chart').highcharts();
        var currentMin = chart.xAxis[0].getExtremes().min;
        var currentMax = chart.xAxis[0].getExtremes().max;
        setTimeout(function () {
            chart.xAxis[0].setExtremes(MaxAssortmentValue - stepWidth, MaxAssortmentValue - 1);
            $(".ao-loader").hide();
        }, 600)
    });

});

    function aoDashboardData() {
var data = [
        {
            data: [{
                x: 0.0,
                low: Date.UTC(2016, 2, 15),
                high: Date.UTC(2016, 4, 10),
                color: "#4B0081"
            },
            {
                x: 0.0,
                low: Date.UTC(2016, 4, 15),
                high: Date.UTC(2016, 6, 15),
                color: "#00BFFE"
            },
            {
                x: 0.0,
                low: Date.UTC(2016, 6, 20),
                high: Date.UTC(2016, 8, 0),
                color: "#0047AB"
            },
            {
                x: 0.0,
                low: Date.UTC(2016, 8, 5),
                high: Date.UTC(2016, 10, 15),
                color: "#4682B4"
            },
            {
                x: 0.0,
                low: Date.UTC(2016, 10, 20),
                high: Date.UTC(2016, 12, 31),
                color: "#008081"
            }]
        },
        {
            type: 'line',
            data: [
                {
                    x: 0.0,
                    y: Date.UTC(2016, 2, 15),
                    marker: {
                        symbol: 'url(/../Content/Img/monitor.png)',
                    }
                },
                {
                    x: 0.0,
                    y: Date.UTC(2016, 4, 10),
                    marker: {
                        symbol: 'url(/../Content/Img/optimise.png)',
                    }
                },
                {
                    x: 0.0,
                    y: Date.UTC(2016, 6, 15),
                    marker: {
                        symbol: 'url(/../Content/Img/pilot.png)',
                    }
                },
                {
                    x: 0.0,
                    y: Date.UTC(2016, 8, 5),
                    marker: {
                        symbol: 'url(/../Content/Img/model.png)',
                    }
                },
                {
                    x: 0.0,
                    y: Date.UTC(2016, 10, 15),
                    marker: {
                        symbol: 'url(/../Content/Img/deploy.png)',
                    }
                }

            ]
        },





              ]
          }

]

return data;

}

使用JSFiddle:http://jsfiddle.net/sarav4gs/L4fx5mbd/4/

0 个答案:

没有答案