templus_models 2.0.1 → 2.0.2
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/app/controllers/crud_controller.rb +23 -33
- data/app/helpers/attributes_helper.rb +32 -0
- data/app/helpers/crud_helper.rb +36 -16
- data/app/helpers/imagens_helper.rb +15 -0
- data/app/raro_crud/raro_crud.rb +75 -29
- data/app/views/crud/_records.html.erb +51 -51
- data/app/views/crud/_search.html.erb +28 -28
- data/app/views/crud/_shared.html.erb +93 -94
- data/app/views/crud/listing.xls.erb +40 -39
- data/app/views/crud/printing.pdf.erb +71 -37
- data/lib/templus_models/version.rb +1 -1
- metadata +4 -3
- data/app/views/crud/listing.pdf.erb +0 -72
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb53a205b3effb5725e79f8942766cd329e0063c
|
4
|
+
data.tar.gz: de6dd1d86ba4130aeb08c1466514c7b0e209ca94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0932e8c5b3f3f57457f0996bb1fe8d77a34b3ba5837a7fb5202062e00cd7a732d484fcf3bf19d44e98b46c111b58d6bd53113762b1bcfb7c4d284ac7545e124
|
7
|
+
data.tar.gz: 9c5ca770f1f106e43333db2a9deca647289bea59ae05674b83b61bb4ea91da50aae719e7e50bc440fd499c0f4c7b81404fee11c1bc48d4dfcc0d6f173fd3609b
|
@@ -1,28 +1,7 @@
|
|
1
1
|
class CrudController < ApplicationController
|
2
2
|
before_filter :setup, except: :autocomplete
|
3
3
|
|
4
|
-
private
|
5
|
-
def setup
|
6
|
-
if params[:associacao]
|
7
|
-
@crud_associacao = Module.const_get("#{params[:model].to_s.singularize}_crud".camelize)
|
8
|
-
@model = Module.const_get(params[:model].camelize).find(params[:id]).send(params[:associacao])
|
9
|
-
c_helper = Module.const_get(params[:model].camelize).reflect_on_association(params[:associacao]).class_name
|
10
|
-
@crud_helper = Module.const_get("#{c_helper}Crud") unless params[:render] == "modal" and params[:action] == "new"
|
11
|
-
@url = crud_associacao_models_path(model: params[:model], id: params[:id], associacao: params[:associacao], page: params[:page], q: params[:q])
|
12
|
-
@clean_url = crud_associacao_models_path(model: params[:model], id: params[:id], associacao: params[:associacao])
|
13
|
-
@model_permission = c_helper.constantize
|
14
|
-
@id = params[:associacao_id] if params[:associacao_id]
|
15
|
-
else
|
16
|
-
@model = Module.const_get(params[:model].camelize)
|
17
|
-
@model_permission = @model
|
18
|
-
@crud_helper = Module.const_get("#{params[:model]}_crud".camelize) unless params[:render] == "modal" and params[:action] == "new"
|
19
|
-
@url = crud_models_path(model: params[:model], page: params[:page], q: params[:q])
|
20
|
-
@clean_url = crud_models_path(model: params[:model])
|
21
|
-
@id = params[:id] if params[:id]
|
22
|
-
end
|
23
|
-
end
|
24
4
|
|
25
|
-
public
|
26
5
|
def index
|
27
6
|
authorize! :read, @model_permission if respond_to?(:current_usuario)
|
28
7
|
if params[:scope].present?
|
@@ -180,18 +159,7 @@ class CrudController < ApplicationController
|
|
180
159
|
end
|
181
160
|
report_name = "#{@crud_helper.title}_#{DateTime.now.strftime('%Y%m%d')}"
|
182
161
|
respond_to do |format|
|
183
|
-
format.xls {headers["Content-Disposition"] = "attachment; filename=#{report_name}.xls"}
|
184
|
-
format.pdf do
|
185
|
-
pdf = WickedPdf.new.pdf_from_string(
|
186
|
-
render_to_string('crud/listing.pdf.erb'),
|
187
|
-
encoding: 'UTF-8',
|
188
|
-
page_size: 'A4',
|
189
|
-
show_as_html: params[:debug],
|
190
|
-
margin: { top: 20, bottom: 20 }
|
191
|
-
)
|
192
|
-
send_data(pdf, filename: "#{report_name}.pdf", type: "application/pdf", disposition: "inline")
|
193
|
-
end
|
194
|
-
format.html
|
162
|
+
format.xls { headers["Content-Disposition"] = "attachment; filename=#{report_name}.xls" }
|
195
163
|
end
|
196
164
|
end
|
197
165
|
|
@@ -214,7 +182,29 @@ class CrudController < ApplicationController
|
|
214
182
|
end
|
215
183
|
end
|
216
184
|
|
185
|
+
|
217
186
|
private
|
187
|
+
|
188
|
+
def setup
|
189
|
+
if params[:associacao]
|
190
|
+
@crud_associacao = Module.const_get("#{params[:model].to_s.singularize}_crud".camelize)
|
191
|
+
@model = Module.const_get(params[:model].camelize).find(params[:id]).send(params[:associacao])
|
192
|
+
c_helper = Module.const_get(params[:model].camelize).reflect_on_association(params[:associacao]).class_name
|
193
|
+
@crud_helper = Module.const_get("#{c_helper}Crud") unless params[:render] == "modal" and params[:action] == "new"
|
194
|
+
@url = crud_associacao_models_path(model: params[:model], id: params[:id], associacao: params[:associacao], page: params[:page], q: params[:q])
|
195
|
+
@clean_url = crud_associacao_models_path(model: params[:model], id: params[:id], associacao: params[:associacao])
|
196
|
+
@model_permission = c_helper.constantize
|
197
|
+
@id = params[:associacao_id] if params[:associacao_id]
|
198
|
+
else
|
199
|
+
@model = Module.const_get(params[:model].camelize)
|
200
|
+
@model_permission = @model
|
201
|
+
@crud_helper = Module.const_get("#{params[:model]}_crud".camelize) unless params[:render] == "modal" and params[:action] == "new"
|
202
|
+
@url = crud_models_path(model: params[:model], page: params[:page], q: params[:q])
|
203
|
+
@clean_url = crud_models_path(model: params[:model])
|
204
|
+
@id = params[:id] if params[:id]
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
218
208
|
def params_permitt
|
219
209
|
params.require(@model.name.underscore.to_sym).permit(fields_model)
|
220
210
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module AttributesHelper
|
2
|
+
|
3
|
+
def association?(model, attribute)
|
4
|
+
!!model.reflect_on_association(attribute)
|
5
|
+
end
|
6
|
+
|
7
|
+
def belongs_to_association?(model, attribute)
|
8
|
+
association_type?(model, attribute, :belongs_to)
|
9
|
+
end
|
10
|
+
|
11
|
+
def has_one_association?(model, attribute)
|
12
|
+
association_type?(model, attribute, :has_one)
|
13
|
+
end
|
14
|
+
|
15
|
+
def array?(record, attribute)
|
16
|
+
attribute_class?(record, attribute, Array)
|
17
|
+
end
|
18
|
+
|
19
|
+
def boolean?(record, attribute)
|
20
|
+
['false', 'true'].include? record.send(attribute).to_s
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def association_type?(model, attribute, association_type)
|
26
|
+
association?(model, attribute) && model.reflect_on_association(attribute).macro == association_type
|
27
|
+
end
|
28
|
+
|
29
|
+
def attribute_class?(record, attribute, klass)
|
30
|
+
record.send(attribute).class == klass
|
31
|
+
end
|
32
|
+
end
|
data/app/helpers/crud_helper.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module CrudHelper
|
2
2
|
|
3
3
|
def is_active_controller(controller_name)
|
4
|
-
|
4
|
+
params[:controller] == controller_name ? "active" : nil
|
5
5
|
end
|
6
6
|
|
7
7
|
def is_active_action(action_name)
|
8
|
-
|
8
|
+
params[:action] == action_name ? "active" : nil
|
9
9
|
end
|
10
10
|
|
11
11
|
def is_raro_crud(classe)
|
@@ -174,9 +174,9 @@ module CrudHelper
|
|
174
174
|
end
|
175
175
|
|
176
176
|
def render_field_file(field)
|
177
|
-
if imagem?(field) && field.
|
177
|
+
if imagem?(field) && field.respond_to?(:thumb)
|
178
178
|
if is_active_action("printing")
|
179
|
-
|
179
|
+
pdf_image_tag(field)
|
180
180
|
else
|
181
181
|
image_tag(field.url(:thumb))
|
182
182
|
end
|
@@ -196,45 +196,65 @@ module CrudHelper
|
|
196
196
|
end
|
197
197
|
|
198
198
|
#Permissions
|
199
|
-
def should_view?(crud_helper,record)
|
199
|
+
def should_view?(crud_helper, record)
|
200
200
|
return false unless can?(:read, record)
|
201
201
|
return true if crud_helper.condition_view_action.nil?
|
202
202
|
crud_helper.condition_view_action.call(record)
|
203
203
|
end
|
204
204
|
|
205
|
-
def should_edit?(crud_helper,record)
|
205
|
+
def should_edit?(crud_helper, record)
|
206
206
|
return false unless can?(:update, record)
|
207
207
|
return true if crud_helper.condition_edit_action.nil?
|
208
208
|
crud_helper.condition_edit_action.call(record)
|
209
209
|
end
|
210
210
|
|
211
|
-
def should_destroy?(crud_helper,record)
|
211
|
+
def should_destroy?(crud_helper, record)
|
212
212
|
return false unless can?(:destroy, record)
|
213
213
|
return true if crud_helper.condition_destroy_action.nil?
|
214
214
|
crud_helper.condition_destroy_action.call(record)
|
215
215
|
end
|
216
216
|
|
217
|
-
def should_listing?(crud_helper,model)
|
217
|
+
def should_listing?(crud_helper, model)
|
218
218
|
return false unless can?(:read, model)
|
219
219
|
return true if crud_helper.condition_listing_action.nil?
|
220
220
|
crud_helper.condition_listing_action.call(model)
|
221
221
|
end
|
222
222
|
|
223
|
-
def should_listing_excel?(crud_helper,model)
|
223
|
+
def should_listing_excel?(crud_helper, model)
|
224
224
|
return false unless can?(:read, model)
|
225
225
|
return true if crud_helper.condition_listing_excel.nil?
|
226
226
|
crud_helper.condition_listing_excel.call(model)
|
227
227
|
end
|
228
228
|
|
229
|
-
def
|
230
|
-
return false unless can?(:read, model)
|
231
|
-
return true if crud_helper.condition_listing_pdf.nil?
|
232
|
-
crud_helper.condition_listing_pdf.call(model)
|
233
|
-
end
|
234
|
-
|
235
|
-
def should_printing?(crud_helper,record)
|
229
|
+
def can_print_pdf?(crud_helper, record)
|
236
230
|
return false unless can?(:read, record)
|
237
231
|
return true if crud_helper.condition_printing_action.nil?
|
238
232
|
crud_helper.condition_printing_action.call(record)
|
239
233
|
end
|
234
|
+
|
235
|
+
|
236
|
+
private
|
237
|
+
|
238
|
+
def pdf_image_tag(field, options = {})
|
239
|
+
if Rails.env.development? || Rails.env.test?
|
240
|
+
# Unless running a web server that can process 2 requests at the same
|
241
|
+
# time, trying to insert an image in a PDF creates a deadlock: the server
|
242
|
+
# can't finish processing the PDF request until it gets the image, but it
|
243
|
+
# can't start processing the image request until it has finished
|
244
|
+
# processing the PDF request.
|
245
|
+
# This will not be a problem in production, but in dev, a workaround is
|
246
|
+
# to base64 the image and insert its contents into the HTML
|
247
|
+
if field.respond_to?(:thumb)
|
248
|
+
image_data = File.read(field.thumb.path)
|
249
|
+
else
|
250
|
+
image_data = Rails.application.assets[field].to_s
|
251
|
+
end
|
252
|
+
image_tag("data:image/png;base64,#{::Base64.encode64(image_data)}", options)
|
253
|
+
else
|
254
|
+
if field.respond_to?(:thumb)
|
255
|
+
field = field.thumb.url
|
256
|
+
end
|
257
|
+
wicked_pdf_image_tag(field, options)
|
258
|
+
end
|
259
|
+
end
|
240
260
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module ImagensHelper
|
2
|
+
|
3
|
+
def carrier_wave_uploader?(model, attribute)
|
4
|
+
model.new.send(attribute).class.ancestors.include?(CarrierWave::Uploader::Base)
|
5
|
+
end
|
6
|
+
|
7
|
+
def possui_url?(record, attribute)
|
8
|
+
record.send(attribute).respond_to?(:url)
|
9
|
+
end
|
10
|
+
|
11
|
+
def deve_renderizar_imagem?(opts)
|
12
|
+
opts.has_key?(:render) && !!opts[:render]
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
data/app/raro_crud/raro_crud.rb
CHANGED
@@ -8,6 +8,8 @@ class RaroCrud
|
|
8
8
|
@@view_fields = {}
|
9
9
|
@@listing_fields = {}
|
10
10
|
@@printing_fields = {}
|
11
|
+
@@logo_printing_field = {}
|
12
|
+
@@titulo_printing_field = {}
|
11
13
|
@@search_fields = {}
|
12
14
|
@@test_fields = {}
|
13
15
|
@@top_links = {}
|
@@ -128,11 +130,11 @@ class RaroCrud
|
|
128
130
|
end
|
129
131
|
|
130
132
|
def self.top_links
|
131
|
-
|
133
|
+
@@top_links[self.to_s.to_sym] || []
|
132
134
|
end
|
133
135
|
|
134
136
|
def self.index_fields
|
135
|
-
|
137
|
+
@@index_fields[self.to_s.to_sym] || []
|
136
138
|
end
|
137
139
|
|
138
140
|
def self.order_field
|
@@ -144,51 +146,59 @@ class RaroCrud
|
|
144
146
|
end
|
145
147
|
|
146
148
|
def self.actions
|
147
|
-
|
149
|
+
@@actions[self.to_s.to_sym] || []
|
148
150
|
end
|
149
151
|
|
150
152
|
def self.actions_links
|
151
|
-
|
153
|
+
@@links[self.to_s.to_sym] || []
|
152
154
|
end
|
153
155
|
|
154
156
|
def self.options_link
|
155
|
-
|
157
|
+
@@options_link[self.to_s.to_sym] || []
|
156
158
|
end
|
157
159
|
|
158
160
|
def self.form_fields
|
159
|
-
|
161
|
+
@@form_fields[self.to_s.to_sym] || []
|
160
162
|
end
|
161
163
|
|
162
164
|
def self.form_groups
|
163
|
-
|
165
|
+
@@form_group[self.to_s.to_sym] || []
|
164
166
|
end
|
165
167
|
|
166
168
|
def self.form_scripts
|
167
|
-
|
169
|
+
@@form_scripts[self.to_s.to_sym] || []
|
168
170
|
end
|
169
171
|
|
170
172
|
def self.view_fields
|
171
|
-
|
173
|
+
@@view_fields[self.to_s.to_sym] || []
|
172
174
|
end
|
173
175
|
|
174
176
|
def self.listing_fields
|
175
|
-
|
177
|
+
@@listing_fields[self.to_s.to_sym] || []
|
176
178
|
end
|
177
179
|
|
178
180
|
def self.printing_fields
|
179
|
-
|
181
|
+
@@printing_fields[self.to_s.to_sym] || []
|
182
|
+
end
|
183
|
+
|
184
|
+
def self.logo_printing_field
|
185
|
+
@@logo_printing_field[self.to_s.to_sym]
|
186
|
+
end
|
187
|
+
|
188
|
+
def self.titulo_printing_field
|
189
|
+
@@titulo_printing_field[self.to_s.to_sym]
|
180
190
|
end
|
181
191
|
|
182
192
|
def self.search_fields
|
183
|
-
|
193
|
+
@@search_fields[self.to_s.to_sym] || []
|
184
194
|
end
|
185
195
|
|
186
196
|
def self.test_fields
|
187
|
-
|
197
|
+
@@test_fields[self.to_s.to_sym] || []
|
188
198
|
end
|
189
199
|
|
190
200
|
def self.scopes
|
191
|
-
|
201
|
+
@@scopes[self.to_s.to_sym] || []
|
192
202
|
end
|
193
203
|
|
194
204
|
def self.add_menus(menu)
|
@@ -200,6 +210,7 @@ class RaroCrud
|
|
200
210
|
end
|
201
211
|
|
202
212
|
|
213
|
+
|
203
214
|
private
|
204
215
|
|
205
216
|
def self.modelo
|
@@ -300,7 +311,6 @@ class RaroCrud
|
|
300
311
|
end
|
301
312
|
end
|
302
313
|
|
303
|
-
private
|
304
314
|
def self.add_group_formulario(field)
|
305
315
|
field[:fields] = []
|
306
316
|
field[:grupo].each do |f|
|
@@ -311,7 +321,7 @@ class RaroCrud
|
|
311
321
|
end
|
312
322
|
field[:grupo] = true
|
313
323
|
end
|
314
|
-
|
324
|
+
|
315
325
|
def self.set_default_label nome, opts
|
316
326
|
unless opts[:label].present?
|
317
327
|
opts[:label] = "simple_form.labels.#{self.modelo.underscore}.#{nome}"
|
@@ -319,9 +329,13 @@ class RaroCrud
|
|
319
329
|
opts
|
320
330
|
end
|
321
331
|
|
332
|
+
|
333
|
+
|
334
|
+
|
322
335
|
public
|
323
|
-
|
324
|
-
|
336
|
+
|
337
|
+
def self.campo_visualizacao(nome, opts = {})
|
338
|
+
@@view_fields[self.to_s.to_sym] ||= []
|
325
339
|
opts = set_default_label nome, opts
|
326
340
|
@@view_fields[self.to_s.to_sym].push(
|
327
341
|
{
|
@@ -330,8 +344,8 @@ class RaroCrud
|
|
330
344
|
)
|
331
345
|
end
|
332
346
|
|
333
|
-
def self.campo_busca
|
334
|
-
@@search_fields[self.to_s.to_sym]
|
347
|
+
def self.campo_busca(nome, opts = {})
|
348
|
+
@@search_fields[self.to_s.to_sym] ||= []
|
335
349
|
opts = set_default_label nome, opts
|
336
350
|
@@search_fields[self.to_s.to_sym].push(
|
337
351
|
{
|
@@ -340,8 +354,8 @@ class RaroCrud
|
|
340
354
|
)
|
341
355
|
end
|
342
356
|
|
343
|
-
def self.
|
344
|
-
@@listing_fields[self.to_s.to_sym]
|
357
|
+
def self.relatorio_listagem(nome, opts = {})
|
358
|
+
@@listing_fields[self.to_s.to_sym] ||= []
|
345
359
|
opts = set_default_label nome, opts
|
346
360
|
@@listing_fields[self.to_s.to_sym].push(
|
347
361
|
{
|
@@ -350,14 +364,46 @@ class RaroCrud
|
|
350
364
|
)
|
351
365
|
end
|
352
366
|
|
353
|
-
def self.
|
354
|
-
@@printing_fields[self.to_s.to_sym]
|
367
|
+
def self.relatorio_impressao(nome, opts = {})
|
368
|
+
@@printing_fields[self.to_s.to_sym] ||= []
|
355
369
|
opts = set_default_label nome, opts
|
356
|
-
@@printing_fields[self.to_s.to_sym].push(
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
370
|
+
@@printing_fields[self.to_s.to_sym].push({
|
371
|
+
attribute: nome,
|
372
|
+
sf: opts
|
373
|
+
})
|
374
|
+
end
|
375
|
+
|
376
|
+
def self.relatorio_impressao_logo(field_or_url = nil, options = {})
|
377
|
+
url = nil
|
378
|
+
field = nil
|
379
|
+
if field_or_url.blank?
|
380
|
+
url = Templus.logo
|
381
|
+
elsif field_or_url.is_a?(String)
|
382
|
+
url = field_or_url
|
383
|
+
else
|
384
|
+
field = field_or_url
|
385
|
+
end
|
386
|
+
|
387
|
+
@@logo_printing_field[self.to_s.to_sym] = {
|
388
|
+
url: url,
|
389
|
+
field: field,
|
390
|
+
sf: options
|
391
|
+
}
|
392
|
+
end
|
393
|
+
|
394
|
+
def self.relatorio_impressao_titulo(field_or_string = nil)
|
395
|
+
field = nil
|
396
|
+
titulo = nil
|
397
|
+
if field_or_string.is_a?(String)
|
398
|
+
titulo = I18n.t(field_or_string)
|
399
|
+
elsif field_or_string.present?
|
400
|
+
field = field_or_string
|
401
|
+
end
|
402
|
+
|
403
|
+
@@titulo_printing_field[self.to_s.to_sym] = {
|
404
|
+
field: field,
|
405
|
+
titulo: titulo
|
406
|
+
}
|
361
407
|
end
|
362
408
|
|
363
409
|
def self.sem_visualizacao
|
@@ -1,55 +1,55 @@
|
|
1
1
|
<%= render_crud do %>
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
2
|
+
<div>
|
3
|
+
<%= render "/crud/links" %>
|
4
|
+
</div>
|
5
|
+
<div class="dataTables_wrapper form-inline">
|
6
|
+
<table class="table table-striped table-bordered table-hover dataTables-example dataTable">
|
7
|
+
<thead>
|
8
|
+
<tr>
|
9
|
+
<%@crud_helper.index_fields.each do |att| %>
|
10
|
+
<% if !att[:visible_if].nil?%>
|
11
|
+
<% if ((att[:visible_if].class == Proc && !att[:visible_if].call(att)) || (att[:visible_if].class != Proc && !att[:visible_if])) %>
|
12
|
+
<% next %>
|
13
|
+
<% end %>
|
14
|
+
<% end %>
|
15
|
+
<th>
|
16
|
+
<% if att[:sort_field].present? %>
|
17
|
+
<%= sort_link @q, att[:sort_field], I18n.t(att[:label]), {},data: {push: 'partial', target: "#form"}%>
|
18
|
+
<% else %>
|
19
|
+
<%= sort_link @q, att[:attribute], I18n.t(att[:label]), {},data: {push: 'partial', target: "#form"}%>
|
20
|
+
<% end %>
|
21
|
+
</th>
|
22
|
+
<%end%>
|
23
|
+
<%if @crud_helper.view_action || @crud_helper.edit_action || @crud_helper.destroy_action || @crud_helper.actions.present?%>
|
24
|
+
<td><%= I18n.t("simple_form.index.options") %></td>
|
25
|
+
<% end %>
|
26
|
+
</tr>
|
27
|
+
</thead>
|
28
|
+
<tbody id="records-body">
|
29
|
+
<% @records.each do |record| %>
|
30
|
+
<%= render '/crud/record', record: record %>
|
31
|
+
<% end %>
|
32
|
+
</tbody>
|
33
|
+
</table>
|
34
|
+
<%= paginate @records, target: '#form', theme: 'templus'%>
|
35
|
+
</div>
|
36
36
|
<% end %>
|
37
37
|
<script type="text/javascript">
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
38
|
+
var theadtxt = [];
|
39
|
+
var headers = document.querySelectorAll("thead");
|
40
|
+
var tablebody = document.querySelectorAll("tbody");
|
41
|
+
for (var x = 0; x < headers.length; x++) {
|
42
|
+
theadtxt[x]=[];
|
43
|
+
for (var j = 0, headrow; headrow = headers[x].rows[0].cells[j]; j++) {
|
44
|
+
var current = headrow;
|
45
|
+
theadtxt[x].push(current.innerHTML);
|
46
|
+
}
|
47
|
+
}
|
48
|
+
for (var v = 0, tbody; tbody = tablebody[v]; v++) {
|
49
|
+
for (var x = 0, row; row = tbody.rows[x]; x++) {
|
50
|
+
for (var j = 0, col; col = row.cells[j]; j++) {
|
51
51
|
col.insertAdjacentHTML('afterbegin', '<div class="col-xs-3 no-padding">' + theadtxt[v][j] + '</div>');
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
</script>
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
</script>
|
@@ -1,30 +1,30 @@
|
|
1
1
|
<div class="modal inmodal" id="modal_search" tabindex="-1" role="dialog" aria-hidden="true">
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
2
|
+
<div class="modal-dialog modal-lg">
|
3
|
+
<div class="modal-content animated bounceInRight">
|
4
|
+
<div class="modal-header">
|
5
|
+
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only"><%= I18n.t("close") %></span></button>
|
6
|
+
<i class="fa fa-search modal-icon"></i>
|
7
|
+
<h4 class="modal-title"><%= I18n.t("search") %></h4>
|
8
|
+
<small class="font-bold"></small>
|
9
|
+
</div>
|
10
|
+
<div class="modal-body">
|
11
|
+
<% if @crud_associacao.present? %>
|
12
|
+
<% url = query_crud_associacao_path(model: params[:model], id: params[:id], associacao: params[:associacao]) %>
|
13
|
+
<% else %>
|
14
|
+
<% url = query_crud_path(model: @model.name.underscore) %>
|
15
|
+
<% end %>
|
16
|
+
<%=raro_search_form(@model, 'records','records', url) do%>
|
17
|
+
<%raro_group "#{@crud_helper.title}"%>
|
18
|
+
<%@crud_helper.search_fields.each do |att| %>
|
19
|
+
<% if att[:sf].present? && !att[:sf][:visible_if].nil?%>
|
20
|
+
<% if ((att[:sf][:visible_if].class == Proc && !att[:sf][:visible_if].call(att)) || (att[:sf][:visible_if].class != Proc && !att[:sf][:visible_if])) %>
|
21
|
+
<% next %>
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
24
|
+
<%raro_field att[:attribute], att[:sf]%>
|
25
|
+
<%end%>
|
26
|
+
<%end%>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
30
|
</div>
|
@@ -1,98 +1,97 @@
|
|
1
|
-
<%unless params[:render] == 'modal'%>
|
1
|
+
<% unless params[:render] == 'modal' %>
|
2
2
|
<div class="wrapper wrapper-content animated fadeInRight">
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
</div>
|
3
|
+
<div class="row">
|
4
|
+
<div class="col-lg-12">
|
5
|
+
<div class="ibox float-e-margins">
|
6
|
+
<div class="ibox-title">
|
7
|
+
<% if content_for?(:ibox_title) %>
|
8
|
+
<%= yield :ibox_title %>
|
9
|
+
<% elsif is_action_edit? && @model.present?%>
|
10
|
+
<h5>
|
11
|
+
<%= I18n.t("edit") %>
|
12
|
+
<small style="margin-left: 2px;"><%= @record.to_s %> - #<%= @record.id %></small>
|
13
|
+
</h5>
|
14
|
+
<% elsif (is_action_create? || is_action_new?) && @model.present? %>
|
15
|
+
<h5><%= I18n.t("new", model: I18n.t("model.#{@model.name.underscore}")) %></h5>
|
16
|
+
<% elsif @record.present? && !@record.new_record? %>
|
17
|
+
<h5>
|
18
|
+
<%= @record.to_s %>
|
19
|
+
<small style="margin-left: 2px;">#<%= @record.id %></small>
|
20
|
+
</h5>
|
21
|
+
<% elsif @crud_helper.present? %>
|
22
|
+
<h5>
|
23
|
+
<%= @crud_helper.subtitle(:index) %>
|
24
|
+
<small><%= @crud_helper.description(:index) %></small>
|
25
|
+
</h5>
|
26
|
+
<% end %>
|
27
|
+
|
28
|
+
|
29
|
+
<% if (@crud_helper.present? && (is_action_index? || is_action_query?)) %>
|
30
|
+
<div class="pull-right actions">
|
31
|
+
<% @crud_helper.top_links.each do |link| %>
|
32
|
+
<% if link[:can].present? %>
|
33
|
+
<%= render_link(link,@clean_url) if self.instance_eval &link[:can] %>
|
34
|
+
<% else %>
|
35
|
+
<%= render_link(link,@clean_url) %>
|
36
|
+
<% end %>
|
37
|
+
<% end %>
|
38
|
+
<% if params[:associacao] %>
|
39
|
+
<% if @crud_helper.listing_fields.present? && should_listing?(@crud_helper, @model_permission) && should_listing_excel?(@crud_helper, @model_permission) %>
|
40
|
+
<%= link_to listing_crud_associacao_path(model: params[:model], id: params[:id], associacao: params[:associacao], q: params[:q], format: :xls), class: "btn btn-success btn-rounded" do %>
|
41
|
+
<%= I18n.t("devise.reports.excel").html_safe %>
|
42
|
+
<% end %>
|
43
|
+
<% end %>
|
44
|
+
<% else %>
|
45
|
+
<% if @crud_helper.listing_fields.present? && should_listing?(@crud_helper, @model) && should_listing_excel?(@crud_helper, @model) %>
|
46
|
+
<%= link_to listing_crud_path(model: @model.name.underscore, q: params[:q], format: :xls), class: "btn btn-success btn-rounded" do %>
|
47
|
+
<%= I18n.t("devise.reports.excel").html_safe %>
|
48
|
+
<% end %>
|
49
|
+
<% end %>
|
50
|
+
<% end %>
|
51
|
+
<% if @crud_helper.search_fields.present? %>
|
52
|
+
<button id="button_search_<%=@model.name.underscore%>" class="btn btn-warning btn-rounded" data-toggle="modal" data-target="#modal_search">
|
53
|
+
<i class="fa fa-search"></i>
|
54
|
+
</button>
|
55
|
+
<% end %>
|
56
|
+
</div>
|
57
|
+
|
58
|
+
<% elsif is_action_show? %>
|
59
|
+
<% if (@crud_helper.present? && @crud_helper.destroy_action) && should_destroy?(@crud_helper, @record) %>
|
60
|
+
<% if @crud_associacao.present? %>
|
61
|
+
<%= link_to I18n.t("destroy"), destroy_crud_associacao_path(model: params[:model], id: params[:id], associacao: params[:associacao], associacao_id: @record.id, page: params[:page], q: params[:q]), class: 'btn btn-danger btn-xs pull-right m-l-xs', data: {method: 'delete', confirm: I18n.t('mensagem_confirm_destroy')} %>
|
62
|
+
<% else %>
|
63
|
+
<%= link_to I18n.t("destroy"), destroy_crud_path(model: @model.name.underscore, id: @record.id, page: params[:page], q: params[:q]), class: 'btn btn-danger btn-xs pull-right m-l-xs', data: {method: 'delete', confirm: I18n.t('mensagem_confirm_destroy')} %>
|
64
|
+
<% end %>
|
65
|
+
<% end %>
|
66
|
+
|
67
|
+
<% if (@crud_helper.present? && @crud_helper.edit_action) && should_edit?(@crud_helper, @record) %>
|
68
|
+
<% if @crud_associacao.present? %>
|
69
|
+
<%= link_to I18n.t("edit"), edit_crud_associacao_path(model: params[:model], id: params[:id], associacao: params[:associacao], associacao_id: @record.id, page: params[:page], q: params[:q]), class: 'btn btn-primary btn-xs pull-right m-l-xs', data: {push: 'partial', target: '#form'} %>
|
70
|
+
<% else %>
|
71
|
+
<%= link_to I18n.t("edit"), edit_crud_path(model: @model.name.underscore, id: @record.id, page: params[:page], q: params[:q]), class: 'btn btn-primary btn-xs pull-right m-l-xs', data: {push: 'partial', target: '#form'} %>
|
72
|
+
<% end %>
|
73
|
+
<% end %>
|
74
|
+
|
75
|
+
<% if @crud_helper.printing_fields.present? && can_print_pdf?(@crud_helper, @record) %>
|
76
|
+
<% if @crud_associacao.present? %>
|
77
|
+
<%= link_to printing_crud_associacao_path(model: params[:model], id: params[:id], associacao: params[:associacao], associacao_id: @record.id, page: params[:page], q: params[:q], format: :pdf), class: "btn btn-success btn-xs pull-right m-l-xs", target: "_blank" do %>
|
78
|
+
<%= I18n.t("devise.printing").html_safe %>
|
79
|
+
<% end %>
|
80
|
+
<% else %>
|
81
|
+
<%= link_to printing_crud_path(model: @model.name.underscore, id: @record.id, page: params[:page], q: params[:q], format: :pdf), class: "btn btn-success btn-xs pull-right m-l-xs", target: "_blank" do %>
|
82
|
+
<%= I18n.t("devise.printing").html_safe %>
|
83
|
+
<% end %>
|
84
|
+
<% end %>
|
85
|
+
<% end %>
|
86
|
+
<% end %>
|
87
|
+
</div>
|
88
|
+
<div class="ibox-content">
|
89
|
+
<% block.call %>
|
90
|
+
</div>
|
91
|
+
</div>
|
92
|
+
</div>
|
93
|
+
</div>
|
95
94
|
</div>
|
96
95
|
<% else %>
|
97
|
-
|
96
|
+
<% block.call %>
|
98
97
|
<% end %>
|
@@ -5,44 +5,45 @@ xmlns:x="urn:schemas-microsoft-com:office:excel"
|
|
5
5
|
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
|
6
6
|
xmlns:html="http://www.w3.org/TR/REC-html40">
|
7
7
|
<Worksheet ss:Name="<%= @crud_helper.title %>">
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
8
|
+
<Table>
|
9
|
+
<Row>
|
10
|
+
<% @crud_helper.listing_fields.each do |att| %>
|
11
|
+
<% if !att[:visible_if].nil?%>
|
12
|
+
<% if ((att[:visible_if].class == Proc && !att[:visible_if].call(att)) || (att[:visible_if].class != Proc && !att[:visible_if])) %>
|
13
|
+
<% next %>
|
14
|
+
<% end %>
|
15
|
+
<% end %>
|
16
|
+
<Cell><Data ss:Type="String"><%= I18n.t(att[:sf][:label]) %></Data></Cell>
|
17
|
+
<% end %>
|
18
|
+
</Row>
|
19
|
+
<% @records.each do |record| %>
|
20
|
+
<Row>
|
21
|
+
<% @crud_helper.listing_fields.each do |att| %>
|
22
|
+
<% if record.send(att[:attribute]).present? || record.send(att[:attribute]).to_s == "false" %>
|
23
|
+
<% if @model.columns_hash[att[:attribute].to_s].present? && [:date, :datetime].include?(@model.columns_hash[att[:attribute].to_s].type) %>
|
24
|
+
<% if att[:date_format].present?%>
|
25
|
+
<Cell><Data ss:Type="String"><%= record.send(att[:attribute]).strftime(att[:date_format]) %></Data></Cell>
|
26
|
+
<% else %>
|
27
|
+
<Cell><Data ss:Type="String"><%= l record.send(att[:attribute]) %></Data></Cell>
|
28
|
+
<% end %>
|
29
|
+
<% elsif array?(record, att[:attribute]) || (association?(@model, att[:attribute]) && !belongs_to_association?(@model, att[:attribute]) && !has_one_association?(@model, att[:attribute])) %>
|
30
|
+
<%# binding.pry %>
|
31
|
+
<Cell><Data ss:Type="String"><%= record.send(att[:attribute]).map{ |rec| rec.to_s }.join(",") %></Data></Cell>
|
32
|
+
<% elsif boolean?(record, att[:attribute]) %>
|
33
|
+
<Cell><Data ss:Type="String"><%= I18n.t(record.send(att[:attribute]) ? "shared.sim" : "shared.nao") %></Data></Cell>
|
34
|
+
<% elsif possui_url?(record, att[:attribute]) %>
|
35
|
+
<Cell><Data ss:Type="String"><%= record.send(att[:attribute]).url %></Data></Cell>
|
36
|
+
<% elsif att[:sf][:label_method].present? %>
|
37
|
+
<Cell><Data ss:Type="String"><%= record.send(att[:attribute]).send(att[:sf][:label_method]).to_s %></Data></Cell>
|
38
|
+
<% else %>
|
39
|
+
<Cell><Data ss:Type="String"><%= record.send(att[:attribute]).to_s %></Data></Cell>
|
40
|
+
<% end %>
|
41
|
+
<% else %>
|
42
|
+
<Cell><Data ss:Type="String"></Data></Cell>
|
43
|
+
<% end %>
|
44
|
+
<% end %>
|
45
|
+
</Row>
|
46
|
+
<% end %>
|
47
|
+
</Table>
|
47
48
|
</Worksheet>
|
48
49
|
</Workbook>
|
@@ -4,64 +4,98 @@
|
|
4
4
|
<div class="widget-body">
|
5
5
|
<div class="widget-main">
|
6
6
|
<div class="profile-element">
|
7
|
-
<div
|
8
|
-
<
|
7
|
+
<div>
|
8
|
+
<div class="row">
|
9
|
+
<% if @crud_helper.logo_printing_field.present? %>
|
10
|
+
<div class="col-xs-3">
|
11
|
+
<% if @crud_helper.logo_printing_field[:field].present? %>
|
12
|
+
<%= render_field_file(@record.send(@crud_helper.logo_printing_field[:field])) %>
|
13
|
+
<% elsif @crud_helper.logo_printing_field[:url].present? %>
|
14
|
+
<%= pdf_image_tag(@crud_helper.logo_printing_field[:url], width: '100px') %>
|
15
|
+
<% end %>
|
16
|
+
</div>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<% if @crud_helper.titulo_printing_field.present? %>
|
20
|
+
<div class="col-xs-9">
|
21
|
+
<h1>
|
22
|
+
<% if @crud_helper.titulo_printing_field[:titulo].present? %>
|
23
|
+
<%= t(@crud_helper.titulo_printing_field[:titulo]) %>
|
24
|
+
<% elsif @crud_helper.titulo_printing_field[:field].present? %>
|
25
|
+
<%= @record.send(@crud_helper.titulo_printing_field[:field]) %>
|
26
|
+
<% else %>
|
27
|
+
<%= Templus.nome_aplicacao %>
|
28
|
+
<% end %>
|
29
|
+
</h1>
|
30
|
+
</div>
|
31
|
+
<% end %>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
|
36
|
+
<div style="clear: both;"></div>
|
37
|
+
|
38
|
+
<div class="row">
|
39
|
+
<div class="col-lg-12">
|
40
|
+
<h2>
|
9
41
|
<small><%= @crud_helper.title %></small><br />
|
10
42
|
<%= @record.to_s %>
|
11
|
-
</
|
43
|
+
</h2>
|
12
44
|
</div>
|
13
45
|
</div>
|
46
|
+
|
47
|
+
|
14
48
|
<table class="table table-bordered table-striped">
|
15
49
|
<tbody>
|
16
|
-
<% @crud_helper.
|
50
|
+
<% @crud_helper.printing_fields.each do |field| %>
|
51
|
+
<% next if field[:sf].present? && !field[:sf][:visible_if].nil? && ((field[:sf][:visible_if].class == Proc && !field[:sf][:visible_if].call(@record)) || (field[:sf][:visible_if].class != Proc && !field[:sf][:visible_if])) %>
|
17
52
|
<tr>
|
18
|
-
|
19
|
-
<% if ((field[:sf][:visible_if].class == Proc && !field[:sf][:visible_if].call(@record)) || (field[:sf][:visible_if].class != Proc && !field[:sf][:visible_if])) %>
|
20
|
-
<% next %>
|
21
|
-
<% end %>
|
22
|
-
<% end %>
|
23
|
-
<th><%= I18n.t(att[:sf][:label]) %></th>
|
53
|
+
<th><%= I18n.t(field[:sf][:label]) %></th>
|
24
54
|
|
25
|
-
<% if @model.columns_hash[field[:attribute].to_s].present? && [:date, :datetime].include?(@model.columns_hash[field[:attribute].to_s].type)%>
|
55
|
+
<% if @model.columns_hash[field[:attribute].to_s].present? && [:date, :datetime].include?(@model.columns_hash[field[:attribute].to_s].type) %>
|
26
56
|
<% if field[:date_format].present?%>
|
27
|
-
<td><%= l @record.send(field[:attribute]).strftime(field[:date_format]) if @record.send(field[:attribute]).present
|
57
|
+
<td><%= l @record.send(field[:attribute]).strftime(field[:date_format]) if @record.send(field[:attribute]).present? %></td>
|
28
58
|
<% else %>
|
29
|
-
<td><%= l @record.send(field[:attribute]) if @record.send(field[:attribute]).present
|
59
|
+
<td><%= l @record.send(field[:attribute]) if @record.send(field[:attribute]).present? %></td>
|
30
60
|
<% end %>
|
31
|
-
<% elsif @model
|
61
|
+
<% elsif association?(@model, field[:attribute]) && !belongs_to_association?(@model, field[:attribute]) && !has_one_association?(@model, field[:attribute]) %>
|
32
62
|
<td>
|
33
63
|
<% @record.send(field[:attribute]).each do |rec| %>
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
64
|
+
<li>
|
65
|
+
<% if field[:sf].present? && field[:sf][:label_method].present? %>
|
66
|
+
<% if possui_url?(rec, field[:sf][:label_method]) && deve_renderizar_imagem?(field[:sf]) %>
|
67
|
+
<% if deve_renderizar_imagem?(field[:sf]) %>
|
68
|
+
<%= render_field_file(rec.send(field[:sf][:label_method])) %>
|
69
|
+
<% else %>
|
70
|
+
<%= rec.send(field[:sf][:label_method]).url %>
|
71
|
+
<% end %>
|
72
|
+
<% else %>
|
73
|
+
<%= rec.send(field[:sf][:label_method]) %>
|
74
|
+
<% end %>
|
44
75
|
<% else %>
|
45
|
-
|
76
|
+
<% if rec.respond_to?(:url) && deve_renderizar_imagem?(field[:sf]) %>
|
77
|
+
<%= render_field_file(rec.to_s) %>
|
78
|
+
<% else %>
|
79
|
+
<%= rec.to_s %>
|
80
|
+
<% end %>
|
46
81
|
<% end %>
|
47
|
-
|
48
|
-
</li>
|
82
|
+
</li>
|
49
83
|
<% end %>
|
50
84
|
</td>
|
51
|
-
<% elsif @record
|
85
|
+
<% elsif array?(@record, field[:attribute]) %>
|
52
86
|
<td>
|
53
87
|
<% @record.send(field[:attribute]).each do |rec| %>
|
54
|
-
<li>
|
55
|
-
<%= rec.to_s %>
|
56
|
-
</li>
|
88
|
+
<li><%= rec.to_s %></li>
|
57
89
|
<% end %>
|
58
90
|
</td>
|
59
|
-
<% elsif @record
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
91
|
+
<% elsif possui_url?(@record, field[:attribute]) %>
|
92
|
+
<% if deve_renderizar_imagem?(field[:sf]) %>
|
93
|
+
<td><%= render_field_file(@record.send(field[:attribute])) %></td>
|
94
|
+
<% else %>
|
95
|
+
<td><%= @record.send(field[:attribute]).url %></td>
|
96
|
+
<% end %>
|
97
|
+
<% elsif boolean?(@record, field[:attribute]) %>
|
98
|
+
<td><%= I18n.t(@record.send(field[:attribute]) ? "shared.sim" : "shared.nao") %></td>
|
65
99
|
<% else %>
|
66
100
|
<td>
|
67
101
|
<% if field[:sf].present? && field[:sf][:label_method].present? && @record.send(field[:attribute]).present?%>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: templus_models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rodrigo Sol
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-
|
13
|
+
date: 2017-03-28 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -153,7 +153,9 @@ files:
|
|
153
153
|
- app/assets/javascripts/raro_crud.js
|
154
154
|
- app/assets/javascripts/templus_models.js.coffee
|
155
155
|
- app/controllers/crud_controller.rb
|
156
|
+
- app/helpers/attributes_helper.rb
|
156
157
|
- app/helpers/crud_helper.rb
|
158
|
+
- app/helpers/imagens_helper.rb
|
157
159
|
- app/helpers/mensagens_helper.rb
|
158
160
|
- app/helpers/search_helper.rb
|
159
161
|
- app/raro_crud/raro_crud.rb
|
@@ -174,7 +176,6 @@ files:
|
|
174
176
|
- app/views/crud/create.js.erb
|
175
177
|
- app/views/crud/edit.html.erb
|
176
178
|
- app/views/crud/index.html.erb
|
177
|
-
- app/views/crud/listing.pdf.erb
|
178
179
|
- app/views/crud/listing.xls.erb
|
179
180
|
- app/views/crud/mensagens/_avisos.html.erb
|
180
181
|
- app/views/crud/mensagens/_erros_formulario.html.erb
|
@@ -1,72 +0,0 @@
|
|
1
|
-
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
2
|
-
|
3
|
-
<div class="widget-box" id="relatorio">
|
4
|
-
<div class="widget-body">
|
5
|
-
<div class="widget-main">
|
6
|
-
<div class="profile-element">
|
7
|
-
<div class="header">
|
8
|
-
<h1><%= @crud_helper.title %></h1>
|
9
|
-
</div>
|
10
|
-
</div>
|
11
|
-
<table class="table table-bordered table-striped">
|
12
|
-
<thead>
|
13
|
-
<tr>
|
14
|
-
<% @crud_helper.listing_fields.each do |att|%>
|
15
|
-
<% if !att[:visible_if].nil?%>
|
16
|
-
<% if ((att[:visible_if].class == Proc && !att[:visible_if].call(att)) || (att[:visible_if].class != Proc && !att[:visible_if])) %>
|
17
|
-
<% next %>
|
18
|
-
<% end %>
|
19
|
-
<% end %>
|
20
|
-
<th><%= I18n.t(att[:sf][:label]) %></th>
|
21
|
-
<% end %>
|
22
|
-
</tr>
|
23
|
-
</thead>
|
24
|
-
<tbody>
|
25
|
-
<% @records.each do |record| %>
|
26
|
-
<tr>
|
27
|
-
<%@crud_helper.listing_fields.each do |att| %>
|
28
|
-
<% if record.send(att[:attribute]).present? or record.send(att[:attribute]).to_s == "false"%>
|
29
|
-
<% if @model.columns_hash[att[:attribute].to_s].present? && [:date, :datetime].include?(@model.columns_hash[att[:attribute].to_s].type)%>
|
30
|
-
<% if att[:date_format].present?%>
|
31
|
-
<td><%= record.send(att[:attribute]).strftime(att[:date_format]) %></td>
|
32
|
-
<% else %>
|
33
|
-
<td><%= l record.send(att[:attribute]) %></td>
|
34
|
-
<% end %>
|
35
|
-
<% elsif ((@model.reflect_on_association(att[:attribute]) && @model.reflect_on_association(att[:attribute]).macro != :belongs_to && @model.reflect_on_association(att[:attribute]).macro != :has_one) || record.send(att[:attribute]).class == Array)%>
|
36
|
-
<td><%= record.send(att[:attribute]).map{|rec| rec.to_s}.join(",") %></td>
|
37
|
-
<% else %>
|
38
|
-
<% if record.send(att[:attribute]).to_s == "false" or record.send(att[:attribute]).to_s == "true" %>
|
39
|
-
<td><%= I18n.t(record.send(att[:attribute]) ? "shared.sim" : "shared.nao") %></td>
|
40
|
-
<% elsif att[:sf][:label_method].present? %>
|
41
|
-
<td><%= record.send(att[:attribute]).send(att[:sf][:label_method]).to_s %></td>
|
42
|
-
<% else %>
|
43
|
-
<td><%= record.send(att[:attribute]).to_s %></td>
|
44
|
-
<% end %>
|
45
|
-
<% end %>
|
46
|
-
<% else %>
|
47
|
-
<td></td>
|
48
|
-
<% end %>
|
49
|
-
<% end %>
|
50
|
-
</tr>
|
51
|
-
<% end %>
|
52
|
-
</tbody>
|
53
|
-
</table>
|
54
|
-
</div>
|
55
|
-
</div>
|
56
|
-
</div>
|
57
|
-
<style>
|
58
|
-
#relatorio {
|
59
|
-
clear: both;
|
60
|
-
page-break-inside: avoid;
|
61
|
-
}
|
62
|
-
.header {
|
63
|
-
float: left;
|
64
|
-
}
|
65
|
-
table {
|
66
|
-
font-size: 0.75em;
|
67
|
-
}
|
68
|
-
thead { display: table-header-group }
|
69
|
-
tfoot { display: table-row-group }
|
70
|
-
tr { page-break-inside: avoid }
|
71
|
-
h1 { padding-bottom: 20px; }
|
72
|
-
</style>
|