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.
- #keys ⇒ Object
- #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
195 196 197 |
# File 'lib/ezframe/column_set.rb', line 195 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
165 166 167 |
# File 'lib/ezframe/column_set.rb', line 165 def clear_error @columns.values.each {|col| col.error = nil } end |
#create ⇒ Object
新規に値を登録する
101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/ezframe/column_set.rb', line 101 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
88 89 90 91 |
# File 'lib/ezframe/column_set.rb', line 88 def dataset # puts "dataset: #{@model.inspect}" return @parent.model.db.dataset(@name) end |
#each ⇒ Object
173 174 175 |
# File 'lib/ezframe/column_set.rb', line 173 def each @columns.values.each {|column| yield(column) } end |
#form ⇒ Object
199 200 201 202 203 204 205 206 207 208 209 210 211 212 |
# File 'lib/ezframe/column_set.rb', line 199 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
187 188 189 190 191 192 193 |
# File 'lib/ezframe/column_set.rb', line 187 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
181 182 183 184 185 |
# File 'lib/ezframe/column_set.rb', line 181 def get_matrix(method_a) return @columns.map do |_key, col| method_a.map { |method| col.send(method) } end end |
#hidden_form ⇒ Object
229 230 231 232 233 |
# File 'lib/ezframe/column_set.rb', line 229 def hidden_form return @columns.map do |colkey, coltype| { tag: 'input', id: colkey, name: colkey, type: 'hidden', value: coltype.value } end end |
#keys ⇒ Object
63 64 65 |
# File 'lib/ezframe/column_set.rb', line 63 def keys @columns.keys end |
#map ⇒ Object
177 178 179 |
# File 'lib/ezframe/column_set.rb', line 177 def map @columns.values.map {|column| yield(column) } end |
#set(attr_a) ⇒ Object
配列を初期化する
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/ezframe/column_set.rb', line 68 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
93 94 95 96 97 98 |
# File 'lib/ezframe/column_set.rb', line 93 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
145 146 147 148 149 150 151 152 153 |
# File 'lib/ezframe/column_set.rb', line 145 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
データベース上の値の更新
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/ezframe/column_set.rb', line 116 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 puts dataset.where(id: id).update_sql(updated_values) dataset.where(id: id).update(updated_values) end end |
#validate ⇒ Object
155 156 157 158 159 160 161 162 163 |
# File 'lib/ezframe/column_set.rb', line 155 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
169 170 171 |
# File 'lib/ezframe/column_set.rb', line 169 def values @columns.map {|key, col| col.value} end |
#values=(value_h) ⇒ Object
140 141 142 143 |
# File 'lib/ezframe/column_set.rb', line 140 def values=(value_h) clear set_values(value_h) end |
#view ⇒ Object
214 215 216 217 218 219 220 221 222 223 224 225 226 227 |
# File 'lib/ezframe/column_set.rb', line 214 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 |