+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