PluginProbe
Chartify – WordPress Chart Plugin / 3.1.5
Chartify – WordPress Chart Plugin v3.1.5
3.8.1 3.8.0 3.7.9 3.7.8 3.7.7 3.7.6 3.7.5 trunk 1.0.0 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 All 84 releases
chart-builder / public / js / chart-builder-public-google.js

chart-builder-public-google.js in Chartify – WordPress Chart Plugin 3.1.5, at public/js/chart-builder-public-google.js

1,275 lines 42.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function($) {
2 'use strict';
3
4 function ChartBuilderGoogleCharts(element, options) {
5 this.el = element;
6 this.$el = $(element);
7 this.htmlClassPrefix = 'ays-chart-';
8 this.htmlNamePrefix = 'ays_';
9 this.uniqueId;
10 this.dbData = undefined;
11 this.chartSourceData = undefined;
12 this.chartObj = undefined;
13 this.chartOptions = null;
14 this.chartData = null;
15 this.chartTempData = null;
16 this.chartType = 'pie_chart';
17 this.chartId = null;
18
19 this.chartSources = {
20 'line_chart' : 'Line Chart',
21 'bar_chart' : 'Bar Chart',
22 'pie_chart' : 'Pie Chart',
23 'column_chart' : 'Column Chart',
24 'org_chart' : 'Org Chart',
25 'donut_chart' : 'Donut Chart',
26 }
27
28 this.init();
29
30 return this;
31 }
32
33 ChartBuilderGoogleCharts.prototype.init = function() {
34 var _this = this;
35 _this.uniqueId = _this.$el.data('id');
36
37 if ( typeof window['aysChartOptions'+_this.uniqueId] != 'undefined' ) {
38 _this.dbData = JSON.parse( atob( window['aysChartOptions'+_this.uniqueId]['aysChartOptions'] ) );
39 }
40
41 _this.setEvents();
42 }
43
44 ChartBuilderGoogleCharts.prototype.setEvents = function(e){
45 var _this = this;
46
47 _this.chartId = _this.dbData.id;
48 _this.chartType = _this.dbData.chart_type;
49
50 _this.loadChartBySource();
51 _this.setClickEventOnExportButtons();
52
53 $(document).on('click', '.elementor-tab-title, .e-n-tab-title, .ays-load-chart-source', function (e) {
54 _this.loadChartBySource();
55 });
56 $(document).on('change', '.ays-load-chart-source', function (e) {
57 _this.loadChartBySource();
58 });
59 }
60
61 // Load charts by given type main function
62 ChartBuilderGoogleCharts.prototype.loadChartBySource = function(){
63 var _this = this;
64
65 if(typeof _this.chartType !== undefined && _this.chartType){
66 switch (_this.chartType) {
67 case 'pie_chart':
68 _this.pieChartView();
69 break;
70 case 'bar_chart':
71 _this.barChartView();
72 break;
73 case 'column_chart':
74 _this.columnChartView();
75 break;
76 case 'line_chart':
77 _this.lineChartView();
78 break;
79 case 'donut_chart':
80 _this.donutChartView();
81 break;
82 case 'org_chart':
83 _this.orgChartView();
84 break;
85 default:
86 _this.pieChartView();
87 break;
88 }
89 }
90 }
91
92 // Load chart by pie chart
93 ChartBuilderGoogleCharts.prototype.pieChartView = function(){
94 var _this = this;
95 var getChartSource = _this.dbData.source;
96
97 var dataTypes = _this.chartConvertData( getChartSource );
98
99 var settings = _this.dbData.options;
100 var nSettings = _this.configOptionsForCharts(settings);
101
102 var userLocale = navigator.language || navigator.userLanguage || 'en';
103
104 /* == Google part == */
105 google.charts.load('current', {'packages':['corechart'], 'language': userLocale});
106 google.charts.setOnLoadCallback(drawChart);
107
108 function drawChart() {
109 _this.chartData = google.visualization.arrayToDataTable( dataTypes );
110
111 _this.chartOptions = {
112 fontSize: nSettings.chartFontSize,
113 chartArea: {
114 left: nSettings.chartLeftMargin,
115 right: nSettings.chartRightMargin,
116 top: nSettings.chartTopMargin,
117 bottom: nSettings.chartBottomMargin,
118 },
119 backgroundColor: {
120 fill: nSettings.backgroundColor,
121 // strokeWidth: nSettings.borderWidth,
122 // stroke: nSettings.borderColor
123 },
124 enableInteractivity: nSettings.enableInteractivity,
125 legend: {
126 position: nSettings.legendPosition,
127 alignment: nSettings.legendAlignment,
128 textStyle: {
129 color: nSettings.legendColor,
130 fontSize: nSettings.legendFontSize,
131 italic: nSettings.legendItalicText,
132 bold: nSettings.legendBoldText,
133 }
134 },
135 tooltip: {
136 trigger: nSettings.tooltipTrigger,
137 showColorCode: nSettings.showColorCode,
138 text: nSettings.tooltipText,
139 textStyle: {
140 color: nSettings.tooltipTextColor,
141 fontSize: nSettings.tooltipFontSize,
142 italic: nSettings.tooltipItalicText,
143 bold: nSettings.tooltipBoldText,
144 }
145 },
146 pieStartAngle: nSettings.rotationDegree,
147 pieSliceBorderColor: nSettings.sliceBorderColor,
148 reverseCategories: nSettings.reverseCategories,
149 pieSliceText: nSettings.sliceText,
150 sliceVisibilityThreshold: nSettings.dataGroupingLimit,
151 pieResidueSliceLabel: nSettings.dataGroupingLabel,
152 pieResidueSliceColor: nSettings.dataGroupingColor,
153 slices: {}
154 };
155
156 for (var i = 0; i < dataTypes.length - 1; i++) {
157 _this.chartOptions.slices[i] = {
158 color: nSettings.sliceColor[i],
159 offset: typeof nSettings.sliceOffset[i] !== 'undefined' ? nSettings.sliceOffset[i] : 0,
160 textStyle: {
161 color: nSettings.sliceTextColor[i],
162 },
163 }
164 }
165
166 _this.chartObj = new google.visualization.PieChart( document.getElementById(_this.htmlClassPrefix + _this.chartType + _this.uniqueId));
167
168 _this.chartObj.draw( _this.chartData, _this.chartOptions );
169 _this.resizeChart();
170 }
171 /* */
172 }
173
174 // Load chart by bar chart
175 ChartBuilderGoogleCharts.prototype.barChartView = function(){
176 var _this = this;
177 var getChartSource = _this.dbData.source;
178 var dataTypes = _this.multiColumnChartConvertData( getChartSource );
179
180 var settings = _this.dbData.options;
181 var nSettings = _this.configOptionsForCharts(settings);
182
183 var userLocale = navigator.language || navigator.userLanguage || 'en';
184
185 /* == Google part == */
186 google.charts.load('current', {'packages':['corechart'], 'language': userLocale});
187 google.charts.setOnLoadCallback(drawChart);
188
189 function drawChart() {
190 dataTypes = nSettings.enableRowSettings ? _this.setRowOptions(dataTypes, nSettings, true) : dataTypes;
191
192 _this.chartData = google.visualization.arrayToDataTable(dataTypes);
193
194 _this.chartOptions = {
195 fontSize: nSettings.chartFontSize,
196 backgroundColor: {
197 fill: nSettings.backgroundColor,
198 // strokeWidth: nSettings.borderWidth,
199 // stroke: nSettings.borderColor
200 },
201 chartArea: {
202 backgroundColor: {
203 fill: nSettings.chartBackgroundColor,
204 stroke: nSettings.chartBorderColor,
205 strokeWidth: nSettings.chartBorderWidth
206 },
207 left: nSettings.chartLeftMargin,
208 right: nSettings.chartRightMargin,
209 top: nSettings.chartTopMargin,
210 bottom: nSettings.chartBottomMargin,
211 },
212 enableInteractivity: nSettings.enableInteractivity,
213 theme: nSettings.maximizedView,
214 legend: {
215 position: nSettings.legendPosition,
216 alignment: nSettings.legendAlignment,
217 textStyle: {
218 color: nSettings.legendColor,
219 fontSize: nSettings.legendFontSize,
220 italic: nSettings.legendItalicText,
221 bold: nSettings.legendBoldText,
222 }
223 },
224 tooltip: {
225 trigger: nSettings.tooltipTrigger,
226 showColorCode: nSettings.showColorCode,
227 textStyle: {
228 color: nSettings.tooltipTextColor,
229 fontSize: nSettings.tooltipFontSize,
230 italic: nSettings.tooltipItalicText,
231 bold: nSettings.tooltipBoldText,
232 }
233 },
234 hAxis: {
235 title: nSettings.hAxisTitle,
236 textPosition: nSettings.hAxisTextPosition,
237 direction: nSettings.hAxisDirection,
238 baselineColor: nSettings.hAxisBaselineColor,
239 textStyle: {
240 color: nSettings.hAxisTextColor,
241 fontSize: nSettings.hAxisTextFontSize,
242 italic: nSettings.hAxisItalicText,
243 bold: nSettings.hAxisBoldText,
244 },
245 slantedText: nSettings.hAxisSlantedText,
246 slantedTextAngle: nSettings.hAxisSlantedTextAngle,
247 format: nSettings.hAxisFormat,
248 titleTextStyle: {
249 fontSize: nSettings.hAxisLabelFontSize,
250 color: nSettings.hAxisLabelColor,
251 italic: nSettings.hAxisItalicTitle,
252 bold: nSettings.hAxisBoldTitle,
253 },
254 viewWindow: {
255 min: nSettings.hAxisMinValue,
256 max: nSettings.hAxisMaxValue,
257 },
258 gridlines: {
259 count: nSettings.hAxisGridlinesCount,
260 color: nSettings.hAxisGridlinesColor,
261 },
262 minorGridlines: {
263 color: nSettings.hAxisMinorGridlinesColor,
264 },
265 },
266 vAxis: {
267 title: nSettings.vAxisTitle,
268 textPosition: nSettings.vAxisTextPosition,
269 direction: nSettings.vAxisDirection,
270 baselineColor: nSettings.vAxisBaselineColor,
271 textStyle: {
272 color: nSettings.vAxisTextColor,
273 fontSize: nSettings.vAxisTextFontSize,
274 italic: nSettings.vAxisItalicText,
275 bold: nSettings.vAxisBoldText,
276 },
277 format: nSettings.vAxisFormat,
278 titleTextStyle: {
279 fontSize: nSettings.vAxisLabelFontSize,
280 color: nSettings.vAxisLabelColor,
281 italic: nSettings.vAxisItalicTitle,
282 bold: nSettings.vAxisBoldTitle,
283 },
284 viewWindow: {
285 min: nSettings.vAxisMinValue,
286 max: nSettings.vAxisMaxValue,
287 },
288 gridlines: {
289 count: nSettings.vAxisGridlinesCount,
290 color: nSettings.vAxisGridlinesColor,
291 },
292 minorGridlines: {
293 color: nSettings.vAxisMinorGridlinesColor,
294 },
295 },
296 focusTarget: nSettings.focusTarget,
297 isStacked: nSettings.isStacked,
298 dataOpacity: nSettings.opacity,
299 bar: {
300 groupWidth: nSettings.groupWidth
301 },
302 series: {},
303 };
304
305 for (var i = 0; i < dataTypes[0].length; i++) {
306 _this.chartOptions.series[i] = {
307 color: nSettings.seriesColor[i],
308 visibleInLegend: nSettings.seriesVisibleInLegend[i] == 'on' ? true : (typeof nSettings.seriesColor[i] !== 'undefined' ? false : true),
309 }
310 }
311
312 if (nSettings.enableAnimation) {
313 _this.chartOptions.animation = {
314 startup: nSettings.animationStartup,
315 duration: nSettings.animationDuration,
316 easing: nSettings.animationEasing,
317 }
318 }
319
320 _this.chartObj = new google.visualization.BarChart(document.getElementById(_this.htmlClassPrefix + _this.chartType + _this.uniqueId));
321
322 _this.chartObj.draw( _this.chartData, _this.chartOptions );
323 _this.resizeChart();
324 }
325 /* */
326 }
327
328 // Load chart by column chart
329 ChartBuilderGoogleCharts.prototype.columnChartView = function(){
330 var _this = this;
331 var getChartSource = _this.dbData.source;
332
333 // Collect data in new array for chart rendering (Column chart)
334 var dataTypes = _this.multiColumnChartConvertData( getChartSource );
335
336 var settings = _this.dbData.options;
337 var nSettings = _this.configOptionsForCharts(settings);
338
339 var userLocale = navigator.language || navigator.userLanguage || 'en';
340
341 /* == Google part == */
342 google.charts.load('current', {'packages':['corechart'], 'language': userLocale});
343 google.charts.setOnLoadCallback(drawChart);
344
345 function drawChart() {
346 dataTypes = nSettings.enableRowSettings ? _this.setRowOptions(dataTypes, nSettings, true) : dataTypes;
347
348 _this.chartData = google.visualization.arrayToDataTable(dataTypes);
349
350 _this.chartOptions = {
351 fontSize: nSettings.chartFontSize,
352 backgroundColor: {
353 fill: nSettings.backgroundColor,
354 // strokeWidth: nSettings.borderWidth,
355 // stroke: nSettings.borderColor
356 },
357 chartArea: {
358 backgroundColor: {
359 fill: nSettings.chartBackgroundColor,
360 stroke: nSettings.chartBorderColor,
361 strokeWidth: nSettings.chartBorderWidth
362 },
363 left: nSettings.chartLeftMargin,
364 right: nSettings.chartRightMargin,
365 top: nSettings.chartTopMargin,
366 bottom: nSettings.chartBottomMargin,
367 },
368 enableInteractivity: nSettings.enableInteractivity,
369 theme: nSettings.maximizedView,
370 legend: {
371 position: nSettings.legendPosition,
372 alignment: nSettings.legendAlignment,
373 textStyle: {
374 color: nSettings.legendColor,
375 fontSize: nSettings.legendFontSize,
376 italic: nSettings.legendItalicText,
377 bold: nSettings.legendBoldText,
378 }
379 },
380 tooltip: {
381 trigger: nSettings.tooltipTrigger,
382 showColorCode: nSettings.showColorCode,
383 textStyle: {
384 color: nSettings.tooltipTextColor,
385 fontSize: nSettings.tooltipFontSize,
386 italic: nSettings.tooltipItalicText,
387 bold: nSettings.tooltipBoldText,
388 }
389 },
390 hAxis: {
391 title: nSettings.hAxisTitle,
392 textPosition: nSettings.hAxisTextPosition,
393 direction: nSettings.hAxisDirection,
394 baselineColor: nSettings.hAxisBaselineColor,
395 textStyle: {
396 color: nSettings.hAxisTextColor,
397 fontSize: nSettings.hAxisTextFontSize,
398 italic: nSettings.hAxisItalicText,
399 bold: nSettings.hAxisBoldText,
400 },
401 slantedText: nSettings.hAxisSlantedText,
402 slantedTextAngle: nSettings.hAxisSlantedTextAngle,
403 format: nSettings.hAxisFormat,
404 titleTextStyle: {
405 fontSize: nSettings.hAxisLabelFontSize,
406 color: nSettings.hAxisLabelColor,
407 italic: nSettings.hAxisItalicTitle,
408 bold: nSettings.hAxisBoldTitle,
409 },
410 viewWindow: {
411 min: nSettings.hAxisMinValue,
412 max: nSettings.hAxisMaxValue,
413 },
414 gridlines: {
415 count: nSettings.hAxisGridlinesCount,
416 color: nSettings.hAxisGridlinesColor,
417 },
418 minorGridlines: {
419 color: nSettings.hAxisMinorGridlinesColor,
420 },
421 showTextEvery: nSettings.hAxisShowTextEvery
422 },
423 vAxis: {
424 title: nSettings.vAxisTitle,
425 textPosition: nSettings.vAxisTextPosition,
426 direction: nSettings.vAxisDirection,
427 baselineColor: nSettings.vAxisBaselineColor,
428 textStyle: {
429 color: nSettings.vAxisTextColor,
430 fontSize: nSettings.vAxisTextFontSize,
431 italic: nSettings.vAxisItalicText,
432 bold: nSettings.vAxisBoldText,
433 },
434 format: nSettings.vAxisFormat,
435 titleTextStyle: {
436 fontSize: nSettings.vAxisLabelFontSize,
437 color: nSettings.vAxisLabelColor,
438 italic: nSettings.vAxisItalicTitle,
439 bold: nSettings.vAxisBoldTitle,
440 },
441 viewWindow: {
442 min: nSettings.vAxisMinValue,
443 max: nSettings.vAxisMaxValue,
444 },
445 gridlines: {
446 count: nSettings.vAxisGridlinesCount,
447 color: nSettings.vAxisGridlinesColor,
448 },
449 minorGridlines: {
450 color: nSettings.vAxisMinorGridlinesColor,
451 },
452 },
453 focusTarget: nSettings.focusTarget,
454 isStacked: nSettings.isStacked,
455 dataOpacity: nSettings.opacity,
456 bar: {
457 groupWidth: nSettings.groupWidth
458 },
459 series: {},
460 };
461
462 for (var i = 0; i < dataTypes[0].length; i++) {
463 _this.chartOptions.series[i] = {
464 color: nSettings.seriesColor[i],
465 visibleInLegend: nSettings.seriesVisibleInLegend[i] == 'on' ? true : (typeof nSettings.seriesColor[i] !== 'undefined' ? false : true),
466 }
467 }
468
469 if (nSettings.enableAnimation) {
470 _this.chartOptions.animation = {
471 startup: nSettings.animationStartup,
472 duration: nSettings.animationDuration,
473 easing: nSettings.animationEasing,
474 }
475 }
476
477 _this.chartObj = new google.visualization.ColumnChart(document.getElementById(_this.htmlClassPrefix + _this.chartType + _this.uniqueId));
478
479 _this.chartObj.draw( _this.chartData, _this.chartOptions );
480 _this.resizeChart();
481 }
482 /* */
483 }
484
485 // Load chart by line chart
486 ChartBuilderGoogleCharts.prototype.lineChartView = function(){
487 var _this = this;
488 var getChartSource = _this.dbData.source;
489 var dataTypes = _this.multiColumnChartConvertData(getChartSource);
490
491 var settings = _this.dbData.options;
492 var nSettings = _this.configOptionsForCharts(settings);
493
494 var userLocale = navigator.language || navigator.userLanguage || 'en';
495
496 /* == Google part == */
497 google.charts.load('current', {'packages':['corechart'], 'language': userLocale});
498 google.charts.setOnLoadCallback(drawChart);
499
500 function drawChart() {
501 dataTypes = nSettings.enableRowSettings ? _this.setRowOptions(dataTypes, nSettings, true) : dataTypes;
502
503 _this.chartData = google.visualization.arrayToDataTable(dataTypes);
504
505 _this.chartOptions = {
506 fontSize: nSettings.chartFontSize,
507 backgroundColor: {
508 fill: nSettings.backgroundColor,
509 // strokeWidth: nSettings.borderWidth,
510 // stroke: nSettings.borderColor
511 },
512 chartArea: {
513 backgroundColor: {
514 fill: nSettings.chartBackgroundColor,
515 stroke: nSettings.chartBorderColor,
516 strokeWidth: nSettings.chartBorderWidth
517 },
518 left: nSettings.chartLeftMargin,
519 right: nSettings.chartRightMargin,
520 top: nSettings.chartTopMargin,
521 bottom: nSettings.chartBottomMargin,
522 },
523 enableInteractivity: nSettings.enableInteractivity,
524 theme: nSettings.maximizedView,
525 legend: {
526 position: nSettings.legendPosition,
527 alignment: nSettings.legendAlignment,
528 textStyle: {
529 color: nSettings.legendColor,
530 fontSize: nSettings.legendFontSize,
531 italic: nSettings.legendItalicText,
532 bold: nSettings.legendBoldText,
533 }
534 },
535 tooltip: {
536 trigger: nSettings.tooltipTrigger,
537 showColorCode: nSettings.showColorCode,
538 textStyle: {
539 color: nSettings.tooltipTextColor,
540 fontSize: nSettings.tooltipFontSize,
541 italic: nSettings.tooltipItalicText,
542 bold: nSettings.tooltipBoldText,
543 }
544 },
545 hAxis: {
546 title: nSettings.hAxisTitle,
547 textPosition: nSettings.hAxisTextPosition,
548 direction: nSettings.hAxisDirection,
549 baselineColor: nSettings.hAxisBaselineColor,
550 textStyle: {
551 color: nSettings.hAxisTextColor,
552 fontSize: nSettings.hAxisTextFontSize,
553 italic: nSettings.hAxisItalicText,
554 bold: nSettings.hAxisBoldText,
555 },
556 slantedText: nSettings.hAxisSlantedText,
557 slantedTextAngle: nSettings.hAxisSlantedTextAngle,
558 format: nSettings.hAxisFormat,
559 titleTextStyle: {
560 fontSize: nSettings.hAxisLabelFontSize,
561 color: nSettings.hAxisLabelColor,
562 italic: nSettings.hAxisItalicTitle,
563 bold: nSettings.hAxisBoldTitle,
564 },
565 viewWindow: {
566 min: nSettings.hAxisMinValue,
567 max: nSettings.hAxisMaxValue,
568 },
569 gridlines: {
570 count: nSettings.hAxisGridlinesCount,
571 color: nSettings.hAxisGridlinesColor,
572 },
573 minorGridlines: {
574 color: nSettings.hAxisMinorGridlinesColor,
575 },
576 showTextEvery: nSettings.hAxisShowTextEvery
577 },
578 vAxis: {
579 title: nSettings.vAxisTitle,
580 textPosition: nSettings.vAxisTextPosition,
581 direction: nSettings.vAxisDirection,
582 baselineColor: nSettings.vAxisBaselineColor,
583 textStyle: {
584 color: nSettings.vAxisTextColor,
585 fontSize: nSettings.vAxisTextFontSize,
586 italic: nSettings.vAxisItalicText,
587 bold: nSettings.vAxisBoldText,
588 },
589 format: nSettings.vAxisFormat,
590 titleTextStyle: {
591 fontSize: nSettings.vAxisLabelFontSize,
592 color: nSettings.vAxisLabelColor,
593 italic: nSettings.vAxisItalicTitle,
594 bold: nSettings.vAxisBoldTitle,
595 },
596 viewWindow: {
597 min: nSettings.vAxisMinValue,
598 max: nSettings.vAxisMaxValue,
599 },
600 gridlines: {
601 count: nSettings.vAxisGridlinesCount,
602 color: nSettings.vAxisGridlinesColor,
603 },
604 minorGridlines: {
605 color: nSettings.vAxisMinorGridlinesColor,
606 },
607 },
608 crosshair: {
609 opacity: nSettings.crosshairOpacity,
610 orientation: nSettings.crosshairOrientation,
611 trigger: nSettings.crosshairTrigger,
612 },
613 focusTarget: nSettings.focusTarget,
614 dataOpacity: nSettings.opacity,
615 lineWidth: nSettings.lineWidth,
616 selectionMode: nSettings.multipleSelection,
617 aggregationTarget: nSettings.multipleDataFormat,
618 pointShape: nSettings.pointShape,
619 pointSize: nSettings.pointSize,
620 orientation: nSettings.orientation,
621 interpolateNulls: nSettings.fillNulls,
622 lineDashStyle: nSettings.dashStyle,
623 series: {},
624 };
625
626 for (var i = 0; i < dataTypes[0].length; i++) {
627 _this.chartOptions.series[i] = {
628 color: nSettings.seriesColor[i],
629 visibleInLegend: nSettings.seriesVisibleInLegend[i] == 'on' ? true : (typeof nSettings.seriesColor[i] !== 'undefined' ? false : true),
630 lineWidth: nSettings.seriesLineWidth[i],
631 pointSize: nSettings.seriesPointSize[i],
632 pointShape: nSettings.seriesPointShape[i],
633 }
634 }
635
636 if (nSettings.enableAnimation) {
637 _this.chartOptions.animation = {
638 startup: nSettings.animationStartup,
639 duration: nSettings.animationDuration,
640 easing: nSettings.animationEasing,
641 }
642 }
643
644 _this.chartObj = new google.visualization.LineChart(document.getElementById(_this.htmlClassPrefix + _this.chartType + _this.uniqueId));
645
646
647 _this.chartObj.draw( _this.chartData, _this.chartOptions );
648 _this.resizeChart();
649 }
650 /* */
651 }
652
653 // Load chart by donut chart
654 ChartBuilderGoogleCharts.prototype.donutChartView = function(){
655 var _this = this;
656 var getChartSource = _this.dbData.source;
657
658 var dataTypes = _this.chartConvertData(getChartSource);
659
660 var settings = _this.dbData.options;
661 var nSettings = _this.configOptionsForCharts(settings);
662
663 var userLocale = navigator.language || navigator.userLanguage || 'en';
664
665 /* == Google part == */
666 google.charts.load('current', {'packages':['corechart'], 'language': userLocale});
667 google.charts.setOnLoadCallback(drawChart);
668
669 function drawChart() {
670 _this.chartData = google.visualization.arrayToDataTable( dataTypes );
671
672 _this.chartOptions = {
673 fontSize: nSettings.chartFontSize,
674 chartArea: {
675 left: nSettings.chartLeftMargin,
676 right: nSettings.chartRightMargin,
677 top: nSettings.chartTopMargin,
678 bottom: nSettings.chartBottomMargin,
679 },
680 backgroundColor: {
681 fill: nSettings.backgroundColor,
682 // strokeWidth: nSettings.borderWidth,
683 // stroke: nSettings.borderColor
684 },
685 enableInteractivity: nSettings.enableInteractivity,
686 legend: {
687 position: nSettings.legendPosition,
688 alignment: nSettings.legendAlignment,
689 textStyle: {
690 color: nSettings.legendColor,
691 fontSize: nSettings.legendFontSize,
692 italic: nSettings.legendItalicText,
693 bold: nSettings.legendBoldText,
694 }
695 },
696 tooltip: {
697 trigger: nSettings.tooltipTrigger,
698 showColorCode: nSettings.showColorCode,
699 text: nSettings.tooltipText,
700 textStyle: {
701 color: nSettings.tooltipTextColor,
702 fontSize: nSettings.tooltipFontSize,
703 italic: nSettings.tooltipItalicText,
704 bold: nSettings.tooltipBoldText,
705 }
706 },
707 pieStartAngle: nSettings.rotationDegree,
708 pieSliceBorderColor: nSettings.sliceBorderColor,
709 reverseCategories: nSettings.reverseCategories,
710 pieSliceText: nSettings.sliceText,
711 sliceVisibilityThreshold: nSettings.dataGroupingLimit,
712 pieResidueSliceLabel: nSettings.dataGroupingLabel,
713 pieResidueSliceColor: nSettings.dataGroupingColor,
714 pieHole: nSettings.holeSize,
715 slices: {}
716 };
717
718 for (var i = 0; i < dataTypes.length - 1; i++) {
719 _this.chartOptions.slices[i] = {
720 color: nSettings.sliceColor[i],
721 offset: typeof nSettings.sliceOffset[i] !== 'undefined' ? nSettings.sliceOffset[i] : 0,
722 textStyle: {
723 color: nSettings.sliceTextColor[i],
724 },
725 }
726 }
727
728 _this.chartObj = new google.visualization.PieChart( document.getElementById(_this.htmlClassPrefix + _this.chartType + _this.uniqueId) );
729
730 _this.chartObj.draw( _this.chartData, _this.chartOptions );
731 _this.resizeChart();
732 }
733 /* */
734 }
735
736 // Load chart by org chart
737 ChartBuilderGoogleCharts.prototype.orgChartView = function(){
738 var _this = this;
739 var getChartSource = _this.dbData.source;
740 var dataTypes = _this.orgChartConvertData(getChartSource);
741
742 var settings = _this.dbData.options;
743 var nSettings = _this.configOptionsForCharts(settings);
744
745 var userLocale = navigator.language || navigator.userLanguage || 'en';
746
747 /* == Google part == */
748 google.charts.load('current', {'packages':['orgchart'], 'language': userLocale});
749 google.charts.setOnLoadCallback(drawChart);
750
751 function drawChart() {
752 _this.chartData = new google.visualization.arrayToDataTable(dataTypes);
753
754 var view = new google.visualization.DataView(_this.chartData);
755 view.setColumns([0, 1, 2]);
756
757 _this.chartOptions = {
758 allowHtml: true,
759 size: nSettings.orgChartFontSize,
760 allowCollapse: nSettings.allowCollapse,
761 nodeClass: nSettings.orgClassname,
762 selectedNodeClass: nSettings.orgSelectedClassname,
763 };
764
765 _this.chartObj = new google.visualization.OrgChart(document.getElementById(_this.htmlClassPrefix + _this.chartType + _this.uniqueId));
766
767 google.visualization.events.addListener(_this.chartObj, 'select', function () {
768 var selection = _this.chartObj.getSelection();
769 if (selection.length > 0) {
770 if (_this.chartData.getValue(selection[0].row, 3) != '') {
771 window.open(_this.chartData.getValue(selection[0].row, 3), '_blank');
772 }
773 }
774 });
775
776 google.visualization.events.addListener(_this.chartObj, 'collapse', function () {
777 _this.setOrgChartCustomStyles();
778 });
779
780 _this.chartObj.draw( _this.chartData, _this.chartOptions );
781 _this.resizeChart();
782 _this.setOrgChartCustomStyles();
783 }
784
785 _this.$el.on('click', '.google-visualization-orgchart-node-small, .google-visualization-orgchart-node-medium, .google-visualization-orgchart-node-large', function(e) {
786 if (nSettings.orgSelectedClassname !== '') {
787 _this.setOrgChartCustomStyles();
788 }
789 });
790 }
791
792 /*
793 Configure all settings for all chart types
794 Getting settings for each chart type in respective function
795 */
796 ChartBuilderGoogleCharts.prototype.configOptionsForCharts = function (settings) {
797 var newSettings = {};
798
799 newSettings.chartFontSize = settings['font_size'];
800 newSettings.backgroundColor = settings['transparent_background'] && settings['transparent_background'] === 'on' ? 'transparent' : settings['background_color'];
801 // newSettings.borderWidth = settings['border_width'];
802 // newSettings.borderColor = settings['border_color'];
803 newSettings.tooltipTrigger = settings['tooltip_trigger'];
804 newSettings.tooltipText = settings['tooltip_text'];
805 newSettings.showColorCode = (settings['show_color_code'] == 'on') ? true : false;
806 newSettings.tooltipItalicText = (settings['tooltip_italic'] == 'on') ? true : false;
807 newSettings.tooltipBoldText = settings['tooltip_bold'];
808 newSettings.legendItalicText = (settings['legend_italic'] == 'on') ? true : false;
809 newSettings.legendBoldText = (settings['legend_bold'] == 'on') ? true : false;
810 newSettings.tooltipTextColor = settings['tooltip_text_color'];
811 newSettings.tooltipFontSize = settings['tooltip_font_size'];
812 newSettings.legendPosition = settings['legend_position'];
813 newSettings.legendAlignment = settings['legend_alignment'];
814 newSettings.legendFontSize = settings['legend_font_size'];
815 newSettings.rotationDegree = settings['rotation_degree'];
816 newSettings.sliceBorderColor = settings['slice_border_color'];
817 newSettings.reverseCategories = (settings['reverse_categories'] == 'on') ? true : false;
818 newSettings.sliceText = settings['slice_text'];
819 newSettings.legendColor = settings['legend_color'];
820 newSettings.dataGroupingLimit = settings['data_grouping_limit']/100;
821 newSettings.dataGroupingLabel = settings['data_grouping_label'];
822 newSettings.dataGroupingColor = settings['data_grouping_color'];
823 newSettings.sliceColor = settings['slice_color'];
824 newSettings.sliceOffset = settings['slice_offset'];
825 newSettings.sliceTextColor = settings['slice_text_color'];
826 newSettings.chartBackgroundColor = settings['transparent_background'] && settings['transparent_background'] === 'on' ? 'transparent' : settings['chart_background_color'];
827 newSettings.chartBorderWidth = settings['chart_border_width'];
828 newSettings.chartBorderColor = settings['chart_border_color'];
829 newSettings.chartLeftMargin = settings['chart_left_margin_for_js'];
830 newSettings.chartRightMargin = settings['chart_right_margin_for_js'];
831 newSettings.chartTopMargin = settings['chart_top_margin_for_js'];
832 newSettings.chartBottomMargin = settings['chart_bottom_margin_for_js'];
833 newSettings.isStacked = (settings['is_stacked'] == 'on') ? true : false;
834 newSettings.focusTarget = settings['focus_target'];
835 newSettings.groupWidthFormat = settings['group_width_format'] == '%' ? '%' : '';
836 newSettings.groupWidth = settings['group_width'] + newSettings.groupWidthFormat;
837 newSettings.hAxisTitle = settings['haxis_title'];
838 newSettings.vAxisTitle = settings['vaxis_title'];
839 newSettings.hAxisLabelFontSize = settings['haxis_label_font_size'];
840 newSettings.vAxisLabelFontSize = settings['vaxis_label_font_size'];
841 newSettings.hAxisLabelColor = settings['haxis_label_color'];
842 newSettings.vAxisLabelColor = settings['vaxis_label_color'];
843 newSettings.hAxisTextPosition = settings['haxis_text_position'];
844 newSettings.vAxisTextPosition = settings['vaxis_text_position'];
845 newSettings.vAxisDirection = (settings['vaxis_direction'] == '-1') ? -1 : 1;
846 newSettings.hAxisDirection = (settings['haxis_direction'] == '-1') ? -1 : 1;
847 newSettings.hAxisTextColor = settings['haxis_text_color'];
848 newSettings.vAxisTextColor = settings['vaxis_text_color'];
849 newSettings.hAxisBaselineColor = settings['haxis_baseline_color'];
850 newSettings.vAxisBaselineColor = settings['vaxis_baseline_color'];
851 newSettings.hAxisTextFontSize = settings['haxis_text_font_size'];
852 newSettings.vAxisTextFontSize = settings['vaxis_text_font_size'];
853 newSettings.hAxisSlantedText = settings['haxis_slanted'];
854 newSettings.hAxisSlantedTextAngle = settings['haxis_slanted_text_angle'];
855 newSettings.hAxisShowTextEvery = settings['haxis_show_text_every'];
856 newSettings.vAxisFormat = settings['vaxis_format'];
857 newSettings.hAxisFormat = settings['haxis_format'];
858 newSettings.hAxisMinValue = settings['haxis_min_value'];
859 newSettings.hAxisMaxValue = settings['haxis_max_value'];
860 newSettings.vAxisMinValue = settings['vaxis_min_value'];
861 newSettings.vAxisMaxValue = settings['vaxis_max_value'];
862 newSettings.hAxisGridlinesCount = settings['haxis_gridlines_count'];
863 newSettings.hAxisGridlinesColor = settings['haxis_gridlines_color'];
864 newSettings.hAxisMinorGridlinesColor = settings['haxis_minor_gridlines_color'];
865 newSettings.vAxisGridlinesCount = settings['vaxis_gridlines_count'];
866 newSettings.vAxisGridlinesColor = settings['vaxis_gridlines_color'];
867 newSettings.vAxisMinorGridlinesColor = settings['vaxis_minor_gridlines_color'];
868 newSettings.hAxisItalicText = (settings['haxis_italic'] == 'on') ? true : false;
869 newSettings.hAxisBoldText = (settings['haxis_bold'] == 'on') ? true : false;
870 newSettings.vAxisItalicText = (settings['vaxis_italic'] == 'on') ? true : false;
871 newSettings.vAxisBoldText = (settings['vaxis_bold'] == 'on') ? true : false;
872 newSettings.hAxisItalicTitle = (settings['haxis_title_italic'] == 'on') ? true : false;
873 newSettings.hAxisBoldTitle = (settings['haxis_title_bold'] == 'on') ? true : false;
874 newSettings.vAxisItalicTitle = (settings['vaxis_title_italic'] == 'on') ? true : false;
875 newSettings.vAxisBoldTitle = (settings['vaxis_title_bold'] == 'on') ? true : false;
876 newSettings.opacity = settings['opacity'];
877 newSettings.enableInteractivity = (settings['enable_interactivity'] == 'off') ? false : true;
878 newSettings.maximizedView = (settings['maximized_view'] == 'on') ? 'maximized' : null;
879 newSettings.enableAnimation = (settings['enable_animation'] == 'on') ? true : false;
880 newSettings.animationDuration = settings['animation_duration'];
881 newSettings.animationStartup = (settings['animation_startup'] == 'off') ? false : true;
882 newSettings.animationEasing = settings['animation_easing'];
883 newSettings.seriesColor = settings['series_color'];
884 newSettings.seriesVisibleInLegend = settings['series_visible_in_legend'];
885 newSettings.seriesLineWidth = settings['series_line_width'];
886 newSettings.seriesPointSize = settings['series_point_size'];
887 newSettings.seriesPointShape = settings['series_point_shape'];
888 newSettings.enableRowSettings = (settings['enable_row_settings'] == 'on') ? true : false;
889 newSettings.rowsColor = settings['rows_color'];
890 newSettings.rowsOpacity = settings['rows_opacity'];
891 newSettings.multipleSelection = (settings['multiple_selection'] == 'on') ? 'multiple' : 'single';
892 newSettings.multipleDataFormat = settings['multiple_data_format'];
893 newSettings.pointShape = settings['point_shape'];
894 newSettings.pointSize = settings['point_size'];
895 newSettings.lineWidth = settings['line_width'];
896 newSettings.crosshairTrigger = settings['crosshair_trigger'];
897 newSettings.crosshairOrientation = settings['crosshair_orientation'];
898 newSettings.crosshairOpacity = settings['crosshair_opacity'];
899 newSettings.dashStyle = settings['dash_style'] ? settings['dash_style'].split(',') : null;
900 newSettings.orientation = (settings['orientation'] == 'on') ? 'vertical' : 'horizontal';
901 newSettings.fillNulls = (settings['fill_nulls'] == 'on') ? true : false;
902 newSettings.holeSize = settings['donut_hole_size'];
903 newSettings.orgChartFontSize = settings['org_chart_font_size'];
904 newSettings.allowCollapse = (settings['allow_collapse'] == 'on') ? true : false;
905 newSettings.orgClassname = settings['org_classname'];
906 newSettings.orgSelectedClassname = settings['org_selected_classname'];
907
908 return newSettings;
909 }
910
911 ChartBuilderGoogleCharts.prototype.setRowOptions = function (data, options, isJS = true) {
912 var _this = this;
913
914 if (data && data.length > 0) {
915 if (data[0] && data[0].length == 2) {
916 data[0].push({ role: 'style' });
917 for (var i = 1; i < data.length; i++) {
918 var opts = [];
919
920 var color = isJS ? options.rowsColor[i - 1] : options.rows_color[i - 1];
921 opts.push(color ? 'color:'+color : '');
922
923 var opacity = isJS ? options.rowsOpacity[i - 1] : options.rows_opacity[i - 1];
924 opts.push(opacity ? 'opacity:'+opacity : '');
925
926
927 data[i].push(opts.join(';'));
928 }
929 }
930 }
931
932 return data;
933 }
934
935 ChartBuilderGoogleCharts.prototype.removeRowOptions = function (data) {
936 var _this = this;
937
938 if (data && data.length > 0) {
939 if (data[0] && data[0].length == 2) {
940 for (var i = 0; i < data.length; i++) {
941 data[i].splice(2, 1);
942 }
943 }
944 }
945
946 return data;
947 }
948
949 // Detect window resize moment to draw charts responsively
950 ChartBuilderGoogleCharts.prototype.resizeChart = function(){
951 var _this = this;
952
953 //create trigger to resizeEnd event
954 $(window).resize(function() {
955 if(this.resizeTO) clearTimeout(this.resizeTO);
956 this.resizeTO = setTimeout(function() {
957 $(this).trigger('resizeEnd');
958 }, 100);
959 });
960
961 //redraw graph when window resize is completed
962 $(window).on('resizeEnd', function() {
963 _this.drawChartFunction( _this.chartData, _this.chartOptions );
964 });
965 }
966
967 ChartBuilderGoogleCharts.prototype.setOrgChartCustomStyles = function () {
968 var _this = this;
969 var settings = _this.dbData.options;
970
971 var orgClassname = settings.org_classname;
972 var bgColor = settings.org_node_background_color;
973 var padding = settings.org_node_padding;
974 var borderRadius = settings.org_node_border_radius;
975 var borderWidth = settings.org_node_border_width;
976 var borderColor = settings.org_node_border_color;
977 var textColor = settings.org_node_text_color;
978 var textSize = settings.org_node_text_font_size;
979 var descriptionColor = settings.org_node_description_font_color;
980 var descriptionSize = settings.org_node_description_font_size;
981
982 var orgSelectedClassname = settings.org_selected_classname;
983 var selectedBgColor = settings.org_selected_node_background_color;
984 var selectedTextColor = settings.org_selected_node_text_color;
985
986 if (orgClassname != '') {
987 var node = _this.$el.find('.' + orgClassname);
988 node.css({
989 'background-color' : bgColor,
990 'padding' : padding + 'px',
991 'border-radius' : borderRadius + 'px',
992 'color' : textColor,
993 'font-size' : textSize + 'px',
994 'border' : 'none',
995 'outline' : borderWidth + 'px solid ' + borderColor,
996 });
997 }
998
999 if (orgSelectedClassname != '') {
1000 var selectedNode = _this.$el.find('.' + orgSelectedClassname);
1001 selectedNode.css({
1002 'background-color' : selectedBgColor,
1003 // 'padding' : padding + 'px',
1004 // 'border-radius' : borderRadius + 'px',
1005 'color' : selectedTextColor,
1006 // 'font-size' : textSize + 'px',
1007 // 'border' : 'none',
1008 // 'outline' : borderWidth + 'px solid ' + borderColor,
1009 });
1010 }
1011
1012 var description = _this.$el.find('.' + _this.htmlClassPrefix + 'org-chart-tree-description');
1013 description.css({
1014 'color' : descriptionColor,
1015 'font-size' : descriptionSize + 'px',
1016 });
1017
1018 // var image = _this.$el.find('.' + _this.htmlClassPrefix + 'org-chart-tree-image');
1019 }
1020
1021 // Load chart by pie chart
1022 ChartBuilderGoogleCharts.prototype.chartConvertData = function( data ){
1023 var _this = this;
1024 var dataTypes = [];
1025
1026 // Collect data in new array for chart rendering
1027 for ( var key in data ) {
1028 if ( data.hasOwnProperty( key ) ) {
1029 if (key == 0) {
1030 if (data[key][0] != '' && data[key][1] != '') {
1031 dataTypes.push([
1032 _this.htmlDecode(data[key][0]), _this.htmlDecode(data[key][1])
1033 ]);
1034 }
1035 } else {
1036 if (data[key][0] != '' && data[key][1] != '') {
1037 dataTypes.push([
1038 _this.htmlDecode(data[key][0]), +(data[key][1])
1039 ]);
1040 }
1041 }
1042 }
1043 }
1044
1045 return dataTypes;
1046 }
1047
1048 // Converting chart data for multicolumn chart
1049 ChartBuilderGoogleCharts.prototype.multiColumnChartConvertData = function( data ){
1050 var _this = this;
1051 var dataTypes = [];
1052 var titleRow = [];
1053
1054 for (var key in data) {
1055 var dataRow = [];
1056 if (data.hasOwnProperty(key)) {
1057 if (key == 0) {
1058 for (var index in data[key]) {
1059 if (data[key][index] != '') {
1060 titleRow.push(_this.htmlDecode(data[key][index]));
1061 }
1062 }
1063 dataTypes.push(titleRow);
1064 } else {
1065 for (var index in data[key]) {
1066 if (data[key][index] != '') {
1067 if (index == 0) {
1068 dataRow.push(_this.htmlDecode(data[key][index]));
1069 } else {
1070 dataRow.push(+data[key][index]);
1071 }
1072 }
1073 }
1074 dataTypes.push(dataRow);
1075 }
1076 }
1077 }
1078
1079 return dataTypes;
1080 }
1081
1082 // Converting chart data for org chart type
1083 ChartBuilderGoogleCharts.prototype.orgChartConvertData = function( data ){
1084 var _this = this;
1085 var dataTypes = [['Name', 'Manager', 'Tooltip', 'Url']];
1086 // var name = "";
1087 // Collect data in new array for chart rendering
1088 for ( var key in data ) {
1089 if ( data.hasOwnProperty( key ) ) {
1090 if (key != 0) {
1091 var name = data[key][0];
1092 var description = data[key][1];
1093 var image = (data[key].length > 6) ? data[key][2] : '';
1094 var parent_name = (data[key].length > 6) ? data[key][3] : data[key][2];
1095 var tooltip = (data[key].length > 6) ? data[key][4] : data[key][3];
1096 var url = (data[key].length > 6) ? data[key][5] : '';
1097
1098 if (description) {
1099 name += _this.orgChartFormatName(description);
1100 }
1101 if (image && image != '') {
1102 name = _this.orgChartFormatImage(image) + name;
1103 }
1104 name = {'v': data[key][0], 'f': name};
1105 dataTypes.push([
1106 name, parent_name, tooltip, url
1107 ]);
1108 }
1109 }
1110 }
1111
1112 return dataTypes;
1113 }
1114
1115 ChartBuilderGoogleCharts.prototype.orgChartFormatName = function( description ){
1116 return `<div class="${this.htmlClassPrefix}org-chart-tree-description">${description}</div>`;
1117 }
1118
1119 ChartBuilderGoogleCharts.prototype.orgChartFormatImage = function( image ){
1120 return `<div class="${this.htmlClassPrefix}org-chart-tree-image"><img width="128px" src="${image}"></div>`;
1121 }
1122
1123 // Set onclick event on export buttons
1124 ChartBuilderGoogleCharts.prototype.setClickEventOnExportButtons = function(){
1125 var _this = this;
1126 $(document).find(".ays-chart-export-button-" + _this.uniqueId).on("click" , function(e){
1127 e.preventDefault();
1128 var buttonVal = $(this).val();
1129 $(this).attr('data-clicked','true');
1130 switch (buttonVal){
1131 case 'image':
1132 _this.exportOpenChartPrintWindow($(this).parent(),'image',_this.uniqueId);
1133 break;
1134 default:
1135 break;
1136 }
1137 });
1138 }
1139
1140 ChartBuilderGoogleCharts.prototype.exportOpenChartPrintWindow = function (buttonsContainer, type) {
1141 var _this = this;
1142 buttonsContainer.find(".ays-chart-export-button-" + _this.uniqueId + "[data-clicked='true']").removeAttr('data-clicked');
1143 if(typeof _this.chartOptions !== undefined){
1144 _this.chartOptions.width = '800';
1145 }
1146
1147 var iframe = buttonsContainer.find("iframe");
1148 iframe.attr('id','iframe-' + _this.uniqueId);
1149 _this.resizeChart();
1150
1151 if (_this.chartType == 'word_tree' ){ // without this condition it resets chart view
1152 iframe.contents().find('body').append($(document).find('#' + _this.htmlClassPrefix + _this.chartType + _this.uniqueId).clone());
1153
1154 if(type == 'image' && typeof _this.chartObj.getImageURI != "undefined"){
1155 var imageURI = _this.chartObj.getImageURI();
1156 var downloadTag = $('<a>');
1157 downloadTag.attr('href',imageURI);
1158 downloadTag.text('download link');
1159 downloadTag.attr('download',_this.chartType);
1160
1161 downloadTag[0].click();
1162 }
1163 if(type != 'image'){
1164 window.frames['iframe-' + _this.uniqueId].contentWindow.print();
1165 }
1166 iframe.removeAttr('id');
1167 iframe.contents().find('head').html("");
1168 iframe.contents().find('body').html("");
1169 return ;
1170 }
1171
1172 var listener = google.visualization.events.addListener(_this.chartObj, 'ready',function () {
1173 google.visualization.events.removeListener(listener)
1174 var clonedContent = $(document).find('#' + _this.htmlClassPrefix + _this.chartType + _this.uniqueId).clone();
1175 _this.chartOptions.height = '';
1176 _this.chartOptions.width = '';
1177 // _this.drawChartFunction( _this.chartData, _this.chartOptions , _this.chartType);
1178 _this.loadChartBySource();
1179
1180 setTimeout(function(){ //setting timeout for complete init
1181
1182
1183 // check if can create image for download
1184 if(type == 'image' && typeof _this.chartObj.getImageURI != "undefined"){
1185 var imageURI = _this.chartObj.getImageURI();
1186 var downloadTag = $('<a>');
1187 downloadTag.attr('href',imageURI);
1188 downloadTag.text('download link');
1189 downloadTag.attr('download',_this.chartType);
1190
1191 downloadTag[0].click();
1192 }
1193
1194 iframe.contents().find('body').append(clonedContent);
1195 if (_this.chartType == 'org_chart' || _this.chartType == 'table_chart'){
1196 var linkHref = "";
1197 var linkScript = $('<link>');
1198 switch (_this.chartType){
1199 case 'org_chart':
1200 linkHref = "https://www.gstatic.com/charts/48.1/css/orgchart/orgchart.css"; //48.1 is google chart version , check current version
1201 break;
1202 case 'table_chart':
1203 linkHref = "https://www.gstatic.com/charts/48.1/css/table/table.css"; //48.1 is google chart version , check current version
1204 break;
1205 default:
1206 break;
1207 }
1208 linkScript.attr('rel','stylesheet');
1209 linkScript.attr('href',linkHref);
1210
1211 var oHead = iframe.contents().find('body');
1212 linkScript.ready(function(){
1213 oHead.append(linkScript);
1214 });
1215 }
1216
1217 if(type != 'image'){
1218 window.frames['iframe-' + _this.uniqueId].contentWindow.print();
1219
1220 }
1221
1222 iframe.contents().find('head').html("");
1223 iframe.contents().find('body').html("");
1224 iframe.removeAttr('id');
1225 },200);
1226
1227 });
1228 _this.drawChartFunction( _this.chartData, _this.chartOptions);
1229 }
1230
1231 // Update chart data and display immediately
1232 ChartBuilderGoogleCharts.prototype.updateChartData = function( newData ){
1233 var _this = this;
1234 _this.chartObj.draw( newData, _this.chartOptions );
1235 }
1236
1237 ChartBuilderGoogleCharts.prototype.htmlDecode = function (input) {
1238 var e = document.createElement('div');
1239 e.innerHTML = input;
1240 return e.childNodes[0].nodeValue;
1241 }
1242
1243 ChartBuilderGoogleCharts.prototype.drawChartFunction = function (source, options) {
1244 var _this = this;
1245
1246 var view = new google.visualization.DataView(source);
1247 _this.chartData = source;
1248
1249 if (_this.chartType == 'org_chart') {
1250 view.setColumns([0, 1, 2]);
1251 }
1252
1253 _this.chartObj.draw(view, options);
1254
1255 if (_this.chartType == 'org_chart') {
1256 _this.setOrgChartCustomStyles();
1257 }
1258 }
1259
1260 $.fn.ChartBuilderGoogleChartsMain = function(options) {
1261 return this.each(function() {
1262 if (!$.data(this, 'ChartBuilderGoogleChartsMain')) {
1263 $.data(this, 'ChartBuilderGoogleChartsMain', new ChartBuilderGoogleCharts(this, options));
1264 } else {
1265 try {
1266 $(this).data('ChartBuilderGoogleChartsMain').init();
1267 } catch (err) {
1268 console.error('ChartBuilderGoogleChartsMain has not initiated properly');
1269 }
1270 }
1271 });
1272 };
1273
1274 })(jQuery);
1275