SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

JavaScriptライブラリ「Wijmo」のさまざまな部品を徹底活用(AD)

JavaScriptライブラリ「Wijmo」のさまざまな部品を徹底活用!~複数チャートをタブパネルで切り替え表示~

JavaScriptライブラリ「Wijmo」のさまざまな部品を徹底活用 第2回

  • このエントリーをはてなブックマークに追加

タブパネルによる切り替え表示を実装(3)

index.jsにおけるFlexGridの実装

 これまで表(FlexGrid)には、日時、最高気温、最低気温だけが表示されていましたが、今回追加したデータ項目もまとめて表示するため、リスト5(1)のcolumns配列にデータ項目を追加します。データの項目名(表1参照)をbinding属性に、ヘッダーに表示するデータ名をheader属性に指定します。allowSortingはその項目での並び替えを許可するか(ここでは許可しない)、formatは値の表示フォーマット(ここではF1=小数第1位まで表示)を指定します。

[リスト5]表(FlexGrid)を表示するJavaScriptの実装(p001-wijmo/index.js)
const grid1 = new wijmo.grid.FlexGrid('#grid1', {
  autoGenerateColumns: false,
  isReadOnly: true,
  columns: [ // ...(1)
    { binding: 'date', header: '日時', allowSorting: false },
    { binding: 'maxTemperature', header: '最高気温', allowSorting: false, format: 'F1' },
    { binding: 'minTemperature', header: '最低気温', allowSorting: false, format: 'F1' },
    { binding: 'precipitation', header: '降水量', allowSorting: false, format: 'F1' },
    { binding: 'sunshineHours', header: '日照時間', allowSorting: false, format: 'F1' },
    { binding: 'windSpeed', header: '風速', allowSorting: false, format: 'F1' },
    { binding: 'humidity', header: '湿度', allowSorting: false, format: 'F1' }
  ]
});

表やチャートに表示するデータを取得する処理

 表やチャートに表示するデータ(図6のdata.csv)を取得する処理をリスト6に示します。処理内容は前回記事と同一ですが、取得したデータの変数recordsは、(1)の通り、今回設定した5つのチャート(chart1~chart5)と表(grid1)それぞれのitemsSourceプロパティに設定するようにします。

[リスト6]表やチャートに表示するデータを取得する処理(p001-wijmo/index.js)
function fetchAndApply() {
  // CSVファイルを読み込み
  fetch('data/data.csv')
    .then(res => res.text())
    .then(text => {
      // CSVファイルを解析
      csv_parse.parse(text, {
        columns: true,
        cast: true,
        cast_date: true
      }, (err, records) => {
        // 解析したデータをFlexGridとFlexChartのitemsSourceに設定 ...(1)
        grid1.itemsSource =
        chart1.itemsSource =
        chart2.itemsSource =
        chart3.itemsSource =
        chart4.itemsSource =
        chart5.itemsSource = records;
      })
    });
}

スタイルシートでレイアウトを微調整

 タブパネルのほか、表のデータ項目やチャートの数が増えたのに対応して、スタイルシートindex.cssをリスト7の通り調整します。表とチャートを横方向に半分ずつ表示するため、(1)のwidthに50%を設定します。また、複数のチャートそれぞれに高さを調整する必要があるため、(2)のchartクラスを各チャートに付与して、高さを500pxに設定しました。

[リスト7]スタイルシートの調整(p001-wijmo/index.css)
#horizontal-container {
    display: flex;
    flex-direction: row;
}

#grid-container,
#chart-container {
    width: 50%; /* (1) */
    padding: 10px;
}

#grid1 {
    height: 550px;
}

.chart { /* (2) */
    height: 500px;
}

 図3の状態をベースに以上の改造を行うと、タブパネルで複数のチャートを切り替え表示する図4のWebページが実装できます。

まとめ

 本連載では、全4回にわたり、Wijmoが提供するUI部品を複数組み合わせて本格的なWebページを作成します。第2回となる今回は、タブパネルを利用して、複数種類のチャートを切替表示できるようにしました。

 今回の改造で表示されるデータ項目が増えたとはいえ、これらはすべて北海道のデータでした、次回はWebページに図2②のドロップダウンを加えて、リストからの選択や部分一致検索で都道府県を指定して、対応するデータを表やチャートに表示するよう実装していきます。

参考資料

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
JavaScriptライブラリ「Wijmo」のさまざまな部品を徹底活用連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト  吉川 英一(ヨシカワ エイイチ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17180 2023/02/14 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング