Highcharts 静态分页

草,为毛。先粘上代码,就不能在代码前面写字。

非要先写字,再粘代码。坑爹……

demo:

new HighchartsPager(‘container‘,4, {
        title: {
            text: ‘Monthly Average Temperature‘,
            x: -20 //center
        },
        subtitle: {
            text: ‘Source: WorldClimate.com‘,
            x: -20
        },
        xAxis: {
            categories: [‘Jan‘, ‘Feb‘, ‘Mar‘, ‘Apr‘, ‘May‘, ‘Jun‘,‘Jul‘, ‘Aug‘, ‘Sep‘, ‘Oct‘, ‘Nov‘, ‘Dec‘]
        },
        yAxis: {
            title: {
                text: ‘Temperature (°C)‘
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: ‘#808080‘
            }]
        },
        tooltip: {
            valueSuffix: ‘°C‘
        },
        legend: {
            layout: ‘vertical‘,
            align: ‘right‘,
            verticalAlign: ‘middle‘,
            borderWidth: 0
        },
        series: [{
            name: ‘Tokyo‘,
            data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
        }, {
            name: ‘New York‘,
            data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
        }, {
            name: ‘Berlin‘,
            data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
        }, {
            name: ‘London‘,
            data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
        }]
    });

代码:

function HighchartsPager(id, pageSize, options) {
	this.id = id;
	options.chart = options.chart || {};
	options.chart.renderTo = id;
	this._options = $.extend({}, options);
	this._xAxis = options.xAxis;
	this._series = options.series;

	this._total = 0;
	if(this._xAxis.categories){
		this._total = this._xAxis.categories.length
	}else{
		this._total = this._series[0].data.length;
	}
	this.toPage(this._total, pageSize);
	this.chart = null;
	//this.chart = new Highcharts.Chart(options);

	this.showPage(1);	

	return this.chart;
}

