⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chart.js

📁 初学者
💻 JS
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.widget.Chart");dojo.require("dojo.widget.*");dojo.require("dojo.gfx.color");dojo.require("dojo.gfx.color.hsl");dojo.declare("dojo.widget.Chart", null, function () {	this.series = [];}, {isContainer:false, assignColors:function () {	var hue = 30;	var sat = 120;	var lum = 120;	var steps = Math.round(330 / this.series.length);	for (var i = 0; i < this.series.length; i++) {		var c = dojo.gfx.color.hsl2rgb(hue, sat, lum);		if (!this.series[i].color) {			this.series[i].color = dojo.gfx.color.rgb2hex(c[0], c[1], c[2]);		}		hue += steps;	}}, parseData:function (table) {	var thead = table.getElementsByTagName("thead")[0];	var tbody = table.getElementsByTagName("tbody")[0];	if (!(thead && tbody)) {		dojo.raise("dojo.widget.Chart: supplied table must define a head and a body.");	}	var columns = thead.getElementsByTagName("tr")[0].getElementsByTagName("th");	for (var i = 1; i < columns.length; i++) {		var key = "column" + i;		var label = columns[i].innerHTML;		var plotType = columns[i].getAttribute("plotType") || "line";		var color = columns[i].getAttribute("color");		var ds = new dojo.widget.Chart.DataSeries(key, label, plotType, color);		this.series.push(ds);	}	var rows = tbody.rows;	var xMin = Number.MAX_VALUE, xMax = Number.MIN_VALUE;	var yMin = Number.MAX_VALUE, yMax = Number.MIN_VALUE;	var ignore = ["accesskey", "align", "bgcolor", "class", "colspan", "height", "id", "nowrap", "rowspan", "style", "tabindex", "title", "valign", "width"];	for (var i = 0; i < rows.length; i++) {		var row = rows[i];		var cells = row.cells;		var x = Number.MIN_VALUE;		for (var j = 0; j < cells.length; j++) {			if (j == 0) {				x = parseFloat(cells[j].innerHTML);				xMin = Math.min(xMin, x);				xMax = Math.max(xMax, x);			} else {				var ds = this.series[j - 1];				var y = parseFloat(cells[j].innerHTML);				yMin = Math.min(yMin, y);				yMax = Math.max(yMax, y);				var o = {x:x, value:y};				var attrs = cells[j].attributes;				for (var k = 0; k < attrs.length; k++) {					var attr = attrs.item(k);					var bIgnore = false;					for (var l = 0; l < ignore.length; l++) {						if (attr.nodeName.toLowerCase() == ignore[l]) {							bIgnore = true;							break;						}					}					if (!bIgnore) {						o[attr.nodeName] = attr.nodeValue;					}				}				ds.add(o);			}		}	}	return {x:{min:xMin, max:xMax}, y:{min:yMin, max:yMax}};}});dojo.declare("dojo.widget.Chart.DataSeries", null, function (key, label, plotType, color) {	this.id = "DataSeries" + dojo.widget.Chart.DataSeries.count++;	this.key = key;	this.label = label || this.id;	this.plotType = plotType || "line";	this.color = color;	this.values = [];}, {add:function (v) {	if (v.x == null || v.value == null) {		dojo.raise("dojo.widget.Chart.DataSeries.add: v must have both an 'x' and 'value' property.");	}	this.values.push(v);}, clear:function () {	this.values = [];}, createRange:function (len) {	var idx = this.values.length - 1;	var length = (len || this.values.length);	return {"index":idx, "length":length, "start":Math.max(idx - length, 0)};}, getMean:function (len) {	var range = this.createRange(len);	if (range.index < 0) {		return 0;	}	var t = 0;	var c = 0;	for (var i = range.index; i >= range.start; i--) {		var n = parseFloat(this.values[i].value);		if (!isNaN(n)) {			t += n;			c++;		}	}	t /= Math.max(c, 1);	return t;}, getMovingAverage:function (len) {	var range = this.createRange(len);	if (range.index < 0) {		return 0;	}	var t = 0;	var c = 0;	for (var i = range.index; i >= range.start; i--) {		var n = parseFloat(this.values[i].value);		if (!isNaN(n)) {			t += n;			c++;		}	}	t /= Math.max(c, 1);	return t;}, getVariance:function (len) {	var range = this.createRange(len);	if (range.index < 0) {		return 0;	}	var t = 0;	var s = 0;	var c = 0;	for (var i = range.index; i >= range.start; i--) {		var n = parseFloat(this.values[i].value);		if (!isNaN(n)) {			t += n;			s += Math.pow(n, 2);			c++;		}	}	return (s / c) - Math.pow(t / c, 2);}, getStandardDeviation:function (len) {	return Math.sqrt(this.getVariance(len));}, getMax:function (len) {	var range = this.createRange(len);	if (range.index < 0) {		return 0;	}	var t = 0;	for (var i = range.index; i >= range.start; i--) {		var n = parseFloat(this.values[i].value);		if (!isNaN(n)) {			t = Math.max(n, t);		}	}	return t;}, getMin:function (len) {	var range = this.createRange(len);	if (range.index < 0) {		return 0;	}	var t = 0;	for (var i = range.index; i >= range.start; i--) {		var n = parseFloat(this.values[i].value);		if (!isNaN(n)) {			t = Math.min(n, t);		}	}	return t;}, getMedian:function (len) {	var range = this.createRange(len);	if (range.index < 0) {		return 0;	}	var a = [];	for (var i = range.index; i >= range.start; i--) {		var n = parseFloat(this.values[i].value);		if (!isNaN(n)) {			var b = false;			for (var j = 0; j < a.length && !b; j++) {				if (n == a[j]) {					b = true;				}			}			if (!b) {				a.push(n);			}		}	}	a.sort();	if (a.length > 0) {		return a[Math.ceil(a.length / 2)];	}	return 0;}, getMode:function (len) {	var range = this.createRange(len);	if (range.index < 0) {		return 0;	}	var o = {};	var ret = 0;	var m = 0;	for (var i = range.index; i >= range.start; i--) {		var n = parseFloat(this.values[i].value);		if (!isNaN(n)) {			if (!o[this.values[i].value]) {				o[this.values[i].value] = 1;			} else {				o[this.values[i].value]++;			}		}	}	for (var p in o) {		if (m < o[p]) {			m = o[p];			ret = p;		}	}	return parseFloat(ret);}});dojo.requireIf(dojo.render.svg.capable, "dojo.widget.svg.Chart");dojo.requireIf(!dojo.render.svg.capable && dojo.render.vml.capable, "dojo.widget.vml.Chart");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -