| @@ -18,8 +18,13 @@ | ||
| 18 | 18 | |
| 19 | 19 | if(chart.library !== 'chartjs'){ |
| 20 | 20 | return; |
| 21 | 21 | } |
| 22 | + | |
| 23 | + // Bail if the chart is already rendered or is being rendered. | |
| 24 | + if ( ! window.isResizeRequest && ( $('#' + id).hasClass('visualizer-chart-loaded') || ( 'canvas' !== id && $('#' + id).children( ':not(.loader, style)' ).length > 0 ) ) ) { | |
| 25 | + return; | |
| 26 | + } | |
| 22 | 27 | rendered_charts[id] = 'yes'; |
| 23 | 28 | |
| 24 | 29 | series = chart.series; |
| 25 | 30 | data = chart.data; |
| @@ -147,8 +152,10 @@ | ||
| 147 | 152 | } |
| 148 | 153 | } |
| 149 | 154 | }; |
| 150 | 155 | |
| 156 | + override(settings, chart); | |
| 157 | + | |
| 151 | 158 | var chartjs = new Chart(context, { |
| 152 | 159 | type: type, |
| 153 | 160 | data: { |
| 154 | 161 | labels: labels, |
| @@ -198,12 +205,8 @@ | ||
| 198 | 205 | if(typeof settings['animation'] !== 'undefined' && parseInt(settings['animation']['duration']) === 0){ |
| 199 | 206 | settings['animation']['duration'] = 1000; |
| 200 | 207 | } |
| 201 | 208 | |
| 202 | - if(typeof settings['title'] !== 'undefined' && settings['title']['text'] !== ''){ | |
| 203 | - settings['title']['display'] = true; | |
| 204 | - } | |
| 205 | - | |
| 206 | 209 | if(typeof settings['tooltip'] !== 'undefined' && typeof settings['tooltip']['intersect'] !== 'undefined'){ |
| 207 | 210 | // jshint ignore:line |
| 208 | 211 | settings['tooltip']['intersect'] = settings['tooltip']['intersect'] == true || parseInt(settings['tooltip']['intersect']) === 1; // jshint ignore:line |
| 209 | 212 | } |
| @@ -230,11 +233,15 @@ | ||
| 230 | 233 | settings.plugins = { |
| 231 | 234 | legend: settings.legend, |
| 232 | 235 | }; |
| 233 | 236 | |
| 237 | + if(typeof settings['title'] !== 'undefined' && settings['title']['text'] !== ''){ | |
| 238 | + settings.plugins['title'] = {}; | |
| 239 | + settings.plugins['title']['display'] = true; | |
| 240 | + settings.plugins['title']['text'] = settings['title']['text']; | |
| 241 | + } | |
| 242 | + | |
| 234 | 243 | handleAxes(settings, chart); |
| 235 | - | |
| 236 | - override(settings, chart); | |
| 237 | 244 | } |
| 238 | 245 | |
| 239 | 246 | function handleAxes(settings, chart){ |
| 240 | 247 | if(typeof settings['yAxes'] !== 'undefined' && typeof settings['xAxes'] !== 'undefined'){ |
| @@ -271,9 +278,9 @@ | ||
| 271 | 278 | var $o = {}; |
| 272 | 279 | if(Array.isArray(settings[axis][i]) || typeof settings[axis][i] === 'object'){ |
| 273 | 280 | for(var j in settings[axis][i]){ |
| 274 | 281 | var $val = ''; |
| 275 | - if(j === 'labelString'){ | |
| 282 | + if(j === 'labelString'){ | |
| 276 | 283 | $o['display'] = true; |
| 277 | 284 | $val = settings[axis][i][j]; |
| 278 | 285 | }else if(i === 'ticks'){ |
| 279 | 286 | // number values under ticks need to be converted to numbers or the library throws a JS error. |
| @@ -498,9 +505,9 @@ | ||
| 498 | 505 | function override(settings, chart) { |
| 499 | 506 | if (settings.manual) { |
| 500 | 507 | try{ |
| 501 | 508 | var options = JSON.parse(settings.manual); |
| 502 | - $.extend(settings, options); | |
| 509 | + $.extend(true, settings, options); | |
| 503 | 510 | delete settings.manual; |
| 504 | 511 | }catch(error){ |
| 505 | 512 | console.error("Error while adding manual configuration override " + settings.manual); |
| 506 | 513 | } |