debugger.src.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /* *
  2. *
  3. * (c) 2010-2019 Torstein Honsi
  4. *
  5. * License: www.highcharts.com/license
  6. *
  7. * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
  8. *
  9. * */
  10. 'use strict';
  11. import H from '../parts/Globals.js';
  12. import U from '../parts/Utilities.js';
  13. var isNumber = U.isNumber;
  14. var addEvent = H.addEvent, setOptions = H.setOptions, each = H.each;
  15. setOptions({
  16. /**
  17. * @optionparent chart
  18. */
  19. chart: {
  20. /**
  21. * Whether to display errors on the chart. When `false`, the errors will
  22. * be shown only in the console.
  23. *
  24. * @sample highcharts/chart/display-errors/
  25. * Show errors on chart
  26. *
  27. * @since 7.0.0
  28. * @requires modules/debugger
  29. */
  30. displayErrors: true
  31. }
  32. });
  33. /* eslint-disable no-invalid-this */
  34. addEvent(H.Chart, 'displayError', function (e) {
  35. var chart = this, code = e.code, msg, options = chart.options.chart, renderer = chart.renderer, chartWidth, chartHeight;
  36. if (chart.errorElements) {
  37. each(chart.errorElements, function (el) {
  38. if (el) {
  39. el.destroy();
  40. }
  41. });
  42. }
  43. if (options && options.displayErrors && renderer) {
  44. chart.errorElements = [];
  45. msg = isNumber(code) ?
  46. ('Highcharts error #' + code + ': ' +
  47. H.errorMessages[code].text) :
  48. code;
  49. chartWidth = chart.chartWidth;
  50. chartHeight = chart.chartHeight;
  51. // Format msg so SVGRenderer can handle it
  52. msg = msg
  53. .replace(/<h1>(.*)<\/h1>/g, '<br><span style="font-size: 24px">$1</span><br>')
  54. .replace(/<\/p>/g, '</p><br>');
  55. // Render red chart frame.
  56. chart.errorElements[0] = renderer.rect(2, 2, chartWidth - 4, chartHeight - 4).attr({
  57. 'stroke-width': 4,
  58. stroke: '#ff0000',
  59. zIndex: 3
  60. }).add();
  61. // Render error message
  62. chart.errorElements[1] = renderer.label(msg, 0, 0, 'rect', void 0, void 0, void 0, void 0, 'debugger').css({
  63. color: '#ffffff',
  64. width: chartWidth - 16,
  65. padding: 0
  66. }).attr({
  67. fill: 'rgba(255, 0, 0, 0.9)',
  68. width: chartWidth,
  69. padding: 8,
  70. zIndex: 10
  71. }).add();
  72. chart.errorElements[1].attr({
  73. y: chartHeight - this.errorElements[1].getBBox().height
  74. });
  75. }
  76. });
  77. addEvent(H.Chart, 'beforeRedraw', function () {
  78. var errorElements = this.errorElements;
  79. if (errorElements && errorElements.length) {
  80. each(errorElements, function (el) {
  81. el.destroy();
  82. });
  83. }
  84. this.errorElements = null;
  85. });