Плагин Highcharts недавно сломался - «this.init не функция» - PullRequest
1 голос
/ 02 марта 2020

У меня есть js файл, который создает объект диаграммы Highcharts. Я добавил плагин для изменения контрастности надписи. Плагин находится ниже:

/**
* Override getContrast function; make threshold for showing white text very high
*/
(function(H) {
    H.Renderer.prototype.getContrast = function(rgba) {
      rgba = H.Color(rgba).rgba;
      return rgba[0] + rgba[1] + rgba[2] > 210 ? '#000000' : '#FFFFFF';
    };
}(Highcharts));

Он работал просто отлично в течение нескольких месяцев. Недавно я заметил, что диаграмма больше не отображается, и моя консоль ошибок показывает это: Uncaught TypeError: this.init не является функцией в Object.e [as Color] (highcharts.sr c. js: 2839 )

Мне удалось проследить источник до этой части файла Highcharts.sr c. js:

        /**
         * Handle color operations. Some object methods are chainable.
         *
         * @param {Highcharts.ColorType} input
         *        The input color in either rbga or hex format
         */
        function Color(input) {
            // Collection of parsers. This can be extended from the outside by pushing
            // parsers to Highcharts.Color.prototype.parsers.
            this.parsers = [{
                    // RGBA color
                    // eslint-disable-next-line max-len
                    regex: /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,
                    parse: function (result) {
                        return [
                            pInt(result[1]),
                            pInt(result[2]),
                            pInt(result[3]),
                            parseFloat(result[4], 10)
                        ];
                    }
                }, {
                    // RGB color
                    regex: /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,
                    parse: function (result) {
                        return [pInt(result[1]), pInt(result[2]), pInt(result[3]), 1];
                    }
                }];
            this.rgba = [];
            this.init(input);  //<!--ERROR RIGHT HERE
        }

Это похоже на внутреннее изменение в Highcharts ' конец, в частности, метод init () для подкласса Color. У кого-нибудь еще была похожая ошибка?

1 Ответ

1 голос
/ 05 марта 2020

Начиная с v8.0.1, Highcharts.Color должен быть связан с новым ключевым словом.

До

            stops: [
                [0, Highcharts.getOptions().colors[0]],
                [1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]
            ]

С v8.0.1

            stops: [
                [0, Highcharts.getOptions().colors[0]],
                [1, new Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]
            ]

https://github.com/highcharts/highcharts/issues/13053

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...