TOPシステム開発> LZXのグリッドをグリッドをコンポーネント化する
いまが旬!Ruby on Rails&OpenLaszlo
いまが旬!Ruby on Rails&OpenLaszlo

第3回:Google Maps+Ruby on Railsで連携したアプリケーションを作る

著者:ネットエイト  十河 学   2007/10/15
1   2  3  次のページ
LZXのグリッドをグリッドをコンポーネント化する

   「第2回:開発環境の構築と顧客管理アプリケーションの作成」ではRuby On Rails 1.2(以下、RoR)で導入された「scaffold_resource」スクリプトを使って、1つのコマンドからRest-fulなアプリケーション生成し、LZXアプリケーションから利用する方法を説明しました。今回はLZXのグリッドからRESTリクエストし、RoRによって管理されているDBに反映する方法を説明したいと思います。

   この記事の執筆中にOpenLaszlo 4.0.5がリリースされ、swf開発の推奨バージョンはOpenLaszlo 3.xからOpenLaszlo 4.xになりました。DHTML版はまだβリリースとされており、4.1から正式に対応となる予定です。

LZXからデータの追加、編集と削除

   前回はRoRから取得したXMLデータをLZXのグリッドに表示しました。このグリッドにデータの追加/編集と削除の機能を追加してみましょう。ソースコードは前回から引き続き使用していますので「第2回:開発環境の構築と顧客管理アプリケーションの作成」をまだ読まれていなければこちらからお読みください。

   ここでは削除/更新機能のあるグリッドをコンポーネントとしていつでも再利用できるようにクラス化します。LZX言語はタグとECMAScriptを使って記述しますが、作成したクラスの継承し機能を拡張できるようになっており、生産性の向上に重要な役割をはたしています。

   まずライブラリファイルを作成します。前回作成した「my-apps/laszlocustomerapp」ディレクトリ内にあるmain.lzxと同じレベルに「restgrid.lzx」を作成してください。外部ライブラリの開始タグは<library>で、<class>タグでクラス名と継承元のクラスを設定しています。1つのライブラリファイル内に複数のクラスを作成することもできますが、内部で使用される小さなクラス以外は別々のファイルにした方が管理しやすいでしょう。

restgrid.lzx(新規作成)
 <library>
   <class name="restgrid" extends="grid">
   </class>
</library>

   canvasから外部ライブラリを読み込むには<include>タグを使用し、main.lzxの最初に次のように追加します。

main.lzx(一部)
<canvas>
  <include href="restgrid.lzx" />
    .....

   restgridはまだ新しい機能を追加していませんが、gridを継承していることから、girdと同じ機能をもっています。試しにmain.lzxの「grid」を「restgrid」に変更して実行してみましょう。

main.lzx(一部)
<restgrid name="customers datapath="customerdata:/customers" width="500" height="200">
    ......
</restgrid>

   では「http://127.0.0.1:8080/trunk/my-apps/laszlocustomerapp/main.lzx?debug=true」にアクセスして、前回と同様に動作する事を確認してください。デバッグ中は基本的に「debug=true」を付加して実行し、デバッグウィンドウを表示させておくことをお勧めします。これにより、デバッグウィンドウには実行時のエラーやワーニングが表示されバグを発見しやすくなります。

   それでは削除と保存ボタンを行の先頭に追加し、PUTとDELETEを送信するグリッド(restgrid)を実装します。でき上がりは次のようになる予定です。

でき上がり結果(予定)
図1:でき上がり結果(予定)
(画像をクリックすると別ウィンドウに拡大図を表示します)

   グリッド内に表示されるボタンも再利用したいのでクラス化します。新しくgridbutton.lzxを作成してください。gridcolumnを継承したgridbuttonクラスを作成し、ボタンを表示しています。

gridbutton.lzx

(画像をクリックすると別ウィンドウに拡大図を表示します)

   ライブラリの<!--- 説明 -->で囲まれたコメントはLZXDocとしてツールを使って自動的にドキュメント化できるので、わかりやすいように書いておきましょう。LZXDocについてもっと知りたい方はこちらに詳しく説明されているので参照ください。


1   2  3  次のページ


株式会社ネットエイト 十河 学
著者プロフィール
株式会社ネットエイト  十河 学
2005年にOpenLaszloに出会う。RIAとオープンソースの可能性に感動し、OpenLaszloの情報交換を目的としたlaszlo.jpを勢いで開設。オープンソースアプリケーションはもちろん、iTunesやYouTubeから生まれるアーティストや、場所を問わないワークスタイルなどインターネットを中心として大きく変わりつつある世界の動きにも興味あり。現在はnet8のメンバーで沖縄県在住。

http://laszlo.jp


INDEX
第3回:Google Maps+Ruby on Railsで連携したアプリケーションを作る
LZXのグリッドをグリッドをコンポーネント化する
  RoRのデータ受け取り方法を修正する
  RoRのデータ受け取り方法を修正する(続き)