Расширить экспорт Highcharts - PullRequest
0 голосов
/ 24 апреля 2018

Мне нужно установить объект ресурсов в методе exportChart модуля экспорта Highcharts, но не могу перезаписать его.

Исходный код модуля экспорта находится по адресу http://code.highcharts.com/modules/exporting.src.js, и конкретный подраздел, который я перезаписываю, выглядит следующим образом:

'use strict';
(function (factory) {
    if (typeof module === 'object' && module.exports) {
        module.exports = factory;
    } else {
        factory(Highcharts);
    }
}(function (Highcharts) {
    (function (H) {

        // create shortcuts
        var Chart = H.Chart,
            merge = H.merge,
            extend = H.extend;

        //... Removed extra code not needed for example
        extend(Chart.prototype, /** @lends Highcharts.Chart.prototype */ {
            exportChart: function (exportingOptions, chartOptions) {

                var svg = this.getSVGForExport(exportingOptions, chartOptions);

                // merge the options
                exportingOptions = merge(this.options.exporting, exportingOptions);

                // do the post
                H.post(exportingOptions.url, {
                    filename: exportingOptions.filename || 'chart',
                    type: exportingOptions.type,
                    // IE8 fails to post undefined correctly, so use 0
                    width: exportingOptions.width || 0,
                    scale: exportingOptions.scale,
                    svg: svg
                }, exportingOptions.formAttributes);

            }
            //... Removed extra code not needed for example
        });
        //... Removed extra code not needed for example

    }(Highcharts));
}));

Для проверки возможности перезаписи метода я использую следующий код:

(function (H) {
   var Chart = H.Chart,
       extend = H.extend;

   extend(Chart.prototype, /** @lends Highcharts.Chart.prototype */ {
       exportChart: function (exportingOptions, chartOptions) {
           alert('changed it');    
       }
   });  

}(Highcharts));

Предупреждение никогда не срабатывает, но вместо этого происходит нормальный экспорт.

Я создал JSFiddle, показывая эту проблему здесь: https://jsfiddle.net/j005v79j/

Может кто-нибудь сказать мне, почему перезапись этого метода не работает?

1 Ответ

0 голосов
/ 25 апреля 2018

Я понял, что я также загружал code.highcharts.com/modules/offline-exporting.js на моей стороне, которой не было на скрипке. Этот скрипт перезаписал кнопки экспорта, чтобы использовать другой метод с именем exportChartLocal (). Поскольку кнопки теперь были привязаны к методу, который никогда не будет вызываться, мое предупреждение не срабатывало.

На данный момент я удалил призыв к автономному экспорту и позже напишу перезаписи в мой код для этой версии.

Спасибо @Kamil за указание на проблему.

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