OSDN Git Service

t#32246:add sheet
[pettanr/pettanr.git] / app / models / sheet_panel.rb
index 6eb7c72..2612c56 100644 (file)
@@ -16,8 +16,13 @@ class SheetPanel < ActiveRecord::Base
     self.panel_id = nil
     self.x = 15
     self.y = 15
-    self.z = 1
-    self.t = nil
+    if self.sheet
+      self.t = self.sheet.new_t 
+      self.z = self.sheet.new_z 
+    else
+      self.z = 1
+      self.t = nil
+    end
   end
   
   def overwrite au
@@ -182,12 +187,12 @@ class SheetPanel < ActiveRecord::Base
     '[' + ary.map {|i| i.sheet_panel_as_json(au) }.join(',') + ']'
   end
   
-  def self.licensed_pictures sheet_panels
-    r = {}
-    sheet_panels.each do |sheet_panel|
-      r.merge!(sheet_panel.panel.licensed_pictures) if sheet_panel.panel
+  def licensed_pictures
+    if self.panel
+      self.panel.licensed_pictures
+    else
+      []
     end
-    r
   end
   
   def self.new_t sheet_id
@@ -296,4 +301,120 @@ class SheetPanel < ActiveRecord::Base
     res
   end
   
+    # element.rb
+    def self.colum_structures
+      @@colum_structures ||= {
+      }
+    end
+    
+    def self.path_name with_engine = false
+      self.to_s.tableize
+    end
+    
+    def new_index
+      @new_index
+    end
+    
+    def new_index= v
+      @new_index = v
+    end
+    
+    def new_sheet
+      @new_sheet
+    end
+    
+    def new_sheet= v
+      @new_sheet = v
+    end
+    
+    def get_sheet
+      self.sheet || @new_sheet
+    end
+    
+    def tag_id c = nil
+      'sheet' + self.tag_sheet_id + self.tag_element_type + self.tag_element_id + c.to_s
+    end
+    
+    def field_tag_id f
+      self.tag_id + f.to_s
+    end
+    
+    def tag_sheet_id
+      self.get_sheet.new_record? ? '0' : self.get_sheet.id.to_s
+    end
+    
+    def tag_element_id
+      self.new_record? ? '0' : self.id.to_s
+    end
+    
+    def tag_element_type
+      'sheet_panel'
+    end
+    
+    def tag_new_index
+      self.new_index.to_s
+    end
+    
+    def path_name with_engine = false
+      self.class.path_name(with_engine)
+    end
+    
+    def form_template with_engine = false
+      self.path_name(with_engine) + '/form'
+    end
+    
+    def scenario_template with_engine = false
+      self.path_name(with_engine) + '/scenario'
+    end
+    
+    def element_face_template with_engine = false
+      self.path_name(with_engine) + '/element_face'
+    end
+    
+    def form_helper_template(colum_name)
+      self.class.colum_structures[colum_name][:helper]
+    end
+    
+    def tag_attributes column = nil, opt = {}
+      {
+        :id => self.field_tag_id(column), :sheet_id => self.tag_sheet_id, 
+        :element_id => self.tag_element_id, :element_type => self.tag_element_type
+      }.merge(opt)
+    end
+    
+    def field_tag_attributes column, no_attr, opt = {}
+      self.tag_attributes(column).merge(
+        {:column => column, :new_index => self.tag_new_index, :no_attr => no_attr}
+      ).merge(opt)
+    end
+    
+    #render element by body
+    def any_tag_attributes name = nil, opt = {}
+      r = self.tag_attributes(name)
+      r.merge!(
+        {:new_index => self.tag_new_index}
+      ) if self.new_index
+      r.merge(opt)
+    end
+    
+    def select_tag_attributes(selected, column, no_attr)
+      [
+        :last, :first, 
+        {:html => {:selected => selected}}, 
+        self.field_tag_attributes(column, no_attr)
+      ]
+    end
+    
+    def tag_attr column = nil, opt = {}
+      self.tag_attributes(column, opt).to_attr
+    end
+    
+    def field_tag_attr column, no_attr, opt = {}
+      self.field_tag_attributes(column, no_attr, opt).to_attr
+    end
+    
+    def any_tag_attr name = nil, opt = {}
+      self.any_tag_attributes(name, opt).to_attr
+    end
+    
 end