CSVサーバー0.7

前回までの状態をCSVサーバー0.7として公開しました。

更新履歴

  • 検索フィルター内でリンクをクリックした時も「処理中...」の表示をするようにしました。
  • フィルター中は、テーブルの外枠を強調表示するようにしました。フィルター状態かどうか、一目で判断できます。
  • 「フィルターを解除する」をクリックすると、フィルターを解除した状態が維持されます。(以前はその時だけで解除されて、次のページを見たり等、何か操作をするとフィルター状態に戻っていました。だから「一時的に」という言葉が入っていたのです。)
  • 「フィルターを追加」リンクをクリックした時の、IE6でうまく動作しない状況を改善しました。

忘れたくない自分メモ

form_remote_tagで、id属性を設定したい。
<%= form_remote_tag :update => 'list_update', 
                    :submit => 'list_params', 
                    :url => {:action => 'filter_on'}, 
                    :html => {:id => 'list_form'} %>
<%= observe_form :list_form, 
                 :update => 'list_update', 
                 :submit => 'list_params', 
                 :url => {:action => 'list_update'} %>
  • :html => {:id=>'list_form'}で、htmlオプションの指定が可能になる。
クリックしたら、リンク文字列を「処理中...」と表示する。
<%= link_to_remote 'フィルターを解除', 
                   {:_update => 'list_update',
                    :submit => 'no_filter_params',
                    :url => {:action => 'filter_off', :filtering => ''},
                    :loading => "Element.update('filter_cancel', 'フィルターを解除中...')",
                    :complete => "Element.update('filter_cancel', 'フィルターを解除')"},
                   :id => 'filter_cancel' %>
  • "Element.update('filter_cancel', 'フィルターを解除中...')"の部分は、以下のように書き換えてもOK。
    • "$('filter_cancel').firstChild.nodeValue = 'フィルターを解除中...'"
    • "$('filter_cancel').firstChild.nodeValue += '中...'"
2つのブロック要素を、右寄せ、左寄せで1行に表示する。
<div class="action">
  チェックした項目を削除
</div>

<div class="page">
  ページ: <前 1 2 3 次>
<div>

<style>
  div.action {float: right;}
</style>
  • float: rightのように指定すると、指定されたブロックはページの右に配置される。
  • 左の余白部分には、続く内容が描画される。(floatの指定がなければ、通常は改行されて次の行から描画される。)
クラス属性だけ追加する。
  def filter_on
    render :update do |p|
      p << "Element.addClassName('csv_list', 'filtering')"
    end
  end
  • 書式は次のようになる。Element.addClassName('操作対象のid属性', 'class名称')
複数クラス属性を利用して指定する。
<table class="list filtering" id="list">
</table>

<style>
  table.list.filtering {border:2px groove #666;}
</style>
  • htmlでは、class="list filtering"のように、クラス名をスペースで区切る。
  • cssでは、table.list.filteringのように、ドットを付加したクラス名を並べる。
    • table.filtering.listでもOK。クラス名の順序は関係無い。
    • table.list、table.filteringでは、どちらもマッチする。その場合、後で指定したスタイルが優先される。(list、filtering自体の優先順位は同列)