Bootstrap Treeview プラグインの導入と活用ガイド

概要と依存関係

Bootstrap Treeview は、jQuery および Bootstrap フレームワーク上で動作するツリー構造表示プラグインです。階層データを視覚的に表現するために使用されます。動作させるためには、以下のライブラリバージョン以上が必要となります。

  • Bootstrap: v3.0.0 以上(推奨 v3.3.4)
  • jQuery: v1.9.0 以上(推奨 v2.1.3)

インストール方法

パッケージマネージャーを使用してプロジェクトに追加するのが推奨されます。Bower または npm を利用できます。

$ bower install bootstrap-treeview

あるいは npm を使用する場合:

$ npm install bootstrap-treeview

基本的な実装

プラグインを機能させるには、必要な stylesheet と javascript ファイルを HTML に読み込ませる必要があります。

<!-- 必須スタイルシート -->
<link href="bootstrap.css" rel="stylesheet">

<!-- 必須スクリプト -->
<script src="jquery.js"></script>
<script src="bootstrap-treeview.js"></script>

ツリーを表示するための DOM 要素を準備します。

<div id="nav-tree"></div>

JavaScript 側でプラグインを初期化し、データバインディングを行います。

$(document).ready(function() {
    function generateNodeData() {
        // ツリー構造データを生成または取得する処理
        return hierarchyData;
    }

    $('#nav-tree').treeview({
        data: generateNodeData()
    });
});

データ構造の定義

ツリーの階層を表現するには、ネストされた JavaScript オブジェクトの配列を渡す必要があります。最下層のノードは単純なオブジェクトで構成され、最低限 text プロパティが必要です。

var hierarchyData = [
  {
    text: "Main Section",
    nodes: [
      {
        text: "Sub Item A",
        nodes: [
          { text: "Detail A-1" },
          { text: "Detail A-2" }
        ]
      },
      {
        text: "Sub Item B"
      }
    ]
  },
  {
    text: "Secondary Section"
  }
];

各ノードオブジェクトには、表示制御や状態管理のための追加プロパティを定義できます。

{
  text: "Node Label",
  icon: "glyphicon glyphicon-folder-close",
  selectedIcon: "glyphicon glyphicon-folder-open",
  color: "#333333",
  backColor: "#ffffff",
  href: "#link-target",
  selectable: true,
  state: {
    checked: false,
    disabled: false,
    expanded: true,
    selected: false
  },
  tags: ['new'],
  nodes: []
}

また、アプリケーション固有のデータ(例:権限 ID や URL など)をオブジェクト内に含めておくことで、イベント発生時に参照することが可能です。

ノードプロパティの詳細

  • text (必須): ノードに表示されるテキスト。
  • icon (任意): テキスト左側に表示するアイコンクラス。
  • selectedIcon (任意): 選択時に表示するアイコンクラス。
  • color (任意): テキスト色(グローバル設定を上書き)。
  • backColor (任意): 背景色(グローバル設定を上書き)。
  • href (任意): ノードクリック時のリンク URL。
  • selectable (任意): 選択可能かどうか(false の見出し専用ノードなど)。
  • state (任意): 初期状態(checked, disabled, expanded, selected)。
  • tags (任意): ノード右側に表示するバッジ情報。

設定オプション

初期化時にオプションオブジェクトを渡すことで、ツリー全体の見た目や挙動をカスタマイズできます。

$('#nav-tree').treeview({
  data: hierarchyData,
  levels: 3,
  backColor: '#e8f4f8',
  borderColor: '#cccccc'
});

主要なオプション設定は以下の通りです。

  • data: ツリー構造データ(必須)。
  • levels: 初期展開する階層数(デフォルト: 2)。
  • backColor: 全体の背景色。
  • borderColor: コンポーネントの枠線色。
  • enableLinks: ノードテキストをリンクとして扱うか。
  • multiSelect: 複数選択を許可するか。
  • showCheckbox: チェックボックスを表示するか。
  • showTags: タグ(バッジ)を表示するか。
  • highlightSelected: 選択ノードを強調表示するか。
  • expandIcon / collapseIcon: 展開・折りたたみアイコンのクラス名。

API メソッド

プラグインインスタンスに対してメソッドを呼び出すことで、プログラムからツリー操作を行います。呼び出し方は主に 2 通りあります。

1. プラグインのラッパー経由:

$('#nav-tree').treeview('methodName', args);

2. インスタンス直接取得:

$('#nav-tree').data('treeview').methodName(args);

主要メソッド一覧

  • expandAll(options): 全ノードを展開。
  • collapseAll(options): 全ノードを折りたたみ。
  • expandNode(nodeId, options): 指定ノードを展開。
  • selectNode(nodeId, options): 指定ノードを選択。
  • checkNode(nodeId, options): 指定ノードをチェック。
  • disableNode(nodeId, options): 指定ノードを無効化。
  • search(pattern, options): 文字列検索およびハイライト。
  • getSelected(): 選択中のノード配列を取得。
  • getExpanded(): 展開中のノード配列を取得。
  • remove(): ツリービューを削除。

多くのメソッドは silent: true オプションを受け取り、イベント発火を抑制できます。

$('#nav-tree').treeview('expandAll', { levels: 2, silent: true });

イベント処理

ツリーの状態変化を検知するためにイベントが用意されています。初期化オプションのコールバック、または jQuery の .on() メソッドでリスナーを登録可能です。

オプションコールバック例:

$('#nav-tree').treeview({
  onNodeSelected: function(event, data) {
    console.log('Node selected:', data.text);
  }
});

jQuery イベントバインディング例:

$('#nav-tree').on('nodeSelected', function(event, data) {
    // 選択時の処理
});

利用可能なイベント

  • nodeSelected: ノード選択時
  • nodeUnselected: 選択解除時
  • nodeExpanded: ノード展開時
  • nodeCollapsed: ノード折りたたみ時
  • nodeChecked: チェックオン時
  • nodeUnchecked: チェックオフ時
  • searchComplete: 検索完了時

タグ: bootstrap-treeview jquery-plugin bootstrap-3 Web-UI javascript

7月15日 22:25 投稿