OSDN Git Service

fix profiler extend system
[pettanr/pettanr.git] / lib / locmare / profiler / column.rb
index f56e8ce..c876e84 100644 (file)
+require_dependency "locmare/profiler/column/base"
+require_dependency "locmare/profiler/column/default"
+require_dependency "locmare/profiler/column/date"
+require_dependency "locmare/profiler/column/source"
+require_dependency "locmare/profiler/column/extend"
 module Locmare
   module ProfilerModule
     class Column
-      attr :profiler, :column_name
-      def initialize profiler, column_name
-        @profiler = profiler
-        @column_name = column_name
-      end
-      
-      def label
-        self.item.class.human_attribute_name(@column_name)
-      end
-      
-      def value
-        if self.item.extend_column?(@column_name)
-          
-        else
-          self.item.attributes[@column_name]
-        end
-      end
-      
-      def note
-      end
-      
-      def date?
-        case model_attribute_manifest.type
-        when 'datetime'
-          if self.value
-            true
-          else
-            false
-          end
-        else
-          false
-        end
-      end
-      
-      def note?
-        if self.model_attribute_source_manifest
-          case self.model_attribute_source_manifest.type
-          when 'magic_number'
-            true
-          when 'model'
-            false
-          else
-            false
-          end
-        else
-          false
-        end
-      end
-      
-      def select_item_name
-        self.model_attribute_source_manifest.select_item_name
-      end
-      
-      def item
-        @profiler.item
-      end
-      
-      def model_manifest
-        ::Manifest.manifest.models[@profiler.item_name]
-      end
-      
-      def model_attribute_manifest
-        self.model_manifest.attributes[@column_name]
-      end
-      
-      def model_attribute_source_manifest
-        self.model_attribute_manifest.source
-      end
-      
-      def template_dir 
-        @profiler.template_dir
-      end
-      
-      def template_file_name
-        "column"
-      end
-      
-      def template_name
-        self.template_dir + self.template_file_name
-      end
-      
-      def value_template_dir 
-        @profiler.template_dir + "column_value/"
-      end
-      
-      def value_template_file_name
-        if self.date?
-          'date'
-        else
-          'default'
-        end
-      end
-      
-      def value_template_name
-        self.value_template_dir + self.value_template_file_name
-      end
-      
-      def note_template_dir 
-        @profiler.template_dir + "column_note/"
-      end
-      
-      def note_template_file_name
-        if self.note?
-          'default'
-        else
-          'none'
-        end
-      end
-      
-      def note_template_name
-        self.note_template_dir + self.note_template_file_name
+      include ColumnModule
+      @@types = {
+        'default' => Default, 'date' => Date, 'source' => Source, 'extend' => Extend
+      }
+      def self.factory profiler, my_manifest
+        type = my_manifest.type
+        raise "undefined type for local view filers > #{profiler.item_name} > edit\n" unless type
+        my_class = @@types[type]
+        raise "undefined class for local view filers > #{profiler.item_name} > edit > #{type}\n" unless my_class
+        my_class.new(profiler,  my_manifest)
       end
       
     end