- Sencha.com—Japanese
Sencha

Ext JS Data Gridをすばやくカスタマイズする方法(part 4/6)– データ表示形式を柔軟にカスタマイズする

2020-07-16 345 Views
表示

全6回構成の「Ext JSグリッドのカスタマイズ」ブログシリーズの4回目の記事では、柔軟にデータグリッドをカスタマイズすることにフォーカスします。 第1回〜第3回の記事は次のリンクよりお読みいただけます。

第1回:GridとColumnのプロパティをカスタマイズする
第2回:グループ化されたグリッド
第3回:編集機能の追加や行の折りたたみ表示

Ext JSのGridではデータ表示のカスタマイズが容易に行えます。 この記事ではNBA 2020プレーヤーのレーティング情報を表示するグリッドをサンプルとして使用します。

最初の例では、プレーヤーの身長をフィートやインチにして表示したり、年俸の金額を3桁区切りで表示するために、rendererメソッドやformatterプロパティを使用します。

まず、今回の表示で用いるデータは次のように作成しており、身長(ht) や年俸(Salary)は数値がそのまま用いられています。桁区切りの記号は含みません。

    "data": [
        {
            "player": "Kemba Walker",
            "team": "Boston Celtics",
            "rating": 88,
            "dunkRating": 30,
            "threePointRating": 83,
            "position": "PG",
            "ht": 60,
            "salary": 32742000
        },
        {
            "player": "Jayson Tatum",
            "team": "Boston Celtics",
            "rating": 86,
            "dunkRating": 83,
            "threePointRating": 90,
            "position": "SF",
            "ht": 68,
            "salary": 7830000
        },
        {
            "player": "Jaylen Brown",
            "team": "Boston Celtics",
            "rating": 85,
            "dunkRating": 82,
            "threePointRating": 85,
            "position": "SG",
            "ht": 66,
            "salary": 6534829
        },
        {
            "player": "Gordon Hayward ",
            "team": "Boston Celtics",
            "rating": 82,
            "dunkRating": 81,
            "threePointRating": 75,
            "position": "PG",
            "ht": 67,
            "salary": 32700690
        },
        {
            "player": "Marcus Smart",
            "team": "Boston Celtics",
            "rating": 82,
            "dunkRating": 74,
            "threePointRating": 50,
            "position": "SG",
            "ht": 63,
            "salary": 12553471
        }
    ]

この情報をGridで表示するときに、プレイヤーの身長(Height)と年俸(salary)をフォーマットして表示できます。実際の表示例は以下のとおりです。


身長(Height)の表示形式をカスタマイズする

renderer メソッドは、Gridのカラムで表示するデータをレンダリング前に変換したい時に使用できます。カラムのコンフィグでデフォルトの renderer メソッドをオーバーライドする function を実装して使用します。

{
    dataIndex: 'ht',
    text: 'Height',
    flex: 1,
    renderer: function(value) {
        let height = value.toString();
        return height.substring(0, 1) + '\'' + height.substring(1, 2) + '"';
    }
}

年俸(Salary)のフォーマットをカスタマイズする

formatter コンフィグで Ext.util.Format のメソッドを指定できます。下記の例では ‘usMoney’ と設定してUSドルのフォーマットで表示します。

{
    dataIndex: 'salary',
    formatter: 'usMoney',
    text: 'Salary',
    flex: 1
}

このコードをFiddle Toolで確認して実行する

データ型に合わせたカラムを設定する

ここまでの実装では、それぞれのカラムの xtype を明示的に指定していないため、Ext.grid.column.Column が用いられました。しかしカラムの種類を明示するとデータ型に適した表示が行われます。

Ext.grid.column.Boolean true/falseの値の表示用
Ext.grid.column.Date 日付や時刻の表示用
Ext.grid.column.Number 数値の表示用

この例示のために次のようなデータセットを使用し、player, salary, lastYearContract の項目を表示する Grid を作成します。

[
    {
    "player: "Kemba Walker",
    "team": "Boston Celtics",
    "rating": 88,
    "dunkRating": 30,
    "threePointRating": 83,
    "position": "PG",
    "ht": 60,
    "salary": 32742000,
    "twoPointPercent": 0.48,
    "threePointPercent": 0.38,
    "scoringEvolution": [12,17,17,17,21,23,22,25,22],
    "plusMinusEvolution2020": [-16,7,13,8,4,0,20,21,18,-4,2,0,22,-8,-9,4,-10,7,16],
    "lastYearContract": false
    },
    ...
]

 

Sarary の列は xtype: ‘numbercolumn’ と設定することで、3桁ごとのカンマ区切りと小数点以下2桁までの形式による表示になります。汎用的な数値向けのカラムのため$記号は含みませんが、必要に応じて表示形式はカスタマイズできます。

lastYearContract の列は Yes/No で表示していますが、元のデータは true / false です。このように表示するために xtype: ‘booleancolumn’ を使用し、さらに trueText, falseText によるカスタマイズを行います。

{
    xtype: 'numbercolumn',
    dataIndex: 'salary',
    text: 'Salary',
    flex: 1
}, {
    xtype: 'booleancolumn',
    dataIndex: 'lastYearContract',
    text: 'Is last year contract',
    trueText: 'Yes',
    falseText: 'No',
    flex: 1
}

このコードをFiddle Toolで確認して実行する

もし、表示する金額の通貨がUSドルではなく日本円の場合は次のように format: ‘0,000’ とすれば小数点部分が非表示になります。実際の動作は Fiddle tool のコードを修正して再実行することでご確認いただけます。

{
    xtype: 'numbercolumn',
    format: '0,000',
    dataIndex: 'salary',
    align: 'right',
    flex: 1
}

