2016-08-25 4 views
2

グラフ上に交差点を持つ複数の系列がある場合、クリックイベントは全く発生しません。あなたはすべての3シリーズが交差する4月を見て、それが警告をしない点をクリックしてください場合複数の系列を含むハイチャートのイベントをクリック

http://jsfiddle.net/agnHV/22/

しかし、あなたはドンポイントのいずれかをチェックした場合:ここでは一例であり、彼らは適切に警告する。

$(function() { 
 
     $('#container').highcharts({ 
 
      chart: { 
 
       zoomType: 'xy' 
 
      }, 
 
      title: { 
 
       text: 'Average Monthly Weather Data for Tokyo' 
 
      }, 
 
      subtitle: { 
 
       text: 'Source: WorldClimate.com' 
 
      }, 
 
      xAxis: [{ 
 
       categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
 
        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
 
      }], 
 
      yAxis: [{ // Primary yAxis 
 
       labels: { 
 
        formatter: function() { 
 
         return this.value +'°C'; 
 
        }, 
 
        style: { 
 
         color: '#89A54E' 
 
        } 
 
       }, 
 
       title: { 
 
        text: 'Temperature', 
 
        style: { 
 
         color: '#89A54E' 
 
        } 
 
       }, 
 
       opposite: true 
 
    
 
      }, { // Secondary yAxis 
 
       gridLineWidth: 0, 
 
       title: { 
 
        text: 'Rainfall', 
 
        style: { 
 
         color: '#4572A7' 
 
        } 
 
       }, 
 
       labels: { 
 
        formatter: function() { 
 
         return this.value +' mm'; 
 
        }, 
 
        style: { 
 
         color: '#4572A7' 
 
        } 
 
       } 
 
    
 
      }, { // Tertiary yAxis 
 
       gridLineWidth: 0, 
 
       title: { 
 
        text: 'Sea-Level Pressure', 
 
        style: { 
 
         color: '#AA4643' 
 
        } 
 
       }, 
 
       labels: { 
 
        formatter: function() { 
 
         return this.value +' mb'; 
 
        }, 
 
        style: { 
 
         color: '#AA4643' 
 
        } 
 
       }, 
 
       opposite: true 
 
      }], 
 
      tooltip: { 
 
       shared: true 
 
      }, 
 
      legend: { 
 
       layout: 'vertical', 
 
       align: 'left', 
 
       x: 120, 
 
       verticalAlign: 'top', 
 
       y: 80, 
 
       floating: true, 
 
       backgroundColor: '#FFFFFF' 
 
      }, 
 
      plotOptions:{ 
 
       column:{ 
 
        point:{ 
 
         events:{ 
 
          click:function(){ 
 
          alert('aaa'); 
 
          } 
 
         } 
 
        } 
 
       } 
 
      }, 
 
      series: [{ 
 
       name: 'Rainfall', 
 
       color: '#4572A7', 
 
       type: 'column', 
 
       yAxis: 1, 
 
       data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4], 
 
       tooltip: { 
 
        valueSuffix: ' mm' 
 
       } 
 
    
 
      }, { 
 
       name: 'Sea-Level Pressure', 
 
       type: 'spline', 
 
       color: '#AA4643', 
 
       yAxis: 2, 
 
       data: [1016, 1016, 1015.9, 1015.5, 1012.3, 1009.5, 1009.6, 1010.2, 1013.1, 1016.9, 1018.2, 1016.7], 
 
       marker: { 
 
        enabled: false 
 
       }, 
 
       dashStyle: 'shortdot', 
 
       tooltip: { 
 
        valueSuffix: ' mb' 
 
       } 
 
    
 
      }, { 
 
       name: 'Temperature', 
 
       color: '#89A54E', 
 
       type: 'spline', 
 
       data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6], 
 
       tooltip: { 
 
        valueSuffix: ' °C' 
 
       }, 
 
       index: 1, 
 
       zIndex: 99, 
 
       events: { 
 
       \t click: function(e) { 
 
        \t alert('boom'); 
 
        \t console.log("CLICKY"); 
 
        } 
 
       } 
 
      }] 
 
     }); 
 
    }); 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://code.highcharts.com/highcharts.js"></script> 
 
<script src="http://code.highcharts.com/modules/exporting.js"></script> 
 

 
<div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>

私は、特定のポイントを優先するために、インデックス/のZIndexを追加しようとしましたが、助けていないようです。

+0

まあ、クリックイベントでも、交差点の外に非常に細心の注意であるように見えます。あなたは何をしようとしていますか/グラフのどの部分をクリック可能にしたいですか? – Adjit

+0

@Adjit、それは彼が交差点でも発射したいものであるようにクリックイベントを持つのは気温シリーズです。 – wergeld

+0

あなたは実際には風変わりなのは、その種ことを証明するために、火災、あなたの「AAA」、警告と「ブーム」警告 – Adjit

答えて

1

あなたのために素晴らしい解決策を挙げましょう。個々のラインイベントは信頼できないので、グラフ上のクリックしたポイントのイベントを作成し、イベント情報を使用してシリーズの名前を引いて、それが私が望むものかどうかを確認しました。ここで

は私が追加したのJavascriptです:http://jsfiddle.net/agnHV/24/

