@@ -248,7 +248,6 @@ function d3_renderPie(params) {
248
248
function hc_convertMultiBar ( params ) {
249
249
var hc_data_series = [ ] ;
250
250
var x_labels = { "categories" : [ ] } ;
251
- hc_data_series . push ( x_labels ) ;
252
251
for ( var i = 0 ; i < params . data_series . length ; i ++ ) {
253
252
var os = params . data_series [ i ] ;
254
253
var ns = { } ;
@@ -260,6 +259,7 @@ function hc_convertMultiBar(params){
260
259
}
261
260
hc_data_series . push ( ns )
262
261
}
262
+ hc_data_series . push ( x_labels ) ;
263
263
return hc_data_series
264
264
}
265
265
@@ -300,7 +300,7 @@ function hc_renderMultiBar(params){
300
300
text : titles . subtitle_text
301
301
} ,
302
302
xAxis : {
303
- categories : data_series [ 0 ] . categories ,
303
+ categories : data_series . pop ( ) . categories ,
304
304
title : {
305
305
text : titles . x_axis_label
306
306
}
@@ -323,7 +323,103 @@ function hc_renderMultiBar(params){
323
323
borderWidth : 0
324
324
}
325
325
} ,
326
- series : data_series . slice ( 1 )
326
+ series : data_series
327
+ } ) ;
328
+ }
329
+
330
+ function hc_convertStackedMultiBar ( params ) {
331
+ var hc_data_series = [ ] ;
332
+ var x_labels = { "categories" : [ ] } ;
333
+ for ( var i = 0 ; i < params . data_series . length ; i ++ ) {
334
+ var os = params . data_series [ i ] ;
335
+ x_labels . categories . push ( os [ "key" ] ) ;
336
+ for ( var j = 0 ; j < os . values . length ; j ++ ) {
337
+ if ( i == 0 ) {
338
+ var ns = {
339
+ "name" : os . values [ j ] . label ,
340
+ "data" : [ os . values [ j ] . value ]
341
+ } ;
342
+ hc_data_series . push ( ns )
343
+ } else {
344
+ hc_data_series [ j ] [ "data" ] . push ( os . values [ j ] . value )
345
+ }
346
+ }
347
+ }
348
+ hc_data_series . push ( x_labels ) ;
349
+ return hc_data_series
350
+ }
351
+
352
+ function hc_renderStackedMultiBar ( params ) {
353
+ var data_series = params . data_series ;
354
+ var selector = params . div_selector ;
355
+ var options = params . options ;
356
+ var be_3d = options . draw_3d ;
357
+
358
+ // get chart titles, if any
359
+ var titles = get_chart_titles ( params ) ;
360
+
361
+ var chart = new Highcharts . Chart ( {
362
+ chart : {
363
+ renderTo : selector ,
364
+ type : 'column' ,
365
+ options3d : {
366
+ enabled : be_3d ,
367
+ alpha : 15 ,
368
+ beta : 15 ,
369
+ depth : 50 ,
370
+ viewDistance : 55
371
+ }
372
+ } ,
373
+ credits : {
374
+ enabled : false
375
+ } ,
376
+ title : {
377
+ text : titles . title_text
378
+ } ,
379
+ subtitle : {
380
+ text : titles . subtitle_text
381
+ } ,
382
+ xAxis : {
383
+ categories : data_series . pop ( ) . categories ,
384
+ title : {
385
+ text : titles . x_axis_label
386
+ }
387
+ } ,
388
+ yAxis : {
389
+ min : 0 ,
390
+ stackLabels : {
391
+ enabled : true ,
392
+ style : {
393
+ fontWeight : 'bold' ,
394
+ color : ( Highcharts . theme && Highcharts . theme . textColor ) || 'gray'
395
+ }
396
+ } ,
397
+ title : {
398
+ text : titles . y_axis_label
399
+ }
400
+ } ,
401
+ tooltip : {
402
+ formatter : function ( ) {
403
+ return '<b>' + this . x + '</b><br/>' +
404
+ this . series . name + ': ' + this . y + '<br/>' +
405
+ 'Total: ' + this . point . stackTotal ;
406
+ }
407
+ } ,
408
+ plotOptions : {
409
+ column : {
410
+ pointPadding : 0.2 ,
411
+ borderWidth : 0 ,
412
+ stacking : 'normal' ,
413
+ dataLabels : {
414
+ enabled : true ,
415
+ color : ( Highcharts . theme && Highcharts . theme . dataLabelsColor ) || 'white' ,
416
+ style : {
417
+ textShadow : '0 0 3px black'
418
+ }
419
+ } ,
420
+ }
421
+ } ,
422
+ series : data_series
327
423
} ) ;
328
424
}
329
425
@@ -373,10 +469,6 @@ function d3_renderMultiBar(params) {
373
469
} ) ;
374
470
}
375
471
376
- function hc_convertHorizontalMultibar ( params ) {
377
- return hc_convertMultiBar ( params )
378
- }
379
-
380
472
function hc_renderHorizontalMultibar ( params ) {
381
473
hc_renderMultiBar ( params )
382
474
}
@@ -468,7 +560,7 @@ function get_chart_titles(params){
468
560
"debug" : false ,
469
561
470
562
// type of graph to draw
471
- // values: pie, multibar, horizontal_multibar
563
+ // values: pie, multibar, horizontal_multibar, stacked_multibar
472
564
"type" : "pie" ,
473
565
474
566
// the provider of the charts. either d3 or hc (for HighCharts)
@@ -494,10 +586,15 @@ function get_chart_titles(params){
494
586
"multibar_y_tick_format" : ',.0f' ,
495
587
"multibar_transition_duration" : 500 ,
496
588
"multibar_controls" : false ,
497
-
589
+
590
+ // convert/render functions for stacked bar chart
591
+ "stacked_multibar_render" : hc_renderStackedMultiBar ,
592
+ "stacked_multibar_convert" : hc_convertStackedMultiBar ,
593
+ //"stacked_multibar_convert" : function(params) { return params.data_series },
594
+
498
595
// convert/render functions for horizontal bar chart
499
596
"horizontal_multibar_render" : hc_renderHorizontalMultibar ,
500
- "horizontal_multibar_convert" : hc_convertHorizontalMultibar ,
597
+ "horizontal_multibar_convert" : hc_convertMultiBar ,
501
598
"horizontal_multibar_show_values" : true ,
502
599
"horizontal_multibar_tool_tips" : true ,
503
600
"horizontal_multibar_controls" : false ,
0 commit comments