2016-10-05 18 views
1

In this plunk Angular UI Modal内にHighchartsチャートがあります。モーダルのサイズを変更することができます(jQuery UIのサイズ変更で実装されます)。Angular UI ModalでHighchartsグラフのサイズを変更する

目的は、モーダルのサイズを変更するたびに、グラフを100%幅と高さのモザメントにリサイズすることです。 Highchartsコンテナで100%の幅と高さを定義しましたが、これは機能しません。何か案は?

HTML:

<script type="text/ng-template" id="myModalContent.html"> 
     <div id="container" style="min-width:300px;width:100%; height:100%"></div> 
    </script> 

    <button type="button" class="btn btn-default" ng-click="open()">Open me!</button> 

Javascriptを

var app = angular.module("app", ['ui.bootstrap']); 
    app.controller("ctl", function($scope,$uibModal,$timeout) { 

     var modalInstance; 
     $scope.open = function() { 
     modalInstance = $uibModal.open({ 
       animation: false, 
       windowClass: 'the-modal', 
       templateUrl: 'myModalContent.html' 
      }); 

      $timeout(function(){ 

       $('.modal-content').resizable({ 
         handles: "all" 
       }); 

       plotChart(); 

      },10); 

     }; 

     var plotChart = function(){ 

       $('#container').highcharts({ 
      title: { 
       text: 'Monthly Average Temperature', 
       x: -20 //center 
      }, 
      subtitle: { 
       text: 'Source: WorldClimate.com', 
       x: -20 
      }, 
      xAxis: { 
       categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
      }, 
      yAxis: { 
       title: { 
        text: 'Temperature (°C)' 
       }, 
       plotLines: [{ 
        value: 0, 
        width: 1, 
        color: '#808080' 
       }] 
      }, 
      tooltip: { 
       valueSuffix: '°C' 
      }, 
      legend: { 
       layout: 'vertical', 
       align: 'right', 
       verticalAlign: 'middle', 
       borderWidth: 0 
      }, 
      series: [{ 
       name: 'Tokyo', 
       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] 
      }, { 
       name: 'New York', 
       data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5] 
      }, { 
       name: 'Berlin', 
       data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0] 
      }, { 
       name: 'London', 
       data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8] 
      }] 
     }); 

     }; 

    }); 

答えて

3

変更doAnimation = falseを設定し、よりスムーズなエンド即効性のために、resizeイベントにリスナーを追加することによって、次のようにサイズ変更可能なプラグインの定義:

$('.modal-content').resizable({ 
    handles: "all", 
    resize: function(event, ui) { 
     $('#container').highcharts() 
      .setSize(ui.size.width, ui.size.height, doAnimation = false); 
    } 
}); 
+0

あなたのソリューション[ここ](http://plnkr.co/edit/VGFxec2IK7IhYPa771BI?p=info)でplunkを更新しましたが、問題は、モーダルがサイズ変更された後にサイズ変更される必要があるということですサイズ変更が完了します。 – ps0604

+0

私はそれがレンダリングのために遅れていると思う、 'doAnimation = false 'を設定してみてください –

+0

はい、それはあなたの解決策を更新してください – ps0604

0

ハイチャートは、ウィンドウのサイズ変更をリッスンしますが、親要素resize。だから、ウィンドウがモーダルリサイズの端にサイズを変更偽物単純な加算は、利用可能なスペースを占有にhighchartsを蹴るだろう...

$('.modal-content').resizable({ 
    handles: "all", 
    stop: function(){ 
     window.dispatchEvent(new Event('resize')); 
    } 
}); 

あなたは高いオーバーヘッドで満足しているとの間の変化を点滅したい場合上記のようにresizeを使用してサイズを変更し、stopを使用しないでください。

関連する問題