plotOptions: { 
    series: { 
     point: { 
     events: { 
     click: function(e){ 
      var seriesName = e.point.series.name; 
      if(seriesName == "Temperature") { 
      console.log("Clicked Temperature Line"); 
      } 
      else if(seriesName == "Sea-Level Pressure") { 
      console.log("Clicked Sea-Level Line"); 
      } 
      else if(seriesName == "Rainfall") { 
      console.log("Clicked Rainfall Bar"); 
      } 
     } 
     } 
    } 
    } 
} 

$(function() { 
 
     $('#container').highcharts({ 
 
      chart: { 
 
       zoomType: 'xy' 
 
      }, 
 
      title: { 
 
       text: 'Average Monthly Weather Data for Tokyo' 
 
      }, 
 
      subtitle: { 
 
       text: 'Source: WorldClimate.com' 
 
      }, 
 
      xAxis: [{ 
 
       categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
 
        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
 
      }], 
 
      yAxis: [{ // Primary yAxis 
 
       labels: { 
 
        formatter: function() { 
 
         return this.value +'°C'; 
 
        }, 
 
        style: { 
 
         color: '#89A54E' 
 
        } 
 
       }, 
 
       title: { 
 
        text: 'Temperature', 
 
        style: { 
 
         color: '#89A54E' 
 
        } 
 
       }, 
 
       opposite: true 
 
    
 
      }, { // Secondary yAxis 
 
       gridLineWidth: 0, 
 
       title: { 
 
        text: 'Rainfall', 
 
        style: { 
 
         color: '#4572A7' 
 
        } 
 
       }, 
 
       labels: { 
 
        formatter: function() { 
 
         return this.value +' mm'; 
 
        }, 
 
        style: { 
 
         color: '#4572A7' 
 
        } 
 
       } 
 
    
 
      }, { // Tertiary yAxis 
 
       gridLineWidth: 0, 
 
       title: { 
 
        text: 'Sea-Level Pressure', 
 
        style: { 
 
         color: '#AA4643' 
 
        } 
 
       }, 
 
       labels: { 
 
        formatter: function() { 
 
         return this.value +' mb'; 
 
        }, 
 
        style: { 
 
         color: '#AA4643' 
 
        } 
 
       }, 
 
       opposite: true 
 
      }], 
 
      tooltip: { 
 
       shared: true 
 
      }, 
 
      legend: { 
 
       layout: 'vertical', 
 
       align: 'left', 
 
       x: 120, 
 
       verticalAlign: 'top', 
 
       y: 80, 
 
       floating: true, 
 
       backgroundColor: '#FFFFFF' 
 
      }, 
 
      series: [{ 
 
       name: 'Rainfall', 
 
       color: '#4572A7', 
 
       type: 'column', 
 
       yAxis: 1, 
 
       data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4], 
 
       tooltip: { 
 
        valueSuffix: ' mm' 
 
       }  
 
      }, { 
 
       name: 'Sea-Level Pressure', 
 
       type: 'spline', 
 
       color: '#AA4643', 
 
       yAxis: 2, 
 
       data: [1016, 1016, 1015.9, 1015.5, 1012.3, 1009.5, 1009.6, 1010.2, 1013.1, 1016.9, 1018.2, 1016.7], 
 
       marker: { 
 
        enabled: false 
 
       }, 
 
       dashStyle: 'shortdot', 
 
       tooltip: { 
 
        valueSuffix: ' mb' 
 
       }      
 
      }, { 
 
       name: 'Temperature', 
 
       color: '#89A54E', 
 
       type: 'spline', 
 
       data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6], 
 
       tooltip: { 
 
        valueSuffix: ' °C' 
 
       } 
 
       /*events: { 
 
       \t click: function(e) { 
 
        \t alert('boom'); 
 
        \t console.log("CLICKY"); 
 
        } 
 
       }*/ 
 
      }], 
 
      plotOptions: { 
 
      \t series: { 
 
       \t point: { 
 
       \t events: { 
 
        \t click: function(e){ 
 
         var seriesName = e.point.series.name; 
 
         if(seriesName == "Temperature") { 
 
         \t console.log("Clicked Temperature Line"); 
 
         } 
 
         else if(seriesName == "Sea-Level Pressure") { 
 
         \t console.log("Clicked Sea-Level Line"); 
 
         } 
 
         else if(seriesName == "Rainfall") { 
 
         \t console.log("Clicked Rainfall Bar"); 
 
         } 
 
        } 
 
        } 
 
       } 
 
       } 
 
      }   
 
     }); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://code.highcharts.com/highcharts.js"></script> 
 
<script src="http://code.highcharts.com/modules/exporting.js"></script> 
 

 
<div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>

+0

この問題を回避するには素晴らしい方法です。私が今見ている唯一のものは、4月の緑色の線(気温)が上にありますが、赤色の線(海)は依然としてその上でトリガされています。 はええ、私はどのようにすることができます...本当にあまりにもわからないという通知をしなかった私が何を意味するかをお見せするためにjsfiddle(私は緑の線幅巨大http://jsfiddle.net/agnHV/25/を作った) – sontek

+0

@sontekを更新しましたそれを回避してください、それは両方の行に何らかのアクションが起こるのを除いて。 – Adjit

関連する問題