Ext.grid.column.Number の format で記述可能な書式は Ext.util.Format.html に解説がありますので、こちらもお読みください。

次回の記事では「ウィジェットカラムでグリッドをカスタマイズする方法」を解説します。

第5回の記事を読む

Ext JS 7.2 でデータグリッドを作成する

Ext JS 7.2の30日間無料トライアルは、製品の全ての機能にアクセスできます。アプリケーションに高性能なデータグリッドを作成する方法をお読みいただき、Get Started のドキュメントから始めましょう!

表示
Ext JS開発を今すぐ始めよう

140以上のコンポーネントと強力なツールでWebアプリを10倍速く構築

最新記事
GXT 4.2リリース
GXT 4.2リリース

Senchaチームは、GWT (旧 Google Web Toolkit) コンパイラを使用してWebアプリケーション開発を行う包括的なSencha Javaフレームワーク「GXT」のバージョン4.2をリリースしました。GXTを用いれば、Javaコードをコンパイルすることで、高度に最適化されたクロスプラットフォームHTML5アプリケーションを構築できます。

Rapid Ext JSの提供を開始 - Ext JSアプリケーション開発のためのローコードエディター
Rapid Ext JSの提供を開始 - Ext JSアプリケーション開発のためのローコードエディター

Ext JS開発を効率化し、生産性を加速する革新的なローコードエディター「Rapid Ext JS」の正式リリース「バージョン 1.0」の提供を開始しました。Sencha Ext JSを利用している開発者は、開発プロセスを効率化し、スムーズかつスピーディにWeb開発を推進できます。この記事では、Rapid Ext JSがExt JS開発プロジェクトの効率化にどのように貢献するのか、その主要な機能とともに紹介します。

Sencha Architect 4.3.6リリース
Sencha Architect 4.3.6リリース

Senchaチームは、Sencha Architect バージョン4.3.6の提供開始を発表します。この新バージョンでは、4.3.5リリースをベースとして、Ext JS 7.8での品質強化を受け、Classicツールキット向けの新機能Froalaサポートが追加されたほか、シームレスなインストール、容易なアップグレードプロセス、さらなる品質向上が図られています。

その他の記事

おすすめ記事

Sencha Architect 4.3.6リリース

Senchaチームは、Sencha Architect バージョン4.3.6の提供開始を発表します。この新バージョンでは、4.3.5リリースをベースとして、Ext JS 7.8での品質強化を受け、Classicツールキット向けの新機能Froalaサポートが追加されたほか、シームレスなインストール、容易なアップグレードプロセス、さらなる品質向上が図られています。

Sencha 2024/2025ロードマップ

このブログ記事では、近い将来に計画しているSencha製品のリリースについての詳細を説明します。Sencha チームでは、日々お客様と対話を続けており、皆さんのフィードバックが、製品全体の方向性の決定に大きな役割を果たしています。ロードマップアップデートの詳細を説明する前に、ここ数ヶ月で提供した内容についてまとめておきたいと思います。

Rapid Ext JS: エンタープライズ ローコード開発ツール

企業がどのように複雑なアプリを素早く構築しているのか、不思議に思ったことはありませんか? 今日のテクノロジー業界において、アプリケーションを素早く作成してリリースしたいという要求が重要になっています。そこで「ローコード開発」です。ローコード開発は、企業のソフトウェア開発の手法を変革します。そして、「Rapid Ext JS」が、開発者の作業を容易にします。

Ext JS ClassicとModern ツールキットの違いを理解する

Ext JSは、強力なWebアプリケーション/モバイルアプリケーションを構築するためのJavaScriptフレームワークです。フレームワークには、140を超える高性能でフルテスト済のカスタマイズ可能な UIウィジェット/コンポーネントが搭載されています。さらに、すべての最新ブラウザに対応し、クロスプラットフォーム開発をサポートしています。Ext JSは、アプリを構築するための2つのツールキット(Classic ToolkitとModern Toolkit)を提供しています。それぞれのツールキットは、異なるユースケースに対応するように設計されており、独自の機能と利点を提供します。

Ext JS 7.8リリース

このたび、Senchaチームは、Sencha Ext JS 7.8のリリースを発表しました。このリリースでは、7.7リリースに続き、Grid、Timefield、Chart、TreePanelなどユーザーの皆さんからの要望に応え、ModernおよびClassicツールキットに数多くの品質強化を行っています。また、Ext JS 7.8には、Classicツールキットの新機能Froalaに加え、CheckBox、Grid、DataViewの改善、Grid、Combo、CheckBox、Chart、Date Field、TreePanel、Storeなどに対する要望の多かった機能、双方のツールキットに対する品質改善が含まれます。

Virtual JS Days 2024 のハイライト

2024年2月20日~22日、第3回目となる「Virtual JavaScript Days」が開催されました。JavaScript の幅広いトピックを採り上げた数多くのセッションを実施。その内容は、Senchaの最新製品、ReExt、Rapid Ext JSまで多岐にわたり、JavaScriptの最新のサンプルも含まれます。 このカンファレンスでは多くのトピックをカバーしています。Senchaでセールスエンジニアを務めるMarc Gusmano氏は、注目すべきセッションを主催しました。Marc は Sencha の最新製品「ReExt」について、詳細なプレゼンテーションを実施。その機能とメリットを、参加者に理解してもらうべく詳細に説明しました。 カンファレンスは、Senchaのジェネラルマネージャを務めるStephen Strake氏によるキーノートでスタートしました。キーノートでは、会社の将来のビジョンについての洞察を共有しています。世界中から JavaScript 開発者、エンジニア、愛好家が集まるとてもエキサイティングなイベントとなりました。これは、JavaScript エコシステムの最新情報について学ぶユニークな機会と言えます。

ブログ記事一覧