« スヌーカー初プレイ | メイン | J2EE勉強会 »

2005年05月12日 (木)

AmritaHandler(仮) 20050512版 [テクニカル]

前回はこちら

Amrita2が1.9.3から1.9.4にバージョンアップしてだいぶいろいろ変わっているので、対応できるように修正。前回からの変更点は…

amritahandler_20050512.zip download
動作にはAmrita2 1.9.4とNeedle 1.2.0が必須。

基本の構想はだいぶ形になってきた気がする。今後は機能を追加しつつ、最大勢力のRuby on Railsに摺り寄っていこうかと考え中。

以下適当な説明。

サンプルのlist.htmlは、マスターメンテ系を意識していろいろ詰め込んでみました。もちろんそのままブラウザで確認できます。対応するモデルオブジェクトのlist.rbはこんな感じ。


class List
attr_reader :items
def initialize
item1 = ListItem.new
item1.input = 'foo'
item1.options = [ {:text=>'hoge1', :value=>'hoge1'},
{:text=>'hoge2', :value=>'hoge2'} ]
item2 = ListItem.new
item2.input = 'bar'
item2.options = [ MenuOption.new('hoge3'), MenuOption.new('hoge4') ]
@items = [item1, item2]
end
end
class MenuOption
attr_reader :text, :value
def initialize(value)
@text = value
@value = value
end
end
class ListItem
attr_accessor :delete, :input, :select1, :select2, :radio1, :radio2
attr_writer :options
*ATTR_ACTION_CHECKBOX = :delete
*ATTR_ACTION_TEXTBOX = :input
*ATTR_ACTION_SELECT = :select1
*ATTR_ACTION_SELECT_DYNAMIC = { :name=>:select2, :item_id=>:select2option, :items=>:options }
# :text=>:text, :value=>:value はオプション
*ATTR_ACTION_RADIO = :radio1
*ATTR_ACTION_RADIO_DYNAMIC = { :name=>:radio2, :item_id=>:radio2input, :items=>:options }
def initialize
@delete = false
@input = ''
@select1 = '2'
@select2 = ''
@options = []
@radio1 = 'B'
@radio2 = ''
end
end

定数アノテーションがかなり増えました。意味は名前でなんとなくわかってもらえると思います。 ATTR_ACTION_SELECTATTR_ACTION_SELECT_DYNAMICの違いですが、前者の場合list.htmlにoption要素がすべて書いてあって、それをそのまま表示します。後者の場合はhtmlにはテンプレートとなるoptionが1つだけ書いてあり、アノテーションの:itemsに指定された名前のプロパティからoption項目を動的に生成します。データはHashと独自クラスのどちらも使えます。

ロジックはActionクラス(listaction.rb)に書きますが、マスターメンテ系なのでロジックはあまりありません。データベース連携などの機能はまだありませんが、Actionクラスに少し書き足すだけで簡単にできるでしょう。

投稿者 4bit : 2005年05月12日 21:56 このエントリーを含むはてなブックマーク

トラックバック

このエントリーのトラックバックURL:
http://www.4bit.net/x/mt/mt-tb.cgi/56

コメント

コメントしてください




保存しますか?