=begin = Gfdnavi においてどうやって可視化機能を増やすか # # 履歴情報 (新しい更新履歴を上に追記していくこと) # # * 2006/02/24 (西澤) 編集 # * 2006/12/05 (堀之内) 編集 # * 2006/11/11 (西澤) 編集 # * 2006/11/07 (堀之内) 作成 == 手順 === 変更すべきファイル * Analysis Model ファイル * app/models/analysis.rb * 描画設定 View テンプレートファイル * 折れ線図: app/views/analysis/_draw_line_settings.rhtml * トーン&等値線図: app/views/analysis/_draw_tone_settings.rhtml * ベクトル図: app/views/analysis/_draw_vector_settings.rhtml * ヘルプファイル * app/views/analysis/__help_draw_tab.{en|ja}.html === Analysis Model 描画に関するパラメータやオプションをもとに、 Analysisモデルが Vizshot を生成し、 その vizshot を通じて GGraph や DCL に渡される。 描画パラメータの追加は、Analysisクラスの属性を追加することで実現する。 Analysisモデルで、変更する必要があるのは、 * 属性追加・値のキャスト・検証 * Vizshotの生成 * Vizshot から Analysis モデルインスタンスの生成 * URIの作成 に関わる箇所である。 Vizshot や GGraph のオプションを追加するためには、 Analysisクラスに属性を追加するための情報をある配列に追加するだけで、 自動的に上記の全てが変更されるようになっている。 ==== Vizshot or GGraph へ渡すオプションを追加する場合 * Analysis Model に属性を追加する @@draw_line_attrs(折れ線図), @@draw_tone_attrs(トーン&等値線図), @@draw_vector_attrs(ベクトル図)に、以下を追加する ["オプション名", デフォルト値, 値のタイプ, 省略可能か, vizshot or GGraphどちらのオプションか] * オプション名 : オプションの名前 * デフォルト値 : オプションのデフォルト値 * 値のタイプ : * "boolean" : true or false * "float" : 浮動小数 * "int" : 整数 * "string" : 文字列 * "array_int" : 整数の配列 (入力は半角コンマで区切る必要あり) * "array_float" : 浮動小数の配列 (入力は半角コンマで区切る必要あり) * 省略可能か : 省略可能ならば true, 不可能な場合は false * vizshot or GGraphどちらのオプションか : vizshotの場合は :vizshot, GGraphの場合は :ggraph * 値の検証 (オプショナル) * 数値の範囲を指定する @@minmaxs(Hash) に以下を追加する "オプション名"=> [min, max] * オプション名 : オプションの名前 * min : 値の最小値 (最小値が無い場合は Float::MIN を指定すれば良い) * max : 値の最大値 (最大値が無い場合は Float::MAX を指定すれば良い) * 任意の検証 write_attribute メソッドの case attr_name.to_s にコードを追加する。 ==== Vizshot or GGraph に対応するオプションが無い場合 まず、analysis.rb の中身をじっくり見てください。 基本は上記の場合とあまり変わりません。 編集すべきはメソッドは、 * get_vizshots * self.from_vizshot * self.uri_params_from_vizshot です。必要に応じて * write_attribute * variable_clear も編集する必要があるかもしれません。 === View テンプレート ユーザーは、折れ線、トーン&等値線図、ベクトル図に関する指定は analysis の左下の Draw メニュー内の Specific Settings サブメニューで行う。 設定メニューを追加するためには、それぞれ対応するテンプレート(rhtml)ファイルに追加する。 * View テンプレートに設定用フォームを追加する railsのヘルパーメソッドが使える。第一引数はmodel名(analysis)、第二引数はオプション名 * boolean: check_box("analysis", "オプション名") * int,float,array_*: text_field("analysis", "オプション名", size=> 入力フィールドの幅) 説明も付ける === ヘルプ (()) を参照 == 例1:ユニットベクトルを表示できるようにする === 変更したファイル app/models/analysis.rb app/views/analysis/_draw_vector_settings.rhtml === 具体的な変更 * annalysis.rb +++ app/models/analysis.rb 24 Feb 2007 14:14:12 -0000 @@ -124,6 +124,7 @@ ["color_bar", true, "boolean", false, :vizshot] ] @@draw_vector_attrs = [ + ["unit_vect", false, "boolean", true, :ggraph], ["vector_variables_order", [], "array", false] ] function_attrs = [ * _draw_vector_settings.rhtml +++ app/views/analysis/_draw_vector_settings.rhtml 24 Feb 2007 14:14:12 -0000 @@ -8,4 +8,9 @@
X-Y component <%= render(:partial => "variables_order") %> + + <%= check_box("analysis", "unit_vect") %> +
=end