SHOEISHA iD

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

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

japan.internet.com翻訳記事

XMLとXSLによるプログレスバーの使用

XMLとXSLを使った高度なUIデザイン:パート6

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

この連載では、1回に1つずつ、XMLとXSL(XML用のスタイルシート言語)を使用して高度なユーザーインタフェース(UI)コンポーネントを作成していきます。今回は、前回紹介したプログレスバーオブジェクトの利用法をいくつか紹介します。

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

はじめに

 この連載では、XMLとXSLを使った高度なUIデザインに挑戦します。XMLとXSL(XML用のスタイルシート言語)を使用して、高度なユーザーインタフェース(UI)コンポーネントを毎回1つずつ作成していきます。

 今回は、前回紹介したプログレスバーオブジェクトの利用法をいくつか紹介します。

データバインドテーブルで利用する

概要

 このプログレスバーを使って、データバインド処理の進行状況を表示することができます。図1では、420レコードのデータバインド処理の進行状況をユーザーに示すためにプログレスバーを使用しています。

図1 データバインドの進行状況をプログレスバーで表示
図1 データバインドの進行状況をプログレスバーで表示

プログレスバーのセットアップ

 このプログレスバーは、次に示すスクリプトを介してクライアント側でセットアップされます。

<SCRIPT LANGUAGE="Javascript">
  var progressIndicator1;

  function init()
  {
    progressIndicator1 = new ProgressIndicator();

    progressIndicator1.xmlDoc = 
        "ProgressIndicator/ProgressIndicator.xml";
    progressIndicator1.xslDoc = 
        "ProgressIndicator/ProgressIndicator.xslt";

    progressIndicator1.target = progressIndicator;

    progressIndicator1.init();
    
    dataTable.dataSrc = "#CustomerData";
    updateDataBindProgress();
  }

  function updateDataBindProgress()
  {
    var percent;
    
    percent=Math.round((dataTable.rows.length-1)/
        CustomerData.documentElement.childNodes.length * 100 );
    progressIndicator1.update(percent);

    if(percent != 100)
    {
      setTimeout("updateDataBindProgress()", 100);
      dataTableCount.innerText = dataTable.rows.length-1 + " rows";
    }
    else
    {
      dataTableStatus.innerText = "Complete.";
      dataTableCount.innerText = dataTable.rows.length-1 + " rows";
    }
  }
</SCRIPT>

 上記のとおり、まずはinit()関数でプログレスバーのインスタンスの作成と設定を行います。プログレスバーのinit()メソッドを呼び出した後、テーブルのdataSrcプロパティを設定します。dataSrcプロパティの設定によってデータバインド処理が開始されるので、そのすぐ後にupdateDataBindProgress()関数を呼び出します。この関数は100ミリ秒ごとに自分自身を呼び出し、すべての行の読み込みが終わるまでクライアントを更新し続けます。

データバインドXML

 参考までに、今回のサンプルで使用するXMLデータソースを図2に示します。

図2 「customers.xml」データファイル
図2 「customers.xml」データファイル

 customer要素の下にあるすべての要素は、データバインドテーブル中の列として表示されます。データバインドテーブルの設定時に、表示する要素を選択することができます。

データバインドテーブル

 本稿で使用するデータバインドテーブルを次に示します。

<TABLE ID="dataTable" BORDER="0" CELLSPACING="0" CELLPADDING="2">
  <TBODY>
    <TR>
      <TD CLASS="dataValue">
        <DIV DATAFLD="id" STYLE="width: 30px; overflow: hidden;"
             NOWRAP="true" />
      </TD>
      <TD CLASS="dataValue">
        <DIV DATAFLD="company" STYLE="width: 120px; overflow: hidden;"
             NOWRAP="true" />
      </TD>
      <TD CLASS="dataValue">
        <DIV DATAFLD="address" STYLE="width: 120px; overflow: hidden;"
             NOWRAP="true" />
      </TD>
      <TD CLASS="dataValue">
        <DIV DATAFLD="city" STYLE="width: 100px; overflow: hidden;"
             NOWRAP="true" />
      </TD>
      <TD CLASS="dataValue">
        <DIV DATAFLD="state" STYLE="width: 40px; overflow: hidden;"
             NOWRAP="true" />
      </TD>
      <TD CLASS="dataValue">
        <DIV DATAFLD="zip" STYLE="width: 30px; overflow: hidden;"
             NOWRAP="true" />
      </TD>
    </TR>
  </TBODY>
  <TFOOT>
    <TR>
      <TD CLASS="dataLabel" STYLE="border-bottom: 0px solid black;"
          ALIGN="center" COLSPAN="100%">
        <b>End</b>
      </TD>
    </TR>
  </TFOOT>
</TABLE>

 各列に表示する要素を指定するためにDIVタグのDATAFLDプロパティを使用していることに注意してください。DATAFLDプロパティを設定するときには、利用するデータソース内の対応フィールド名の大文字/小文字に合わせる必要があります。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
グラフまたはアンケート結果の表示手段として利用する

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

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

Joe Slovinski(Joe Slovinski)

1993年以来、Webアプリケーションの開発に継続的に携わる。本稿で紹介したコードについてのお問い合わせはJoe Slovinskiまで。

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/272 2006/04/11 19:07

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング