| @@ -163,9 +163,9 @@ | ||
| 163 | 163 | }); |
| 164 | 164 | |
| 165 | 165 | _this.$el.find('.'+_this.htmlClassPrefix+'toggle-hidden-option').on('change', function () { |
| 166 | 166 | // var animationOptions = _this.$el.find('.'+_this.htmlClassPrefix+'hidden-options-section'); |
| 167 | - var currentSettings = $(this).parents('.' + _this.htmlClassPrefix + 'settings-data-main-wrap') | |
| 167 | + var currentSettings = $(this).parents('.' + _this.htmlClassPrefix + 'settings-data-main-wrap'); | |
| 168 | 168 | var hiddenSection = currentSettings.find('.' + _this.htmlClassPrefix + 'hidden-options-section'); |
| 169 | 169 | var notHiddenSection = currentSettings.find('.' + _this.htmlClassPrefix + 'not-hidden-options-section'); |
| 170 | 170 | |
| 171 | 171 | if ($(this).is(':checked')) { |
| @@ -183,8 +183,9 @@ | ||
| 183 | 183 | }); |
| 184 | 184 | |
| 185 | 185 | _this.$el.on("click", '.'+_this.htmlClassPrefix+'charts-change-type-type', function(){ |
| 186 | 186 | _this.chartType = $(this).attr('data-type'); |
| 187 | + _this.configureOptions(); | |
| 187 | 188 | _this.changeChartType(); |
| 188 | 189 | _this.$el.find('.'+_this.htmlClassPrefix+'charts-change-type-type').css('backgroundColor', '#e7e7e7'); |
| 189 | 190 | $(this).css('backgroundColor', '#008cff63'); |
| 190 | 191 | }); |
| @@ -313,9 +314,45 @@ | ||
| 313 | 314 | _this.chartSourceData.settings.border_radius = $(this).val(); |
| 314 | 315 | _this.$el.find('.'+_this.htmlClassPrefix+'charts-main-container').css('border-radius', $(this).val() + 'px'); |
| 315 | 316 | _this.drawChartFunction(_this.chartData, _this.chartOptions); |
| 316 | 317 | }); |
| 318 | + | |
| 319 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-border-style').on('change', function () { | |
| 320 | + _this.chartSourceData.settings.border_style = $(this).val(); | |
| 321 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-main-container').css('border-style', $(this).val()); | |
| 322 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 323 | + }); | |
| 324 | + | |
| 325 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-border-width-with-title').on('input', function () { | |
| 326 | + _this.chartSourceData.settings.border_width_with_title = $(this).val(); | |
| 327 | + _this.$el.find('.'+_this.htmlClassPrefix+'container').css('border-width', $(this).val() + 'px'); | |
| 328 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 329 | + }); | |
| 317 | 330 | |
| 331 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-border-radius-with-title').on('input', function () { | |
| 332 | + _this.chartSourceData.settings.border_radius_with_title = $(this).val(); | |
| 333 | + _this.$el.find('.'+_this.htmlClassPrefix+'container').css('border-radius', $(this).val() + 'px'); | |
| 334 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 335 | + }); | |
| 336 | + | |
| 337 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-border-color-with-title').on('input', function () { | |
| 338 | + _this.chartSourceData.settings.border_color_with_title = $(this).val(); | |
| 339 | + _this.$el.find('.'+_this.htmlClassPrefix+'container').css('border-color', $(this).val()); | |
| 340 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 341 | + }); | |
| 342 | + | |
| 343 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-border-style-with-title').on('change', function () { | |
| 344 | + _this.chartSourceData.settings.border_style_with_title = $(this).val(); | |
| 345 | + _this.$el.find('.'+_this.htmlClassPrefix+'container').css('border-style', $(this).val()); | |
| 346 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 347 | + }); | |
| 348 | + | |
| 349 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-padding-outer').on('input', function () { | |
| 350 | + _this.chartSourceData.settings.padding_outer = $(this).val(); | |
| 351 | + _this.$el.find('.'+_this.htmlClassPrefix+'container').css('padding', $(this).val() + 'px'); | |
| 352 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 353 | + }); | |
| 354 | + | |
| 318 | 355 | _this.$el.find('#'+_this.htmlClassPrefix+'option-chart-border-width').on('input', function () { |
| 319 | 356 | _this.chartOptions.chartArea.backgroundColor.strokeWidth = $(this).val(); |
| 320 | 357 | _this.chartSourceData.settings.chart_border_width = _this.chartOptions.chartArea.backgroundColor.strokeWidth; |
| 321 | 358 | _this.drawChartFunction(_this.chartData, _this.chartOptions); |
| @@ -330,9 +367,9 @@ | ||
| 330 | 367 | _this.$el.find('#'+_this.htmlClassPrefix+'option-box-shadow').on('change', function () { |
| 331 | 368 | if ($(this).is(':checked')) { |
| 332 | 369 | _this.$el.find('.'+_this.htmlClassPrefix+'charts-main-container').css('box-shadow', '2px 2px 10px 2px ' + _this.chartSourceData.settings.border_color); |
| 333 | 370 | } else { |
| 334 | - _this.$el.find('.'+_this.htmlClassPrefix+'charts-main-container').css('box-shadow', ''); | |
| 371 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-main-container').css('box-shadow', 'unset'); | |
| 335 | 372 | } |
| 336 | 373 | _this.drawChartFunction(_this.chartData, _this.chartOptions); |
| 337 | 374 | }); |
| 338 | 375 | |
| @@ -510,12 +547,23 @@ | ||
| 510 | 547 | }); |
| 511 | 548 | |
| 512 | 549 | _this.$el.find('#'+_this.htmlClassPrefix+'option-haxis-format').on('change', function () { |
| 513 | 550 | _this.chartOptions.hAxis.format = $(this).val(); |
| 551 | + if(_this.chartOptions.hAxis.format == 'percent'){ | |
| 552 | + _this.$el.find('.option-haxis-enable-divide-percent').show(300); | |
| 553 | + }else{ | |
| 554 | + _this.$el.find('.option-haxis-enable-divide-percent').hide(300); | |
| 555 | + } | |
| 514 | 556 | _this.chartSourceData.settings.haxis_format = _this.chartOptions.hAxis.format; |
| 515 | 557 | _this.drawChartFunction(_this.chartData, _this.chartOptions); |
| 516 | 558 | }); |
| 517 | 559 | |
| 560 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-haxis-enable-divide-percent').on('input', function () { | |
| 561 | + _this.chartOptions.hAxis.enableDividePercent = $(this).is(':checked'); | |
| 562 | + _this.chartSourceData.settings.haxis_enable_divide_percent = _this.chartOptions.hAxis.enableDividePercent ? 'checked' : ''; | |
| 563 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 564 | + }); | |
| 565 | + | |
| 518 | 566 | _this.$el.find('#'+_this.htmlClassPrefix+'option-haxis-label-font-size').on('input', function () { |
| 519 | 567 | _this.chartOptions.hAxis.titleTextStyle.fontSize = $(this).val(); |
| 520 | 568 | _this.chartSourceData.settings.haxis_label_font_size = _this.chartOptions.hAxis.titleTextStyle.fontSize; |
| 521 | 569 | _this.drawChartFunction(_this.chartData, _this.chartOptions); |
| @@ -619,12 +667,23 @@ | ||
| 619 | 667 | }); |
| 620 | 668 | |
| 621 | 669 | _this.$el.find('#'+_this.htmlClassPrefix+'option-vaxis-format').on('change', function () { |
| 622 | 670 | _this.chartOptions.vAxis.format = $(this).val(); |
| 671 | + if(_this.chartOptions.vAxis.format == 'percent'){ | |
| 672 | + _this.$el.find('.option-vaxis-enable-divide-percent').show(300); | |
| 673 | + }else{ | |
| 674 | + _this.$el.find('.option-vaxis-enable-divide-percent').hide(300); | |
| 675 | + } | |
| 623 | 676 | _this.chartSourceData.settings.vaxis_format = _this.chartOptions.vAxis.format; |
| 624 | 677 | _this.drawChartFunction(_this.chartData, _this.chartOptions); |
| 625 | 678 | }); |
| 626 | 679 | |
| 680 | + | |
| 681 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-vaxis-enable-divide-percent').on('input', function () { | |
| 682 | + _this.chartOptions.vAxis.enableDividePercent = $(this).is(':checked'); | |
| 683 | + _this.chartSourceData.settings.vaxis_enable_divide_percent = _this.chartOptions.vaxis.enableDividePercent ? 'checked' : ''; | |
| 684 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 685 | + }); | |
| 627 | 686 | _this.$el.find('#'+_this.htmlClassPrefix+'option-vaxis-label-font-size').on('input', function () { |
| 628 | 687 | _this.chartOptions.vAxis.titleTextStyle.fontSize = $(this).val(); |
| 629 | 688 | _this.chartSourceData.settings.vaxis_label_font_size = _this.chartOptions.vAxis.titleTextStyle.fontSize; |
| 630 | 689 | _this.drawChartFunction(_this.chartData, _this.chartOptions); |
| @@ -689,8 +748,153 @@ | ||
| 689 | 748 | _this.chartSourceData.settings.vaxis_minor_gridlines_color = _this.chartOptions.vAxis.minorGridlines.color; |
| 690 | 749 | _this.drawChartFunction(_this.chartData, _this.chartOptions); |
| 691 | 750 | }); |
| 692 | 751 | |
| 752 | + //title | |
| 753 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-title-gap').on('input', function () { | |
| 754 | + _this.chartSourceData.settings.title_gap = $(this).val(); | |
| 755 | + _this.$el.find('.'+_this.htmlClassPrefix+'header-container').attr('style', 'margin-bottom: ' + $(this).val() + 'px' + ' !important;'); | |
| 756 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 757 | + }); | |
| 758 | + | |
| 759 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-title-color').on('input', function () { | |
| 760 | + _this.chartSourceData.settings.title_color = $(this).val(); | |
| 761 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-title').css('color', $(this).val()); | |
| 762 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 763 | + }); | |
| 764 | + | |
| 765 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-title-font-size').on('input', function () { | |
| 766 | + _this.chartSourceData.settings.title_font_size = $(this).val(); | |
| 767 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-title').css('font-size', $(this).val() + 'px'); | |
| 768 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 769 | + }); | |
| 770 | + | |
| 771 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-title-bold').on('change', function () { | |
| 772 | + _this.chartSourceData.settings.title_bold = $(this).is(':checked') ? 'checked' : ''; | |
| 773 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-title').css('font-weight', $(this).is(':checked') ? 'bold' : 'normal'); | |
| 774 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 775 | + }); | |
| 776 | + | |
| 777 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-title-italic').on('change', function () { | |
| 778 | + _this.chartSourceData.settings.title_italic = $(this).is(':checked') ? 'checked' : ''; | |
| 779 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-title').css('font-style', $(this).is(':checked') ? 'italic' : 'normal'); | |
| 780 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 781 | + }); | |
| 782 | + | |
| 783 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-title-text-shadow').on('change', function () { | |
| 784 | + if ($(this).is(':checked')) { | |
| 785 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-title').css('text-shadow', '2px 2px 5px ' + _this.chartSourceData.settings.title_shadow_color); | |
| 786 | + } else { | |
| 787 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-title').css('text-shadow', 'unset'); | |
| 788 | + } | |
| 789 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 790 | + }); | |
| 791 | + | |
| 792 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-title-shadow-color').on('input', function () { | |
| 793 | + if (_this.$el.find('#'+_this.htmlClassPrefix+'option-title-text-shadow').is(':checked')) { | |
| 794 | + _this.chartSourceData.settings.title_shadow_color = $(this).val(); | |
| 795 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-title').css('text-shadow', '2px 2px 5px ' + $(this).val()); | |
| 796 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 797 | + } | |
| 798 | + }); | |
| 799 | + | |
| 800 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-title-position').on('change', function () { | |
| 801 | + _this.chartSourceData.settings.title_position = $(this).val(); | |
| 802 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-title').css('text-align', $(this).val()); | |
| 803 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 804 | + }); | |
| 805 | + | |
| 806 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-title-text-transform').on('change', function () { | |
| 807 | + _this.chartSourceData.settings.title_transform = $(this).val(); | |
| 808 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-title').css('text-transform', $(this).val()); | |
| 809 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 810 | + }); | |
| 811 | + | |
| 812 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-title-text-decoration').on('change', function () { | |
| 813 | + _this.chartSourceData.settings.title_decoration = $(this).val(); | |
| 814 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-title').css('text-decoration', $(this).val()); | |
| 815 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 816 | + }); | |
| 817 | + | |
| 818 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-title-letter-spacing').on('input', function () { | |
| 819 | + _this.chartSourceData.settings.title_letter_spacing = $(this).val(); | |
| 820 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-title').css('letter-spacing', $(this).val() + 'px'); | |
| 821 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 822 | + }); | |
| 823 | + | |
| 824 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-title-gap-description').on('input', function () { | |
| 825 | + _this.chartSourceData.settings.title_gap_description = $(this).val(); | |
| 826 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-title').css('margin-bottom', $(this).val() + 'px'); | |
| 827 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 828 | + }); | |
| 829 | + | |
| 830 | + //description | |
| 831 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-description-color').on('input', function () { | |
| 832 | + _this.chartSourceData.settings.description_color = $(this).val(); | |
| 833 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-description').css('color', $(this).val()); | |
| 834 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 835 | + }); | |
| 836 | + | |
| 837 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-description-font-size').on('input', function () { | |
| 838 | + _this.chartSourceData.settings.description_font_size = $(this).val(); | |
| 839 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-description').css('font-size', $(this).val() + 'px'); | |
| 840 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 841 | + }); | |
| 842 | + | |
| 843 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-description-bold').on('change', function () { | |
| 844 | + _this.chartSourceData.settings.description_bold = $(this).is(':checked') ? 'checked' : ''; | |
| 845 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-description').css('font-weight', $(this).is(':checked') ? 'bold' : 'normal'); | |
| 846 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 847 | + }); | |
| 848 | + | |
| 849 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-description-italic').on('change', function () { | |
| 850 | + _this.chartSourceData.settings.description_italic = $(this).is(':checked') ? 'checked' : ''; | |
| 851 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-description').css('font-style', $(this).is(':checked') ? 'italic' : 'normal'); | |
| 852 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 853 | + }); | |
| 854 | + | |
| 855 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-description-text-shadow').on('change', function () { | |
| 856 | + if ($(this).is(':checked')) { | |
| 857 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-description').css('text-shadow', '2px 2px 5px ' + _this.chartSourceData.settings.description_shadow_color); | |
| 858 | + } else { | |
| 859 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-description').css('text-shadow', 'unset'); | |
| 860 | + } | |
| 861 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 862 | + }); | |
| 863 | + | |
| 864 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-description-shadow-color').on('input', function () { | |
| 865 | + if (_this.$el.find('#'+_this.htmlClassPrefix+'option-description-text-shadow').is(':checked')) { | |
| 866 | + _this.chartSourceData.settings.description_shadow_color = $(this).val(); | |
| 867 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-description').css('text-shadow', '2px 2px 5px ' + $(this).val()); | |
| 868 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 869 | + } | |
| 870 | + }); | |
| 871 | + | |
| 872 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-description-position').on('change', function () { | |
| 873 | + _this.chartSourceData.settings.description_position = $(this).val(); | |
| 874 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-description').css('text-align', $(this).val()); | |
| 875 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 876 | + }); | |
| 877 | + | |
| 878 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-description-text-transform').on('change', function () { | |
| 879 | + _this.chartSourceData.settings.description_transform = $(this).val(); | |
| 880 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-description').css('text-transform', $(this).val()); | |
| 881 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 882 | + }); | |
| 883 | + | |
| 884 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-description-text-decoration').on('change', function () { | |
| 885 | + _this.chartSourceData.settings.description_decoration = $(this).val(); | |
| 886 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-description').css('text-decoration', $(this).val()); | |
| 887 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 888 | + }); | |
| 889 | + | |
| 890 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-description-letter-spacing').on('input', function () { | |
| 891 | + _this.chartSourceData.settings.description_letter_spacing = $(this).val(); | |
| 892 | + _this.$el.find('.'+_this.htmlClassPrefix+'charts-description').css('letter-spacing', $(this).val() + 'px'); | |
| 893 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 894 | + }); | |
| 895 | + | |
| 896 | + | |
| 693 | 897 | // animation settings |
| 694 | 898 | _this.$el.find('#'+_this.htmlClassPrefix+'option-enable-animation').on('change', function () { |
| 695 | 899 | if ($(this).is(':checked')) { |
| 696 | 900 | _this.chartOptions.animation = { |
| @@ -981,9 +1185,9 @@ | ||
| 981 | 1185 | _this.setOrgChartCustomStyles(); |
| 982 | 1186 | } |
| 983 | 1187 | }); |
| 984 | 1188 | |
| 985 | - _this.$el.find('#'+_this.htmlClassPrefix+'option-org-seslected-classname').on('input', function () { | |
| 1189 | + _this.$el.find('#'+_this.htmlClassPrefix+'option-org-selected-classname').on('input', function () { | |
| 986 | 1190 | _this.chartOptions.selectedNodeClass = $(this).val(); |
| 987 | 1191 | _this.chartSourceData.settings.org_selected_classname = _this.chartOptions.selectedNodeClass; |
| 988 | 1192 | _this.drawChartFunction(_this.chartData, _this.chartOptions); |
| 989 | 1193 | }); |
| @@ -1045,8 +1249,16 @@ | ||
| 1045 | 1249 | _this.drawChartFunction(_this.chartData, _this.chartOptions); |
| 1046 | 1250 | } |
| 1047 | 1251 | }); |
| 1048 | 1252 | |
| 1253 | + _this.$el.find('.'+_this.htmlClassPrefix+'option-series-format').on('input', function () { | |
| 1254 | + // if (!_this.$el.find('#'+_this.htmlClassPrefix+'option-enable-row-settings').is(':checked')) { | |
| 1255 | + var id = $(this).attr('data-series-id'); | |
| 1256 | + _this.chartSourceData.settings.series_format[id] = $(this).val(); | |
| 1257 | + _this.drawChartFunction(_this.chartData, _this.chartOptions); | |
| 1258 | + // } | |
| 1259 | + }); | |
| 1260 | + | |
| 1049 | 1261 | _this.$el.find('.'+_this.htmlClassPrefix+'option-series-visible-in-legend').on('input', function () { |
| 1050 | 1262 | if (_this.chartSourceData.source[0].length > 2) { |
| 1051 | 1263 | var id = $(this).attr('data-series-id'); |
| 1052 | 1264 | _this.chartOptions.series[id].visibleInLegend = $(this).is(':checked'); |
| @@ -1351,10 +1563,12 @@ | ||
| 1351 | 1563 | |
| 1352 | 1564 | var settings = _this.chartSourceData.settings; |
| 1353 | 1565 | var nSettings = _this.configOptionsForCharts(settings); |
| 1354 | 1566 | |
| 1567 | + var userLocale = navigator.language || navigator.userLanguage || 'en'; | |
| 1568 | + | |
| 1355 | 1569 | /* == Google part == */ |
| 1356 | - google.charts.load('current', {'packages':['corechart']}); | |
| 1570 | + google.charts.load('current', {'packages':['corechart'], 'language': userLocale}); | |
| 1357 | 1571 | google.charts.setOnLoadCallback(drawChart); |
| 1358 | 1572 | |
| 1359 | 1573 | function drawChart() { |
| 1360 | 1574 | _this.chartData = isChangedType ? _this.chartData : google.visualization.arrayToDataTable( dataTypes ); |
| @@ -1417,8 +1631,12 @@ | ||
| 1417 | 1631 | _this.chartObj = new google.visualization.PieChart( document.getElementById(_this.htmlClassPrefix + _this.chartType) ); |
| 1418 | 1632 | |
| 1419 | 1633 | _this.chartObj.draw( _this.chartData, _this.chartOptions ); |
| 1420 | 1634 | _this.resizeChart(); |
| 1635 | + // Fix ARIA attributes for accessibility compliance | |
| 1636 | + setTimeout(function() { | |
| 1637 | + _this.fixAriaAttributes(); | |
| 1638 | + }, 100); | |
| 1421 | 1639 | } |
| 1422 | 1640 | /* */ |
| 1423 | 1641 | } |
| 1424 | 1642 | |
| @@ -1430,10 +1648,12 @@ | ||
| 1430 | 1648 | |
| 1431 | 1649 | var settings = _this.chartSourceData.settings; |
| 1432 | 1650 | var nSettings = _this.configOptionsForCharts(settings); |
| 1433 | 1651 | |
| 1652 | + var userLocale = navigator.language || navigator.userLanguage || 'en'; | |
| 1653 | + | |
| 1434 | 1654 | /* == Google part == */ |
| 1435 | - google.charts.load('current', {'packages':['corechart']}); | |
| 1655 | + google.charts.load('current', {'packages':['corechart'], 'language': userLocale}); | |
| 1436 | 1656 | google.charts.setOnLoadCallback(drawChart); |
| 1437 | 1657 | |
| 1438 | 1658 | function drawChart() { |
| 1439 | 1659 | dataTypes = nSettings.enableRowSettings ? _this.setRowOptions(dataTypes, nSettings, true) : dataTypes; |
| @@ -1562,16 +1782,56 @@ | ||
| 1562 | 1782 | if (nSettings.enableAnimation) { |
| 1563 | 1783 | _this.chartOptions.animation = { |
| 1564 | 1784 | startup: nSettings.animationStartup, |
| 1565 | 1785 | duration: nSettings.animationDuration, |
| 1566 | - easing: nSettings.animationEasing, | |
| 1786 | + easing: nSettings.animationEasing, | |
| 1567 | 1787 | } |
| 1568 | 1788 | } |
| 1569 | - | |
| 1789 | + if(!isChangedType){ | |
| 1790 | + if(_this.chartOptions.hAxis.format == 'percent' && nSettings.hAxisEnableDividePercent){ | |
| 1791 | + for (var i = 0; i < dataTypes[0].length - 1; i++) { | |
| 1792 | + nSettings.seriesFormat[i] = '#%'; | |
| 1793 | + } | |
| 1794 | + | |
| 1795 | + for (var row = 0; row < _this.chartData.getNumberOfRows(); row++) { | |
| 1796 | + for (var col = 0; col < _this.chartData.getNumberOfColumns(); col++) { | |
| 1797 | + var value = _this.chartData.getValue(row, col); | |
| 1798 | + if (typeof value === 'number' && !isNaN(value)) { | |
| 1799 | + | |
| 1800 | + var updatedValue = value / 100; | |
| 1801 | + _this.chartData.setValue(row, col, updatedValue); | |
| 1802 | + } | |
| 1803 | + } | |
| 1804 | + } | |
| 1805 | + | |
| 1806 | + }else { | |
| 1807 | + for (var i = 0; i < dataTypes[0].length - 1; i++) { | |
| 1808 | + if (nSettings.seriesFormat[i] === '#%') { | |
| 1809 | + nSettings.seriesFormat[i] = ''; | |
| 1810 | + } | |
| 1811 | + } | |
| 1812 | + } | |
| 1813 | + } | |
| 1814 | + | |
| 1815 | + for (var i = 1; i < dataTypes[0].length; i++) { | |
| 1816 | + | |
| 1817 | + if (nSettings.seriesFormat[i - 1]) { | |
| 1818 | + var formatter = new google.visualization.NumberFormat({ | |
| 1819 | + pattern: nSettings.seriesFormat[i - 1] | |
| 1820 | + }); | |
| 1821 | + formatter.format(_this.chartData, i); | |
| 1822 | + } | |
| 1823 | + | |
| 1824 | + | |
| 1825 | + } | |
| 1570 | 1826 | _this.chartObj = new google.visualization.BarChart(document.getElementById(_this.htmlClassPrefix + _this.chartType)); |
| 1571 | 1827 | |
| 1572 | 1828 | _this.chartObj.draw( _this.chartData, _this.chartOptions ); |
| 1573 | 1829 | _this.resizeChart(); |
| 1830 | + // Fix ARIA attributes for accessibility compliance | |
| 1831 | + setTimeout(function() { | |
| 1832 | + _this.fixAriaAttributes(); | |
| 1833 | + }, 100); | |
| 1574 | 1834 | } |
| 1575 | 1835 | /* */ |
| 1576 | 1836 | } |
| 1577 | 1837 | |
| @@ -1584,10 +1844,12 @@ | ||
| 1584 | 1844 | |
| 1585 | 1845 | var settings = _this.chartSourceData.settings; |
| 1586 | 1846 | var nSettings = _this.configOptionsForCharts(settings); |
| 1587 | 1847 | |
| 1848 | + var userLocale = navigator.language || navigator.userLanguage || 'en'; | |
| 1849 | + | |
| 1588 | 1850 | /* == Google part == */ |
| 1589 | - google.charts.load('current', {'packages':['corechart']}); | |
| 1851 | + google.charts.load('current', {'packages':['corechart'], 'language': userLocale}); | |
| 1590 | 1852 | google.charts.setOnLoadCallback(drawChart); |
| 1591 | 1853 | |
| 1592 | 1854 | function drawChart() { |
| 1593 | 1855 | dataTypes = nSettings.enableRowSettings ? _this.setRowOptions(dataTypes, nSettings, true) : dataTypes; |
| @@ -1720,13 +1982,48 @@ | ||
| 1720 | 1982 | duration: nSettings.animationDuration, |
| 1721 | 1983 | easing: nSettings.animationEasing, |
| 1722 | 1984 | } |
| 1723 | 1985 | } |
| 1724 | - | |
| 1986 | + if(!isChangedType){ | |
| 1987 | + if(_this.chartOptions.vAxis.format == 'percent' && nSettings.vAxisEnableDividePercent){ | |
| 1988 | + for (var i = 0; i < dataTypes[0].length - 1; i++) { | |
| 1989 | + nSettings.seriesFormat[i] = '#%'; | |
| 1990 | + } | |
| 1991 | + | |
| 1992 | + | |
| 1993 | + for (var row = 0; row < _this.chartData.getNumberOfRows(); row++) { | |
| 1994 | + for (var col = 0; col < _this.chartData.getNumberOfColumns(); col++) { | |
| 1995 | + var value = _this.chartData.getValue(row, col); | |
| 1996 | + if (typeof value === 'number' && !isNaN(value)) { | |
| 1997 | + var updatedValue = value / 100; | |
| 1998 | + _this.chartData.setValue(row, col, updatedValue); | |
| 1999 | + } | |
| 2000 | + } | |
| 2001 | + } | |
| 2002 | + }else { | |
| 2003 | + for (var i = 0; i < dataTypes[0].length - 1; i++) { | |
| 2004 | + if (nSettings.seriesFormat[i] === '#%') { | |
| 2005 | + nSettings.seriesFormat[i] = ''; | |
| 2006 | + } | |
| 2007 | + } | |
| 2008 | + } | |
| 2009 | + } | |
| 2010 | + for (var i = 1; i < dataTypes[0].length; i++) { | |
| 2011 | + if (nSettings.seriesFormat[i - 1]) { | |
| 2012 | + var formatter = new google.visualization.NumberFormat({ | |
| 2013 | + pattern: nSettings.seriesFormat[i - 1] | |
| 2014 | + }); | |
| 2015 | + formatter.format(_this.chartData, i); | |
| 2016 | + } | |
| 2017 | + } | |
| 1725 | 2018 | _this.chartObj = new google.visualization.ColumnChart(document.getElementById(_this.htmlClassPrefix + _this.chartType)); |
| 1726 | 2019 | |
| 1727 | 2020 | _this.chartObj.draw( _this.chartData, _this.chartOptions ); |
| 1728 | 2021 | _this.resizeChart(); |
| 2022 | + // Fix ARIA attributes for accessibility compliance | |
| 2023 | + setTimeout(function() { | |
| 2024 | + _this.fixAriaAttributes(); | |
| 2025 | + }, 100); | |
| 1729 | 2026 | } |
| 1730 | 2027 | /* */ |
| 1731 | 2028 | } |
| 1732 | 2029 | |
| @@ -1738,10 +2035,12 @@ | ||
| 1738 | 2035 | |
| 1739 | 2036 | var settings = _this.chartSourceData.settings; |
| 1740 | 2037 | var nSettings = _this.configOptionsForCharts(settings); |
| 1741 | 2038 | |
| 2039 | + var userLocale = navigator.language || navigator.userLanguage || 'en'; | |
| 2040 | + | |
| 1742 | 2041 | /* == Google part == */ |
| 1743 | - google.charts.load('current', {'packages':['corechart']}); | |
| 2042 | + google.charts.load('current', {'packages':['corechart'], 'language': userLocale}); | |
| 1744 | 2043 | google.charts.setOnLoadCallback(drawChart); |
| 1745 | 2044 | |
| 1746 | 2045 | function drawChart() { |
| 1747 | 2046 | dataTypes = nSettings.enableRowSettings ? _this.setRowOptions(dataTypes, nSettings, true) : dataTypes; |
| @@ -1887,12 +2186,51 @@ | ||
| 1887 | 2186 | easing: nSettings.animationEasing, |
| 1888 | 2187 | } |
| 1889 | 2188 | } |
| 1890 | 2189 | |
| 2190 | + if(!isChangedType){ | |
| 2191 | + if(_this.chartOptions.vAxis.format == 'percent' && nSettings.vAxisEnableDividePercent){ | |
| 2192 | + for (var i = 0; i < dataTypes[0].length - 1; i++) { | |
| 2193 | + nSettings.seriesFormat[i] = '#%'; | |
| 2194 | + | |
| 2195 | + } | |
| 2196 | + for (var row = 0; row < _this.chartData.getNumberOfRows(); row++) { | |
| 2197 | + for (var col = 0; col < _this.chartData.getNumberOfColumns(); col++) { | |
| 2198 | + var value = _this.chartData.getValue(row, col); | |
| 2199 | + if (typeof value === 'number' && !isNaN(value)) { | |
| 2200 | + var updatedValue = value / 100; | |
| 2201 | + _this.chartData.setValue(row, col, updatedValue); | |
| 2202 | + } | |
| 2203 | + } | |
| 2204 | + } | |
| 2205 | + | |
| 2206 | + }else { | |
| 2207 | + for (var i = 0; i < dataTypes[0].length - 1; i++) { | |
| 2208 | + if (nSettings.seriesFormat[i] === '#%') { | |
| 2209 | + nSettings.seriesFormat[i] = ''; | |
| 2210 | + } | |
| 2211 | + } | |
| 2212 | + } | |
| 2213 | + } | |
| 2214 | + | |
| 2215 | + for (var i = 1; i < dataTypes[0].length; i++) { | |
| 2216 | + if (nSettings.seriesFormat[i - 1]) { | |
| 2217 | + var formatter = new google.visualization.NumberFormat({ | |
| 2218 | + pattern: nSettings.seriesFormat[i - 1] | |
| 2219 | + }); | |
| 2220 | + formatter.format(_this.chartData, i); | |
| 2221 | + } | |
| 2222 | + } | |
| 2223 | + | |
| 2224 | + | |
| 1891 | 2225 | _this.chartObj = new google.visualization.LineChart(document.getElementById(_this.htmlClassPrefix + _this.chartType)); |
| 1892 | 2226 | |
| 1893 | 2227 | _this.chartObj.draw( _this.chartData, _this.chartOptions ); |
| 1894 | 2228 | _this.resizeChart(); |
| 2229 | + // Fix ARIA attributes for accessibility compliance | |
| 2230 | + setTimeout(function() { | |
| 2231 | + _this.fixAriaAttributes(); | |
| 2232 | + }, 100); | |
| 1895 | 2233 | } |
| 1896 | 2234 | /* */ |
| 1897 | 2235 | } |
| 1898 | 2236 | |
| @@ -1904,10 +2242,12 @@ | ||
| 1904 | 2242 | |
| 1905 | 2243 | var settings = _this.chartSourceData.settings; |
| 1906 | 2244 | var nSettings = _this.configOptionsForCharts(settings); |
| 1907 | 2245 | |
| 2246 | + var userLocale = navigator.language || navigator.userLanguage || 'en'; | |
| 2247 | + | |
| 1908 | 2248 | /* == Google part == */ |
| 1909 | - google.charts.load('current', {'packages':['corechart']}); | |
| 2249 | + google.charts.load('current', {'packages':['corechart'], 'language': userLocale}); | |
| 1910 | 2250 | google.charts.setOnLoadCallback(drawChart); |
| 1911 | 2251 | |
| 1912 | 2252 | function drawChart() { |
| 1913 | 2253 | _this.chartData = isChangedType ? _this.chartData : google.visualization.arrayToDataTable( dataTypes ); |
| @@ -1971,8 +2311,12 @@ | ||
| 1971 | 2311 | _this.chartObj = new google.visualization.PieChart( document.getElementById(_this.htmlClassPrefix + _this.chartType) ); |
| 1972 | 2312 | |
| 1973 | 2313 | _this.chartObj.draw( _this.chartData, _this.chartOptions ); |
| 1974 | 2314 | _this.resizeChart(); |
| 2315 | + // Fix ARIA attributes for accessibility compliance | |
| 2316 | + setTimeout(function() { | |
| 2317 | + _this.fixAriaAttributes(); | |
| 2318 | + }, 100); | |
| 1975 | 2319 | } |
| 1976 | 2320 | /* */ |
| 1977 | 2321 | } |
| 1978 | 2322 | |
| @@ -1985,10 +2329,12 @@ | ||
| 1985 | 2329 | |
| 1986 | 2330 | var settings = _this.chartSourceData.settings; |
| 1987 | 2331 | var nSettings = _this.configOptionsForCharts(settings); |
| 1988 | 2332 | |
| 2333 | + var userLocale = navigator.language || navigator.userLanguage || 'en'; | |
| 2334 | + | |
| 1989 | 2335 | /* == Google part == */ |
| 1990 | - google.charts.load('current', {'packages':['orgchart']}); | |
| 2336 | + google.charts.load('current', {'packages':['orgchart'], 'language': userLocale}); | |
| 1991 | 2337 | google.charts.setOnLoadCallback(drawChart); |
| 1992 | 2338 | |
| 1993 | 2339 | function drawChart() { |
| 1994 | 2340 | _this.chartDataArray = isChangedType ? _this.chartDataArray : dataTypes; |
| @@ -2023,8 +2369,12 @@ | ||
| 2023 | 2369 | |
| 2024 | 2370 | _this.chartObj.draw( view, _this.chartOptions ); |
| 2025 | 2371 | _this.resizeChart(); |
| 2026 | 2372 | _this.setOrgChartCustomStyles(); |
| 2373 | + // Fix ARIA attributes for accessibility compliance | |
| 2374 | + setTimeout(function() { | |
| 2375 | + _this.fixAriaAttributes(); | |
| 2376 | + }, 100); | |
| 2027 | 2377 | } |
| 2028 | 2378 | |
| 2029 | 2379 | _this.$el.on('click', '.google-visualization-orgchart-node-small, .google-visualization-orgchart-node-medium, .google-visualization-orgchart-node-large', function(e) { |
| 2030 | 2380 | if (nSettings.orgSelectedClassname !== '') { |
| @@ -2137,8 +2487,10 @@ | ||
| 2137 | 2487 | newSettings.hAxisSlantedTextAngle = settings['haxis_slanted_text_angle']; |
| 2138 | 2488 | newSettings.hAxisShowTextEvery = settings['haxis_show_text_every']; |
| 2139 | 2489 | newSettings.vAxisFormat = settings['vaxis_format']; |
| 2140 | 2490 | newSettings.hAxisFormat = settings['haxis_format']; |
| 2491 | + newSettings.hAxisEnableDividePercent = (settings['haxis_enable_divide_percent'] == 'checked' && settings['haxis_format'] == 'percent') ? true : false; | |
| 2492 | + newSettings.vAxisEnableDividePercent = (settings['vaxis_enable_divide_percent'] == 'checked' && settings['vaxis_format'] == 'percent') ? true : false; | |
| 2141 | 2493 | newSettings.hAxisMinValue = settings['haxis_min_value']; |
| 2142 | 2494 | newSettings.hAxisMaxValue = settings['haxis_max_value']; |
| 2143 | 2495 | newSettings.vAxisMinValue = settings['vaxis_min_value']; |
| 2144 | 2496 | newSettings.vAxisMaxValue = settings['vaxis_max_value']; |
| @@ -2163,8 +2515,9 @@ | ||
| 2163 | 2515 | newSettings.animationDuration = settings['animation_duration']; |
| 2164 | 2516 | newSettings.animationStartup = (settings['animation_startup'] == 'checked') ? true : false; |
| 2165 | 2517 | newSettings.animationEasing = settings['animation_easing']; |
| 2166 | 2518 | newSettings.seriesColor = settings['series_color']; |
| 2519 | + newSettings.seriesFormat = settings['series_format']; | |
| 2167 | 2520 | newSettings.seriesVisibleInLegend = settings['series_visible_in_legend']; |
| 2168 | 2521 | newSettings.seriesLineWidth = settings['series_line_width']; |
| 2169 | 2522 | newSettings.seriesPointSize = settings['series_point_size']; |
| 2170 | 2523 | newSettings.seriesPointShape = settings['series_point_shape']; |
| @@ -2277,9 +2630,9 @@ | ||
| 2277 | 2630 | 'border' : 'none', |
| 2278 | 2631 | 'outline' : borderWidth + 'px solid ' + borderColor, |
| 2279 | 2632 | }); |
| 2280 | 2633 | } |
| 2281 | - | |
| 2634 | + | |
| 2282 | 2635 | if (orgSelectedClassname != '') { |
| 2283 | 2636 | var selectedNode = _this.$el.find('.' + orgSelectedClassname); |
| 2284 | 2637 | selectedNode.css({ |
| 2285 | 2638 | 'background-color' : selectedBgColor, |
| @@ -2291,8 +2644,9 @@ | ||
| 2291 | 2644 | // 'outline' : borderWidth + 'px solid ' + borderColor, |
| 2292 | 2645 | }); |
| 2293 | 2646 | } |
| 2294 | 2647 | |
| 2648 | + | |
| 2295 | 2649 | var description = _this.$el.find('.' + _this.htmlClassPrefix + 'org-chart-tree-description'); |
| 2296 | 2650 | description.css({ |
| 2297 | 2651 | 'color' : descriptionColor, |
| 2298 | 2652 | 'font-size' : descriptionSize + 'px', |
| @@ -2364,34 +2718,45 @@ | ||
| 2364 | 2718 | // Converting chart data for org chart type |
| 2365 | 2719 | ChartBuilderGoogleCharts.prototype.orgChartConvertData = function( data ){ |
| 2366 | 2720 | var _this = this; |
| 2367 | 2721 | var dataTypes = [['Name', 'Manager', 'Tooltip', 'Url']]; |
| 2722 | + | |
| 2723 | + var ordering = (_this.chartSourceData && Array.isArray(_this.chartSourceData.source_ordering)) | |
| 2724 | + ? _this.chartSourceData.source_ordering.slice() | |
| 2725 | + : []; | |
| 2726 | + | |
| 2727 | + ordering = ordering.map(String); | |
| 2728 | + | |
| 2729 | + Object.keys(data).forEach(function(key) { | |
| 2730 | + if (!ordering.includes(key)) { | |
| 2731 | + ordering.push(key); | |
| 2732 | + } | |
| 2733 | + }); | |
| 2734 | + | |
| 2368 | 2735 | // var name = ""; |
| 2369 | 2736 | // Collect data in new array for chart rendering |
| 2370 | - for ( var key in data ) { | |
| 2371 | - if ( data.hasOwnProperty( key ) ) { | |
| 2372 | - if (key != 0) { | |
| 2373 | - var name = data[key][0]; | |
| 2374 | - var description = data[key][1]; | |
| 2375 | - var image = (data[key].length > 6) ? data[key][2] : ''; | |
| 2376 | - var parent_name = (data[key].length > 6) ? data[key][3] : data[key][2]; | |
| 2377 | - var tooltip = (data[key].length > 6) ? data[key][4] : data[key][3]; | |
| 2378 | - var url = (data[key].length > 6) ? data[key][5] : ''; | |
| 2379 | - | |
| 2380 | - if (description) { | |
| 2381 | - name += _this.orgChartFormatName(description); | |
| 2382 | - } | |
| 2383 | - if (image && image != '') { | |
| 2384 | - name = _this.orgChartFormatImage(image) + name; | |
| 2385 | - } | |
| 2386 | - name = {'v': data[key][0], 'f': name}; | |
| 2387 | - dataTypes.push([ | |
| 2388 | - name, parent_name, tooltip, url | |
| 2389 | - ]); | |
| 2390 | - } | |
| 2737 | + ordering.forEach(function(key) { | |
| 2738 | + if (!data.hasOwnProperty(key) || key == 0) return; | |
| 2739 | + | |
| 2740 | + var row = data[key]; | |
| 2741 | + var name = row[0]; | |
| 2742 | + var description = row[1]; | |
| 2743 | + var image = (row.length > 6) ? row[2] : ''; | |
| 2744 | + var parent_name = (row.length > 6) ? row[3] : row[2]; | |
| 2745 | + var tooltip = (row.length > 6) ? row[4] : row[3]; | |
| 2746 | + var url = (row.length > 6) ? row[5] : ''; | |
| 2747 | + | |
| 2748 | + if (description) { | |
| 2749 | + name += _this.orgChartFormatName(description); | |
| 2391 | 2750 | } |
| 2392 | - } | |
| 2751 | + if (image && image !== '') { | |
| 2752 | + name = _this.orgChartFormatImage(image) + name; | |
| 2753 | + } | |
| 2393 | 2754 | |
| 2755 | + name = {'v': row[0], 'f': name}; | |
| 2756 | + dataTypes.push([name, parent_name, tooltip, url]); | |
| 2757 | + }); | |
| 2758 | + | |
| 2394 | 2759 | return dataTypes; |
| 2395 | 2760 | } |
| 2396 | 2761 | |
| 2397 | 2762 | ChartBuilderGoogleCharts.prototype.orgChartFormatName = function( description ){ |
| @@ -3088,8 +3453,16 @@ | ||
| 3088 | 3453 | |
| 3089 | 3454 | chartData[branchId] = [changedName, changedDescription, changedImage, changedParentName, changedTooltip, changedUrl, changedParentId, changedLevel] |
| 3090 | 3455 | }) |
| 3091 | 3456 | |
| 3457 | + var newOrdering = []; | |
| 3458 | + treeManual.find("> li.tree-branch").each(function() { | |
| 3459 | + newOrdering.push($(this).attr("data-id")); | |
| 3460 | + }); | |
| 3461 | + if (_this.chartSourceData) { | |
| 3462 | + _this.chartSourceData.source_ordering = newOrdering; | |
| 3463 | + } | |
| 3464 | + | |
| 3092 | 3465 | _this.chartData = _this.orgChartConvertData( chartData ); |
| 3093 | 3466 | _this.chartTempData = _this.chartData; |
| 3094 | 3467 | _this.chartData = window.google.visualization.arrayToDataTable( _this.chartData ); |
| 3095 | 3468 | _this.updateChartData( _this.chartData ); |
| @@ -3103,13 +3476,66 @@ | ||
| 3103 | 3476 | e.innerHTML = input; |
| 3104 | 3477 | return e.childNodes[0].nodeValue; |
| 3105 | 3478 | } |
| 3106 | 3479 | |
| 3480 | + // Fix ARIA attributes for WCAG compliance | |
| 3481 | + ChartBuilderGoogleCharts.prototype.fixAriaAttributes = function() { | |
| 3482 | + var _this = this; | |
| 3483 | + var chartContainer = document.getElementById(_this.htmlClassPrefix + _this.chartType); | |
| 3484 | + | |
| 3485 | + if (!chartContainer) { | |
| 3486 | + return; | |
| 3487 | + } | |
| 3488 | + | |
| 3489 | + // Find all divs with aria-label | |
| 3490 | + var divsWithAriaLabel = chartContainer.querySelectorAll('div[aria-label]'); | |
| 3491 | + divsWithAriaLabel.forEach(function(div) { | |
| 3492 | + // Check if this div contains a table (the data table representation) | |
| 3493 | + if (div.querySelector('table')) { | |
| 3494 | + // Add role="region" to the table container div | |
| 3495 | + if (!div.hasAttribute('role')) { | |
| 3496 | + div.setAttribute('role', 'region'); | |
| 3497 | + } | |
| 3498 | + } else { | |
| 3499 | + // Remove aria-label from divs without roles (not table containers) | |
| 3500 | + if (!div.hasAttribute('role')) { | |
| 3501 | + div.removeAttribute('aria-label'); | |
| 3502 | + } | |
| 3503 | + } | |
| 3504 | + }); | |
| 3505 | + | |
| 3506 | + // Add role="img" to SVG elements with aria-label | |
| 3507 | + var svgElements = chartContainer.querySelectorAll('svg[aria-label]'); | |
| 3508 | + svgElements.forEach(function(svg) { | |
| 3509 | + if (!svg.hasAttribute('role')) { | |
| 3510 | + svg.setAttribute('role', 'img'); | |
| 3511 | + } | |
| 3512 | + }); | |
| 3513 | + } | |
| 3514 | + | |
| 3107 | 3515 | ChartBuilderGoogleCharts.prototype.drawChartFunction = function (source, options) { |
| 3108 | 3516 | var _this = this; |
| 3109 | 3517 | |
| 3110 | 3518 | var view = new google.visualization.DataView(source); |
| 3111 | 3519 | _this.chartData = source; |
| 3520 | + | |
| 3521 | + // Set role="img" on the chart container | |
| 3522 | + var chartContainer = document.getElementById(_this.htmlClassPrefix + _this.chartType + (_this.uniqueId || '')); | |
| 3523 | + if (chartContainer) { | |
| 3524 | + chartContainer.setAttribute('role', 'img'); | |
| 3525 | + } | |
| 3526 | + | |
| 3527 | + // Fix ARIA attributes after chart is drawn | |
| 3528 | + var drawCallback = function() { | |
| 3529 | + _this.fixAriaAttributes(); | |
| 3530 | + }; | |
| 3531 | + | |
| 3532 | + // Add callback to options if it doesn't exist | |
| 3533 | + if (typeof options.chartArea === 'object') { | |
| 3534 | + options.chartArea.chartReady = drawCallback; | |
| 3535 | + } else { | |
| 3536 | + options.chartReady = drawCallback; | |
| 3537 | + } | |
| 3112 | 3538 | |
| 3113 | 3539 | if (_this.chartType == 'org_chart') { |
| 3114 | 3540 | view.setColumns([0, 1, 2]); |
| 3115 | 3541 | } |