carnival 0.1.9 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: acec3349db3511b753cc1101611499d85592eb64
4
- data.tar.gz: 08d91c53a1bf630dd1e20c96f59832ce7c5f7a99
3
+ metadata.gz: f29cbe0fe87ebf233ac76a070a542ecbf05298ea
4
+ data.tar.gz: a7eeb7c0be12e445f3363e1ce163660a642540c7
5
5
  SHA512:
6
- metadata.gz: 3ce76cc6bba852ae22b55e0af05e1e058e1a9edfaa2dcf0e136067008da656055ba530f0b8dceb0ce796c0f72949308671ccac53fcee2d7e10ac9145a5119f6e
7
- data.tar.gz: 9d39db89803bf52864f0d3603de39013570e82b16f2fc79cf1b83256c50dc8f949bf96e29fac45f47337af0f57a95eaf7e5ef9dfd4edc7815046167b24b62363
6
+ metadata.gz: 08ce7f9c8c419bf2400ee7d22f90df4c4c50fd15aa7a2b3296f2671a45b81a038cffdf87f99ea42c06ebc30edc7efac0cd8bd3e0d1eac1766ff75c6759f2bf20
7
+ data.tar.gz: ca35ecb2687cd8262a984651412c9f8c1f691c0e68e82ae2e628c26ad70517036c28ba4c30b0dc76a0427f8d14e5708903075f469378dcafa40a89cfb5ccccc3
@@ -0,0 +1,250 @@
1
+ module Carnival
2
+ module BaseAdminHelper
3
+ def set_resource_actived_if_current(path)
4
+ (request.fullpath == path)? 'actived' : ''
5
+ end
6
+
7
+ def show_messages
8
+ @messages = ''
9
+ flash.each do |type, message|
10
+ @messages = message
11
+ @type = type
12
+ end
13
+ javascript = "noty({'text':'#{@messages}',
14
+ 'layout':'bottom','type':'#{@type}',
15
+ 'animation': {'close':{'height':'toggle'}, 'open':{'height':'toggle'},'speed':500},'timeout':4000,
16
+ 'closeWith':['click', 'hover']});"
17
+ return javascript if defined?(@type)
18
+ ''
19
+ end
20
+
21
+ def caminho_modelo(action, extra_params=nil)
22
+ params = {controller: controller.controller_name, action: action}
23
+ params = params.merge(extra_params) if extra_params.present?
24
+ url_for(params)
25
+ end
26
+
27
+ def carnival_render_if_exist partial_path
28
+ if partial_exist?(partial_path)
29
+ return render partial_path
30
+ end
31
+ end
32
+
33
+ def partial_exist? partial_path
34
+ File.exists?(get_partial_path(partial_path))
35
+ end
36
+
37
+ def has_many_relation? model, field
38
+ klass = Carnival::KlassService.new model.class
39
+ klass.is_a_has_many_relation?(field.to_sym)
40
+ end
41
+
42
+ def has_one_relation? model, field
43
+ klass = Carnival::KlassService.new model.class
44
+ klass.is_a_has_one_relation?(field.to_sym)
45
+ end
46
+
47
+ def many_to_many_relation? model, field
48
+ klass = Carnival::KlassService.new model.class
49
+ klass.is_a_many_to_many_relation?(field.to_sym)
50
+ end
51
+
52
+ def get_partial_path partial_path
53
+ path = Rails.root.join('app', 'views')
54
+ partial_path_array = partial_path.split('/')
55
+ partial_path_array.each do |pp|
56
+ if pp == partial_path_array.last
57
+ path = path.join "_#{pp}.html.haml"
58
+ else
59
+ path = path.join pp
60
+ end
61
+ end
62
+ path
63
+ end
64
+
65
+ def menu_link link
66
+ link.strip!
67
+ if link.to_s.end_with?('_path') or link.to_s.end_with?('_url')
68
+ return eval link
69
+ elsif link.index(/_path.+/) #path with arguments
70
+ return eval link
71
+ end
72
+
73
+ link
74
+ end
75
+
76
+ def show_view(presenter, field)
77
+ presenter.get_field(field).show_view
78
+ end
79
+
80
+ def show_as_list(presenter, field)
81
+ current_type = presenter.field_type(field)
82
+ if current_type != :relation
83
+ false
84
+ else
85
+ presenter.get_field(field).show_as_list
86
+ end
87
+ end
88
+
89
+ <<<<<<< HEAD
90
+ def field_to_show(presenter, field_name, record, show_only_values=false)
91
+ if presenter.fields[field_name].params[:as] == :partial
92
+ raw(render field_name.to_s, record: record)
93
+ else
94
+ rendered = field_value_and_type presenter, field_name, record
95
+ field_type = rendered[:field_type]
96
+ value = rendered[:value]
97
+
98
+ is_relation = presenter.relation_field?(field_name)
99
+ =======
100
+ def field_to_show(presenter, field_name, record, show_only_value=false)
101
+ rendered = field_value_and_type presenter, field_name, record
102
+ field_type = rendered[:field_type]
103
+ value = rendered[:value]
104
+
105
+ is_relation = presenter.relation_field?(field_name)
106
+ >>>>>>> 43cbab7664a6b7fd7b42b86626ec2bb9953b5711
107
+
108
+ unless value.nil?
109
+ formatted_field = format_field(presenter, field_name, field_type, value)
110
+ if is_relation and !show_only_values
111
+ link_to(formatted_field, presenter.relation_path(field_name, record))
112
+ else
113
+ formatted_field
114
+ end
115
+ else
116
+ nil
117
+ end
118
+ end
119
+ end
120
+
121
+ def field_value_and_type presenter, field_name, record
122
+ renderer = FieldRenderers::RendererCreator
123
+ .create_field_renderer(presenter, field_name)
124
+
125
+ rendered = renderer.render_field(record)
126
+ end
127
+
128
+ def is_image? field_type, value
129
+ field_type.nil? and value.class.to_s == "Paperclip::Attachment" and value.content_type.include? "image"
130
+ end
131
+
132
+ def format_field(presenter, field_name, field_type, value)
133
+ if is_image?(field_type, value)
134
+ "<img class='attr' src='#{value.url(:thumb)}' alt='#{translate_field(presenter, field_name)}' />"
135
+ else
136
+ case field_type
137
+ when :datetime
138
+ begin
139
+ I18n.l(value, format: :long_date)
140
+ rescue I18n::MissingTranslationData
141
+ value.strftime("%d/%m/%y %H:%M:%S")
142
+ end
143
+ when :date
144
+ begin
145
+ I18n.l(value, format: :short_date)
146
+ rescue I18n::MissingTranslationData
147
+ value.strftime("%d/%m/%Y")
148
+ end
149
+ when :number
150
+ number_with_precision(value, :precision => 2, :separator => ",")
151
+ when :enum
152
+ presenter.model_class.const_get(field_name.upcase)[value]
153
+ else
154
+ value
155
+ end
156
+ end
157
+ end
158
+
159
+ def translate_field(presenter, field_name)
160
+ field = presenter.get_field(field_name)
161
+ field_key = field.name_for_translation
162
+ presenter.full_model_name.classify.constantize.human_attribute_name field_key
163
+ end
164
+
165
+ def list_cel(presenter, field, record, only_render_fields)
166
+ result = field_to_show(presenter, field, record, only_render_fields)
167
+ return result if only_render_fields
168
+ td = "<td class='first-td'>"
169
+ return "#{td}<span class='#{get_css_class(presenter, field, record)}'>#{result}</span></td>" if presenter.get_field(field).css_class.present?
170
+ "#{td}#{result}</td>"
171
+ end
172
+
173
+ def grid_attr(presenter, field, record, only_render_fields)
174
+ result = field_to_show(presenter, field, record, only_render_fields)
175
+ return result if only_render_fields
176
+ list_attr(presenter, field, record, only_render_fields)
177
+ end
178
+
179
+ def list_attr(presenter, field, record, only_render_fields)
180
+ result = field_to_show(presenter, field, record, only_render_fields)
181
+ return result if only_render_fields
182
+ return "<div class='attr'><div class='label #{field}'>#{translate_field(presenter, field)}:</div><div class='field_value #{field} #{get_css_class(presenter, field, record)}'>#{result}</div></div>" if presenter.get_field(field).css_class.present?
183
+ "<div class='attr'><div class='label #{field}'>#{translate_field(presenter, field)}:</div><div class='field_value #{field}'>#{result}</div></div>"
184
+ end
185
+
186
+ def get_css_class presenter, field, record
187
+ css_class = presenter.get_field(field).css_class
188
+ return '' if !css_class
189
+ return record.send(css_class[:method]) if css_class.is_a? Hash
190
+ return css_class if css_class.is_a? String
191
+ return ''
192
+ end
193
+
194
+ def list_buttons(presenter, record)
195
+ result = ""
196
+ presenter.actions_for_record.each do |key, record_action|
197
+ if presenter.before_action(record_action, params[:action])
198
+ if record_action.show(record)
199
+ if record_action.remote?
200
+ result << button_action_remote(record_action, presenter, record)
201
+ else
202
+ result << button_action(record_action, presenter, record)
203
+ end
204
+ end
205
+ end
206
+ end
207
+ result
208
+ end
209
+
210
+ def button_action(action, presenter, record)
211
+ label = t("#{presenter.model_name.underscore}.#{action.name}", default: t("carnival.#{action.name}"))
212
+ path = action.path(presenter, :id => record.id)
213
+ if action.default_partial == :default
214
+ "<a class='carnival-action-link #{label.parameterize}' href='#{path}'>#{label}</a>"
215
+ elsif action.default_partial == :delete
216
+ confirm = I18n.t("are_you_sure")
217
+ "<a class='carnival-action-link apagar' data-confirm='#{confirm}' data-method='delete' href='#{path}' rel='nofollow'>#{label}</a>"
218
+ end
219
+ end
220
+
221
+ def button_action_remote(action, presenter, record)
222
+ name = action.name
223
+ params = action.params
224
+ label = t("#{presenter.model_name}.#{action.name}", default: t("carnival.#{action.name}"))
225
+ path = action.path(presenter, :id => record.id)
226
+
227
+ success_callback = "#{name}_success_callback"
228
+ if params[:success]
229
+ success_callback = params[:success]
230
+ end
231
+
232
+ error_callback = "#{name}_error_callback"
233
+ if params[:error]
234
+ error_callback = params[:error]
235
+ end
236
+
237
+ data_overlay = ''
238
+ if params[:show_overlay]
239
+ data_overlay = 'data-carnival-show-overlay=true'
240
+ end
241
+
242
+ params[:show_overlay] = false if params[:show_overlay].nil?
243
+
244
+ remote_function = "Carnival.remoteFunction(\"#{path}\", \"#{success_callback}\", \"#{error_callback}\", \"#{params[:method]}\", {} ,#{params[:show_overlay]})"
245
+
246
+ "<a class='carnival-action-link editar' href='javascript:#{remote_function}'>#{label}</a>"
247
+ end
248
+
249
+ end
250
+ end
@@ -22,6 +22,12 @@ module Carnival::ModelHelper
22
22
  select
