ezframe 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/asset/js/ezframe.js +262 -162
- data/exe/dbmigrate +43 -9
- data/exe/html2ruby +61 -0
- data/lib/ezframe.rb +0 -1
- data/lib/ezframe/column_type.rb +50 -13
- data/lib/ezframe/database.rb +7 -7
- data/lib/ezframe/editor_common.rb +26 -8
- data/lib/ezframe/ht.rb +5 -5
- data/lib/ezframe/html.rb +20 -13
- data/lib/ezframe/main_editor.rb +13 -232
- data/lib/ezframe/main_page_kit.rb +226 -0
- data/lib/ezframe/page_base.rb +1 -8
- data/lib/ezframe/single_page_editor.rb +7 -190
- data/lib/ezframe/single_page_kit.rb +199 -0
- data/lib/ezframe/sub_editor.rb +3 -200
- data/lib/ezframe/sub_page_kit.rb +213 -0
- data/lib/ezframe/version.rb +1 -1
- metadata +7 -3
- data/lib/ezframe/editor.rb +0 -176
data/lib/ezframe/main_editor.rb
CHANGED
@@ -1,238 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
require_relative "main_page_kit"
|
3
|
+
|
2
4
|
module Ezframe
|
3
5
|
class MainEditor < PageBase
|
4
6
|
include EditorCommon
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
# 一覧ページの上部に表示するボタン等の生成
|
20
|
-
def make_index_top
|
21
|
-
make_create_button
|
22
|
-
end
|
23
|
-
|
24
|
-
# 新規登録フォーム表示
|
25
|
-
def public_create_get
|
26
|
-
@column_set.clear
|
27
|
-
table = make_edit_form(:create)
|
28
|
-
layout = main_layout(center: Ht.form(child: table), type: 2)
|
29
|
-
show_base_template(title: Message[:parent_create_page_title], body: Html.convert(layout))
|
30
|
-
end
|
31
|
-
|
32
|
-
# 新規登録受信
|
33
|
-
def public_create_post
|
34
|
-
validation = @column_set.validate(@form)
|
35
|
-
if @event[:branch] == "single_validate"
|
36
|
-
EzLog.debug("public_create_post: single validate: event=#{@event}, form=#{@form}")
|
37
|
-
return single_validation(validation, @event[:target_key])
|
38
|
-
end
|
39
|
-
unless @form
|
40
|
-
return { inject: "#center-panel", body: Ht.form(child: make_edit_form(:create)) }
|
41
|
-
else
|
42
|
-
if count_errors(validation) > 0
|
43
|
-
cmd_a = full_validation(validation)
|
44
|
-
EzLog.debug("public_create_post: cmd_a=#{cmd_a}")
|
45
|
-
return cmd_a if cmd_a.length > 0
|
46
|
-
end
|
47
|
-
# 値の保存
|
48
|
-
id = create_data(@form)
|
49
|
-
return { redirect: make_base_url(id) }
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
|
54
|
-
# データ編集受信
|
55
|
-
def public_edit_post
|
56
|
-
EzLog.debug("public_edit_post: #{@form}")
|
57
|
-
@id = get_id
|
58
|
-
validation = @column_set.validate(@form)
|
59
|
-
if @event[:branch] == "single_validate"
|
60
|
-
EzLog.debug("public_edit_post: single validate:event=#{@event}, form=#{@form}")
|
61
|
-
return single_validation(validation, @event[:target_key])
|
62
|
-
end
|
63
|
-
unless @form
|
64
|
-
data = @column_set.set_from_db(@id)
|
65
|
-
return show_message_page("no data", "data is not defined: #{@id}") unless data
|
66
|
-
return { inject: "#center-panel", body: Html.convert(Ht.form(make_edit_form)) }
|
67
|
-
else
|
68
|
-
if count_errors(validation) > 0
|
69
|
-
cmd_a = full_validation(validation)
|
70
|
-
return cmd_a
|
71
|
-
end
|
72
|
-
# 値を保存
|
73
|
-
update_data(@id, @form)
|
74
|
-
return { redirect: make_base_url(@id) }
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
private
|
79
|
-
|
80
|
-
# 新規データの生成
|
81
|
-
def create_data(form)
|
82
|
-
@column_set.clear
|
83
|
-
@column_set[:id].value = id = @column_set.create(form)
|
84
|
-
return id
|
85
|
-
end
|
86
|
-
|
87
|
-
# データの更新
|
88
|
-
def update_data(id, form)
|
89
|
-
@column_set.update(id, form)
|
90
|
-
end
|
91
|
-
|
92
|
-
# 自動入力を行う
|
93
|
-
def exec_completion
|
94
|
-
return nil
|
95
|
-
end
|
96
|
-
|
97
|
-
# 一覧テーブルの生成
|
98
|
-
def make_index_table(data_a)
|
99
|
-
EzLog.debug("make_index_table: #{data_a.length}")
|
100
|
-
target_keys = @index_keys
|
101
|
-
unless target_keys
|
102
|
-
target_keys = @column_set.keys.select {|k| !@column_set[k].no_view? }
|
103
|
-
end
|
104
|
-
tr_a = data_a.map do |data|
|
105
|
-
# EzLog.debug("data=#{data}")
|
106
|
-
@column_set.clear
|
107
|
-
@column_set.set_values(data, from_db: true)
|
108
|
-
line = target_keys.map do |key|
|
109
|
-
view = @column_set[key].view
|
110
|
-
Ht.td(Ht.a(href: "#{make_base_url(data[:id])}", child: view))
|
111
|
-
end
|
112
|
-
EzLog.debug("line=#{line}")
|
113
|
-
Ht.tr(line)
|
114
|
-
end
|
115
|
-
th_a = target_keys.map {|key| Ht.th(@column_set[key.to_sym].label) }
|
116
|
-
thead = Ht.thead(Ht.tr(th_a))
|
117
|
-
tbody = Ht.tbody(tr_a)
|
118
|
-
table_id = "enable_datatable_#{@class_snake}"
|
119
|
-
return Ht.table(id: table_id, class: %w[enable_datatable], child: [ thead, tbody ], ezload: "command=enable_datatable:target=##{table_id}:size=10")
|
120
|
-
end
|
121
|
-
|
122
|
-
# 編集フォームの生成
|
123
|
-
def make_edit_form(command = :edit)
|
124
|
-
table = []
|
125
|
-
matrix = @column_set.map do |column|
|
126
|
-
next if column.no_edit?
|
127
|
-
form = column.form
|
128
|
-
table.push Ht.p([ Ht.small(column.label), form ]) if form
|
129
|
-
end
|
130
|
-
send_button = Ht.button(id: "edit-finish-button", child: Message[:edit_finish_button_label], class: %w[btn], event: "on=click:url=#{make_base_url}/#{command}:with=form")
|
131
|
-
cancel_button = edit_cancel_button
|
132
|
-
cancel_button[:event] = "on=click:command=redirect:url=#{make_base_url}"
|
133
|
-
table.push(Ht.p([send_button, cancel_button]))
|
134
|
-
return table
|
135
|
-
end
|
136
|
-
|
137
|
-
# 詳細表示
|
138
|
-
def make_detail_page
|
139
|
-
# EzLog.info "make_detail_page: #{@request.params.inspect}"
|
140
|
-
id = get_id(@class_snake)
|
141
|
-
unless @column_set.set_from_db(id)
|
142
|
-
return show_message_page("no data", "data is not defined: #{id}")
|
143
|
-
end
|
144
|
-
right = nil
|
145
|
-
right = right_tabs if @with_right_tabs
|
146
|
-
layout = main_layout( center: make_detail_table, right: right)
|
147
|
-
return show_base_template(title: Message[:customer_detail], body: Html.convert(layout))
|
148
|
-
end
|
149
|
-
|
150
|
-
private
|
151
|
-
|
152
|
-
# 1カラムに対してだけバリデーションを行う。
|
153
|
-
def single_validation(result, target_key)
|
154
|
-
unless target_key
|
155
|
-
raise "target_key is empty: #{result}"
|
156
|
-
return []
|
157
|
-
end
|
158
|
-
cmd_a = []
|
159
|
-
if result[target_key.to_sym]
|
160
|
-
cmd_a = show_validate_result(result)
|
161
|
-
end
|
162
|
-
if count_errors(result) == 0
|
163
|
-
cmd_a.unshift({ reset_error: "#error-box-#{target_key}"})
|
164
|
-
end
|
165
|
-
comp_a = exec_completion(@form)
|
166
|
-
cmd_a += comp_a if comp_a
|
167
|
-
EzLog.debug("reset_error: #error-box-#{target_key}")
|
168
|
-
EzLog.debug("single_validation: target_key=#{target_key}, result=#{result}, count=#{count_errors(result)}, cmd_a=#{cmd_a}")
|
169
|
-
return cmd_a
|
170
|
-
end
|
171
|
-
|
172
|
-
# 全てのカラムに対してバリデーションを行う
|
173
|
-
def full_validation(result)
|
174
|
-
cmd_a = show_validate_result(result)
|
175
|
-
cmd_a.unshift({ reset_error: ".error-box" })
|
176
|
-
EzLog.debug("full_validation: full, cmd_a=#{cmd_a}")
|
177
|
-
return cmd_a
|
178
|
-
end
|
179
|
-
|
180
|
-
# フォームの値の有効性チェックし、ajax用返信ハッシュを生成
|
181
|
-
def show_validate_result(validate_result)
|
182
|
-
cmd_a = []
|
183
|
-
validate_result.each do |key, status|
|
184
|
-
norm, err = status
|
185
|
-
EzLog.debug("norm=#{norm}, err=#{err}")
|
186
|
-
if norm
|
187
|
-
cmd_a.push({ set_value: "input[name=#{key}]", value: norm })
|
188
|
-
end
|
189
|
-
if err
|
190
|
-
msg = Message[err.to_sym]||err
|
191
|
-
cmd_a.push({ set_error: "#error-box-#{key}", value: msg })
|
192
|
-
end
|
193
|
-
end
|
194
|
-
return cmd_a
|
195
|
-
end
|
196
|
-
|
197
|
-
# validate_resultの中のエラーの数を数える
|
198
|
-
def count_errors(validate_result)
|
199
|
-
return validate_result.count {|k, a| a[1] }
|
200
|
-
end
|
201
|
-
|
202
|
-
# 詳細ページの表の生成
|
203
|
-
def make_detail_table
|
204
|
-
table = []
|
205
|
-
array = @column_set.map do |column|
|
206
|
-
next if column.no_view?
|
207
|
-
edit_btn = nil
|
208
|
-
if column.type.to_s == "textarea"
|
209
|
-
view = Ht.pre(id: "#{@class_snake}-#{column.key}-view", child: column.view)
|
210
|
-
else
|
211
|
-
view = Ht.span(id: "#{@class_snake}-#{column.key}-view", child: column.view)
|
212
|
-
end
|
213
|
-
table.push Ht.p(class: %w[hover-button-box], child: [ Ht.small(column.label), view, edit_btn ].compact)
|
214
|
-
end
|
215
|
-
edit_btn = Ht.button(id: "#{@class_snake}-detail-edit-button", class: %w[btn], child: [ Ht.icon("edit"), Message[:edit_button_label] ], event: "on=click:url=#{make_base_url}/edit")
|
216
|
-
table.push edit_btn
|
217
|
-
return table
|
218
|
-
end
|
219
|
-
|
220
|
-
# 一覧ページ用のデータリスト生成
|
221
|
-
def list_for_index(where: nil)
|
222
|
-
where ||= {}
|
223
|
-
where[:deleted_at] = nil
|
224
|
-
sql = @column_set.dataset.where(where).order(@sort_key).sql
|
225
|
-
EzLog.debug("list_for_index: #{sql}")
|
226
|
-
return @column_set.dataset.where(where).order(@sort_key).all
|
227
|
-
end
|
228
|
-
|
229
|
-
def edit_cancel_button
|
230
|
-
Ht.span(class: %w[btn red small waves-effect waves-light switch-button], child: Ht.icon("clear"))
|
231
|
-
end
|
232
|
-
|
233
|
-
def make_create_button(event = nil)
|
234
|
-
event ||= "on=click:command=redirect:url=#{make_base_url}/create"
|
235
|
-
return Ht.button(class: %w[btn], child: [ Ht.icon("add"), Message[:create_button_label] ], event: event )
|
236
|
-
end
|
7
|
+
include MainPageKit::Default
|
8
|
+
include MainPageKit::Index
|
9
|
+
include MainPageKit::Edit
|
10
|
+
include MainPageKit::Detail
|
11
|
+
|
12
|
+
def init_vars
|
13
|
+
super
|
14
|
+
@sort_key = :id
|
15
|
+
@event = @parsed_body[:ezevent] if @parsed_body
|
16
|
+
@dom_id = { create: "create-area", edit: "edit-area", index: "index-area", detail: "detail-area"}
|
17
|
+
end
|
237
18
|
end
|
238
19
|
end
|
@@ -0,0 +1,226 @@
|
|
1
|
+
module Ezframe
|
2
|
+
module MainPageKit
|
3
|
+
module Default
|
4
|
+
def public_default_get
|
5
|
+
@id = get_id
|
6
|
+
div = [Ht.div(id: @dom_id[:create], child: make_index_top), Ht.div(id: @dom_id[:index], child: "", ezload: "url=#{make_base_url}")]
|
7
|
+
layout = index_layout(center: make_form(make_base_url, div))
|
8
|
+
return show_base_template(title: Message[:index_page_title], body: Html.convert(layout))
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
# 一覧テーブルの生成
|
13
|
+
module Index
|
14
|
+
def public_default_post
|
15
|
+
return { inject: "#main-box", body: [ Ht.div(make_index_top), Ht.div(make_index_table)], set_url: make_base_url }
|
16
|
+
end
|
17
|
+
|
18
|
+
def make_index_table
|
19
|
+
data_a = list_for_index
|
20
|
+
EzLog.debug("make_index_table: #{data_a.length}")
|
21
|
+
target_keys = @index_keys
|
22
|
+
unless target_keys
|
23
|
+
target_keys = @column_set.keys.select { |k| !@column_set[k].no_view? }
|
24
|
+
end
|
25
|
+
tr_a = data_a.map do |data|
|
26
|
+
@column_set.clear
|
27
|
+
@column_set.set_values(data, from_db: true)
|
28
|
+
line = target_keys.map do |key|
|
29
|
+
view = @column_set[key].view
|
30
|
+
Ht.td(Ht.a(href: "#{make_base_url(data[:id])}", child: view))
|
31
|
+
end
|
32
|
+
Ht.tr(line)
|
33
|
+
end
|
34
|
+
th_a = target_keys.map { |key| Ht.th(@column_set[key.to_sym].label) }
|
35
|
+
thead = Ht.thead(Ht.tr(th_a))
|
36
|
+
tbody = Ht.tbody(tr_a)
|
37
|
+
table_id = "enable_datatable_#{@class_snake}"
|
38
|
+
return Ht.table(id: table_id, class: %w[enable_datatable], child: [thead, tbody], ezload: "command=enable_datatable:target=##{table_id}:size=10")
|
39
|
+
end
|
40
|
+
|
41
|
+
# 一覧ページの上部に表示するボタン等の生成
|
42
|
+
def make_index_top
|
43
|
+
make_create_button
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
module Edit
|
48
|
+
# 新規登録フォーム表示
|
49
|
+
def public_create_get
|
50
|
+
@column_set.clear
|
51
|
+
table = make_edit_form(:create)
|
52
|
+
layout = main_layout(center: make_form("#{make_base_url}/create", table), type: 2)
|
53
|
+
show_base_template(title: Message[:parent_create_page_title], body: Html.convert(layout))
|
54
|
+
end
|
55
|
+
|
56
|
+
# 新規登録受信
|
57
|
+
def public_create_post
|
58
|
+
validation = @column_set.validate(@form)
|
59
|
+
EzLog.debug("public_create_post: event=#{@event}, form=#{@form}")
|
60
|
+
if @event[:branch] == "single_validate"
|
61
|
+
EzLog.debug("public_create_post: single validate")
|
62
|
+
return single_validation(validation, @event[:target_key] || @form.keys[0])
|
63
|
+
end
|
64
|
+
unless @form
|
65
|
+
url = "#{make_base_url}/create"
|
66
|
+
return { inject: "#center-panel", body: Html.convert(make_form(url, make_edit_form(:create))), set_url: url }
|
67
|
+
else
|
68
|
+
if count_errors(validation) > 0
|
69
|
+
cmd_a = full_validation(validation)
|
70
|
+
EzLog.debug("public_create_post: cmd_a=#{cmd_a}")
|
71
|
+
return cmd_a if cmd_a.length > 0
|
72
|
+
end
|
73
|
+
# 値の保存
|
74
|
+
id = create_data(@form)
|
75
|
+
return { redirect: make_base_url(id) }
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# データ編集受信
|
80
|
+
def public_edit_post
|
81
|
+
EzLog.debug("public_edit_post: #{@form}")
|
82
|
+
@id = get_id
|
83
|
+
validation = @column_set.validate(@form)
|
84
|
+
if @event[:branch] == "single_validate"
|
85
|
+
EzLog.debug("public_edit_post: single validate:event=#{@event}, form=#{@form}")
|
86
|
+
return single_validation(validation, @event[:target_key])
|
87
|
+
end
|
88
|
+
unless @form
|
89
|
+
data = @column_set.set_from_db(@id)
|
90
|
+
return show_message_page("no data", "data is not defined: #{@id}") unless data
|
91
|
+
return { inject: "#center-panel", body: Html.convert(make_form("#{make_base_url}/edit", make_edit_form)) }
|
92
|
+
else
|
93
|
+
if count_errors(validation) > 0
|
94
|
+
cmd_a = full_validation(validation)
|
95
|
+
return cmd_a
|
96
|
+
end
|
97
|
+
# 値を保存
|
98
|
+
update_data(@id, @form)
|
99
|
+
return { redirect: make_base_url(@id) }
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
# 自動入力を行う
|
104
|
+
def exec_completion
|
105
|
+
return nil
|
106
|
+
end
|
107
|
+
|
108
|
+
# 編集フォームの生成
|
109
|
+
def make_edit_form(command = :edit)
|
110
|
+
table = []
|
111
|
+
matrix = @column_set.map do |column|
|
112
|
+
next if column.no_edit?
|
113
|
+
form = column.form
|
114
|
+
table.push Ht.p([Ht.small(column.label), form]) if form
|
115
|
+
end
|
116
|
+
send_button = Ht.button(id: "edit-finish-button", child: Message[:edit_finish_button_label], class: %w[btn], ezevent: "on=click:url=#{make_base_url}/#{command}:with=form")
|
117
|
+
cancel_button = edit_cancel_button
|
118
|
+
cancel_button[:event] = "on=click:command=redirect:url=#{make_base_url}"
|
119
|
+
table.push(Ht.p([send_button, cancel_button]))
|
120
|
+
return table
|
121
|
+
end
|
122
|
+
|
123
|
+
# 1カラムに対してだけバリデーションを行う。
|
124
|
+
def single_validation(validate_h, target_key)
|
125
|
+
EzLog.debug("single_validation: validate_h=#{validate_h}, target_key=#{target_key}")
|
126
|
+
unless target_key
|
127
|
+
raise "target_key is empty: #{validate_h}"
|
128
|
+
return []
|
129
|
+
end
|
130
|
+
cmd_a = []
|
131
|
+
if validate_h[target_key.to_sym]
|
132
|
+
cmd_a = show_validate_result(validate_h)
|
133
|
+
end
|
134
|
+
if count_errors(validate_h) == 0
|
135
|
+
cmd_a.unshift({ reset_error: "#error-box-#{target_key}" })
|
136
|
+
end
|
137
|
+
comp_a = exec_completion(@form)
|
138
|
+
cmd_a += comp_a if comp_a
|
139
|
+
EzLog.debug("reset_error: #error-box-#{target_key}")
|
140
|
+
EzLog.debug("single_validation: target_key=#{target_key}, validate_h=#{validate_h}, count=#{count_errors(validate_h)}, cmd_a=#{cmd_a}")
|
141
|
+
return cmd_a
|
142
|
+
end
|
143
|
+
|
144
|
+
# 全てのカラムに対してバリデーションを行う
|
145
|
+
def full_validation(validate_h)
|
146
|
+
cmd_a = show_validate_result(validate_h)
|
147
|
+
cmd_a.unshift({ reset_error: ".error-box" })
|
148
|
+
EzLog.debug("full_validation: full, cmd_a=#{cmd_a}")
|
149
|
+
return cmd_a
|
150
|
+
end
|
151
|
+
|
152
|
+
# フォームの値の有効性チェックし、ajax用返信ハッシュを生成
|
153
|
+
def show_validate_result(validate_result)
|
154
|
+
cmd_a = []
|
155
|
+
validate_result.each do |key, status|
|
156
|
+
norm, err = status
|
157
|
+
EzLog.debug("norm=#{norm}, err=#{err}")
|
158
|
+
if norm
|
159
|
+
cmd_a.push({ set_value: "input[name=#{key}]", value: norm })
|
160
|
+
end
|
161
|
+
if err
|
162
|
+
msg = Message[err.to_sym] || err
|
163
|
+
cmd_a.push({ set_error: "#error-box-#{key}", value: msg })
|
164
|
+
end
|
165
|
+
end
|
166
|
+
return cmd_a
|
167
|
+
end
|
168
|
+
|
169
|
+
# validate_resultの中のエラーの数を数える
|
170
|
+
def count_errors(validate_result)
|
171
|
+
return validate_result.count { |k, a| a[1] }
|
172
|
+
end
|
173
|
+
|
174
|
+
def edit_cancel_button
|
175
|
+
Ht.span(class: %w[btn red small waves-effect waves-light switch-button], child: Ht.icon("clear"))
|
176
|
+
end
|
177
|
+
|
178
|
+
def make_create_button(event = nil)
|
179
|
+
event ||= "on=click:command=redirect:url=#{make_base_url}/create"
|
180
|
+
return Ht.button(class: %w[btn], child: [Ht.icon("add"), Message[:create_button_label]], ezevent: event)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
# 詳細表示
|
185
|
+
module Detail
|
186
|
+
def make_detail_page
|
187
|
+
# EzLog.info "make_detail_page: #{@request.params.inspect}"
|
188
|
+
id = get_id(@class_snake)
|
189
|
+
unless @column_set.set_from_db(id)
|
190
|
+
return show_message_page("no data", "data is not defined: #{id}")
|
191
|
+
end
|
192
|
+
right = nil
|
193
|
+
right = right_tabs if @with_right_tabs
|
194
|
+
layout = main_layout(center: make_detail_table, right: right)
|
195
|
+
return show_base_template(title: Message[:customer_detail], body: Html.convert(layout))
|
196
|
+
end
|
197
|
+
|
198
|
+
# 詳細ページの表の生成
|
199
|
+
def make_detail_table
|
200
|
+
table = []
|
201
|
+
array = @column_set.map do |column|
|
202
|
+
next if column.no_view?
|
203
|
+
edit_btn = nil
|
204
|
+
if column.type.to_s == "textarea"
|
205
|
+
view = Ht.pre(id: "#{@class_snake}-#{column.key}-view", child: column.view)
|
206
|
+
else
|
207
|
+
view = Ht.span(id: "#{@class_snake}-#{column.key}-view", child: column.view)
|
208
|
+
end
|
209
|
+
table.push Ht.p(class: %w[hover-button-box], child: [Ht.small(column.label), view, edit_btn].compact)
|
210
|
+
end
|
211
|
+
edit_btn = Ht.button(id: "#{@class_snake}-detail-edit-button", class: %w[btn], child: [Ht.icon("edit"), Message[:edit_button_label]], ezevent: "on=click:url=#{make_base_url}/edit")
|
212
|
+
table.push edit_btn
|
213
|
+
return table
|
214
|
+
end
|
215
|
+
|
216
|
+
# 一覧ページ用のデータリスト生成
|
217
|
+
def list_for_index(where: nil)
|
218
|
+
where ||= {}
|
219
|
+
where[:deleted_at] = nil
|
220
|
+
sql = @column_set.dataset.where(where).order(@sort_key).sql
|
221
|
+
EzLog.debug("list_for_index: #{sql}")
|
222
|
+
return @column_set.dataset.where(where).order(@sort_key).all
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|