widget_list 1.0.5 → 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.idea/workspace.xml +98 -73
- data/README.md +248 -227
- data/lib/widget_list/engine.rb +1 -1
- data/lib/widget_list/version.rb +1 -1
- data/lib/widget_list.rb +293 -240
- data/publish_gem.sh +37 -0
- data/vendor/assets/images/gobblecons/teal/arrow-16.png +0 -0
- data/vendor/assets/images/gobblecons/teal/share-arrows-24-left.png +0 -0
- data/vendor/assets/images/gobblecons/teal/share-arrows-24.png +0 -0
- data/vendor/assets/images/head-gradient.gif +0 -0
- data/vendor/assets/javascripts/widget_list.js +527 -510
- data/vendor/assets/stylesheets/widget_list.css +33 -10
- metadata +6 -2
data/README.md
CHANGED
@@ -82,6 +82,9 @@ I recommend if you use widget_list in production that you use config.consider_al
|
|
82
82
|
|
83
83
|
Add config/routes.rb if it is not in there:
|
84
84
|
match ':controller(/:action)'
|
85
|
+
|
86
|
+
Ensure that sessions are loaded into active record because widget_list keeps track of several settings on each list for each session
|
87
|
+
config.session_store :active_record_store
|
85
88
|
|
86
89
|
Add the example shown below to app/controllers/widget_list_examples_controller.rb#ruby_items
|
87
90
|
|
@@ -93,21 +96,22 @@ I recommend if you use widget_list in production that you use config.consider_al
|
|
93
96
|
#
|
94
97
|
# Load Sample "items" Data. Comment out in your first time executing a widgetlist to create the items table
|
95
98
|
#
|
96
|
-
begin
|
99
|
+
begin
|
97
100
|
WidgetList::List.get_database.create_table :items do
|
98
101
|
primary_key :id
|
99
102
|
String :name
|
100
103
|
Float :price
|
101
|
-
|
104
|
+
Fixnum :sku
|
105
|
+
String :active
|
102
106
|
Date :date_added
|
103
107
|
end
|
104
108
|
items = WidgetList::List.get_database[:items]
|
105
109
|
100.times {
|
106
|
-
items.insert(:name => '
|
107
|
-
items.insert(:name => '
|
108
|
-
items.insert(:name => '
|
109
|
-
items.insert(:name => '
|
110
|
-
items.insert(:name => '
|
110
|
+
items.insert(:name => 'ab\'c_quoted_' + rand(35).to_s, :price => rand * 100, :date_added => '2008-02-01', :sku => rand(9999), :active => 'Yes')
|
111
|
+
items.insert(:name => '12"3_' + rand(35).to_s, :price => rand * 100, :date_added => '2008-02-02', :sku => rand(9999), :active => 'Yes')
|
112
|
+
items.insert(:name => 'asdf_' + rand(35).to_s, :price => rand * 100, :date_added => '2008-02-03', :sku => rand(9999), :active => 'Yes')
|
113
|
+
items.insert(:name => 'qwerty_' + rand(35).to_s, :price => rand * 100, :date_added => '2008-02-04', :sku => rand(9999), :active => 'No')
|
114
|
+
items.insert(:name => 'meow_' + rand(35).to_s, :price => rand * 100, :date_added => '2008-02-05', :sku => rand(9999), :active => 'No')
|
111
115
|
}
|
112
116
|
rescue Exception => e
|
113
117
|
#
|
@@ -115,251 +119,268 @@ I recommend if you use widget_list in production that you use config.consider_al
|
|
115
119
|
#
|
116
120
|
logger.info "Test table in items already exists? " + e.to_s
|
117
121
|
end
|
118
|
-
|
119
|
-
list_parms = {}
|
120
122
|
|
121
|
-
|
122
|
-
# Give it a name, some SQL to feed widget_list and set a noDataMessage
|
123
|
-
#
|
124
|
-
list_parms['name'] = 'ruby_items_yum'
|
123
|
+
begin
|
125
124
|
|
126
|
-
|
127
|
-
# Handle Dynamic Filters
|
128
|
-
#
|
129
|
-
if $_REQUEST.key?('switch_grouping') && $_REQUEST['switch_grouping'] == 'Item Name'
|
130
|
-
groupByFilter = 'item'
|
131
|
-
countSQL = 'COUNT(1) as cnt,'
|
132
|
-
groupBySQL = 'GROUP BY name'
|
133
|
-
elsif $_REQUEST.key?('switch_grouping') && $_REQUEST['switch_grouping'] == 'Sku Number'
|
134
|
-
groupByFilter = 'sku'
|
135
|
-
countSQL = 'COUNT(1) as cnt,'
|
136
|
-
groupBySQL = 'GROUP BY sku'
|
137
|
-
else
|
138
|
-
groupByFilter = 'none'
|
139
|
-
countSQL = ''
|
140
|
-
groupBySQL = ''
|
141
|
-
end
|
125
|
+
list_parms = {}
|
142
126
|
|
143
|
-
|
144
|
-
|
127
|
+
#
|
128
|
+
# Give it a name, some SQL to feed widget_list and set a noDataMessage
|
129
|
+
#
|
130
|
+
list_parms['name'] = 'ruby_items_yum'
|
145
131
|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
132
|
+
#
|
133
|
+
# Handle Dynamic Filters
|
134
|
+
#
|
135
|
+
if $_REQUEST.key?('switch_grouping') && $_REQUEST['switch_grouping'] == 'Item Name'
|
136
|
+
groupByFilter = 'item'
|
137
|
+
countSQL = 'COUNT(1) as cnt,'
|
138
|
+
groupBySQL = 'GROUP BY name'
|
139
|
+
groupByDesc = ' (Grouped By Name)'
|
140
|
+
elsif $_REQUEST.key?('switch_grouping') && $_REQUEST['switch_grouping'] == 'Sku Number'
|
141
|
+
groupByFilter = 'sku'
|
142
|
+
countSQL = 'COUNT(1) as cnt,'
|
143
|
+
groupBySQL = 'GROUP BY sku'
|
144
|
+
groupByDesc = ' (Grouped By Sku Number)'
|
145
|
+
else
|
146
|
+
groupByFilter = 'none'
|
147
|
+
countSQL = ''
|
148
|
+
groupBySQL = ''
|
149
|
+
groupByDesc = ''
|
150
|
+
end
|
152
151
|
|
152
|
+
list_parms['filter'] = []
|
153
|
+
list_parms['bindVars'] = []
|
154
|
+
drillDown, filterValue = WidgetList::List::get_filter_and_drilldown(list_parms['name'])
|
155
|
+
|
156
|
+
case drillDown
|
157
|
+
when 'filter_by_name'
|
158
|
+
list_parms['filter'] << " name = ? "
|
159
|
+
list_parms['bindVars'] << filterValue
|
160
|
+
list_parms['listDescription'] = WidgetList::List::drill_down_back(list_parms['name']) + ' Filtered by Name (' + filterValue + ')' + groupByDesc
|
161
|
+
when 'filter_by_sku'
|
162
|
+
list_parms['filter'] << " sku = ? "
|
163
|
+
list_parms['bindVars'] << filterValue
|
164
|
+
list_parms['listDescription'] = WidgetList::List::drill_down_back(list_parms['name']) + ' Filtered by SKU (' + filterValue + ')' + groupByDesc
|
165
|
+
else
|
166
|
+
list_parms['listDescription'] = ''
|
167
|
+
list_parms['listDescription'] = WidgetList::List::drill_down_back(list_parms['name']) if !groupByDesc.empty?
|
168
|
+
list_parms['listDescription'] += 'Showing All Ruby Items' + groupByDesc
|
169
|
+
end
|
153
170
|
|
154
171
|
|
155
|
-
#
|
156
|
-
# Setup your first widget_list
|
157
|
-
#
|
158
172
|
|
159
|
-
|
173
|
+
#
|
174
|
+
# Setup your first widget_list
|
175
|
+
#
|
160
176
|
|
161
|
-
|
162
|
-
# action_buttons will add buttons to the bottom of the list.
|
163
|
-
#
|
177
|
+
button_column_name = 'actions'
|
164
178
|
|
165
|
-
|
179
|
+
#
|
180
|
+
# action_buttons will add buttons to the bottom of the list.
|
181
|
+
#
|
166
182
|
|
167
|
-
|
168
|
-
# Give some SQL to feed widget_list and set a noDataMessage
|
169
|
-
#
|
170
|
-
list_parms['searchIdCol'] = ['id','sku']
|
171
|
-
list_parms['view'] = '(
|
172
|
-
SELECT
|
173
|
-
' + countSQL + '
|
174
|
-
' + WidgetList::List::build_drill_down_link(list_parms['name'],'filter_by_name','a.name','a.name','name_linked') + '
|
175
|
-
' + WidgetList::List::build_drill_down_link(list_parms['name'],'filter_by_sku','a.sku','a.sku','sku_linked') + '
|
176
|
-
\'\' AS checkbox,
|
177
|
-
a.id AS id,
|
178
|
-
a.name AS name,
|
179
|
-
a.sku AS sku,
|
180
|
-
a.price AS price,
|
181
|
-
a.date_added AS date_added
|
182
|
-
FROM
|
183
|
-
items a
|
184
|
-
' + groupBySQL + '
|
185
|
-
) a'
|
186
|
-
list_parms['noDataMessage'] = 'No Ruby Items Found'
|
187
|
-
list_parms['title'] = 'Ruby Items!!!'
|
183
|
+
action_buttons = WidgetList::Widgets::widget_button('Add New Item', {'page' => '/add/'} ) + WidgetList::Widgets::widget_button('Do something else', {'page' => '/else/'} )
|
188
184
|
|
189
|
-
|
190
|
-
|
191
|
-
|
185
|
+
#
|
186
|
+
# Give some SQL to feed widget_list and set a noDataMessage
|
187
|
+
#
|
188
|
+
list_parms['searchIdCol'] = ['id','sku']
|
189
|
+
list_parms['view'] = '(
|
190
|
+
SELECT
|
191
|
+
' + countSQL + '
|
192
|
+
\'\' AS checkbox,
|
193
|
+
' + WidgetList::List::build_drill_down_link(list_parms['name'],'filter_by_name','a.name','a.name','name_linked') + '
|
194
|
+
' + WidgetList::List::build_drill_down_link(list_parms['name'],'filter_by_sku','a.sku','a.sku','sku_linked') + '
|
195
|
+
a.id AS id,
|
196
|
+
a.active AS active,
|
197
|
+
a.name AS name,
|
198
|
+
a.sku AS sku,
|
199
|
+
a.price AS price,
|
200
|
+
a.date_added AS date_added
|
201
|
+
FROM
|
202
|
+
items a
|
203
|
+
' + groupBySQL + '
|
204
|
+
) a'
|
205
|
+
list_parms['noDataMessage'] = 'No Ruby Items Found'
|
206
|
+
list_parms['title'] = 'Ruby Items!!!'
|
207
|
+
|
208
|
+
#
|
209
|
+
# Create small button array and pass to the buttons key
|
210
|
+
#
|
192
211
|
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
212
|
+
mini_buttons = {}
|
213
|
+
mini_buttons['button_edit'] = {'page' => '/edit',
|
214
|
+
'text' => 'Edit',
|
215
|
+
'function' => 'Redirect',
|
216
|
+
#pass tags to pull from each column when building the URL
|
217
|
+
'tags' => {'my_key_name' => 'name','value_from_database'=>'price'}}
|
218
|
+
|
219
|
+
mini_buttons['button_delete'] = {'page' => '/delete',
|
220
|
+
'text' => 'Delete',
|
221
|
+
'function' => 'alert',
|
222
|
+
'innerClass' => 'danger'}
|
223
|
+
list_parms['buttons'] = {button_column_name => mini_buttons}
|
224
|
+
list_parms['fieldFunction'] = {
|
225
|
+
button_column_name => "''",
|
226
|
+
'date_added' => ['postgres','oracle'].include?(WidgetList::List.get_database.db_type) ? "TO_CHAR(date_added, 'MM/DD/YYYY')" : "date_added"
|
227
|
+
}
|
228
|
+
|
229
|
+
list_parms['groupByItems'] = ['All Records', 'Item Name', 'Sku Number']
|
210
230
|
|
211
|
-
|
212
|
-
|
213
|
-
|
231
|
+
#
|
232
|
+
# Generate a template for the DOWN ARROW for CUSTOM FILTER
|
233
|
+
#
|
234
|
+
input = {}
|
235
|
+
|
236
|
+
input['id'] = 'comments'
|
237
|
+
input['name'] = 'comments'
|
238
|
+
input['width'] = '170'
|
239
|
+
input['max_length'] = '500'
|
240
|
+
input['input_class'] = 'info-input'
|
241
|
+
input['title'] = 'Optional CSV list'
|
242
|
+
|
243
|
+
button_search = {}
|
244
|
+
button_search['onclick'] = "alert('This would search, but is not coded. That is for you to do')"
|
245
|
+
|
246
|
+
list_parms['list_search_form'] = WidgetList::Utils::fill( {
|
247
|
+
'<!--BUTTON_SEARCH-->' => WidgetList::Widgets::widget_button('Search', button_search),
|
248
|
+
'<!--COMMENTS-->' => WidgetList::Widgets::widget_input(input),
|
249
|
+
'<!--BUTTON_CLOSE-->' => "HideAdvancedSearch(this)" } ,
|
250
|
+
'
|
251
|
+
<div id="advanced-search-container">
|
252
|
+
<div class="widget-search-drilldown-close" onclick="<!--BUTTON_CLOSE-->">X</div>
|
253
|
+
<ul class="advanced-search-container-inline" id="search_columns">
|
254
|
+
<li>
|
255
|
+
<div>Search Comments</div>
|
256
|
+
<!--COMMENTS-->
|
257
|
+
</li>
|
258
|
+
</ul>
|
259
|
+
<br/>
|
260
|
+
<div style="text-align:right;width:100%;height:30px;" class="advanced-search-container-buttons"><!--BUTTON_RESET--><!--BUTTON_SEARCH--></div>
|
261
|
+
</div>')
|
214
262
|
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
input['id'] = 'comments'
|
219
|
-
input['name'] = 'comments'
|
220
|
-
input['width'] = '170'
|
221
|
-
input['max_length'] = '500'
|
222
|
-
input['input_class'] = 'info-input'
|
223
|
-
input['title'] = 'Optional CSV list'
|
224
|
-
|
225
|
-
button_search = {}
|
226
|
-
button_search['innerClass'] = "success btn-submit"
|
227
|
-
button_search['onclick'] = "alert('This would search, but is not coded. That is for you to do')"
|
228
|
-
|
229
|
-
list_parms['list_search_form'] = WidgetList::Utils::fill( {
|
230
|
-
'<!--COMMENTS-->' => WidgetList::Widgets::widget_input(input),
|
231
|
-
'<!--BUTTON_SEARCH-->' => WidgetList::Widgets::widget_button('Search', button_search),
|
232
|
-
'<!--BUTTON_CLOSE-->' => "HideAdvancedSearch(this)" } ,
|
233
|
-
'
|
234
|
-
<div id="advanced-search-container">
|
235
|
-
<div class="widget-search-drilldown-close" onclick="<!--BUTTON_CLOSE-->">X</div>
|
236
|
-
<ul class="advanced-search-container-inline" id="search_columns">
|
237
|
-
<li>
|
238
|
-
<div>Search Comments</div>
|
239
|
-
<!--COMMENTS-->
|
240
|
-
</li>
|
241
|
-
</ul>
|
242
|
-
<br/>
|
243
|
-
<div style="text-align:right;width:100%;height:30px;" class="advanced-search-container-buttons"><!--BUTTON_RESET--><!--BUTTON_SEARCH--></div>
|
244
|
-
</div>')
|
263
|
+
#
|
264
|
+
# Control widths of special fields
|
265
|
+
#
|
245
266
|
|
246
|
-
|
247
|
-
|
248
|
-
|
267
|
+
list_parms['columnWidth'] = {
|
268
|
+
'date_added'=>'200px',
|
269
|
+
'sku_linked'=>'20px',
|
270
|
+
}
|
249
271
|
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
}
|
254
|
-
})
|
255
|
-
|
256
|
-
list_parms.deep_merge!({'fields' =>
|
257
|
-
{
|
258
|
-
'cnt'=> 'Total Items In Group',
|
259
|
-
}
|
260
|
-
}) if groupByFilter != 'none'
|
261
|
-
|
262
|
-
list_parms.deep_merge!({'fields' =>
|
263
|
-
{
|
264
|
-
'id'=> 'Item Id',
|
265
|
-
}
|
266
|
-
}) if groupByFilter == 'none'
|
267
|
-
|
268
|
-
list_parms.deep_merge!({'fields' =>
|
269
|
-
{
|
270
|
-
'name_linked'=> 'Name',
|
271
|
-
}
|
272
|
-
}) if groupByFilter == 'none' or groupByFilter == 'item'
|
273
|
-
|
274
|
-
list_parms.deep_merge!({'fields' =>
|
275
|
-
{
|
276
|
-
'price'=> 'Price of Item',
|
277
|
-
}
|
278
|
-
}) if groupByFilter == 'none'
|
279
|
-
|
280
|
-
list_parms.deep_merge!({'fields' =>
|
281
|
-
{
|
282
|
-
'sku_linked'=> 'Sku #',
|
283
|
-
}
|
284
|
-
}) if groupByFilter == 'none' or groupByFilter == 'sku'
|
285
|
-
|
286
|
-
list_parms.deep_merge!({'fields' =>
|
287
|
-
{
|
288
|
-
'date_added'=> 'Date Added',
|
289
|
-
}
|
290
|
-
}) if groupByFilter == 'none'
|
291
|
-
|
292
|
-
list_parms.deep_merge!({'fields' =>
|
293
|
-
{
|
294
|
-
button_column_name => button_column_name.capitalize,
|
295
|
-
}
|
296
|
-
})
|
272
|
+
#
|
273
|
+
# If certain statuses of records are shown, visualize
|
274
|
+
#
|
297
275
|
|
298
|
-
|
299
|
-
|
300
|
-
|
276
|
+
list_parms.deep_merge!({'rowStylesByStatus' =>
|
277
|
+
{'active'=>
|
278
|
+
{'Yes' => '' }
|
279
|
+
}
|
280
|
+
})
|
281
|
+
list_parms.deep_merge!({'rowStylesByStatus' =>
|
282
|
+
{'active'=>
|
283
|
+
{'No' => 'font-style:italic;color:red;' }
|
284
|
+
}
|
285
|
+
})
|
286
|
+
|
287
|
+
#
|
288
|
+
# Map out the visible fields
|
289
|
+
#
|
290
|
+
list_parms['fields'] = {}
|
291
|
+
list_parms['fields']['checkbox'] = 'checkbox_header'
|
292
|
+
list_parms['fields']['cnt'] = 'Total Items In Group' if groupByFilter != 'none'
|
293
|
+
list_parms['fields']['id'] = 'Item Id' if groupByFilter == 'none'
|
294
|
+
list_parms['fields']['name_linked'] = 'Name' if groupByFilter == 'none' or groupByFilter == 'item'
|
295
|
+
list_parms['fields']['price'] = 'Price of Item' if groupByFilter == 'none'
|
296
|
+
list_parms['fields']['sku_linked'] = 'Sku #' if groupByFilter == 'none' or groupByFilter == 'sku'
|
297
|
+
list_parms['fields']['date_added'] = 'Date Added' if groupByFilter == 'none'
|
298
|
+
list_parms['fields']['active'] = 'Active Item' if groupByFilter == 'none'
|
299
|
+
list_parms['fields'][button_column_name] = button_column_name.capitalize if groupByFilter == 'none'
|
300
|
+
|
301
|
+
|
302
|
+
list_parms['columnPopupTitle'] = {}
|
303
|
+
list_parms['columnPopupTitle']['checkbox'] = 'Select any record'
|
304
|
+
list_parms['columnPopupTitle']['cnt'] = 'Total Count'
|
305
|
+
list_parms['columnPopupTitle']['id'] = 'The primary key of the item'
|
306
|
+
list_parms['columnPopupTitle']['name_linked'] = 'Name (Click to drill down)'
|
307
|
+
list_parms['columnPopupTitle']['price'] = 'Price of item (not formatted)'
|
308
|
+
list_parms['columnPopupTitle']['sku_linked'] = 'Sku # (Click to drill down)'
|
309
|
+
list_parms['columnPopupTitle']['date_added'] = 'The date the item was added to the database'
|
310
|
+
list_parms['columnPopupTitle']['active'] = 'Is the item active?'
|
311
|
+
#
|
312
|
+
# Setup a custom field for checkboxes stored into the session and reloaded when refresh occurs
|
313
|
+
#
|
301
314
|
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
list = WidgetList::List.new(list_parms)
|
315
|
+
list_parms.deep_merge!({'inputs' =>
|
316
|
+
{'checkbox'=>
|
317
|
+
{'type' => 'checkbox'
|
318
|
+
}
|
319
|
+
}
|
320
|
+
})
|
321
|
+
|
322
|
+
list_parms.deep_merge!({'inputs' =>
|
323
|
+
{'checkbox'=>
|
324
|
+
{'items' =>
|
325
|
+
{
|
326
|
+
'name' => 'visible_checks[]',
|
327
|
+
'value' => 'id', #the value should be a column name mapping
|
328
|
+
'class_handle' => 'info_tables',
|
329
|
+
}
|
330
|
+
}
|
331
|
+
}
|
332
|
+
})
|
333
|
+
|
334
|
+
list_parms.deep_merge!({'inputs' =>
|
335
|
+
{'checkbox_header'=>
|
336
|
+
{'type' => 'checkbox'
|
337
|
+
}
|
338
|
+
}
|
339
|
+
})
|
340
|
+
|
341
|
+
list_parms.deep_merge!({'inputs' =>
|
342
|
+
{'checkbox_header'=>
|
343
|
+
{'items' =>
|
344
|
+
{
|
345
|
+
'check_all' => true,
|
346
|
+
'id' => 'info_tables_check_all',
|
347
|
+
'class_handle' => 'info_tables',
|
348
|
+
}
|
349
|
+
}
|
350
|
+
}
|
351
|
+
})
|
352
|
+
list = WidgetList::List.new(list_parms)
|
341
353
|
|
342
|
-
#
|
343
|
-
# If AJAX, send back JSON
|
344
|
-
#
|
345
|
-
if $_REQUEST.key?('BUTTON_VALUE') && $_REQUEST['LIST_NAME'] == list_parms['name']
|
346
|
-
if $_REQUEST.key?('export_widget_list')
|
347
|
-
send_data(list.render(), :filename => list_parms['name'] + '.csv')
|
348
|
-
return
|
349
|
-
end
|
350
|
-
|
351
|
-
ret = {}
|
352
|
-
ret['list'] = WidgetList::Utils::fill({ '<!--CUSTOM_CONTENT-->' => action_buttons } , list.render() )
|
353
|
-
ret['list_id'] = list_parms['name']
|
354
|
-
ret['callback'] = 'ListSearchAheadResponse'
|
355
|
-
return render :inline => WidgetList::Utils::json_encode(ret)
|
356
|
-
else
|
357
354
|
#
|
358
|
-
#
|
355
|
+
# If AJAX, send back JSON
|
359
356
|
#
|
357
|
+
if $_REQUEST.key?('BUTTON_VALUE') && $_REQUEST['LIST_NAME'] == list_parms['name']
|
358
|
+
|
359
|
+
if $_REQUEST.key?('export_widget_list')
|
360
|
+
send_data(list.render(), :filename => list_parms['name'] + '.csv')
|
361
|
+
return
|
362
|
+
end
|
363
|
+
|
364
|
+
ret = {}
|
365
|
+
ret['list'] = WidgetList::Utils::fill({ '<!--CUSTOM_CONTENT-->' => action_buttons } , list.render() )
|
366
|
+
ret['list_id'] = list_parms['name']
|
367
|
+
ret['callback'] = 'ListSearchAheadResponse'
|
368
|
+
return render :inline => WidgetList::Utils::json_encode(ret)
|
369
|
+
else
|
370
|
+
#
|
371
|
+
# Else assign to variable for view
|
372
|
+
#
|
373
|
+
@output = WidgetList::Utils::fill({ '<!--CUSTOM_CONTENT-->' => action_buttons } , list.render() )
|
374
|
+
end
|
375
|
+
|
376
|
+
rescue Exception => e
|
377
|
+
|
378
|
+
list = WidgetList::List.new(list_parms)
|
360
379
|
@output = WidgetList::Utils::fill({ '<!--CUSTOM_CONTENT-->' => action_buttons } , list.render() )
|
380
|
+
|
361
381
|
end
|
362
382
|
|
383
|
+
|
363
384
|
## Contributing
|
364
385
|
|
365
386
|
1. Fork it
|
data/lib/widget_list/engine.rb
CHANGED
data/lib/widget_list/version.rb
CHANGED