23
23
  end
24
24
 
25
+ def list_for_search
26
+ select = []
27
+ select << ['', '']
28
+ select.concat all.collect{|c|[c.to_label, c.to_label]}
29
+ end
30
+
25
31
  def list_for_checkbox
26
32
  list = []
27
33
  all.each {|object| list << [object.id, object.to_label] }
@@ -433,6 +433,61 @@ module Carnival
433
433
  end
434
434
  end
435
435
 
436
+ <<<<<<< HEAD
437
+ def parse_advanced_search_field search_field, field_param, records
438
+ return records if not field_param["value"].present?
439
+ return records if field_param["value"] == ""
440
+
441
+ if relation_field?(search_field.to_sym)
442
+ related_model = model_class.reflect_on_association(search_field.to_sym).klass.name.underscore
443
+ foreign_key = model_class.reflect_on_association(search_field.to_sym).foreign_key
444
+ if model_class.reflect_on_association(search_field.to_sym).macro == :belongs_to
445
+ records = records.joins(related_model.split("/").last.to_sym)
446
+ else
447
+ records = records.joins(related_model.split("/").last.pluralize)
448
+ end
449
+ table = related_model.split("/").last.pluralize
450
+ column = "id"
451
+ else
452
+ table = table_name
453
+ column = search_field
454
+ end
455
+ full_column_query = "#{table}.#{column}"
456
+ where_clause = nil
457
+
458
+ case field_param["operator"]
459
+ when "equal"
460
+ if field_param["value"] == "nil"
461
+ where_clause = "#{full_column_query} is null"
462
+ else
463
+ where_clause = "#{full_column_query} = '#{advanced_search_field_value_for_query(field_param["value"])}'"
464
+ end
465
+ when "like"
466
+ where_clause = "#{full_column_query} like '%#{field_param["value"]}%'"
467
+ when "greater_than"
468
+ where_clause = "#{full_column_query} >= '#{field_param["value"]}'"
469
+ when "less_than"
470
+ where_clause = "#{full_column_query} <= '#{field_param["value"]}'"
471
+ when "between"
472
+ where_clause = "#{full_column_query} between '#{field_param["value"]}' and '#{field_param["value2"]}'"
473
+ else
474
+ where_clause = "#{full_column_query} = #{advanced_search_field_value_for_query(field_param["value"])}"
475
+ end
476
+ records = records.where(where_clause) if where_clause.present?
477
+ records
478
+ end
479
+
480
+ def advanced_search_field_value_for_query(value)
481
+ if "true" == value.downcase
482
+ return "'t'"
483
+ elsif "false" == value.downcase
484
+ return "'f'"
485
+ else
486
+ "#{value}"
487
+ end
488
+ end
489
+ =======
490
+ >>>>>>> master
436
491
 
