Class: Ezframe::ColumnSet
Instance Attribute Summary collapse
-
#edit_keys ⇒ Object
Returns the value of attribute edit_keys.
-
#name ⇒ Object
Returns the value of attribute name.
-
#parent ⇒ Object
Returns the value of attribute parent.
-
#view_keys ⇒ Object
Returns the value of attribute view_keys.
Instance Method Summary collapse
- #[](col_key) ⇒ Object
- #clear ⇒ Object
- #clear_error ⇒ Object
-
#create ⇒ Object
新規に値を登録する.
- #dataset ⇒ Object
- #each ⇒ Object
- #form ⇒ Object
- #get_hash(method) ⇒ Object
- #get_matrix(method_a) ⇒ Object
- #hidden_form ⇒ Object
-
#initialize(parent:, name: nil, columns: nil) ⇒ ColumnSet
constructor
A new instance of ColumnSet.
- #map ⇒ Object
-
#set(attr_a) ⇒ Object
配列を初期化する.
- #set_from_db(id) ⇒ Object
- #set_values(value_h) ⇒ Object
-
#update(id, value_h) ⇒ Object
データベース上の値の更新.
- #validate ⇒ Object
- #values ⇒ Object
- #values=(value_h) ⇒ Object
- #view ⇒ Object
Constructor Details
#initialize(parent:, name: nil, columns: nil) ⇒ ColumnSet
Returns a new instance of ColumnSet.
50 51 52 53 54 55 |
# File 'lib/ezframe/column_set.rb', line 50 def initialize(parent:, name: nil, columns: nil) @parent = parent @name = name @columns ||= {} set(columns) if columns end |
Instance Attribute Details
#edit_keys ⇒ Object
Returns the value of attribute edit_keys.
48 49 50 |
# File 'lib/ezframe/column_set.rb', line 48 def edit_keys @edit_keys end |
#name ⇒ Object
Returns the value of attribute name.
48 49 50 |
# File 'lib/ezframe/column_set.rb', line 48 def name @name end |
#parent ⇒ Object
Returns the value of attribute parent.
48 49 50 |
# File 'lib/ezframe/column_set.rb', line 48 def parent @parent end |
#view_keys ⇒ Object
Returns the value of attribute view_keys.
48 49 50 |
# File 'lib/ezframe/column_set.rb', line 48 def view_keys @view_keys end |
Instance Method Details
#[](col_key) ⇒ Object
190 191 192 |
# File 'lib/ezframe/column_set.rb', line 190 def [](col_key) return @columns[col_key.to_sym] end |
#clear ⇒ Object
57 58 59 60 61 |
# File 'lib/ezframe/column_set.rb', line 57 def clear @columns.each do |key, col| col.value = nil end end |
#clear_error ⇒ Object
160 161 162 |
# File 'lib/ezframe/column_set.rb', line 160 def clear_error @columns.values.each {|col| col.error = nil } end |
#create ⇒ Object
新規に値を登録する
97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/ezframe/column_set.rb', line 97 def create col_h = get_hash(:value) col_h.delete(:id) col_h.delete(:created_at) col_h[:updated_at] = Time.now mylog "create: #{col_h.inspect}" id = @columns[:id] if id.value.to_i > 0 dataset.where(id: id.value).update(col_h) else return dataset.insert(col_h) end end |
#dataset ⇒ Object
84 85 86 87 |
# File 'lib/ezframe/column_set.rb', line 84 def dataset # puts "dataset: #{@model.inspect}" return @parent.model.db.dataset(@name) end |
#each ⇒ Object
168 169 170 |
# File 'lib/ezframe/column_set.rb', line 168 def each @columns.values.each {|column| yield(column) } end |
#form ⇒ Object
194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
# File 'lib/ezframe/column_set.rb', line 194 def form if @edit_keys return @edit_keys.map do |key| col = @columns[key.to_sym] unless col mylog "[ERROR] @edit_keys has unknown column:name=#{@name}:key=#{key}" next end col.form end else return @columns.values.map {|coltype| coltype.form } end end |
#get_hash(method) ⇒ Object
182 183 184 185 186 187 188 |
# File 'lib/ezframe/column_set.rb', line 182 def get_hash(method) res_h = {} @columns.map do |key, col| res_h[key.to_sym] = col.send(method) end return res_h end |
#get_matrix(method_a) ⇒ Object
176 177 178 179 180 |
# File 'lib/ezframe/column_set.rb', line 176 def get_matrix(method_a) return @columns.map do |_key, col| method_a.map { |method| col.send(method) } end end |
#hidden_form ⇒ Object
224 225 226 227 228 |
# File 'lib/ezframe/column_set.rb', line 224 def hidden_form return @columns.map do |colkey, coltype| { tag: 'input', id: colkey, name: colkey, type: 'hidden', value: coltype.value } end end |
#map ⇒ Object
172 173 174 |
# File 'lib/ezframe/column_set.rb', line 172 def map @columns.values.map {|column| yield(column) } end |
#set(attr_a) ⇒ Object
配列を初期化する
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/ezframe/column_set.rb', line 64 def set(attr_a) @columns[:id] = IdType.new(key: "id", label: "ID", no_edit: true) attr_a.each do |attributes| attr = attributes.clone col_key = attr[:key] raise "no column key: #{attr.inspect}" unless col_key klass = TypeBase.get_class(attr[:type]) unless klass raise "no such column type: #{attr[:type]}" else @columns[col_key.to_sym] = klass.new(attr) end end @columns[:created_at] = DatetimeType.new(type: "datetime", key: "created_at", label: "生成日時", no_edit: true) @columns[:updated_at] = DatetimeType.new(type: "datetime", key: "updated_at", label: "更新日時", no_edit: true) # mylog "set: #{@columns.inspect}" @columns.values.each {|col| col.parent = self } return @columns end |
#set_from_db(id) ⇒ Object
89 90 91 92 93 94 |
# File 'lib/ezframe/column_set.rb', line 89 def set_from_db(id) data = dataset.where(id: id).first return nil unless data self.values = data return data end |
#set_values(value_h) ⇒ Object
140 141 142 143 144 145 146 147 148 |
# File 'lib/ezframe/column_set.rb', line 140 def set_values(value_h) return unless value_h value_h.each do |k, v| next if k.nil? || k.to_s.empty? col = @columns[k.to_sym] next unless col col.value = v end end |
#update(id, value_h) ⇒ Object
データベース上の値の更新
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/ezframe/column_set.rb', line 112 def update(id, value_h) self.set_from_db(id) updated_values = {} @columns.each do |colkey, column| next if column.no_edit? if column.multi_inputs? new_value = column.form_to_value(value_h) else new_value = value_h[colkey] end prev_value = column.value column.value = new_value if prev_value != column.value updated_values[colkey] = column.value end end mylog "column_set.updated_values = #{updated_values.inspect}" if updated_values.length > 0 updated_values[:updated_at] = Time.now dataset.where(id: id).update(updated_values) end end |
#validate ⇒ Object
150 151 152 153 154 155 156 157 158 |
# File 'lib/ezframe/column_set.rb', line 150 def validate clear_error errors = [] @columns.values.each do |col| err = col.validate errors.push([ col.key, err ]) if err end return errors end |
#values ⇒ Object
164 165 166 |
# File 'lib/ezframe/column_set.rb', line 164 def values @columns.map {|key, col| col.value} end |
#values=(value_h) ⇒ Object
135 136 137 138 |
# File 'lib/ezframe/column_set.rb', line 135 def values=(value_h) clear set_values(value_h) end |
#view ⇒ Object
209 210 211 212 213 214 215 216 217 218 219 220 221 222 |
# File 'lib/ezframe/column_set.rb', line 209 def view if @view_keys return @view_keys.map do |key| col = @columns[key.to_sym] unless col mylog "[ERROR] @view_keys has unknown column:name=#{@name}:key=#{key}" next end col.view end else return @columns.values.map {|coltype| coltype.view } end end |