123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- /**
- * This is a charting wrapper, it is designed to simplify the interface to d3
- * dependencies:
- * - jqplot.js charting library http://jqplot.org for documentation and more
- * - utils.js has utilities and design patterns used for internal purposes
- * - dom.js creates legend objects
- *
- * @TODO: Find a way to mix & match charts. Some people think it's visually appealing.
- */
- 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 = {
- animateReplot:true,
- 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;
- }
- return $.jqplot(id,series,options)
- }
- jx.jqplot.bar = {}
- jx.jqplot.bar.options = function(){
- var options = {
- animateReplot:true,
- 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',
- show:true
- }
- }
- 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;
- return $.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;
- return $.jqplot(id, series,options)
- }
- jx.jqplot.donut = {}
- jx.jqplot.donut.options= function(){
- var options = {
- animate:true,
- animateReplot:true,
- grid:{
- drawGridLines:false,
- background:'transparent',
- borderColor:'white',
- borderWidth:'1px'
- },
- seriesDefaults: {
- renderer:$.jqplot.DonutRenderer,
- rendererOptions:{
- // fill:false,
- sliceMargin: 3,
- startAngle: -90,
- showDataLabels: true,
- // dataLabels: 'value'
- dataLabels:'percent'
- }
- },
- 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() ;
- return $.jqplot(id,series,options)
- }
|