437
492
  def is_namespaced?
438
493
  self.class.to_s.split("::").size > 0
@@ -49,7 +49,7 @@ module Carnival
49
49
  records = records.joins(related_model.split("/").last.pluralize.to_sym)
50
50
  end
51
51
  table = related_model.split("/").last.classify.constantize.table_name
52
- column = "id" if column.nil? || field_param["operator"] == "equal"
52
+ column = "id" if column.nil?
53
53
  else
54
54
  table = @klass_service.table_name
55
55
  column = search_field
@@ -7,7 +7,11 @@
7
7
  %li.search_item
8
8
  .search_field
9
9
  .label
10
- = label_tag key, t("activerecord.attributes.#{presenter.full_model_name}.#{key}")
10
+ - label_field = presenter.get_field(field)
11
+ - if presenter.relation_field?(label_field)
12
+ = label_tag key, t("activerecord.attributes.#{label_field.name}")
13
+ - else
14
+ = label_tag key, t("activerecord.attributes.#{presenter.full_model_name}.#{key}")
11
15
  .field
12
16
  = render '/carnival/shared/advanced_search_field', :field => field, :presenter => presenter, :value => value
13
17
  %li.search_item
@@ -2,7 +2,7 @@
2
2
  - field = presenter.get_field(field)
3
3
  - if presenter.relation_field?(field)
