--- /dev/null
+class Color < ActiveRecord::Base
+ belongs_to :ground_color
+
+ validates :name, :presence => true, :length => {:maximum => 50}, :uniqueness => true
+ validates :code, :presence => true, :numericality => {:greater_than_or_equal_to => 0, :less_than => 0x1000000}
+ validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0}
+
+ def self.import filename
+ Color.import_file(filename) {|name, attr| Color.store(name, attr)}
+ end
+
+ def self.store name, attr
+ r = Color.modify_object name, attr
+ r.save
+ r
+ end
+
+ def self.default_page_size
+ 25
+ end
+
+ def self.max_page_size
+ 100
+ end
+
+ def self.default_panel_size
+ 30
+ end
+
+ def self.page prm = nil
+ page = prm.to_i
+ page = 1 if page < 1
+ page
+ end
+
+ def self.page_size prm = self.default_page_size
+ page_size = prm.to_i
+ page_size = self.max_page_size if page_size > self.max_page_size
+ page_size = self.default_page_size if page_size < 1
+ page_size
+ end
+
+ def self.list opt = {}, page = 1, page_size = self.default_page_size
+ opt.merge!({:order => 'colors.t', :limit => page_size, :offset => (page -1) * page_size})
+ Color.find(:all, opt)
+ end
+
+ def self.list_opt
+ {:include => {:ground_color => {:panel => {:author => {}}} }}
+ end
+
+ def self.list_json_opt
+ {:include => {:ground_color => {:panel => {:author => {}}} }}
+ end
+
+ def self.show cid
+ c = Color.find(cid)
+ c
+ end
+
+end