LoginSignup
2
4

More than 3 years have passed since last update.

Aura コンポーネントで Chart.js を使ってみる

Posted at

今回は、 Lightning(Aura) コンポーネントから Chart.js ライブラリを読み込んでグラフを表示するコンポーネントを作ってみます。

Chart.js ライブラリをアップロード

Aura フレームワークでサードパーティのライブラリを読み込む際は、必要なライブラリを全て静的リソースにアップロードしておく必要があります。

まずは以下の様に、Chart.min.js と Chart.min.css を抜き出し圧縮しておきます。
(必要であればその他のライブラリも全て追加しておきます)

Screen Shot 2019-07-09 at 10.41.22.png

その後、セールスフォース上で 設定 > カスタムコード > 静的リソース > 新規 から静的リソースをアップロードします。

Screen Shot 2019-07-09 at 10.41.22.png
ファイル には上で作成した圧縮ファイルを指定します。

Aura コンポーネントのサンプル

Chart.js のドキュメント にあるサンプルコードを Aura コンポーネントで再現してみました。
Screen Shot 2019-07-09 at 10.41.22.png

ChartjsExample.cmp
<aura:component access="global" implements="flexipage:availableForAllPageTypes" >

    <!-- External Libraries -->
    <!-- グラフの初期化処理には js ファイルの読み込み完了を待つ必要があるので、              -->
    <!-- js ファイルに対する ltng:require にのみ afterScriptsLoaded ハンドラーを指定する -->
    <ltng:require styles="{!$Resource.ChartJSAsset + '/css/Chart.min.css'}"  />
    <ltng:require scripts="{!$Resource.ChartJSAsset + '/js/Chart.min.js'}" 
                  afterScriptsLoaded="{!c.onAfterScriptsLoaded}"/>

    <!-- User Inteface -->
    <div>
        <div class="slds-box slds-theme_default">
            <div class="chart-container" >
                <canvas aura:id="canvas" ></canvas>
            </div>
        </div>
    </div>
</aura:component>
ChartjsExampleController.js
({
    onAfterScriptsLoaded : function(c, e, h) {

        // cnavas 要素の取得には aura:id 属性をキーとして、コンポーネントに対し .find 関数を利用する
        const ctx = c.find('canvas').getElement().getContext('2d');

        const myChart = new Chart(ctx, {
            type: 'bar',
            data: {
                labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
                datasets: [{
                    label: '# of Votes',
                    data: [12, 19, 3, 5, 2, 3],
                    backgroundColor: [
                        'rgba(255, 99, 132, 0.2)',
                        'rgba(54, 162, 235, 0.2)',
                        'rgba(255, 206, 86, 0.2)',
                        'rgba(75, 192, 192, 0.2)',
                        'rgba(153, 102, 255, 0.2)',
                        'rgba(255, 159, 64, 0.2)'
                    ],
                    borderColor: [
                        'rgba(255, 99, 132, 1)',
                        'rgba(54, 162, 235, 1)',
                        'rgba(255, 206, 86, 1)',
                        'rgba(75, 192, 192, 1)',
                        'rgba(153, 102, 255, 1)',
                        'rgba(255, 159, 64, 1)'
                    ],
                    borderWidth: 1
                }]
            },
            options: {
                scales: {
                    yAxes: [{
                        ticks: {
                            beginAtZero: true
                        }
                    }]
                }
            }
        });
    }
})
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4