4
4
  - if field.advanced_search_operator == :equal
5
- = select_tag "advanced_search[#{field.name}]", options_for_select(presenter.get_association(field.association_name).klass.list_for_select(reverse: true, add_empty_option: true), value), "data-operator" => 'equal'
5
+ = select_tag "advanced_search[#{field.name}]", options_for_select(presenter.get_association(field.association_name).klass.list_for_search, value), "data-operator" => 'equal'
6
6
  - else
7
7
  = text_field_tag "advanced_search[#{field.name}]", value, "data-operator" => field.advanced_search_operator
8
8
  - else
@@ -1,3 +1,3 @@
1
1
  module Carnival
2
- VERSION = "0.1.9"
2
+ VERSION = "0.1.10"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carnival
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vizir Software Studio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-18 00:00:00.000000000 Z
11
+ date: 2015-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -447,6 +447,7 @@ files:
447
447
  - app/datatable/carnival/generic_datatable/column_sorter_creator.rb
448
448
  - app/datatable/carnival/generic_datatable/relation_column_sorter.rb
449
449
  - app/helpers/carnival/base_admin_helper.rb
450
+ - app/helpers/carnival/base_admin_helper.rb.orig
450
451
  - app/helpers/carnival/field_renderers/field_renderer.rb
451
452
  - app/helpers/carnival/field_renderers/many_relation_renderer.rb
452
453
  - app/helpers/carnival/field_renderers/renderer_creator.rb
@@ -588,7 +589,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
588
589
  version: '0'
589
590
  requirements: []
590
591
  rubyforge_project:
591
- rubygems_version: 2.2.2
592
+ rubygems_version: 2.4.5
592
593
  signing_key:
593
594
  specification_version: 4
594
595
  summary: Carnival is an easy-to-use and extensible Rails Engine to speed the development