parent
78a6292b5f
commit
73c9f26efb
@ -0,0 +1,235 @@
|
|||||||
|
/**
|
||||||
|
* This is a charting wrapper, it is designed to simplify the interface to d3
|
||||||
|
* dependencies:
|
||||||
|
* - jqplot.js charting library http://d3js.org for documentation and more
|
||||||
|
* - utils.js has utilities and design patterns used for internal purposes
|
||||||
|
* - dom.js creates legend objects
|
||||||
|
*/
|
||||||
|
|
||||||
|
if(!jx){
|
||||||
|
var jx = {}
|
||||||
|
}
|
||||||
|
jx.chart = {} ;
|
||||||
|
|
||||||
|
|
||||||
|
jx.jqplot = {}
|
||||||
|
/***
|
||||||
|
* adding dependencies and libraries in case they are overwhelming for users
|
||||||
|
* This
|
||||||
|
*/
|
||||||
|
jx.jqplot.init = function(){
|
||||||
|
body = document.getElementsByTagName('head') ;
|
||||||
|
|
||||||
|
if(body != null){
|
||||||
|
body = body [0]
|
||||||
|
link = jx.dom.get.instance('LINK') ;
|
||||||
|
link.href = 'https://the-phi.com/pub/js/jqplot/jqplot.css' ;
|
||||||
|
link.rel = 'stylesheet'
|
||||||
|
link.type = 'type/css'
|
||||||
|
document.head.appendChild(link);
|
||||||
|
var url = [
|
||||||
|
'https://the-phi.com/pub/js/jqplot/excanvas.js',
|
||||||
|
'https://the-phi.com/pub/js/jqplot/jqplot.js',
|
||||||
|
'https://the-phi.com/pub/js/jqplot/plugins/jqplot.mobile.js',
|
||||||
|
'https://the-phi.com/pub/js/jqplot/plugins/jqplot.barRenderer.js',
|
||||||
|
'https://the-phi.com/pub/js/jqplot/plugins/jqplot.donutRenderer.js',
|
||||||
|
'https://the-phi.com/pub/js/jqplot/plugins/jqplot.categoryAxisRenderer.js',
|
||||||
|
'https://the-phi.com/pub/js/jqplot/plugins/jqplot.canvasAxisLabelRenderer.js',
|
||||||
|
'https://the-phi.com/pub/js/jqplot/plugins/jqplot.pointLabels.js',
|
||||||
|
'https://the-phi.com/pub/js/jqplot/plugins/jqplot.canvasTextRenderer.js'
|
||||||
|
] ;
|
||||||
|
// for(i in url){
|
||||||
|
// script = jx.dom.get.instance('SCRIPT') ;
|
||||||
|
// script.setAttribute('src',url[i]) ;
|
||||||
|
// script.language = 'javascript'
|
||||||
|
// document.head.appendChild(script)
|
||||||
|
// }
|
||||||
|
jx.utils.patterns.visitor(url,function(_url_){
|
||||||
|
script = jx.dom.get.instance('SCRIPT') ;
|
||||||
|
script.setAttribute('src',_url_) ;
|
||||||
|
script.language = 'javascript'
|
||||||
|
document.write(script.innerHTML)
|
||||||
|
|
||||||
|
// document.head.appendChild(script)
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
jx.jqplot.line = {}
|
||||||
|
jx.jqplot.line.options= function(){
|
||||||
|
var options = {
|
||||||
|
series:[{showMarker:true}],
|
||||||
|
grid:{
|
||||||
|
drawGridLines:false,
|
||||||
|
background:'white',
|
||||||
|
borderColor:'white'
|
||||||
|
},
|
||||||
|
seriesDefaults:{
|
||||||
|
rendererOptions: {
|
||||||
|
smooth: true,
|
||||||
|
animation: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
pointLabels: {show: false}
|
||||||
|
},
|
||||||
|
axes:{
|
||||||
|
xaxis:{
|
||||||
|
tickOptions:{
|
||||||
|
showGridline: true
|
||||||
|
},
|
||||||
|
// label:'Angle (radians)'
|
||||||
|
|
||||||
|
renderer: $.jqplot.CategoryAxisRenderer,
|
||||||
|
min:0,
|
||||||
|
pad:2
|
||||||
|
},
|
||||||
|
yaxis:{
|
||||||
|
// label:'Cosine'
|
||||||
|
min:0,
|
||||||
|
tickOptions:{
|
||||||
|
showGridline: false
|
||||||
|
},
|
||||||
|
labelRenderer: $.jqplot.CanvasAxisLabelRenderer
|
||||||
|
}
|
||||||
|
},
|
||||||
|
legend:{}
|
||||||
|
} ;
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @id DOM identifier
|
||||||
|
* @series matrix of values to be ploted
|
||||||
|
* @labels xaxis labels
|
||||||
|
* @lnames names of series (vectors in the matrix)
|
||||||
|
*/
|
||||||
|
jx.jqplot.line.render = function(id,series,labels,lnames){
|
||||||
|
jx.dom.set.value(id,'')
|
||||||
|
var options = jx.jqplot.line.options() ;
|
||||||
|
options.axes.xaxis.ticks = labels ;
|
||||||
|
if(series.length > 1){
|
||||||
|
options.legend.show = true
|
||||||
|
options.legend.location = 'ne'
|
||||||
|
options.legend.placement = 'outsideGrid'
|
||||||
|
options.series = lnames;
|
||||||
|
}
|
||||||
|
$.jqplot(id,series,options)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
jx.jqplot.bar = {}
|
||||||
|
jx.jqplot.bar.options = function(){
|
||||||
|
var options = {
|
||||||
|
grid:{
|
||||||
|
background:'white',
|
||||||
|
drawGridLines:false,
|
||||||
|
borderColor:'white'
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
seriesDefaults:{
|
||||||
|
renderer:$.jqplot.BarRenderer,
|
||||||
|
|
||||||
|
rendererOptions: {
|
||||||
|
highlightMouseDown: true,
|
||||||
|
// smooth: true,
|
||||||
|
animation: {
|
||||||
|
speed:900,
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
pointLabels: {show: true}
|
||||||
|
},
|
||||||
|
axes: {
|
||||||
|
xaxis: {
|
||||||
|
tickOptions:{
|
||||||
|
showGridline: false
|
||||||
|
},
|
||||||
|
renderer: $.jqplot.CategoryAxisRenderer,
|
||||||
|
// ticks:labels,
|
||||||
|
showTickMarks:false,
|
||||||
|
pad:0
|
||||||
|
},
|
||||||
|
yaxis:{
|
||||||
|
tickOptions:{
|
||||||
|
showGridline: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
// show: keys.length > 1,
|
||||||
|
location: 'ne',
|
||||||
|
xoffset:2,
|
||||||
|
placement: 'outsideGrid'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Creating a bar chart (columns actually)
|
||||||
|
* @id DOM identifier
|
||||||
|
* @series array of matrices of values (in the y-axis)
|
||||||
|
* @labels x-axis labels
|
||||||
|
* @lnames names of vectors in the series
|
||||||
|
*/
|
||||||
|
jx.jqplot.bar.render = function(id,series,labels,lnames){
|
||||||
|
jx.dom.set.value(id,'')
|
||||||
|
var options = jx.jqplot.bar.options()
|
||||||
|
options.axes.xaxis.ticks = labels ;
|
||||||
|
options.legend.show = true
|
||||||
|
options.series = lnames;
|
||||||
|
$.jqplot(id, series,options)
|
||||||
|
|
||||||
|
}
|
||||||
|
jx.jqplot.stackedBar = {}
|
||||||
|
jx.jqplot.stackedBar.options = jx.jqplot.bar.options ;
|
||||||
|
jx.jqplot.stackedBar.render = function(id,series,label,lnames){
|
||||||
|
jx.dom.set.value(id,'')
|
||||||
|
var options = jx.jqplot.stackedBar.options()
|
||||||
|
options.axes.xaxis.ticks = labels ;
|
||||||
|
options.legend.show = true
|
||||||
|
|
||||||
|
options.series = lnames;
|
||||||
|
options.stackSeries= true,
|
||||||
|
// options.seriesDefaults.label = lnames[0];
|
||||||
|
options.seriesDefaults.pointLabels.show= false;
|
||||||
|
$.jqplot(id, series,options)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
jx.jqplot.donut = {}
|
||||||
|
jx.jqplot.donut.options= function(){
|
||||||
|
var options = {
|
||||||
|
grid:{
|
||||||
|
drawGridLines:false,
|
||||||
|
background:'transparent',
|
||||||
|
borderColor:'white'
|
||||||
|
},
|
||||||
|
|
||||||
|
seriesDefaults: {
|
||||||
|
|
||||||
|
renderer:$.jqplot.DonutRenderer,
|
||||||
|
rendererOptions:{
|
||||||
|
// fill:false,
|
||||||
|
sliceMargin: 3,
|
||||||
|
startAngle: -90,
|
||||||
|
showDataLabels: true,
|
||||||
|
// dataLabels: 'value'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
legend: { show:true, location: 'e' }
|
||||||
|
}
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @id DOM identifier
|
||||||
|
* @series vector of values
|
||||||
|
* @labels labels of the values in the series
|
||||||
|
*/
|
||||||
|
jx.jqplot.donut.render = function(id,series){
|
||||||
|
jx.dom.set.value(id,'')
|
||||||
|
var options = jx.jqplot.donut.options() ;
|
||||||
|
$.jqplot(id,series,options)
|
||||||
|
}
|
Loading…
Reference in new issue