HighchartsPager.prototype.showPageBar = function(pageTotal) {
	var the = this;
	var arr = [];
	var suffixStr = ‘-pagebar-div‘;
	for ( var i = 0; i < pageTotal; i++) {
		arr.push(‘<a style="margin-right: 10px;text-decoration : underline; cursor: pointer; font-size: 11px;">‘
						+ (i + 1) + ‘</a>‘);
	}
	$(‘#‘ + this.id).append(
			‘<center><div style="border:0px red solid; height: 30px; width: 300px;" id="‘
					+ this.id + suffixStr + ‘">‘ + arr.join(‘‘)
					+ ‘</div></center>‘);

	the._current_pageNum = -1;

	$(‘#‘ + this.id + suffixStr).children().each(function(index) {
		$(this).click(function() {
			the.showPage(index + 1);
		});
	});
}
HighchartsPager.prototype.showPage = function(pageNum) {
	var the = this;
	var suffixStr = ‘-pagebar-div‘;
	if (pageNum == the._current_pageNum) {
		return;
	}
	var data = the.pageData(pageNum);
	if (the.chart == null) {
		var options = $.extend({}, the._options);
		options.xAxis = data.xAxis;
		options.series = data.series;
		the.chart = new Highcharts.Chart(options);
		the.showPageBar(the._page.pageTotal);

		the._current_pageNum = 1;
		$($(‘#‘ + the.id + suffixStr).children()[0]).css(‘text-decoration‘,
				‘none‘).css(
						‘font-size‘, ‘13px‘).css(
								‘font-weight‘, ‘bold‘);

	} else {
		the.removeData();
		the.chart.addAxis(data.xAxis, true, true);
		for ( var i = 0; i < data.series.length; i++) {
			the.chart.addSeries(data.series[i], true);
		}
		if (the._current_pageNum != -1) {
			$($(‘#‘ + the.id + suffixStr).children()[the._current_pageNum - 1])
					.css(‘text-decoration‘, ‘underline‘).css(
							‘font-size‘, ‘11px‘).css(
									‘font-weight‘, ‘normal‘);
		}
		the._current_pageNum = pageNum;
		$($(‘#‘ + the.id + suffixStr).children()[pageNum - 1]).css(
				‘text-decoration‘, ‘none‘).css(
						‘font-size‘, ‘13px‘).css(
								‘font-weight‘, ‘bold‘);
	}

}
HighchartsPager.prototype.toPage = function(total, pageSize) {
	this._page = {
		pageSize : pageSize,
		pageTotal : (total - total % pageSize) / pageSize
				+ (total % pageSize != 0 ? 1 : 0),
		total : total
	};
}

HighchartsPager.prototype.pageData = function(pageNum) {
	var xAxis = $.extend({}, this._xAxis);
	if(xAxis.categories){
		xAxis.categories = [];
		for ( var i = (pageNum - 1) * this._page.pageSize; i < Math.min(this._total, pageNum * this._page.pageSize); i++) {
			xAxis.categories.push(this._xAxis.categories[i]);
		}
	}	

	var series = [];
	var series_child = null;
	for ( var j = 0; j < this._series.length; j++) {
		series_child = $.extend({}, this._series[j]);
		series_child.data = [];

		for ( var i = (pageNum - 1) * this._page.pageSize; i < Math.min(
				this._series[j].data.length, pageNum * this._page.pageSize); i++) {
			series_child.data.push(this._series[j].data[i]);
		}

		series.push(series_child);
	}
	return {
		xAxis : xAxis,
		series : series
	};
}

HighchartsPager.prototype.removeData = function() {
	if (this.chart == null) {
		return;
	}
	for ( var i = 0; i < this.chart.xAxis.length; i++) {
		//this.chart.xAxis[i].remove();
	}

	//for(var i=0; i<this.chart.series.length; i++){
	//this.chart.series[i].remove(true);
	//}

	this.chart.xAxis[0].remove(true);

}

Highcharts 静态分页

时间: 2024-10-02 09:47:12

Highcharts 静态分页的相关文章

HTML静态分页(形如:首页,上一页,下一页,尾页)

在HTML中有时候我们会用到静态分页,一次拿回一定量的数据结果条目,我们会以形如:第2页,共12页  首页 上一页 下一页 尾页 的方式进行静态分页,以下是该种静态分页的代码,供兄弟姐妹们参考. <div class="page"> <!-- a href="tosearch.jsp" target="_blank" class="blue">更多</a --> <SCRIPT typ

jQuery静态分页功能

分页功能在做项目的过程中是常常用到的,下面是我常用的一款分页效果: 1.分页的CSS样式(page.css) 1 #setpage { 2 margin: 15px auto; 3 text-align: center; 4 } 5 #setpage a:link,#setpage a:visited,#setpage a:hover,#setpage .current,#setpage #info{ 6 border:1px solid #DDD; 7 background:#0d6cbf;

静态分页 ajajx +json

$(function(){ //总页数 var totalPage=$("#totalPage").html(); //获取页面信息 var everPage=$("#everPage").html(); var currentPage=$("#currentPage").html(); var totalCount=$("#totalCount").html(); //选择当前页设置 for(var i=1;i<=to

mvc PagerHelper静态分页

---------------分页方法----------------- public static class PagerHelper    {        /// <summary>        /// 分页        /// </summary>        /// <param name="helper"></param>        /// <param name="id">分页id&

HighCharts静态柱状图实现

Highcharts:功能强大.开源.美观.图表丰富.兼容绝大多数浏览器的纯js图表库 Highcharts是一款纯javascript编写的图表库,能够很简单便捷的在Web网站或Web应用中添加交互性的图表,Highcharts目前支持直线图.曲线图.面积图.柱状图.饼图.散点图等多达18种不同类型的图表,可以满足你对Web图表的任何需求 ! 实例代码如下: <!doctype html> <html lang="en"> <head> <s

Bootstrap 静态分页 和 jquery_pagination插件 动态分页

第一种Bootstrap 实例 - 默认的分页 <!DOCTYPE html> <html> <head> <title>Bootstrap 实例 - 默认的分页</title> <link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> <script src=&qu

C# 分页方法

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web; namespace System.Web.Mvc //注意修改为与HtmlHelper相同的命名空间{ /// <summary> /// 静态 分页方法 /// </summary> public static class MyHtmlHelper { //HtmlHelper的扩展

JS案例之1——pager 分页

原文:JS案例之1--pager 分页 学习JS大半年之久,第一次自己尝试写一些小插件,写法参考网上某位牛人写代码的思路. 此处代码写的是静态分页.如果需动态分页,还可以修改下.第一次写,还有很多地方可以优化.希望各位大牛踊跃拍砖. 预览图 源代码 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" Content="text/html; char

MySQL---数据库从入门走向大神系列(十六)-JavaWeb分页技术实例演示1

分页,是一种将所有数据分段展示给用户的技术.用户每次看到的不 是全部数据,而是其中的一部分,如果在其中没有找到自己想要的内容,用户可以通过指定页码或是点上/下一页的方式进行翻页. 本例演示静态分页,也就是先设置好每页显示10行,再根据总行数,来算出总页数,将所有页数的页号都显示出来. 相关算法(技术): 总行数(num): select count(1) from stud; 每页显示的行数(n): 固定值---已知的一个常量 页数: pageSize= num/n +( (num%n==0)?