widget_list 1.3.7 → 2.0.1
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 +5 -13
- data/README.md +143 -696
- data/app/views/widget_list/administration/_button_row.html.erb +2 -2
- data/app/views/widget_list/administration/_field_row.html.erb +2 -2
- data/app/views/widget_list/administration/_output.html.erb +89 -55
- data/checkin_gem.sh +10 -10
- data/docs/legacy-readme.md +757 -0
- data/docs/screenshots/admin1.jpg +0 -0
- data/docs/screenshots/admin2.jpg +0 -0
- data/docs/screenshots/admin3.jpg +0 -0
- data/docs/screenshots/admin4.jpg +0 -0
- data/docs/screenshots/admin5.png +0 -0
- data/docs/screenshots/admin6.png +0 -0
- data/docs/screenshots/filtered.png +0 -0
- data/docs/screenshots/main.png +0 -0
- data/docs/screenshots/ransack1.png +0 -0
- data/docs/screenshots/ransack2.png +0 -0
- data/docs/screenshots/ransack3.png +0 -0
- data/docs/screenshots/search.png +0 -0
- data/docs/screenshots/theme_blue_sky_basin.png +0 -0
- data/docs/widget-list-demo-thumbnail.png +0 -0
- data/lib/extensions/action_controller_base.rb +22 -29
- data/lib/widget_list/engine.rb +1 -4
- data/lib/widget_list/railtie.rb +10 -33
- data/lib/widget_list/request_context.rb +5 -0
- data/lib/widget_list/sequel.rb +17 -41
- data/lib/widget_list/utils.rb +7 -7
- data/lib/widget_list/version.rb +1 -1
- data/lib/widget_list/widgets.rb +1 -2
- data/lib/widget_list.rb +267 -269
- data/publish_gem.sh +14 -35
- data/vendor/assets/stylesheets/{widget_list.css → widget_list.css.erb} +21 -21
- data/vendor/assets/stylesheets/{widgets.css → widgets.css.erb} +9 -9
- data/widget_list.gemspec +8 -10
- metadata +58 -32
data/lib/widget_list.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'ransack'
|
|
2
|
+
require 'widget_list/request_context'
|
|
2
3
|
require 'widget_list/version'
|
|
3
4
|
require 'widget_list/hash'
|
|
4
5
|
require 'widget_list/string'
|
|
@@ -17,7 +18,7 @@ module WidgetList
|
|
|
17
18
|
# WidgetList Administration/Setup
|
|
18
19
|
#
|
|
19
20
|
def self.go!()
|
|
20
|
-
if
|
|
21
|
+
if WidgetList::RequestContext.request.key?('iframe')
|
|
21
22
|
eval(WidgetList::Administration.new.translate_config_to_code())
|
|
22
23
|
return @output
|
|
23
24
|
else
|
|
@@ -30,7 +31,7 @@ module WidgetList
|
|
|
30
31
|
def show_interface()
|
|
31
32
|
config_file = Rails.root.join("config", "widget-list-administration.json")
|
|
32
33
|
config_file_all = Rails.root.join("config", "widget-list-administration-all.json")
|
|
33
|
-
if config_file.file? &&
|
|
34
|
+
if config_file.file? && !WidgetList::RequestContext.request.key?('ajax') && !WidgetList::RequestContext.request.key?('name')
|
|
34
35
|
File.delete(Rails.root.join("config", "widget-list-administration.json"))
|
|
35
36
|
end
|
|
36
37
|
|
|
@@ -42,10 +43,12 @@ module WidgetList
|
|
|
42
43
|
|
|
43
44
|
|
|
44
45
|
#Loop models
|
|
45
|
-
models = Dir[
|
|
46
|
+
models = Dir[Rails.root.join('app', 'models', '**', '*.rb').to_s].reject do |path|
|
|
47
|
+
File.basename(path) == 'application_record.rb'
|
|
48
|
+
end
|
|
46
49
|
if !models.empty?
|
|
47
50
|
model_options = '<option value="">Select a Model</option>' + models.collect { |model|
|
|
48
|
-
model_name =
|
|
51
|
+
model_name = File.basename(model, '.rb').camelize
|
|
49
52
|
"<option value='#{model_name}' #{((@isEditing && page_config['view'] == model_name) ? 'selected' : '')}>#{model_name}</option>"
|
|
50
53
|
}.sort.uniq.join('')
|
|
51
54
|
else
|
|
@@ -65,7 +68,7 @@ module WidgetList
|
|
|
65
68
|
# INIT PROMPT
|
|
66
69
|
#
|
|
67
70
|
|
|
68
|
-
if config_file_all.file? &&
|
|
71
|
+
if config_file_all.file? && !WidgetList::RequestContext.request.key?('restore')
|
|
69
72
|
@fill['<!--BUTTON_CSS-->'] = 'style="display:none"'
|
|
70
73
|
@fill['<!--START_CSS-->'] = 'style="display:none"'
|
|
71
74
|
options = ''
|
|
@@ -99,7 +102,7 @@ module WidgetList
|
|
|
99
102
|
#
|
|
100
103
|
# BASE
|
|
101
104
|
#
|
|
102
|
-
@fill['<!--POST_URL-->'] =
|
|
105
|
+
@fill['<!--POST_URL-->'] = WidgetList::RequestContext.server['SCRIPT_NAME'] + WidgetList::RequestContext.server['PATH_INFO']
|
|
103
106
|
@fill['<!--BUTTONS-->'] = WidgetList::Widgets::widget_button('Step One - Start ->', {'id' => 'start' , 'onclick' => "ShowStart();" , 'innerClass' => "primary" } ) +
|
|
104
107
|
WidgetList::Widgets::widget_button('Step Two - Fields ->', {'id' => 'fields' , 'onclick' => "ShowFields();" , 'innerClass' => "primary disabled" } ) +
|
|
105
108
|
WidgetList::Widgets::widget_button('Step Three - Rows ->', {'id' => 'rows' , 'onclick' => "ShowRows();" , 'innerClass' => "primary disabled" } ) +
|
|
@@ -112,13 +115,16 @@ module WidgetList
|
|
|
112
115
|
# START
|
|
113
116
|
#
|
|
114
117
|
@fill['<!--TITLE-->'] = 'Stub Out A New WidgetList Implementation'
|
|
115
|
-
@fill['<!--CONTROLLER_VALUE-->'] = (!@isEditing) ?
|
|
116
|
-
@fill['<!--ACTION_VALUE-->'] = (!@isEditing) ?
|
|
118
|
+
@fill['<!--CONTROLLER_VALUE-->'] = (!@isEditing) ? WidgetList::RequestContext.request['controller'] : page_config['desiredController']
|
|
119
|
+
@fill['<!--ACTION_VALUE-->'] = (!@isEditing) ? WidgetList::RequestContext.request['action'] : page_config['desiredAction']
|
|
117
120
|
@fill['<!--NAME_VALUE-->'] = (!@isEditing) ? config_id : page_config['name']
|
|
118
121
|
@fill['<!--VIEW_OPTIONS-->'] = model_options
|
|
119
122
|
@fill['<!--TITLE_VALUE-->'] = (!@isEditing) ? '' : page_config['title']
|
|
120
123
|
@fill['<!--DESC_VALUE-->'] = (!@isEditing) ? '' : page_config['listDescription']
|
|
121
|
-
|
|
124
|
+
WidgetList::List.load_widget_list_yml
|
|
125
|
+
primary_is_active_record = !$widget_list_conf[:primary].to_s.include?(':/')
|
|
126
|
+
@fill['<!--PRIMARY_CHECKED-->'] = (!@isEditing) ? (primary_is_active_record ? 'checked' : '') : (page_config['primaryDatabase'] == "1") ? 'checked' : ''
|
|
127
|
+
@fill['<!--AUTH_TOKEN-->'] = ERB::Util.html_escape(WidgetList::RequestContext.csrf_token.to_s)
|
|
122
128
|
|
|
123
129
|
#
|
|
124
130
|
# FIELD LEVEL
|
|
@@ -187,7 +193,8 @@ module WidgetList
|
|
|
187
193
|
@fieldFill['<!--DESC-->'] = 'Desc'
|
|
188
194
|
@fieldFill['<!--DISABLED-->'] = 'disabled'
|
|
189
195
|
@fieldFill['<!--TR_STYLE-->'] = ''
|
|
190
|
-
@
|
|
196
|
+
@fieldFill['<!--ONBLUR1-->'] = ''
|
|
197
|
+
@fill['<!--HIDDEN_FIELD_TEMPLATE-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row', :locals => { :key_select => true }) )
|
|
191
198
|
@fill['<!--ADD_HIDDEN_FIELD_BUTTON-->'] = WidgetList::Widgets::widget_button('Add Hidden Field', {'onclick' => "AddHiddenField();", 'innerClass' => "success" } )
|
|
192
199
|
@fill['<!--ALL_HIDDEN_FIELDS-->'] = (!@isEditing) ? '' : page_json['fields_hidden']
|
|
193
200
|
|
|
@@ -202,7 +209,8 @@ module WidgetList
|
|
|
202
209
|
@fieldFill['<!--DESC-->'] = 'Database Function'
|
|
203
210
|
@fieldFill['<!--DISABLED-->'] = ''
|
|
204
211
|
@fieldFill['<!--TR_STYLE-->'] = ''
|
|
205
|
-
@
|
|
212
|
+
@fieldFill['<!--ONBLUR1-->'] = ''
|
|
213
|
+
@fill['<!--FIELD_FUNCTION_TEMPLATE-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row', :locals => { :key_select => true }) )
|
|
206
214
|
@fill['<!--ADD_FIELD_FUNCTION_BUTTON-->'] = WidgetList::Widgets::widget_button('Add Function', {'onclick' => "AddFieldFunction();", 'innerClass' => "success" } )
|
|
207
215
|
@fill['<!--ALL_FIELD_FUNCTIONS-->'] = (!@isEditing) ? '' : page_json['fields_function']
|
|
208
216
|
|
|
@@ -260,7 +268,7 @@ module WidgetList
|
|
|
260
268
|
@fieldFill['<!--COLOR_HELP-->'] = ':column_to_show should either be the column or possibly a formatted column like CONCAT or COUNT'
|
|
261
269
|
@fieldFill['<!--SUBJECT-->'] = 'drill_downs'
|
|
262
270
|
|
|
263
|
-
@fill['<!--THE_DRILL_DOWN_TEMPLATE-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/button_row') )
|
|
271
|
+
@fill['<!--THE_DRILL_DOWN_TEMPLATE-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/button_row', :locals => { :middle_column_select => true }) )
|
|
264
272
|
@fill['<!--ADD_DRILL_DOWN_BUTTON-->'] = WidgetList::Widgets::widget_button('Add New Drill Down', {'onclick' => "AddDrillDown();", 'innerClass' => "success" } )
|
|
265
273
|
@fill['<!--ALL_DRILL_DOWNS-->'] = page_json['drill_downs']
|
|
266
274
|
|
|
@@ -277,7 +285,7 @@ module WidgetList
|
|
|
277
285
|
|
|
278
286
|
@fieldFill = {}
|
|
279
287
|
@fieldFill['<!--REMOVE_FIELD_BUTTON-->'] = remove_field_button()
|
|
280
|
-
@fieldFill['<!--FIELD_VALUE-->'] = '
|
|
288
|
+
@fieldFill['<!--FIELD_VALUE-->'] = ''
|
|
281
289
|
@fieldFill['<!--FIELD_DESC-->'] = 'User Desc'
|
|
282
290
|
@fieldFill['<!--SUBJECT-->'] = 'group_by'
|
|
283
291
|
@fieldFill['<!--FIELD-->'] = 'Field'
|
|
@@ -285,7 +293,7 @@ module WidgetList
|
|
|
285
293
|
@fieldFill['<!--DISABLED-->'] = ''
|
|
286
294
|
@fieldFill['<!--ONBLUR1-->'] = 'InvalidField(this)'
|
|
287
295
|
@fieldFill['<!--TR_STYLE-->'] = ''
|
|
288
|
-
@fill['<!--DEFAULT_GROUPING-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row') )
|
|
296
|
+
@fill['<!--DEFAULT_GROUPING-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row', :locals => { :key_select => true }) )
|
|
289
297
|
@fill['<!--ADD_GROUP_BY_BUTTON-->'] = WidgetList::Widgets::widget_button('Add New Group By', {'onclick' => "AddGroupBy();", 'innerClass' => "success" } )
|
|
290
298
|
@fill['<!--GROUPING_ITEMS-->'] = (!@isEditing) ? '' : page_json['group_by']
|
|
291
299
|
|
|
@@ -370,7 +378,7 @@ module WidgetList
|
|
|
370
378
|
end
|
|
371
379
|
|
|
372
380
|
def escape_code(code)
|
|
373
|
-
if
|
|
381
|
+
if WidgetList::RequestContext.request.key?('iframe')
|
|
374
382
|
#It is so weird, during output return, you need an extra slash to populate the code properly, but during rendering this is needed
|
|
375
383
|
code.gsub(/'/,"\\\\'")
|
|
376
384
|
else
|
|
@@ -414,6 +422,7 @@ module WidgetList
|
|
|
414
422
|
list_parms['searchFieldsOut']#{add_pointer(field[1]['column_to_show'],9)} true"
|
|
415
423
|
|
|
416
424
|
column_to_show = "'#{field[1]['column_to_show'].gsub(/_linked/,'')}'"
|
|
425
|
+
data_to_pass = "'#{field[1]['data_to_pass_from_view'].gsub(/_linked/,'')}'"
|
|
417
426
|
if using_grouping
|
|
418
427
|
if database_type == 'oracle'
|
|
419
428
|
column_to_show = "groupByFilter == 'none' ? '#{escape_code field[1]['column_to_show'].gsub(/_linked/,'')}' : 'MAX(#{escape_code field[1]['column_to_show'].gsub(/_linked/,'')})'"
|
|
@@ -424,22 +433,17 @@ module WidgetList
|
|
|
424
433
|
list_parms['fieldFunction']#{add_pointer(field[1]['column_to_show'],7)} WidgetList::List::build_drill_down(
|
|
425
434
|
:list_id => list_parms['name'],
|
|
426
435
|
:drill_down_name => '#{escape_code field[0]}',
|
|
427
|
-
:data_to_pass_from_view => #{
|
|
436
|
+
:data_to_pass_from_view => #{data_to_pass},
|
|
428
437
|
:column_to_show => #{column_to_show},
|
|
429
438
|
:column_alias => '#{escape_code field[1]['column_to_show']}',
|
|
430
439
|
:primary_database => #{page_config['primaryDatabase'] == '1' ? 'true' : 'false'}
|
|
431
440
|
)"
|
|
432
|
-
if $is_mongo
|
|
433
|
-
code = "filterValue"
|
|
434
|
-
else
|
|
435
|
-
code = "#{page_config['view']}.sanitize(filterValue)"
|
|
436
|
-
end
|
|
437
441
|
case_statements += <<-EOD
|
|
438
442
|
|
|
439
443
|
when '#{field[0]}'
|
|
440
|
-
list_parms['filter'] << " #{field[1]['
|
|
441
|
-
list_parms['bindVars'] <<
|
|
442
|
-
list_parms['listDescription'] = drillDownBackLink + ' Filtered by #{escape_code field[1]['
|
|
444
|
+
list_parms['filter'] << " #{field[1]['data_to_pass_from_view'].gsub(/_linked/,'')} = ? "
|
|
445
|
+
list_parms['bindVars'] << filterValue
|
|
446
|
+
list_parms['listDescription'] = drillDownBackLink + ' Filtered by #{escape_code field[1]['data_to_pass_from_view'].gsub(/_linked/,'').camelize} (' + filterValue + ')'
|
|
443
447
|
EOD
|
|
444
448
|
}
|
|
445
449
|
|
|
@@ -594,7 +598,7 @@ module WidgetList
|
|
|
594
598
|
|
|
595
599
|
if page_config['useRansack'] == '1' && page_config['showSearch'] == '1' && $is_mongo == false
|
|
596
600
|
view_code = "
|
|
597
|
-
list_parms#{add_pointer('ransackSearch',-10)} #{page_config['view']}.
|
|
601
|
+
list_parms#{add_pointer('ransackSearch',-10)} #{page_config['view']}.ransack(#{(WidgetList::RequestContext.request.key?('iframe')) ? 'WidgetList::RequestContext.request' : 'params'}[:q])
|
|
598
602
|
list_parms#{add_pointer('view',-10)} list_parms['ransackSearch'].result
|
|
599
603
|
"
|
|
600
604
|
if page_config['ransackAdvancedForm'] == '1'
|
|
@@ -621,7 +625,7 @@ module WidgetList
|
|
|
621
625
|
|
|
622
626
|
else
|
|
623
627
|
view_code = "
|
|
624
|
-
list_parms#{add_pointer('view',-10)} #{page_config['view']}
|
|
628
|
+
list_parms#{add_pointer('view',-10)} #{page_config['view']}.all
|
|
625
629
|
"
|
|
626
630
|
end
|
|
627
631
|
|
|
@@ -806,8 +810,6 @@ module WidgetList
|
|
|
806
810
|
end
|
|
807
811
|
|
|
808
812
|
<<-EOD
|
|
809
|
-
begin
|
|
810
|
-
|
|
811
813
|
#{variable_code}
|
|
812
814
|
list_parms = WidgetList::List::init_config()
|
|
813
815
|
list_parms['name'] = '#{escape_code page_config['name']}'
|
|
@@ -848,35 +850,14 @@ module WidgetList
|
|
|
848
850
|
when 'html'
|
|
849
851
|
@output = output
|
|
850
852
|
when 'json'
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
rescue Exception => e
|
|
858
|
-
|
|
859
|
-
#
|
|
860
|
-
# Rescue Errors
|
|
861
|
-
#
|
|
862
|
-
Rails.logger.info e.to_s + "\\n\\n" + $!.backtrace.join("\\n\\n")
|
|
863
|
-
|
|
864
|
-
if Rails.env == 'development'
|
|
865
|
-
list_parms['errors'] << '<br/><br/><strong style="color:maroon;">(Ruby Exception - Still attempted to render list with given config ' + list_parms.inspect + ') Exception ==> ' + e.to_s + "<br/><br/>Backtrace:<br/><br/>" + $!.backtrace.join("<br/><br/>") + "</strong>"
|
|
866
|
-
end
|
|
867
|
-
|
|
868
|
-
output_type, output = WidgetList::List.build_list(list_parms)
|
|
869
|
-
|
|
870
|
-
case output_type
|
|
871
|
-
when 'html'
|
|
872
|
-
@output = output
|
|
873
|
-
when 'json'
|
|
874
|
-
return render :inline => output
|
|
853
|
+
if WidgetList::RequestContext.request.key?('iframe')
|
|
854
|
+
@output = output
|
|
855
|
+
else
|
|
856
|
+
render json: JSON.parse(output)
|
|
857
|
+
end
|
|
875
858
|
when 'export'
|
|
876
|
-
send_data
|
|
877
|
-
return
|
|
859
|
+
send_data output, filename: list_parms['name'] + '.csv', type: 'text/csv'
|
|
878
860
|
end
|
|
879
|
-
end
|
|
880
861
|
EOD
|
|
881
862
|
end
|
|
882
863
|
|
|
@@ -888,9 +869,9 @@ module WidgetList
|
|
|
888
869
|
config_file = Rails.root.join("config", "widget-list-administration.json")
|
|
889
870
|
config_file_all = Rails.root.join("config", "widget-list-administration-all.json")
|
|
890
871
|
|
|
891
|
-
if config_file.file? && (
|
|
872
|
+
if config_file.file? && (WidgetList::RequestContext.request.key?('iframe') || WidgetList::RequestContext.request.key?('name'))
|
|
892
873
|
configuration = JSON.parse(File.new(Rails.root.join("config", "widget-list-administration.json")).read)
|
|
893
|
-
elsif
|
|
874
|
+
elsif WidgetList::RequestContext.request.key?('restore')
|
|
894
875
|
configuration = JSON.parse(File.new(Rails.root.join("config", "widget-list-administration-all.json")).read)
|
|
895
876
|
else
|
|
896
877
|
configuration = {}
|
|
@@ -1039,9 +1020,9 @@ module WidgetList
|
|
|
1039
1020
|
|
|
1040
1021
|
fields,fields_hidden,fields_function,buttons,footer_buttons,group_by,drill_downs,flags,misc = normalize_configs(page_config)
|
|
1041
1022
|
else
|
|
1042
|
-
controller = (
|
|
1023
|
+
controller = (WidgetList::RequestContext.request.key?('desiredController') ? WidgetList::RequestContext.request['desiredController'] : WidgetList::RequestContext.request['controller'] )
|
|
1043
1024
|
|
|
1044
|
-
if
|
|
1025
|
+
if WidgetList::RequestContext.request.key?('ajax')
|
|
1045
1026
|
model = model_name.constantize
|
|
1046
1027
|
model.columns.each { |field|
|
|
1047
1028
|
fields[field.name] = field.name.gsub(/_/,' _').camelize
|
|
@@ -1059,9 +1040,8 @@ module WidgetList
|
|
|
1059
1040
|
buttons['Delete']['url'] = '/' + controller + '/delete/id/'
|
|
1060
1041
|
buttons['Edit']['url'] = '/' + controller + '/edit/id/'
|
|
1061
1042
|
buttons['Edit']['class'] = 'info'
|
|
1062
|
-
if
|
|
1043
|
+
if WidgetList::RequestContext.request.key?('ajax')
|
|
1063
1044
|
group_by[''] = 'All ' + model_name + 's'
|
|
1064
|
-
group_by['field_name'] = 'This will group by field_name and show Count'
|
|
1065
1045
|
buttons['Delete']['url'] = '/' + controller + '/delete/' + fields.keys.first + '/'
|
|
1066
1046
|
buttons['Edit']['url'] = '/' + controller + '/edit/' + fields.keys.first + '/'
|
|
1067
1047
|
end
|
|
@@ -1170,7 +1150,8 @@ module WidgetList
|
|
|
1170
1150
|
@fieldFill['<!--FIELD-->'] = 'Field'
|
|
1171
1151
|
@fieldFill['<!--DISABLED-->'] = 'disabled'
|
|
1172
1152
|
@fieldFill['<!--TR_STYLE-->'] = ''
|
|
1173
|
-
@
|
|
1153
|
+
@fieldFill['<!--ONBLUR1-->'] = ''
|
|
1154
|
+
@response['fields_hidden'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row', :locals => { :key_select => true }) )
|
|
1174
1155
|
}
|
|
1175
1156
|
|
|
1176
1157
|
group_by.each { |field,description|
|
|
@@ -1185,7 +1166,7 @@ module WidgetList
|
|
|
1185
1166
|
@fieldFill['<!--DISABLED-->'] = ''
|
|
1186
1167
|
@fieldFill['<!--ONBLUR1-->'] = 'InvalidField(this)'
|
|
1187
1168
|
@fieldFill['<!--TR_STYLE-->'] = ''
|
|
1188
|
-
@response['group_by'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row') )
|
|
1169
|
+
@response['group_by'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row', :locals => { :key_select => true }) )
|
|
1189
1170
|
}
|
|
1190
1171
|
|
|
1191
1172
|
fields_function.each { |field,description|
|
|
@@ -1198,7 +1179,8 @@ module WidgetList
|
|
|
1198
1179
|
@fieldFill['<!--FIELD-->'] = 'Field'
|
|
1199
1180
|
@fieldFill['<!--DISABLED-->'] = ''
|
|
1200
1181
|
@fieldFill['<!--TR_STYLE-->'] = ''
|
|
1201
|
-
@
|
|
1182
|
+
@fieldFill['<!--ONBLUR1-->'] = ''
|
|
1183
|
+
@response['fields_function'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row', :locals => { :key_select => true }) )
|
|
1202
1184
|
}
|
|
1203
1185
|
|
|
1204
1186
|
buttons.each { |field|
|
|
@@ -1248,7 +1230,7 @@ module WidgetList
|
|
|
1248
1230
|
@fieldFill['<!--COLOR_HELP-->'] = ':column_to_show should either be the column or possibly a formatted column like CONCAT or COUNT'
|
|
1249
1231
|
@fieldFill['<!--SUBJECT-->'] = 'drill_downs'
|
|
1250
1232
|
|
|
1251
|
-
@response['drill_downs'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/button_row') )
|
|
1233
|
+
@response['drill_downs'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/button_row', :locals => { :middle_column_select => true }) )
|
|
1252
1234
|
}
|
|
1253
1235
|
|
|
1254
1236
|
footer_buttons.each { |field|
|
|
@@ -1275,7 +1257,7 @@ module WidgetList
|
|
|
1275
1257
|
@response['footer_buttons'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/button_row') )
|
|
1276
1258
|
}
|
|
1277
1259
|
|
|
1278
|
-
if
|
|
1260
|
+
if WidgetList::RequestContext.request.key?('ajax') || @isEditing
|
|
1279
1261
|
@response['all_fields'] = all_fields
|
|
1280
1262
|
@response['checked_fields'] = build_field_options(all_fields, page_config.key?('checkboxField') ? page_config['checkboxField'] : '')
|
|
1281
1263
|
end
|
|
@@ -1289,13 +1271,13 @@ module WidgetList
|
|
|
1289
1271
|
|
|
1290
1272
|
def config_id()
|
|
1291
1273
|
config_id = ''
|
|
1292
|
-
if
|
|
1293
|
-
config_id =
|
|
1274
|
+
if WidgetList::RequestContext.request.key?('restore')
|
|
1275
|
+
config_id = WidgetList::RequestContext.request['restore']
|
|
1294
1276
|
else
|
|
1295
|
-
config_id +=
|
|
1296
|
-
config_id +=
|
|
1297
|
-
config_id += '|' +
|
|
1298
|
-
config_id += '-' +
|
|
1277
|
+
config_id += WidgetList::RequestContext.request['controller'] if WidgetList::RequestContext.request.key?('controller')
|
|
1278
|
+
config_id += WidgetList::RequestContext.request['action'] if WidgetList::RequestContext.request.key?('action')
|
|
1279
|
+
config_id += '|' + WidgetList::RequestContext.request['desiredController'] if WidgetList::RequestContext.request.key?('desiredController')
|
|
1280
|
+
config_id += '-' + WidgetList::RequestContext.request['desiredAction'] if WidgetList::RequestContext.request.key?('desiredAction')
|
|
1299
1281
|
end
|
|
1300
1282
|
return config_id
|
|
1301
1283
|
end
|
|
@@ -1311,7 +1293,7 @@ module WidgetList
|
|
|
1311
1293
|
else
|
|
1312
1294
|
configuration = {}
|
|
1313
1295
|
end
|
|
1314
|
-
configuration[config_id] =
|
|
1296
|
+
configuration[config_id] = WidgetList::RequestContext.request
|
|
1315
1297
|
time = Time.new
|
|
1316
1298
|
configuration[config_id]['savedOn'] = time.year.to_s + '-' + time.month.to_s.rjust(2, "0") + '-' + time.day.to_s.rjust(2, "0")
|
|
1317
1299
|
|
|
@@ -1319,14 +1301,14 @@ module WidgetList
|
|
|
1319
1301
|
file.puts configuration.to_json
|
|
1320
1302
|
end
|
|
1321
1303
|
|
|
1322
|
-
if
|
|
1304
|
+
if !WidgetList::RequestContext.request.key?('iframe') && !WidgetList::RequestContext.request.key?('ajax')
|
|
1323
1305
|
config_file_all = Rails.root.join("config", "widget-list-administration-all.json")
|
|
1324
1306
|
if config_file_all.file?
|
|
1325
1307
|
configuration_all = JSON.parse(File.new(Rails.root.join("config", "widget-list-administration-all.json")).read)
|
|
1326
1308
|
else
|
|
1327
1309
|
configuration_all = {}
|
|
1328
1310
|
end
|
|
1329
|
-
configuration_all[config_id] =
|
|
1311
|
+
configuration_all[config_id] = WidgetList::RequestContext.request
|
|
1330
1312
|
configuration_all[config_id]['savedOn'] = time.year.to_s + '-' + time.month.to_s.rjust(2, "0") + '-' + time.day.to_s.rjust(2, "0")
|
|
1331
1313
|
|
|
1332
1314
|
File.open(Rails.root.join("config", "widget-list-administration-all.json"), "w") do |file|
|
|
@@ -1336,10 +1318,10 @@ module WidgetList
|
|
|
1336
1318
|
|
|
1337
1319
|
|
|
1338
1320
|
@fill = {}
|
|
1339
|
-
unless
|
|
1321
|
+
unless WidgetList::RequestContext.request.key?('ajax')
|
|
1340
1322
|
@fill['<!--CODE-->'] = translate_config_to_code()
|
|
1341
1323
|
end
|
|
1342
|
-
return WidgetList::Utils::fill(@fill ,ac.render_to_string(:partial => 'widget_list/administration/output_save') ) unless
|
|
1324
|
+
return WidgetList::Utils::fill(@fill ,ac.render_to_string(:partial => 'widget_list/administration/output_save') ) unless WidgetList::RequestContext.request.key?('ajax')
|
|
1343
1325
|
return @fill.to_json
|
|
1344
1326
|
end
|
|
1345
1327
|
end
|
|
@@ -1366,6 +1348,7 @@ module WidgetList
|
|
|
1366
1348
|
|
|
1367
1349
|
# @param [Hash] list
|
|
1368
1350
|
def initialize(list={})
|
|
1351
|
+
WidgetList::RequestContext.used = true
|
|
1369
1352
|
|
|
1370
1353
|
# Defaults for all configs
|
|
1371
1354
|
# See https://github.com/davidrenne/widget_list/blob/master/README.md#feature-configurations
|
|
@@ -1498,7 +1481,7 @@ module WidgetList
|
|
|
1498
1481
|
end
|
|
1499
1482
|
|
|
1500
1483
|
|
|
1501
|
-
if
|
|
1484
|
+
if WidgetList::RequestContext.request.key?('searchClear')
|
|
1502
1485
|
clear_search_session()
|
|
1503
1486
|
end
|
|
1504
1487
|
|
|
@@ -1506,41 +1489,41 @@ module WidgetList
|
|
|
1506
1489
|
@isJumpingList = false
|
|
1507
1490
|
|
|
1508
1491
|
#Ajax ListJump
|
|
1509
|
-
if !
|
|
1510
|
-
if
|
|
1511
|
-
@items['LIST_FILTER_ALL'] =
|
|
1492
|
+
if ! WidgetList::RequestContext.request.empty?
|
|
1493
|
+
if WidgetList::RequestContext.request.key?('LIST_FILTER_ALL') && !WidgetList::RequestContext.request['LIST_FILTER_ALL'].empty?
|
|
1494
|
+
@items['LIST_FILTER_ALL'] = WidgetList::RequestContext.request['LIST_FILTER_ALL']
|
|
1512
1495
|
@isJumpingList = true
|
|
1513
1496
|
end
|
|
1514
1497
|
|
|
1515
|
-
if
|
|
1516
|
-
@items['LIST_COL_SORT'] =
|
|
1498
|
+
if WidgetList::RequestContext.request.key?('LIST_COL_SORT') && !WidgetList::RequestContext.request['LIST_COL_SORT'].empty?
|
|
1499
|
+
@items['LIST_COL_SORT'] = WidgetList::RequestContext.request['LIST_COL_SORT']
|
|
1517
1500
|
@isJumpingList = true
|
|
1518
1501
|
end
|
|
1519
1502
|
|
|
1520
|
-
if
|
|
1521
|
-
@items['LIST_COL_SORT_ORDER'] =
|
|
1503
|
+
if WidgetList::RequestContext.request.key?('LIST_COL_SORT_ORDER') && !WidgetList::RequestContext.request['LIST_COL_SORT_ORDER'].empty?
|
|
1504
|
+
@items['LIST_COL_SORT_ORDER'] = WidgetList::RequestContext.request['LIST_COL_SORT_ORDER']
|
|
1522
1505
|
@isJumpingList = true
|
|
1523
1506
|
end
|
|
1524
1507
|
|
|
1525
|
-
if
|
|
1526
|
-
@items['LIST_SEQUENCE'] =
|
|
1508
|
+
if WidgetList::RequestContext.request.key?('LIST_SEQUENCE') && !WidgetList::RequestContext.request['LIST_SEQUENCE'].empty?
|
|
1509
|
+
@items['LIST_SEQUENCE'] = WidgetList::RequestContext.request['LIST_SEQUENCE'].to_i
|
|
1527
1510
|
@isJumpingList = true
|
|
1528
1511
|
end
|
|
1529
1512
|
|
|
1530
|
-
if
|
|
1531
|
-
@items['ROW_LIMIT'] =
|
|
1513
|
+
if WidgetList::RequestContext.request.key?('ROW_LIMIT') && !WidgetList::RequestContext.request['ROW_LIMIT'].empty?
|
|
1514
|
+
@items['ROW_LIMIT'] = WidgetList::RequestContext.request['ROW_LIMIT']
|
|
1532
1515
|
@isJumpingList = true
|
|
1533
1516
|
|
|
1534
1517
|
if @items['showPagination']
|
|
1535
|
-
|
|
1536
|
-
|
|
1518
|
+
WidgetList::RequestContext.session['pageDisplayLimit'] = WidgetList::RequestContext.request['ROW_LIMIT']
|
|
1519
|
+
WidgetList::RequestContext.session.deep_merge!({'ROW_LIMIT' => { @items['name'] => WidgetList::RequestContext.request['ROW_LIMIT']} })
|
|
1537
1520
|
end
|
|
1538
1521
|
|
|
1539
1522
|
end
|
|
1540
1523
|
|
|
1541
1524
|
clear_sort_get_vars()
|
|
1542
1525
|
|
|
1543
|
-
if
|
|
1526
|
+
if WidgetList::RequestContext.request.key?('list_action') && WidgetList::RequestContext.request['list_action'] == 'ajax_widgetlist_checks' && @items['storeSessionChecks']
|
|
1544
1527
|
ajax_maintain_checks()
|
|
1545
1528
|
end
|
|
1546
1529
|
|
|
@@ -1553,14 +1536,14 @@ module WidgetList
|
|
|
1553
1536
|
clear_search_session(@items.key?('searchClearAll'))
|
|
1554
1537
|
end
|
|
1555
1538
|
|
|
1556
|
-
matchesCurrentList =
|
|
1557
|
-
isSearchRequest =
|
|
1539
|
+
matchesCurrentList = WidgetList::RequestContext.request.key?('BUTTON_VALUE') && WidgetList::RequestContext.request['BUTTON_VALUE'] == @items['buttonVal']
|
|
1540
|
+
isSearchRequest = WidgetList::RequestContext.request.key?('search_filter') && WidgetList::RequestContext.request['search_filter'] != 'undefined'
|
|
1558
1541
|
templateCustomSearch = !@items['templateFilter'].empty? # if you define templateFilter WidgetList will not attempt to build a where clause with search
|
|
1559
1542
|
|
|
1560
1543
|
#
|
|
1561
1544
|
# Search restore
|
|
1562
1545
|
#
|
|
1563
|
-
if !isSearchRequest &&
|
|
1546
|
+
if !isSearchRequest && !WidgetList::RequestContext.session.empty? && WidgetList::RequestContext.session.key?('SEARCH_FILTER') && WidgetList::RequestContext.session['SEARCH_FILTER'].key?(@items['name']) && @items['searchSession']
|
|
1564
1547
|
isSearchRestore = true
|
|
1565
1548
|
end
|
|
1566
1549
|
|
|
@@ -1570,10 +1553,10 @@ module WidgetList
|
|
|
1570
1553
|
get_view() if $is_mongo # call function to fill in @active_record_model
|
|
1571
1554
|
|
|
1572
1555
|
if !isSearchRestore
|
|
1573
|
-
|
|
1574
|
-
searchFilter =
|
|
1556
|
+
WidgetList::RequestContext.session.deep_merge!({'SEARCH_FILTER' => { @items['name'] => WidgetList::RequestContext.request['search_filter']} })
|
|
1557
|
+
searchFilter = WidgetList::RequestContext.request['search_filter'].strip_or_self()
|
|
1575
1558
|
else
|
|
1576
|
-
searchFilter =
|
|
1559
|
+
searchFilter = WidgetList::RequestContext.session['SEARCH_FILTER'][@items['name']]
|
|
1577
1560
|
end
|
|
1578
1561
|
|
|
1579
1562
|
if ! searchFilter.empty?
|
|
@@ -1794,7 +1777,7 @@ module WidgetList
|
|
|
1794
1777
|
@templateFill['<!--DATA-->'] = '<tr><td colspan="50"><div id="noListResults">' + generate_error_output(e) + @items['noDataMessage'] + '</div></td></tr>'
|
|
1795
1778
|
end
|
|
1796
1779
|
|
|
1797
|
-
if
|
|
1780
|
+
if !WidgetList::RequestContext.request.key?('BUTTON_VALUE')
|
|
1798
1781
|
|
|
1799
1782
|
#Initialize page load/Session stuff whe list first loads
|
|
1800
1783
|
#
|
|
@@ -1809,12 +1792,12 @@ module WidgetList
|
|
|
1809
1792
|
#Set a list title if it exists
|
|
1810
1793
|
#
|
|
1811
1794
|
|
|
1812
|
-
if !
|
|
1795
|
+
if ! WidgetList::RequestContext.request.key?('BUTTON_VALUE') && !@items['title'].empty?
|
|
1813
1796
|
@items['templateHeader'] = '
|
|
1814
1797
|
<h1 style="font-size:' + get_header_px_value() + ';"><!--TITLE--></h1><div class="horizontal_rule"></div>
|
|
1815
1798
|
<!--FILTER_HEADER-->
|
|
1816
1799
|
'
|
|
1817
|
-
elsif
|
|
1800
|
+
elsif !WidgetList::RequestContext.request.key?('BUTTON_VALUE')
|
|
1818
1801
|
# Only if not in ajax would we want to output the filter header
|
|
1819
1802
|
#
|
|
1820
1803
|
@items['templateHeader'] = '<!--FILTER_HEADER-->'
|
|
@@ -1844,8 +1827,8 @@ module WidgetList
|
|
|
1844
1827
|
@items['rowLimit'] = @items['ROW_LIMIT'].to_i
|
|
1845
1828
|
end
|
|
1846
1829
|
|
|
1847
|
-
if
|
|
1848
|
-
@items['rowLimit'] =
|
|
1830
|
+
if WidgetList::RequestContext.session.key?('ROW_LIMIT') && !WidgetList::RequestContext.session['ROW_LIMIT'].nil? && WidgetList::RequestContext.session['ROW_LIMIT'].key?(@items['name']) && !WidgetList::RequestContext.session['ROW_LIMIT'][@items['name']].empty?
|
|
1831
|
+
@items['rowLimit'] = WidgetList::RequestContext.session['ROW_LIMIT'][@items['name']].to_i
|
|
1849
1832
|
end
|
|
1850
1833
|
|
|
1851
1834
|
if ! @items['LIST_COL_SORT'].empty?
|
|
@@ -1920,7 +1903,7 @@ module WidgetList
|
|
|
1920
1903
|
'database' => 'primary', #
|
|
1921
1904
|
'title' => '',
|
|
1922
1905
|
'listDescription' => '',
|
|
1923
|
-
'pageId' =>
|
|
1906
|
+
'pageId' => WidgetList::RequestContext.server['SCRIPT_NAME'] + WidgetList::RequestContext.server['PATH_INFO'],
|
|
1924
1907
|
'view' => '',
|
|
1925
1908
|
'data' => {},
|
|
1926
1909
|
'bindVars' => [],
|
|
@@ -2150,17 +2133,17 @@ module WidgetList
|
|
|
2150
2133
|
|
|
2151
2134
|
def ajax_maintain_checks()
|
|
2152
2135
|
|
|
2153
|
-
if
|
|
2154
|
-
|
|
2136
|
+
if !WidgetList::RequestContext.session.key?('list_checks')
|
|
2137
|
+
WidgetList::RequestContext.session['list_checks'] = {}
|
|
2155
2138
|
end
|
|
2156
2139
|
|
|
2157
2140
|
#
|
|
2158
2141
|
# A list must be provided
|
|
2159
2142
|
#
|
|
2160
|
-
if
|
|
2161
|
-
listName =
|
|
2162
|
-
sqlHash =
|
|
2163
|
-
sequence =
|
|
2143
|
+
if WidgetList::RequestContext.request.key?('LIST_NAME')
|
|
2144
|
+
listName = WidgetList::RequestContext.request['LIST_NAME']
|
|
2145
|
+
sqlHash = WidgetList::RequestContext.request['SQL_HASH']
|
|
2146
|
+
sequence = WidgetList::RequestContext.request['LIST_SEQUENCE'].to_s
|
|
2164
2147
|
|
|
2165
2148
|
#
|
|
2166
2149
|
# The placeholder is created when the list initially forms. This validates it and makes it so
|
|
@@ -2171,18 +2154,18 @@ module WidgetList
|
|
|
2171
2154
|
# For each posted check box
|
|
2172
2155
|
#
|
|
2173
2156
|
|
|
2174
|
-
|
|
2157
|
+
WidgetList::RequestContext.request.each { |value, checked|
|
|
2175
2158
|
if checked.to_s == '1'
|
|
2176
2159
|
#
|
|
2177
2160
|
# Set it as checked
|
|
2178
2161
|
#
|
|
2179
|
-
|
|
2162
|
+
WidgetList::RequestContext.session.deep_merge!({'list_checks' => { listName + sqlHash + value => true } })
|
|
2180
2163
|
else
|
|
2181
2164
|
#
|
|
2182
2165
|
# Unset if it exists and is unchecked
|
|
2183
2166
|
#
|
|
2184
|
-
if
|
|
2185
|
-
|
|
2167
|
+
if WidgetList::RequestContext.session['list_checks'].key?(listName + sqlHash + value)
|
|
2168
|
+
WidgetList::RequestContext.session['list_checks'].delete(listName + sqlHash + value)
|
|
2186
2169
|
end
|
|
2187
2170
|
end
|
|
2188
2171
|
}
|
|
@@ -2190,18 +2173,18 @@ module WidgetList
|
|
|
2190
2173
|
#
|
|
2191
2174
|
# Check All
|
|
2192
2175
|
#
|
|
2193
|
-
if
|
|
2194
|
-
if
|
|
2176
|
+
if WidgetList::RequestContext.request.key?('checked_all') && WidgetList::RequestContext.request['checked_all'] == '1'
|
|
2177
|
+
if WidgetList::RequestContext.session.key?('list_checks')
|
|
2195
2178
|
|
|
2196
|
-
if
|
|
2197
|
-
if
|
|
2198
|
-
|
|
2179
|
+
if WidgetList::RequestContext.session['list_checks'].key?('check_all_' + sqlHash + listName + sequence)
|
|
2180
|
+
if WidgetList::RequestContext.request['checked_all'].empty?
|
|
2181
|
+
WidgetList::RequestContext.session['list_checks'].delete('check_all_' + sqlHash + listName + sequence)
|
|
2199
2182
|
else
|
|
2200
|
-
|
|
2183
|
+
WidgetList::RequestContext.session.deep_merge!({'list_checks' => { 'check_all_' + sqlHash + listName + sequence => true } })
|
|
2201
2184
|
end
|
|
2202
2185
|
else
|
|
2203
|
-
if !
|
|
2204
|
-
|
|
2186
|
+
if ! WidgetList::RequestContext.request['checked_all'].empty?
|
|
2187
|
+
WidgetList::RequestContext.session.deep_merge!({'list_checks' => { 'check_all_' + sqlHash + listName + WidgetList::RequestContext.request['LIST_SEQUENCE'] => true } })
|
|
2205
2188
|
end
|
|
2206
2189
|
end
|
|
2207
2190
|
end
|
|
@@ -2211,82 +2194,82 @@ module WidgetList
|
|
|
2211
2194
|
|
|
2212
2195
|
def self.clear_check_box_session(name='')
|
|
2213
2196
|
|
|
2214
|
-
if
|
|
2215
|
-
|
|
2197
|
+
if WidgetList::RequestContext.session.key?('DRILL_DOWN_FILTERS')
|
|
2198
|
+
WidgetList::RequestContext.session.delete('DRILL_DOWN_FILTERS')
|
|
2216
2199
|
end
|
|
2217
2200
|
|
|
2218
|
-
if
|
|
2219
|
-
|
|
2201
|
+
if WidgetList::RequestContext.session.key?('DRILL_DOWNS')
|
|
2202
|
+
WidgetList::RequestContext.session.delete('DRILL_DOWNS')
|
|
2220
2203
|
end
|
|
2221
2204
|
|
|
2222
|
-
|
|
2205
|
+
WidgetList::RequestContext.session['list_checks'].keys.each { |key|
|
|
2223
2206
|
if key.include?(name)
|
|
2224
|
-
|
|
2207
|
+
WidgetList::RequestContext.session['list_checks'].delete(key)
|
|
2225
2208
|
end
|
|
2226
|
-
} if
|
|
2209
|
+
} if WidgetList::RequestContext.session.key?('list_checks') && !WidgetList::RequestContext.session['list_checks'].nil? && !WidgetList::RequestContext.session['list_checks'].empty?
|
|
2227
2210
|
|
|
2228
2211
|
end
|
|
2229
2212
|
|
|
2230
2213
|
def clear_search_session(all=false)
|
|
2231
2214
|
|
|
2232
|
-
if
|
|
2233
|
-
|
|
2215
|
+
if WidgetList::RequestContext.session.key?('SEARCH_FILTER') && WidgetList::RequestContext.session['SEARCH_FILTER'].key?(@items['name'])
|
|
2216
|
+
WidgetList::RequestContext.session['SEARCH_FILTER'].delete(@items['name'])
|
|
2234
2217
|
end
|
|
2235
2218
|
|
|
2236
|
-
if
|
|
2237
|
-
|
|
2219
|
+
if WidgetList::RequestContext.session.key?('ROW_LIMIT') && WidgetList::RequestContext.session['ROW_LIMIT'].key?(@items['name'])
|
|
2220
|
+
WidgetList::RequestContext.session['ROW_LIMIT'].delete(@items['name'])
|
|
2238
2221
|
end
|
|
2239
2222
|
|
|
2240
|
-
if
|
|
2241
|
-
|
|
2223
|
+
if WidgetList::RequestContext.session.key?('DRILL_DOWNS') && WidgetList::RequestContext.session['DRILL_DOWNS'].key?(@items['name'])
|
|
2224
|
+
WidgetList::RequestContext.session['DRILL_DOWNS'].delete(@items['name'])
|
|
2242
2225
|
end
|
|
2243
2226
|
|
|
2244
|
-
if
|
|
2245
|
-
|
|
2227
|
+
if WidgetList::RequestContext.session.key?('DRILL_DOWN_FILTERS') && WidgetList::RequestContext.session['DRILL_DOWN_FILTERS'].key?(@items['name'])
|
|
2228
|
+
WidgetList::RequestContext.session['DRILL_DOWN_FILTERS'].delete(@items['name'])
|
|
2246
2229
|
end
|
|
2247
2230
|
|
|
2248
|
-
if all &&
|
|
2249
|
-
|
|
2231
|
+
if all && WidgetList::RequestContext.session.key?('SEARCH_FILTER')
|
|
2232
|
+
WidgetList::RequestContext.session.delete('SEARCH_FILTER')
|
|
2250
2233
|
end
|
|
2251
2234
|
|
|
2252
|
-
if all &&
|
|
2253
|
-
|
|
2235
|
+
if all && WidgetList::RequestContext.session.key?('ROW_LIMIT')
|
|
2236
|
+
WidgetList::RequestContext.session.delete('ROW_LIMIT')
|
|
2254
2237
|
end
|
|
2255
2238
|
|
|
2256
|
-
if
|
|
2257
|
-
|
|
2239
|
+
if WidgetList::RequestContext.request.key?('LIST_FILTER_ALL')
|
|
2240
|
+
WidgetList::RequestContext.request.delete('LIST_FILTER_ALL')
|
|
2258
2241
|
end
|
|
2259
2242
|
|
|
2260
|
-
if
|
|
2261
|
-
|
|
2243
|
+
if WidgetList::RequestContext.request.key?('LIST_COL_SORT')
|
|
2244
|
+
WidgetList::RequestContext.request.delete('LIST_COL_SORT')
|
|
2262
2245
|
end
|
|
2263
2246
|
|
|
2264
|
-
if
|
|
2265
|
-
|
|
2247
|
+
if WidgetList::RequestContext.request.key?('LIST_COL_SORT_ORDER')
|
|
2248
|
+
WidgetList::RequestContext.request.delete('LIST_COL_SORT_ORDER')
|
|
2266
2249
|
end
|
|
2267
2250
|
|
|
2268
|
-
if
|
|
2269
|
-
|
|
2251
|
+
if WidgetList::RequestContext.request.key?('LIST_SEQUENCE')
|
|
2252
|
+
WidgetList::RequestContext.request.delete('LIST_SEQUENCE')
|
|
2270
2253
|
end
|
|
2271
2254
|
|
|
2272
2255
|
end
|
|
2273
2256
|
|
|
2274
2257
|
def clear_sql_session(all=false)
|
|
2275
2258
|
|
|
2276
|
-
if
|
|
2277
|
-
|
|
2259
|
+
if WidgetList::RequestContext.session.key?('LIST_SEQUENCE') && WidgetList::RequestContext.session['LIST_SEQUENCE'].key?(@sqlHash)
|
|
2260
|
+
WidgetList::RequestContext.session['LIST_SEQUENCE'].delete(@sqlHash)
|
|
2278
2261
|
end
|
|
2279
2262
|
|
|
2280
|
-
if
|
|
2281
|
-
|
|
2263
|
+
if WidgetList::RequestContext.session.key?('LIST_COL_SORT') && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash)
|
|
2264
|
+
WidgetList::RequestContext.session['LIST_COL_SORT'].delete(@sqlHash)
|
|
2282
2265
|
end
|
|
2283
2266
|
|
|
2284
|
-
if all &&
|
|
2285
|
-
|
|
2267
|
+
if all && WidgetList::RequestContext.session.key?('LIST_COL_SORT')
|
|
2268
|
+
WidgetList::RequestContext.session.delete('LIST_COL_SORT')
|
|
2286
2269
|
end
|
|
2287
2270
|
|
|
2288
|
-
if all &&
|
|
2289
|
-
|
|
2271
|
+
if all && WidgetList::RequestContext.session.key?('LIST_SEQUENCE')
|
|
2272
|
+
WidgetList::RequestContext.session.delete('LIST_SEQUENCE')
|
|
2290
2273
|
end
|
|
2291
2274
|
|
|
2292
2275
|
end
|
|
@@ -2294,26 +2277,26 @@ module WidgetList
|
|
|
2294
2277
|
def self.get_filter_and_drilldown(listId)
|
|
2295
2278
|
filter = ''
|
|
2296
2279
|
drillDown = ''
|
|
2297
|
-
if
|
|
2280
|
+
if !WidgetList::RequestContext.request.key?('BUTTON_VALUE')
|
|
2298
2281
|
# Initialize page load/Session stuff whe list first loads
|
|
2299
2282
|
#
|
|
2300
2283
|
WidgetList::List::clear_check_box_session(listId)
|
|
2301
2284
|
end
|
|
2302
2285
|
|
|
2303
|
-
if
|
|
2304
|
-
drillDown =
|
|
2305
|
-
|
|
2306
|
-
elsif
|
|
2307
|
-
drillDown =
|
|
2286
|
+
if WidgetList::RequestContext.request.key?('drill_down') && !WidgetList::RequestContext.request.key?('searchClear')
|
|
2287
|
+
drillDown = WidgetList::RequestContext.request['drill_down']
|
|
2288
|
+
WidgetList::RequestContext.session.deep_merge!({'DRILL_DOWNS' => { listId => drillDown} })
|
|
2289
|
+
elsif WidgetList::RequestContext.session.key?('DRILL_DOWNS') && WidgetList::RequestContext.session['DRILL_DOWNS'].key?(listId) && !WidgetList::RequestContext.request.key?('searchClear')
|
|
2290
|
+
drillDown = WidgetList::RequestContext.session['DRILL_DOWNS'][listId]
|
|
2308
2291
|
else
|
|
2309
2292
|
drillDown = 'default'
|
|
2310
2293
|
end
|
|
2311
2294
|
|
|
2312
|
-
if
|
|
2313
|
-
filter =
|
|
2314
|
-
|
|
2315
|
-
elsif
|
|
2316
|
-
filter =
|
|
2295
|
+
if WidgetList::RequestContext.request.key?('filter') && !WidgetList::RequestContext.request.key?('searchClear')
|
|
2296
|
+
filter = WidgetList::RequestContext.request['filter']
|
|
2297
|
+
WidgetList::RequestContext.session.deep_merge!({'DRILL_DOWN_FILTERS' => { listId => filter} })
|
|
2298
|
+
elsif WidgetList::RequestContext.session.key?('DRILL_DOWN_FILTERS') && WidgetList::RequestContext.session['DRILL_DOWN_FILTERS'].key?(listId) && !WidgetList::RequestContext.request.key?('searchClear')
|
|
2299
|
+
filter = WidgetList::RequestContext.session['DRILL_DOWN_FILTERS'][listId]
|
|
2317
2300
|
end
|
|
2318
2301
|
return drillDown, filter
|
|
2319
2302
|
end
|
|
@@ -2321,11 +2304,11 @@ module WidgetList
|
|
|
2321
2304
|
def self.get_group_by_selection(list_parms)
|
|
2322
2305
|
groupBy = ''
|
|
2323
2306
|
|
|
2324
|
-
if
|
|
2325
|
-
groupBy =
|
|
2326
|
-
|
|
2327
|
-
elsif
|
|
2328
|
-
groupBy =
|
|
2307
|
+
if WidgetList::RequestContext.request.key?('switch_grouping')
|
|
2308
|
+
groupBy = WidgetList::RequestContext.request['switch_grouping']
|
|
2309
|
+
WidgetList::RequestContext.session.deep_merge!({'CURRENT_GROUPING' => { list_parms['name'] => groupBy} })
|
|
2310
|
+
elsif WidgetList::RequestContext.session.key?('CURRENT_GROUPING') && !WidgetList::RequestContext.session['CURRENT_GROUPING'].nil? && WidgetList::RequestContext.session['CURRENT_GROUPING'].key?(list_parms['name'])
|
|
2311
|
+
groupBy = WidgetList::RequestContext.session['CURRENT_GROUPING'][list_parms['name']]
|
|
2329
2312
|
list_parms['groupBySelected'] = groupBy
|
|
2330
2313
|
else
|
|
2331
2314
|
groupBy = ''
|
|
@@ -2335,12 +2318,12 @@ module WidgetList
|
|
|
2335
2318
|
end
|
|
2336
2319
|
|
|
2337
2320
|
def clear_sort_get_vars()
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2321
|
+
WidgetList::RequestContext.request.delete('LIST_FILTER_ALL')
|
|
2322
|
+
WidgetList::RequestContext.request.delete('ROW_LIMIT')
|
|
2323
|
+
WidgetList::RequestContext.request.delete('LIST_SEQUENCE')
|
|
2324
|
+
WidgetList::RequestContext.request.delete('LIST_COL_SORT_ORDER')
|
|
2325
|
+
WidgetList::RequestContext.request.delete('LIST_COL_SORT')
|
|
2326
|
+
WidgetList::RequestContext.request.delete('LIST_FILTER_ALL')
|
|
2344
2327
|
end
|
|
2345
2328
|
|
|
2346
2329
|
def generate_limits()
|
|
@@ -2369,11 +2352,11 @@ module WidgetList
|
|
|
2369
2352
|
def render(results={})
|
|
2370
2353
|
|
|
2371
2354
|
if @isAdministrating
|
|
2372
|
-
if
|
|
2355
|
+
if WidgetList::RequestContext.request.key?('name')
|
|
2373
2356
|
return WidgetList::Administration.new.save_and_show_code()
|
|
2374
|
-
elsif
|
|
2375
|
-
return WidgetList::Administration.new.ajax_get_field_json(
|
|
2376
|
-
elsif
|
|
2357
|
+
elsif WidgetList::RequestContext.request.key?('ajax') && WidgetList::RequestContext.request.key?('model')
|
|
2358
|
+
return WidgetList::Administration.new.ajax_get_field_json(WidgetList::RequestContext.request['model'])
|
|
2359
|
+
elsif WidgetList::RequestContext.request.key?('ajax') && WidgetList::RequestContext.request.key?('save')
|
|
2377
2360
|
return WidgetList::Administration.new.save_and_show_code()
|
|
2378
2361
|
else
|
|
2379
2362
|
return WidgetList::Administration.new.show_interface()
|
|
@@ -2424,8 +2407,18 @@ module WidgetList
|
|
|
2424
2407
|
listJumpUrl['LIST_NAME'] = @items['name']
|
|
2425
2408
|
listJumpUrl['SQL_HASH'] = @sqlHash
|
|
2426
2409
|
|
|
2427
|
-
|
|
2428
|
-
|
|
2410
|
+
# Initial links inherit request parameters in build_url. Ajax links
|
|
2411
|
+
# need the preview context copied because build_url skips that step.
|
|
2412
|
+
if WidgetList::RequestContext.request.key?('BUTTON_VALUE')
|
|
2413
|
+
%w[iframe desiredController desiredAction].each do |key|
|
|
2414
|
+
if WidgetList::RequestContext.request.key?(key)
|
|
2415
|
+
listJumpUrl[key] = WidgetList::RequestContext.request[key]
|
|
2416
|
+
end
|
|
2417
|
+
end
|
|
2418
|
+
end
|
|
2419
|
+
|
|
2420
|
+
if WidgetList::RequestContext.request.key?('switch_grouping')
|
|
2421
|
+
listJumpUrl['switch_grouping'] = WidgetList::RequestContext.request['switch_grouping']
|
|
2429
2422
|
end
|
|
2430
2423
|
|
|
2431
2424
|
@templateFill['<!--CORNER_RADIUS-->'] = get_radius_value()
|
|
@@ -2444,7 +2437,7 @@ module WidgetList
|
|
|
2444
2437
|
@templateFill['<!--CUSTOM_CONTENT_TOP-->'] = @items['customHeader']
|
|
2445
2438
|
@templateFill['<!--WRAP_START-->'] = ''
|
|
2446
2439
|
@templateFill['<!--WRAP_END-->'] = ''
|
|
2447
|
-
if
|
|
2440
|
+
if !WidgetList::RequestContext.request.key?('BUTTON_VALUE')
|
|
2448
2441
|
@templateFill['<!--WRAP_START-->'] = '<div class="widget_list_outer">
|
|
2449
2442
|
<input type="hidden" id="<!--NAME-->_jump_url_original" value="<!--JUMP_URL-->"/>'
|
|
2450
2443
|
@templateFill['<!--WRAP_END-->'] = '</div>'
|
|
@@ -2475,7 +2468,7 @@ module WidgetList
|
|
|
2475
2468
|
|
|
2476
2469
|
@templateFill['<!--FILTER_HEADER-->'] = ''
|
|
2477
2470
|
|
|
2478
|
-
if
|
|
2471
|
+
if !WidgetList::RequestContext.request.key?('search_filter') && !@isJumpingList
|
|
2479
2472
|
|
|
2480
2473
|
#Search page url
|
|
2481
2474
|
#
|
|
@@ -2495,12 +2488,12 @@ module WidgetList
|
|
|
2495
2488
|
filterParameters['SQL_HASH'] = @sqlHash
|
|
2496
2489
|
|
|
2497
2490
|
@items['carryOverRequsts'].each { |value|
|
|
2498
|
-
if
|
|
2499
|
-
filterParameters[value] =
|
|
2491
|
+
if WidgetList::RequestContext.request.key?(value)
|
|
2492
|
+
filterParameters[value] = WidgetList::RequestContext.request[value]
|
|
2500
2493
|
end
|
|
2501
2494
|
}
|
|
2502
2495
|
|
|
2503
|
-
searchUrl = WidgetList::Utils::build_url(@items['pageId'], filterParameters, (
|
|
2496
|
+
searchUrl = WidgetList::Utils::build_url(@items['pageId'], filterParameters, (!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
|
|
2504
2497
|
|
|
2505
2498
|
list_search = {}
|
|
2506
2499
|
#
|
|
@@ -2509,8 +2502,8 @@ module WidgetList
|
|
|
2509
2502
|
list_search['value'] = ''
|
|
2510
2503
|
|
|
2511
2504
|
if @items['searchSession']
|
|
2512
|
-
if
|
|
2513
|
-
list_search['value'] =
|
|
2505
|
+
if WidgetList::RequestContext.session.key?('SEARCH_FILTER') && !WidgetList::RequestContext.session['SEARCH_FILTER'].nil? && WidgetList::RequestContext.session['SEARCH_FILTER'].key?(@items['name'])
|
|
2506
|
+
list_search['value'] = WidgetList::RequestContext.session['SEARCH_FILTER'][@items['name']]
|
|
2514
2507
|
end
|
|
2515
2508
|
end
|
|
2516
2509
|
|
|
@@ -2551,8 +2544,8 @@ module WidgetList
|
|
|
2551
2544
|
list_group['readonly'] = true
|
|
2552
2545
|
if @items['groupBySelected']
|
|
2553
2546
|
list_group['value'] = @items['groupBySelected']
|
|
2554
|
-
elsif
|
|
2555
|
-
tmp =
|
|
2547
|
+
elsif WidgetList::RequestContext.request.key?('group_row_id')
|
|
2548
|
+
tmp = WidgetList::RequestContext.request['group_row_id'].gsub(@items['name'] + '_row_','')
|
|
2556
2549
|
if Float(tmp.to_i) != nil
|
|
2557
2550
|
list_group['value'] = @items['groupByItems'][tmp.to_i - 1]
|
|
2558
2551
|
end
|
|
@@ -2609,7 +2602,7 @@ module WidgetList
|
|
|
2609
2602
|
end
|
|
2610
2603
|
|
|
2611
2604
|
@templateFill['<!--NAME-->'] = @items['name']
|
|
2612
|
-
@templateFill['<!--JUMP_URL-->'] = WidgetList::Utils::build_url(@items['pageId'],listJumpUrl,(
|
|
2605
|
+
@templateFill['<!--JUMP_URL-->'] = WidgetList::Utils::build_url(@items['pageId'],listJumpUrl,(!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
|
|
2613
2606
|
@templateFill['--JUMP_URL--'] = @templateFill['<!--JUMP_URL-->']
|
|
2614
2607
|
@templateFill['<!--JUMP_URL_NAME-->'] = @items['name'] + '_jump_url'
|
|
2615
2608
|
|
|
@@ -2622,7 +2615,7 @@ module WidgetList
|
|
|
2622
2615
|
end
|
|
2623
2616
|
end
|
|
2624
2617
|
|
|
2625
|
-
if
|
|
2618
|
+
if WidgetList::RequestContext.request.key?('export_widget_list')
|
|
2626
2619
|
csv = ''
|
|
2627
2620
|
@csv.each{ |v|
|
|
2628
2621
|
csv += v.to_csv
|
|
@@ -2674,8 +2667,8 @@ module WidgetList
|
|
|
2674
2667
|
templates['btn_previous'] = @items['template_pagination_previous_disabled']
|
|
2675
2668
|
templates['btn_next'] = @items['template_pagination_next_active']
|
|
2676
2669
|
|
|
2677
|
-
if
|
|
2678
|
-
urlTags['search_filter'] =
|
|
2670
|
+
if WidgetList::RequestContext.request.key?('search_filter') && ! WidgetList::RequestContext.request['search_filter'].empty?
|
|
2671
|
+
urlTags['search_filter'] = WidgetList::RequestContext.request['search_filter']
|
|
2679
2672
|
end
|
|
2680
2673
|
|
|
2681
2674
|
if @items['LIST_COL_SORT'].empty?
|
|
@@ -2691,21 +2684,21 @@ module WidgetList
|
|
|
2691
2684
|
end
|
|
2692
2685
|
|
|
2693
2686
|
@items['carryOverRequsts'].each { |value|
|
|
2694
|
-
if
|
|
2695
|
-
urlTags[value] =
|
|
2687
|
+
if WidgetList::RequestContext.request.key?(value)
|
|
2688
|
+
urlTags[value] = WidgetList::RequestContext.request[value]
|
|
2696
2689
|
end
|
|
2697
2690
|
}
|
|
2698
2691
|
if (@sequence == @totalPages || ! (@totalPages > 0))
|
|
2699
2692
|
showNext = false
|
|
2700
2693
|
else
|
|
2701
2694
|
urlTags['LIST_SEQUENCE'] = @sequence + 1
|
|
2702
|
-
nextUrl = WidgetList::Utils::build_url(@items['pageId'],urlTags,(
|
|
2695
|
+
nextUrl = WidgetList::Utils::build_url(@items['pageId'],urlTags,(!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
|
|
2703
2696
|
end
|
|
2704
2697
|
|
|
2705
2698
|
if @sequence > 1
|
|
2706
2699
|
pagePrev = @sequence - 1
|
|
2707
2700
|
urlTags['LIST_SEQUENCE'] = pagePrev
|
|
2708
|
-
prevUrl = WidgetList::Utils::build_url(@items['pageId'],urlTags,(
|
|
2701
|
+
prevUrl = WidgetList::Utils::build_url(@items['pageId'],urlTags,(!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
|
|
2709
2702
|
showPrev = true
|
|
2710
2703
|
end
|
|
2711
2704
|
|
|
@@ -2739,8 +2732,8 @@ module WidgetList
|
|
|
2739
2732
|
urlTags['ROW_LIMIT'] = 10
|
|
2740
2733
|
|
|
2741
2734
|
@items['carryOverRequsts'].each { |value|
|
|
2742
|
-
if
|
|
2743
|
-
urlTags[value] =
|
|
2735
|
+
if WidgetList::RequestContext.request.key?(value)
|
|
2736
|
+
urlTags[value] = WidgetList::RequestContext.request[value]
|
|
2744
2737
|
end
|
|
2745
2738
|
}
|
|
2746
2739
|
|
|
@@ -2758,7 +2751,7 @@ module WidgetList
|
|
|
2758
2751
|
if (@totalRows >= jumpCount || @totalRows > rowLimitSelect[key-1])
|
|
2759
2752
|
urlTags['ROW_LIMIT'] = jumpCount
|
|
2760
2753
|
|
|
2761
|
-
rowLimitUrl = WidgetList::Utils::build_url(@items['pageId'],urlTags,(
|
|
2754
|
+
rowLimitUrl = WidgetList::Utils::build_url(@items['pageId'],urlTags,(!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
|
|
2762
2755
|
selected = ''
|
|
2763
2756
|
if (@items['rowLimit'] == jumpCount)
|
|
2764
2757
|
selected = 'selected'
|
|
@@ -2818,7 +2811,7 @@ module WidgetList
|
|
|
2818
2811
|
urlTags['SQL_HASH'] = @sqlHash
|
|
2819
2812
|
jumpTemplate = ''
|
|
2820
2813
|
jumpUrl = ''
|
|
2821
|
-
jumpUrl = WidgetList::Utils::build_url(@items['pageId'], urlTags, (
|
|
2814
|
+
jumpUrl = WidgetList::Utils::build_url(@items['pageId'], urlTags, (!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
|
|
2822
2815
|
|
|
2823
2816
|
if page == @sequence
|
|
2824
2817
|
jumpTemplate = @items['template_pagination_jump_active']
|
|
@@ -2867,8 +2860,8 @@ module WidgetList
|
|
|
2867
2860
|
|
|
2868
2861
|
if list_parms.key?('carryOverRequsts')
|
|
2869
2862
|
list_parms['carryOverRequsts'].each { |value|
|
|
2870
|
-
if
|
|
2871
|
-
filterParameters[value] =
|
|
2863
|
+
if WidgetList::RequestContext.request.key?(value)
|
|
2864
|
+
filterParameters[value] = WidgetList::RequestContext.request[value]
|
|
2872
2865
|
end
|
|
2873
2866
|
}
|
|
2874
2867
|
extra_get_vars = WidgetList::Utils::build_query_string(filterParameters)
|
|
@@ -2909,7 +2902,7 @@ module WidgetList
|
|
|
2909
2902
|
|
|
2910
2903
|
colWidthStyle += @items['borderHeadFoot'] ? 'border-bottom:' + @items['headFootBorderStyle'] + ';' : ''
|
|
2911
2904
|
|
|
2912
|
-
|
|
2905
|
+
WidgetList::RequestContext.session.deep_merge!({'LIST_SEQUENCE' => { @sqlHash => @sequence} })
|
|
2913
2906
|
|
|
2914
2907
|
#Hover Title
|
|
2915
2908
|
#
|
|
@@ -2954,7 +2947,7 @@ module WidgetList
|
|
|
2954
2947
|
|
|
2955
2948
|
else
|
|
2956
2949
|
|
|
2957
|
-
if
|
|
2950
|
+
if WidgetList::RequestContext.request.key?('export_widget_list') && !skip_column(field)
|
|
2958
2951
|
@csv[0] << fieldTitle
|
|
2959
2952
|
end
|
|
2960
2953
|
|
|
@@ -2994,15 +2987,15 @@ module WidgetList
|
|
|
2994
2987
|
|
|
2995
2988
|
if (
|
|
2996
2989
|
( (@items.key?('LIST_COL_SORT') && !@items['LIST_COL_SORT'].empty?) && @items['LIST_COL_SORT'] == colSort['LIST_COL_SORT']) ||
|
|
2997
|
-
(
|
|
2990
|
+
( WidgetList::RequestContext.session.key?('LIST_COL_SORT') && !WidgetList::RequestContext.session['LIST_COL_SORT'].nil? && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash) && WidgetList::RequestContext.session['LIST_COL_SORT'][@sqlHash].key?(field))
|
|
2998
2991
|
)
|
|
2999
2992
|
changedSession = false
|
|
3000
2993
|
if @items.key?('LIST_COL_SORT') && !@items['LIST_COL_SORT'].empty?
|
|
3001
|
-
changedSession = (
|
|
3002
|
-
if
|
|
3003
|
-
|
|
2994
|
+
changedSession = ( WidgetList::RequestContext.session.key?('LIST_COL_SORT') && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash) && ! WidgetList::RequestContext.session['LIST_COL_SORT'][@sqlHash].key?(@items['LIST_COL_SORT']) )
|
|
2995
|
+
if WidgetList::RequestContext.session.key?('LIST_COL_SORT') && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash)
|
|
2996
|
+
WidgetList::RequestContext.session['LIST_COL_SORT'].delete(@sqlHash)
|
|
3004
2997
|
end
|
|
3005
|
-
|
|
2998
|
+
WidgetList::RequestContext.session.deep_merge!({'LIST_COL_SORT' => { @sqlHash => {@items['LIST_COL_SORT']=> @items['LIST_COL_SORT_ORDER'] } } })
|
|
3006
2999
|
end
|
|
3007
3000
|
|
|
3008
3001
|
if !changedSession && @items.key?('LIST_COL_SORT') && ! @items['LIST_COL_SORT'].empty?
|
|
@@ -3011,9 +3004,9 @@ module WidgetList
|
|
|
3011
3004
|
else
|
|
3012
3005
|
icon = "↓"
|
|
3013
3006
|
end
|
|
3014
|
-
elsif !changedSession &&
|
|
3007
|
+
elsif !changedSession && WidgetList::RequestContext.session['LIST_COL_SORT'].class.name == 'Hash' && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash)
|
|
3015
3008
|
#load sort from session
|
|
3016
|
-
|
|
3009
|
+
WidgetList::RequestContext.session['LIST_COL_SORT'][@sqlHash].each_with_index { |order,void|
|
|
3017
3010
|
if order[1] == 'DESC'
|
|
3018
3011
|
colSort['LIST_COL_SORT_ORDER'] = "ASC"
|
|
3019
3012
|
icon = "↑"
|
|
@@ -3027,21 +3020,21 @@ module WidgetList
|
|
|
3027
3020
|
|
|
3028
3021
|
#Carry over any search criteria on a sort to SORT URL
|
|
3029
3022
|
#
|
|
3030
|
-
if
|
|
3031
|
-
if
|
|
3032
|
-
colSort['search_filter'] =
|
|
3023
|
+
if WidgetList::RequestContext.request.key?('search_filter') && ! WidgetList::RequestContext.request['search_filter'].empty?
|
|
3024
|
+
if WidgetList::RequestContext.request['search_filter'].empty?
|
|
3025
|
+
colSort['search_filter'] = WidgetList::RequestContext.request['search_filter']
|
|
3033
3026
|
end
|
|
3034
3027
|
end
|
|
3035
3028
|
|
|
3036
3029
|
@items['carryOverRequsts'].each { |value|
|
|
3037
|
-
if
|
|
3038
|
-
colSort[value] =
|
|
3030
|
+
if WidgetList::RequestContext.request.key?(value)
|
|
3031
|
+
colSort[value] = WidgetList::RequestContext.request[value]
|
|
3039
3032
|
end
|
|
3040
3033
|
}
|
|
3041
3034
|
|
|
3042
3035
|
colSort['SQL_HASH'] = @sqlHash
|
|
3043
3036
|
|
|
3044
|
-
pieces = { '<!--COLSORTURL-->' => WidgetList::Utils::build_url(@items['pageId'],colSort,(
|
|
3037
|
+
pieces = { '<!--COLSORTURL-->' => WidgetList::Utils::build_url(@items['pageId'],colSort,(!WidgetList::RequestContext.request.key?('BUTTON_VALUE'))),
|
|
3045
3038
|
'<!--NAME-->' => @items['name'],
|
|
3046
3039
|
'<!--COLSORTICON->' => icon,
|
|
3047
3040
|
'<!--COL_HEADER_ID-->' => strip_tags(field).gsub(/\s/,'_'),
|
|
@@ -3139,7 +3132,7 @@ module WidgetList
|
|
|
3139
3132
|
|
|
3140
3133
|
if input['check_all']
|
|
3141
3134
|
checkAllId = input['id']
|
|
3142
|
-
if
|
|
3135
|
+
if WidgetList::RequestContext.session.key?('list_checks') && !WidgetList::RequestContext.session['list_checks'].nil? && WidgetList::RequestContext.session['list_checks'].key?('check_all_' + @sqlHash.to_s + @items['name'].to_s + @sequence.to_s)
|
|
3143
3136
|
input['checked'] = true
|
|
3144
3137
|
end
|
|
3145
3138
|
|
|
@@ -3147,7 +3140,7 @@ module WidgetList
|
|
|
3147
3140
|
# Set header class
|
|
3148
3141
|
#
|
|
3149
3142
|
if @items['headerClass'].class.name == 'Array' && @items['headerClass'].key?('checkbox')
|
|
3150
|
-
if
|
|
3143
|
+
if WidgetList::RequestContext.session['list_checks'].key?('check_all_' + @sqlHash.to_s + @items['name'].to_s + @sequence.to_s)
|
|
3151
3144
|
input['checked'] = true
|
|
3152
3145
|
end
|
|
3153
3146
|
end
|
|
@@ -3170,7 +3163,7 @@ module WidgetList
|
|
|
3170
3163
|
listJumpUrl['SQL_HASH'] = @sqlHash
|
|
3171
3164
|
listJumpUrl['list_action'] = 'ajax_widgetlist_checks'
|
|
3172
3165
|
|
|
3173
|
-
onClick << "AjaxMaintainChecks(this, '#{input['class_handle']}', '#{@items['name']}', '" + WidgetList::Utils::build_url(@items['pageId'],listJumpUrl,(
|
|
3166
|
+
onClick << "AjaxMaintainChecks(this, '#{input['class_handle']}', '#{@items['name']}', '" + WidgetList::Utils::build_url(@items['pageId'],listJumpUrl,(!WidgetList::RequestContext.request.key?('BUTTON_VALUE'))) + "', '#{checkAllId}');"
|
|
3174
3167
|
end
|
|
3175
3168
|
|
|
3176
3169
|
input['onclick'] = onClick.join(' ')
|
|
@@ -3187,7 +3180,7 @@ module WidgetList
|
|
|
3187
3180
|
#
|
|
3188
3181
|
# Checkbox is checked or not per session (overwrites query)
|
|
3189
3182
|
#
|
|
3190
|
-
if
|
|
3183
|
+
if WidgetList::RequestContext.session.key?('list_checks') && !WidgetList::RequestContext.session['list_checks'].nil? && WidgetList::RequestContext.session['list_checks'].key?(@items['name'] + @sqlHash + input['value'].to_s)
|
|
3191
3184
|
input['checked'] = true
|
|
3192
3185
|
end
|
|
3193
3186
|
|
|
@@ -3219,13 +3212,13 @@ module WidgetList
|
|
|
3219
3212
|
#
|
|
3220
3213
|
# If AJAX, send back JSON
|
|
3221
3214
|
#
|
|
3222
|
-
if
|
|
3215
|
+
if WidgetList::RequestContext.request.key?('BUTTON_VALUE') && WidgetList::RequestContext.request['LIST_NAME'] == list_parms['name']
|
|
3223
3216
|
|
|
3224
|
-
if
|
|
3217
|
+
if WidgetList::RequestContext.request.key?('export_widget_list')
|
|
3225
3218
|
return ['export',list.render()]
|
|
3226
3219
|
end
|
|
3227
3220
|
|
|
3228
|
-
if
|
|
3221
|
+
if WidgetList::RequestContext.request['list_action'] != 'ajax_widgetlist_checks'
|
|
3229
3222
|
ret['list'] = list.render()
|
|
3230
3223
|
ret['search_bar'] = list.get_header_pieces['searchBar']
|
|
3231
3224
|
ret['group_by_items'] = list.get_header_pieces['groupByItems']
|
|
@@ -3390,7 +3383,7 @@ module WidgetList
|
|
|
3390
3383
|
def self.build_drill_down(*params)
|
|
3391
3384
|
required_params = {
|
|
3392
3385
|
:list_id => true, # -- your widget_list name (used for JS)
|
|
3393
|
-
:drill_down_name => true, # -- an identifier that is pass for the "column" or "type of drill down" which is passed as
|
|
3386
|
+
:drill_down_name => true, # -- an identifier that is pass for the "column" or "type of drill down" which is passed as WidgetList::RequestContext.request['drill_down'] when the user clicks and returned from get_filter_and_drilldown based on session or request
|
|
3394
3387
|
:data_to_pass_from_view => true, # -- Any SQL function or column name/value in the resultset in which would be the value passed when the user clicks the drill down
|
|
3395
3388
|
:column_to_show => true, # -- The visible column or SQL functions to display to user for the link
|
|
3396
3389
|
}
|
|
@@ -3419,14 +3412,20 @@ module WidgetList
|
|
|
3419
3412
|
if WidgetList::List.get_db_type(items[:primary_database]) == 'oracle'
|
|
3420
3413
|
link = %[q'[<a style='cursor:pointer;color:#{items[:link_color]};' class='#{items[:column_alias]}_drill#{items[:column_class]}' onclick='#{items[:js_function_name]}("#{items[:drill_down_name]}", ListDrillDownGetRowValue(this) ,"#{items[:list_id]}"#{items[:extra_js_func_params]});#{items[:extra_function]}'>]' #{WidgetList::List::concat_string(items[:primary_database])}#{items[:column_to_show]}#{WidgetList::List::concat_string(items[:primary_database])}q'[</a><script class='val-db' type='text'>]' #{WidgetList::List::concat_string(items[:primary_database])} #{items[:data_to_pass_from_view]} #{WidgetList::List::concat_string(items[:primary_database])} q'[</script>]' #{WidgetList::List::concat_outer(items[:primary_database])} #{WidgetList::List::is_sequel(items[:primary_database]) ? " as #{items[:column_alias]} " : ""}]
|
|
3421
3414
|
else
|
|
3422
|
-
if WidgetList::List.get_db_type(items[:primary_database]) == '
|
|
3415
|
+
if WidgetList::List.get_db_type(items[:primary_database]) == 'sqlite'
|
|
3416
|
+
sql_literal = ->(value) { "'#{value.gsub("'", "''")}'" }
|
|
3417
|
+
prefix = %(<a style="cursor:pointer;color:#{items[:link_color]};" class="#{items[:column_alias]}_drill#{items[:column_class]}" onclick="#{items[:js_function_name]}('#{items[:drill_down_name]}', ListDrillDownGetRowValue(this) ,'#{items[:list_id]}'#{items[:extra_js_func_params]});#{items[:extra_function]}">)
|
|
3418
|
+
middle = '</a><script class="val-db" type="text">'
|
|
3419
|
+
suffix = '</script>'
|
|
3420
|
+
link = "#{sql_literal.call(prefix)} || #{items[:column_to_show]} || #{sql_literal.call(middle)} || #{items[:data_to_pass_from_view]} || #{sql_literal.call(suffix)}#{WidgetList::List::is_sequel(items[:primary_database]) ? " as #{items[:column_alias]}" : ''}"
|
|
3421
|
+
elsif WidgetList::List.get_db_type(items[:primary_database]) == 'postgres'
|
|
3423
3422
|
link = %['<a style="cursor:pointer;color:#{items[:link_color]};" class="#{items[:column_alias]}_drill#{items[:column_class]}" onclick="#{items[:js_function_name]}(''#{items[:drill_down_name]}'', ListDrillDownGetRowValue(this) ,''#{items[:list_id]}''#{items[:extra_js_func_params]});#{items[:extra_function]}">"' #{WidgetList::List::concat_string(items[:primary_database])}#{items[:column_to_show]}#{WidgetList::List::concat_string(items[:primary_database])}'</a><script class="val-db" type="text">' #{WidgetList::List::concat_string(items[:primary_database])} #{items[:data_to_pass_from_view]} #{WidgetList::List::concat_string(items[:primary_database])}'</script>' #{WidgetList::List::is_sequel(items[:primary_database]) ? " as #{items[:column_alias]} " : ""}]
|
|
3424
3423
|
else
|
|
3425
3424
|
link = %[#{WidgetList::List::concat_inner(items[:primary_database])}"<a style='cursor:pointer;color:#{items[:link_color]};' class='#{items[:column_alias]}_drill#{items[:column_class]}' onclick='#{items[:js_function_name]}(#{WidgetList::List::double_quote(items[:primary_database])}#{items[:drill_down_name]}#{WidgetList::List::double_quote(items[:primary_database])}, ListDrillDownGetRowValue(this) ,#{WidgetList::List::double_quote(items[:primary_database])}#{items[:list_id]}#{WidgetList::List::double_quote(items[:primary_database])}#{items[:extra_js_func_params]});#{items[:extra_function]}'>"#{WidgetList::List::concat_string(items[:primary_database])}#{items[:column_to_show]}#{WidgetList::List::concat_string(items[:primary_database])}"</a><script class='val-db' type='text'>"#{WidgetList::List::concat_string(items[:primary_database])} #{items[:data_to_pass_from_view]} #{WidgetList::List::concat_string(items[:primary_database])}"</script>"#{WidgetList::List::concat_outer(items[:primary_database])} #{WidgetList::List::is_sequel(items[:primary_database]) ? " as #{items[:column_alias]} " : ""}]
|
|
3426
3425
|
end
|
|
3427
3426
|
end
|
|
3428
3427
|
|
|
3429
|
-
if
|
|
3428
|
+
if WidgetList::RequestContext.request.key?('export_widget_list')
|
|
3430
3429
|
link = "#{items[:column_to_show]} #{WidgetList::List::is_sequel(items[:primary_database]) ? " as #{items[:column_alias]} " : ""}"
|
|
3431
3430
|
end
|
|
3432
3431
|
|
|
@@ -3620,7 +3619,7 @@ module WidgetList
|
|
|
3620
3619
|
return "#{function}('#{linkUrl}')"
|
|
3621
3620
|
else
|
|
3622
3621
|
url['SQL_HASH'] = @sqlHash
|
|
3623
|
-
linkUrl = WidgetList::Utils::build_url(@items['pageId'], url, (
|
|
3622
|
+
linkUrl = WidgetList::Utils::build_url(@items['pageId'], url, (!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
|
|
3624
3623
|
if !parameters.empty?
|
|
3625
3624
|
return "#{function}(#{parameters.join(',')})"
|
|
3626
3625
|
else
|
|
@@ -3839,7 +3838,7 @@ module WidgetList
|
|
|
3839
3838
|
}
|
|
3840
3839
|
|
|
3841
3840
|
|
|
3842
|
-
if
|
|
3841
|
+
if WidgetList::RequestContext.request.key?('export_widget_list')
|
|
3843
3842
|
@csv << row_values
|
|
3844
3843
|
end
|
|
3845
3844
|
|
|
@@ -4053,7 +4052,7 @@ module WidgetList
|
|
|
4053
4052
|
}
|
|
4054
4053
|
|
|
4055
4054
|
|
|
4056
|
-
if
|
|
4055
|
+
if WidgetList::RequestContext.request.key?('export_widget_list')
|
|
4057
4056
|
@csv << row_values
|
|
4058
4057
|
end
|
|
4059
4058
|
|
|
@@ -4186,8 +4185,8 @@ module WidgetList
|
|
|
4186
4185
|
clear_sql_session(@items.key?('searchClearAll'))
|
|
4187
4186
|
end
|
|
4188
4187
|
|
|
4189
|
-
if
|
|
4190
|
-
@sequence =
|
|
4188
|
+
if !WidgetList::RequestContext.request.key?('BUTTON_VALUE') && !WidgetList::RequestContext.session['LIST_SEQUENCE'].nil? && WidgetList::RequestContext.session.key?('LIST_SEQUENCE') && WidgetList::RequestContext.session['LIST_SEQUENCE'].key?(@sqlHash) && WidgetList::RequestContext.session['LIST_SEQUENCE'][@sqlHash] > 0
|
|
4189
|
+
@sequence = WidgetList::RequestContext.session['LIST_SEQUENCE'][@sqlHash]
|
|
4191
4190
|
generate_limits
|
|
4192
4191
|
end
|
|
4193
4192
|
|
|
@@ -4201,7 +4200,7 @@ module WidgetList
|
|
|
4201
4200
|
pieces['<!--GROUPBY-->'] = ''
|
|
4202
4201
|
end
|
|
4203
4202
|
|
|
4204
|
-
if !@items['LIST_COL_SORT'].empty? || (
|
|
4203
|
+
if !@items['LIST_COL_SORT'].empty? || (WidgetList::RequestContext.session.key?('LIST_COL_SORT') && WidgetList::RequestContext.session['LIST_COL_SORT'].class.name == 'Hash' && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash))
|
|
4205
4204
|
pieces['<!--ORDERBY-->'] += ' ORDER BY '
|
|
4206
4205
|
foundColumn = false
|
|
4207
4206
|
if ! @items['LIST_COL_SORT'].empty?
|
|
@@ -4209,13 +4208,13 @@ module WidgetList
|
|
|
4209
4208
|
@mongo_sort[(( @items['LIST_COL_SORT'] != 'cnt') ? '_id.' : '') + @items['LIST_COL_SORT']] = (@items['LIST_COL_SORT_ORDER'] == 'ASC') ? 1 : -1 if $is_mongo
|
|
4210
4209
|
pieces['<!--ORDERBY-->'] += tick_field() + strip_aliases(@items['LIST_COL_SORT']) + tick_field() + " " + @items['LIST_COL_SORT_ORDER']
|
|
4211
4210
|
else
|
|
4212
|
-
|
|
4211
|
+
WidgetList::RequestContext.session['LIST_COL_SORT'][@sqlHash].each_with_index { |order,void|
|
|
4213
4212
|
if @items['fields'].key?(order[0])
|
|
4214
4213
|
foundColumn = true
|
|
4215
4214
|
@mongo_sort[((order[0] != 'cnt') ? '_id.' : '') + order[0]] = (order[1] == 'ASC') ? 1 : -1 if $is_mongo
|
|
4216
4215
|
pieces['<!--ORDERBY-->'] += tick_field() + strip_aliases(order[0]) + tick_field() + " " + order[1]
|
|
4217
4216
|
end
|
|
4218
|
-
} if
|
|
4217
|
+
} if WidgetList::RequestContext.session.key?('LIST_COL_SORT') && WidgetList::RequestContext.session['LIST_COL_SORT'].class.name == 'Hash' && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash)
|
|
4219
4218
|
end
|
|
4220
4219
|
|
|
4221
4220
|
# Add base order by
|
|
@@ -4468,17 +4467,20 @@ module WidgetList
|
|
|
4468
4467
|
return 'mongo'
|
|
4469
4468
|
else
|
|
4470
4469
|
if $widget_list_db_conf.key?(db_type)
|
|
4471
|
-
|
|
4470
|
+
database_config = $widget_list_db_conf[db_type]
|
|
4471
|
+
database_config = database_config['primary'] if database_config.key?('primary')
|
|
4472
|
+
adapter = database_config.fetch('adapter', '').to_s
|
|
4473
|
+
if adapter.include?('mysql')
|
|
4472
4474
|
return 'mysql'
|
|
4473
|
-
elsif
|
|
4475
|
+
elsif adapter.include?('postgres')
|
|
4474
4476
|
return 'postgres'
|
|
4475
|
-
elsif
|
|
4477
|
+
elsif adapter.include?('oracle')
|
|
4476
4478
|
return 'oracle'
|
|
4477
|
-
elsif
|
|
4479
|
+
elsif adapter.include?('sqlite')
|
|
4478
4480
|
return 'sqlite'
|
|
4479
|
-
elsif
|
|
4481
|
+
elsif adapter.include?('sqlserver')
|
|
4480
4482
|
return 'sqlserver'
|
|
4481
|
-
elsif
|
|
4483
|
+
elsif adapter.include?('ibm')
|
|
4482
4484
|
return 'db2'
|
|
4483
4485
|
end
|
|
4484
4486
|
end
|
|
@@ -4492,7 +4494,13 @@ module WidgetList
|
|
|
4492
4494
|
|
|
4493
4495
|
def self.load_widget_list_yml
|
|
4494
4496
|
if $widget_list_conf.nil?
|
|
4495
|
-
|
|
4497
|
+
config_file = Rails.root.join('config', 'widget-list.yml')
|
|
4498
|
+
$widget_list_conf = if config_file.file?
|
|
4499
|
+
YAML.safe_load(ERB.new(File.read(config_file)).result,
|
|
4500
|
+
permitted_classes: [Symbol], aliases: true).fetch(Rails.env).transform_keys(&:to_sym)
|
|
4501
|
+
else
|
|
4502
|
+
{ primary: Rails.env, secondary: false, api_mode: false }
|
|
4503
|
+
end
|
|
4496
4504
|
if Rails.root.join("app/helpers", "widget_list_helper.rb").file?
|
|
4497
4505
|
require Rails.root.join("app/helpers", "widget_list_helper.rb")
|
|
4498
4506
|
end
|
|
@@ -4503,10 +4511,11 @@ module WidgetList
|
|
|
4503
4511
|
if $widget_list_db_conf.nil?
|
|
4504
4512
|
if Rails.root.join("config", "mongoid.yml").file?
|
|
4505
4513
|
$is_mongo = true
|
|
4506
|
-
$widget_list_db_conf = YAML.
|
|
4514
|
+
$widget_list_db_conf = YAML.safe_load(ERB.new(File.read(Rails.root.join("config", "mongoid.yml"))).result,
|
|
4515
|
+
aliases: true)
|
|
4507
4516
|
else
|
|
4508
4517
|
$is_mongo = false
|
|
4509
|
-
$widget_list_db_conf =
|
|
4518
|
+
$widget_list_db_conf = Rails.application.config.database_configuration
|
|
4510
4519
|
end
|
|
4511
4520
|
end
|
|
4512
4521
|
end
|
|
@@ -4533,8 +4542,8 @@ module WidgetList
|
|
|
4533
4542
|
end
|
|
4534
4543
|
if (@is_primary_sequel && @items['database'] == 'primary') || (@is_secondary_sequel && @items['database'] == 'secondary')
|
|
4535
4544
|
return @items['view']
|
|
4536
|
-
elsif $is_mongo ||
|
|
4537
|
-
@active_record_model = @items['view'].
|
|
4545
|
+
elsif $is_mongo || @items['view'].respond_to?(:to_sql)
|
|
4546
|
+
@active_record_model = @items['view'].klass if initializing && @items['view'].respond_to?(:klass)
|
|
4538
4547
|
new_columns = []
|
|
4539
4548
|
|
|
4540
4549
|
@items['fields'].each { |column, fieldTitle|
|
|
@@ -4570,7 +4579,7 @@ module WidgetList
|
|
|
4570
4579
|
if $is_mongo
|
|
4571
4580
|
return ''
|
|
4572
4581
|
else
|
|
4573
|
-
view = @items['view'].
|
|
4582
|
+
view = @items['view'].to_sql
|
|
4574
4583
|
sql_from = view[view.index(/FROM/),view.length]
|
|
4575
4584
|
view = "SELECT #{new_columns.join(',')} " + sql_from
|
|
4576
4585
|
where = ''
|
|
@@ -4589,16 +4598,9 @@ module WidgetList
|
|
|
4589
4598
|
|
|
4590
4599
|
@has_connected = true
|
|
4591
4600
|
begin
|
|
4592
|
-
|
|
4593
|
-
|
|
4594
|
-
|
|
4595
|
-
throw 'Configuration file widget-list.yml has no data. Check that (' + Rails.env + ') Rails.env matches the pointers in the file'
|
|
4596
|
-
end
|
|
4597
|
-
@primary_conn = $widget_list_conf[:primary]
|
|
4598
|
-
@secondary_conn = $widget_list_conf[:secondary]
|
|
4599
|
-
else
|
|
4600
|
-
throw 'widget-list.yml not found'
|
|
4601
|
-
end
|
|
4601
|
+
WidgetList::List.load_widget_list_yml
|
|
4602
|
+
@primary_conn = $widget_list_conf[:primary]
|
|
4603
|
+
@secondary_conn = $widget_list_conf[:secondary]
|
|
4602
4604
|
|
|
4603
4605
|
@is_primary_sequel = true
|
|
4604
4606
|
@is_secondary_sequel = true
|
|
@@ -4644,11 +4646,7 @@ module WidgetList
|
|
|
4644
4646
|
else
|
|
4645
4647
|
database_conn = $widget_list_conf[:secondary]
|
|
4646
4648
|
end
|
|
4647
|
-
|
|
4648
|
-
if database_conn != false && ! database_conn.include?('://')
|
|
4649
|
-
is_sequel = false
|
|
4650
|
-
end
|
|
4651
|
-
return is_sequel
|
|
4649
|
+
database_conn.is_a?(String) && database_conn.include?('://')
|
|
4652
4650
|
end
|
|
4653
4651
|
|
|
4654
4652
|
def self.get_sequel(primary=true)
|
|
@@ -4687,4 +4685,4 @@ module WidgetList
|
|
|
4687
4685
|
|
|
4688
4686
|
end
|
|
4689
4687
|
|
|
4690
|
-
end
|
|
4688
|
+
end
|