製品の検品結果を評価したり在庫管理をしたりする場面でチャートに H(IGH)、M(IDIUM)、L(OW) などの基準線を追加したい場合があると思います。

そのような場合は IgbValueOverlay コンポーネントの軸注釈機能と軸注釈のフォーマット機能を併せて利用することで可視化できます。

[Program.cs] IgbValueOverlayModule と IgbDataChartAnnotationModule をサービスに追加する

Program.cs で Services に IgbValueOverlayModule と IgbDataChartAnnotationModule を追加します。IgbValueOverlayModule は IgbValueOverlay コンポーネントを使用するのに必要なモジュール、IgbDataChartAnnotationModule は軸注釈 (今回の場合はチャート右側の “H”、”M”、”L” の文字) を表示するのに必要なモジュールです。

// Program.cs
builder.Services.AddIgniteUIBlazor(
    typeof(IgbDataChartCoreModule),
    typeof(IgbDataChartCategoryModule),
    typeof(IgbDataChartCategoryCoreModule),
    typeof(IgbDataChartInteractivityModule),
    typeof(IgbColumnSeriesModule),
    typeof(IgbValueOverlayModule),
    typeof(IgbDataChartAnnotationModule)
);

[App.razor] 画面に IgbValueOverlay を追加する

28 行目以降で 1 本の基準線に対して 1 つの IgbValueOverlay を追加しています。IsAxisAnnotationEnabled を true に設定して軸注釈表示を有効にしています。そのままでは “H”、”M”、”L” ではなく Value の値 “120”、”60″、”20″ がそのまま表示されてしまうので、AxisAnnotationFormatLabelScript で “H”、”M”、”L” を返す JavaScript (※後述) を呼び出しています。

@* App.razor *@

<IgbDataChart ...>

    <!-- データ表示用の軸 -->
    <IgbCategoryXAxis Name="xAxis1" ... />
    <IgbNumericYAxis Name="yAxis1" MinimumValue="0" MaximumValue="140" />

    <!--
    基準線表示用の軸
    ※データの目盛は左側、それとは別に「H」「M」「L」の軸注釈を右側に表示しているので、
    ※左側と同じ目盛間隔になるように軸注釈専用の Y 軸を右側に置いています。
    ※ただし目盛ごとの数値を表示する必要はないので文字色 (LabelTextColor) は透明色にしています)
    -->
    <IgbNumericYAxis Name="yAxis2"
                     MinimumValue="0"
                     MaximumValue="140"
                     LabelLocation="AxisLabelsLocation.OutsideRight"
                     LabelTextColor="transparent" />
    ...

    <!-- データ表示用 -->
    <IgbColumnSeries ... />
    <IgbColumnSeries ... />
    ...

    <!-- 基準線表示用 -->
    <IgbValueOverlay Name="lowOverlay"
                     IsAxisAnnotationEnabled="true"
                     AxisName="yAxis2"
                     Value="20"
                     AxisAnnotationFormatLabelScript="OnFormatLabelLowScript" />

    <IgbValueOverlay Name="midiumOverlay"
                     IsAxisAnnotationEnabled="true"
                     AxisName="yAxis2"
                     Value="60"
                     AxisAnnotationFormatLabelScript="OnFormatLabelMidiumScript" />

    <IgbValueOverlay Name="highOverlay"
                     IsAxisAnnotationEnabled="true"
                     AxisName="yAxis2"
                     Value="120"
                     AxisAnnotationFormatLabelScript="OnFormatLabelHighScript" />

</IgbDataChart>

[igbDataChart.js] “H”、”M”、”L” を返す JavaScript を実装し、登録する

App.razor で指定している各 JavaScript (OnFormatLabelLowScript、OnFormatLabelMidiumScript、OnFormatLabelHighScript) を実装します。今回は “H”、”M”、”L” を表示するだけでよいので、そのままシンプルに “H”、”M”、”L” を return しているだけのスクリプトになっています。そして igRegisterScript で登録します。

// wwwroot/js/igbDataChart.js

(() => {
    const OnFormatLabelLowScript = (args) => {
        return "L";
    }
    igRegisterScript("OnFormatLabelLowScript", OnFormatLabelLowScript, false);

    const OnFormatLabelMidiumScript = (args) => {
        return "M";
    }
    igRegisterScript("OnFormatLabelMidiumScript", OnFormatLabelMidiumScript, false);

    const OnFormatLabelHighScript = (args) => {
        return "H";
    }
    igRegisterScript("OnFormatLabelHighScript", OnFormatLabelHighScript, false);
})();

また、ルート ページ (WebAssembly の場合は wwwroot/index.html) でこのスクリプトを読み込むコードを追加します。

<!-- wwwroot/index.html -->
...

<body class="ig-typography">
    ...

    <script src="_content/IgniteUI.Blazor/app.bundle.js"></script>
    <script src="_framework/blazor.webassembly.js"></script>

    <script src="js/igbDataChart.js"></script>    <!-- 👈ここ -->
</body>

サンプル

以上全てまとめたサンプルはこちらです。

 

Tagged:

製品について

Ignite UI for Blazor