AngularJSアプリのデータを視覚的に魅せるモジュールたち ~ チャートからタイムラインまで
AngularJSアプリ開発を支援する便利モジュール(7)
ダウンロード サンプルファイル (2.3 MB)
時系列データをタイムラインとして整形する - Angular Timeline
自分の来歴、会社の歴史、あるいは、イベントの予定など、時系列上で意味のある情報をわかりやすく見せたいということはよくあります。そのような場合に役立つのが、Angular Timelineです。Facebookなどでもよく見かけるようなタイムラインを、限りなくコーディングレスで生成できるモジュールです。
Angular Timelineは、Bowerを利用することで、以下のコマンドでインストールできます。
bower install --save angular-timeline
では、具体的な例を見ていきます。
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="UTF-8" />
<title>AngularJS</title>
<!-- (1)ライブラリ本体/スタイルシートをインポート -->
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="bower_components/angular-timeline/dist/angular-timeline.css" />
<script src="bower_components/angular/angular.min.js"></script>
<script src="bower_components/angular-timeline/dist/angular-timeline.js"></script>
<script src="scripts/tl.js"></script>
</head>
<body ng-controller="MyController">
<timeline>
<timeline-event ng-repeat="event in events">
<timeline-badge class="{{event.badgeClass}}">
<i class="glyphicon {{event.badgeIconClass}}"></i>
</timeline-badge>
<timeline-panel class="{{event.badgeClass}}">
<timeline-heading>
<h4>{{event.title}}</h4>
<p>
<small class="text-muted">
<i class="glyphicon glyphicon-star"></i>{{event.subtitle}}
</small>
</p>
</timeline-heading>
<p>{{event.content}}</p>
</timeline-panel>
</timeline-event>
</timeline>
</body>
</html>
// (2)angular-timelineモジュールへの依存関係を設定
angular.module('myApp', ['angular-timeline'])
.controller('MyController', ['$scope', function($scope) {
// イベント情報をスコープ変数として準備
$scope.events = [
{
badgeClass: 'success',
badgeIconClass: 'glyphicon-home',
title: '2000年開業',
subtitle: '東京都に1号店をオープン',
content: '脱サラして、念願のケーキ屋さんになりました。'
},
...中略...
];
}]);
Angular Timelineを利用するには、ライブラリ本体(angular-timeline.js)/スタイルシート(angular-timeline.css)をインポートした上で(1)、アプリモジュール(myApp)からangular-timelineモジュールへの依存関係を宣言します(2)。サンプルでは、Bootstrapのライブラリもインポートしていますが、これはBootstrapのアイコンを利用しているからです。Angular Timelineを利用する上で必須というわけではありません。
あとは、ビュー(.html)でタイムライン情報をマークアップするだけです(3)。タイムライン情報を表すディレクティブには、以下のようなものがあります。
| ディレクティブ | 概要 |
|---|---|
| <timeline> | タイムラインのルート要素 |
| <timeline-event> | タイムライン個々のイベントを表すノード |
| <timeline-badge> | ノードに付与するアイコン(バッジ) |
| <timeline-panel> | ノード配下のパネル |
| <timeline-heading> | パネルのヘッダー |
| <timeline-title> | ヘッダータイトル |
| <timeline-content> | パネル本体 |
サンプルでは、ng-repeat属性であらかじめ用意したオブジェクト配列eventsの内容を展開していますが、もちろん、<timeline-event>要素をイベントの数だけ列挙しても構いません。いずれにせよ、Angular Timelineそのものは、マークアップされた順序に従って、データを整形するためのモジュールですので、順序はあらかじめアプリ側で並べ替えておく必要があります。
まとめ
以上、本稿ではアプリ内のデータをさまざまな方法で見せるためのモジュールを紹介しました。同じデータでも見せ方によっては、よりわかりやすく、ということは、効果的に読者に伝わるものです。近頃では、本稿で紹介した他にも、さまざまなモジュールが存在しますので、積極的に取り入れ、アプリに一味加えてみてはどうでしょう。
次回は、補助的なヘルプ情報や通知を手軽に見せるためのウィジェットについて紹介します。
参考資料
- 『AngularJSアプリケーションプログラミング』(技術評論社)
- 『AngularJSライブラリ 活用レシピ 厳選 108』(WINGSプロジェクト)
この記事は参考になりましたか?
既に会員の方はを行ってください。
- AngularJSアプリ開発を支援する便利モジュール連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト(ウイングスプロジェクト)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
