2017-11-16 1 views
0

Ich versuche, einen MariMekko/Market-Diagrammtyp in meine Anwendung zu integrieren. Ich fand eine interessante Umsetzung hier:Highcharts 'bindAxis' nur für ein Diagramm

http://jsfiddle.net/h2np93k1/39/

Dieser Code ein treemap konstruiert und fügt Achse zu. Das wird durch diesen Schnipsel getan:

Highcharts.seriesTypes.treemap.prototype.bindAxes = function() { 
    Highcharts.Series.prototype.bindAxes.call(this); 
}; 

Allerdings, wenn ich richtig verstehe, dies dazu führt, wird alle meine treemap Charts Achse haben. Ich will das nicht, ich möchte die Achse nur für meine Marimekko-Karten behalten.

Was wäre der beste Weg, dies zu erreichen? Gibt es eine einfache Möglichkeit, beispielsweise einen Diagrammtyp zu erweitern?

Antwort

1

Der einfache Weg ist, wrap eine Kernfunktion und fügen Sie bedingte Anweisung, die Optionen überprüft und wendet die Änderung, wenn nötig.

In diesem Fall habe ich isMariMekko Flag in der Serie hinzugefügt. Wenn es wahr ist, wird der modifizierte Code ausgeführt. Es ist falsch die ursprüngliche Funktion startet:

Highcharts.wrap(Highcharts.seriesTypes.treemap.prototype, 'bindAxes', function(proceed) { 
    if (this.options.isMariMekko) { 
     var treeAxis = { 
     min: 0, 
     dataMin: 0, 
     max: 100, 
     dataMax: 0 
     }; 

     Highcharts.Series.prototype.bindAxes.call(this); 
     Highcharts.extend(this.yAxis.options, treeAxis); 
     Highcharts.extend(this.xAxis.options, treeAxis); 

    } else { 
     proceed.apply(this); // default action 
    } 

    }); 

Docs Referenz über Verpackung:https://www.highcharts.com/docs/extending-highcharts/extending-highcharts

Verwandte Themen