widget_list 1.0.7 → 1.0.8

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.
data/README.md CHANGED
@@ -245,11 +245,13 @@ Style a row based on the value of the column.
245
245
  ### Example Calling Page That Sets up Config and calls WidgetList.render
246
246
 
247
247
 
248
+
248
249
  #
249
250
  # Load Sample "items" Data. Comment out in your first time executing a widgetlist to create the items table
250
251
  #
252
+ =begin
251
253
  begin
252
- WidgetList::List.get_database.create_table :items do
254
+ WidgetList::List.get_sequel.create_table :items do
253
255
  primary_key :id
254
256
  String :name
255
257
  Float :price
@@ -257,7 +259,7 @@ Style a row based on the value of the column.
257
259
  String :active
258
260
  Date :date_added
259
261
  end
260
- items = WidgetList::List.get_database[:items]
262
+ items = WidgetList::List.get_sequel[:items]
261
263
  100.times {
262
264
  items.insert(:name => 'ab\'c_quoted_' + rand(35).to_s, :price => rand * 100, :date_added => '2008-02-01', :sku => rand(9999), :active => 'Yes')
263
265
  items.insert(:name => '12"3_' + rand(35).to_s, :price => rand * 100, :date_added => '2008-02-02', :sku => rand(9999), :active => 'Yes')
@@ -271,6 +273,7 @@ Style a row based on the value of the column.
271
273
  #
272
274
  logger.info "Test table in items already exists? " + e.to_s
273
275
  end
276
+ =end
274
277
 
275
278
  begin
276
279
 
@@ -344,8 +347,21 @@ Style a row based on the value of the column.
344
347
  list_parms['fieldsHidden'] = ['sku']
345
348
 
346
349
  drill_downs = []
347
- drill_downs << WidgetList::List::build_drill_down_link(list_parms['name'],'filter_by_name','a.name','a.name','name_linked')
348
- drill_downs << WidgetList::List::build_drill_down_link(list_parms['name'],'filter_by_sku','a.sku','a.sku','sku_linked')
350
+
351
+ drill_downs << WidgetList::List::build_drill_down( :list_id => list_parms['name'],
352
+ :drill_down_name => 'filter_by_name',
353
+ :data_to_pass_from_view => 'a.name',
354
+ :column_to_show => 'a.name',
355
+ :column_alias => 'name_linked'
356
+ )
357
+
358
+ drill_downs << WidgetList::List::build_drill_down(
359
+ :list_id => list_parms['name'],
360
+ :drill_down_name => 'filter_by_sku',
361
+ :data_to_pass_from_view => 'a.sku',
362
+ :column_to_show => 'a.sku',
363
+ :column_alias => 'sku_linked'
364
+ )
349
365
 
350
366
  list_parms['view'] = '(
351
367
  SELECT
@@ -379,7 +395,7 @@ Style a row based on the value of the column.
379
395
 
380
396
 
381
397
  list_parms['noDataMessage'] = 'No Ruby Items Found'
382
- list_parms['title'] = 'Ruby Items!!!'
398
+ list_parms['title'] = 'Ruby Items Using Sequel!!!'
383
399
 
384
400
  #
385
401
  # Create small button array and pass to the buttons key
@@ -399,7 +415,7 @@ Style a row based on the value of the column.
399
415
  list_parms['buttons'] = {button_column_name => mini_buttons}
400
416
  list_parms['fieldFunction'] = {
401
417
  button_column_name => "''",
402
- 'date_added' => ['postgres','oracle'].include?(WidgetList::List.get_database.db_type) ? "TO_CHAR(date_added, 'MM/DD/YYYY')" : "date_added"
418
+ 'date_added' => ['postgres','oracle'].include?(WidgetList::List::get_db_type) ? "TO_CHAR(date_added, 'MM/DD/YYYY')" : "date_added"
403
419
  }
404
420
 
405
421
  list_parms['groupByItems'] = ['All Records', 'Item Name', 'Sku Number']
@@ -132,8 +132,9 @@ module Sequel
132
132
  first = 1
133
133
  cnt = 0
134
134
  @final_results = {}
135
-
136
- Rails.logger.info(sql)
135
+ if Rails.env == 'development'
136
+ Rails.logger.info(sql)
137
+ end
137
138
 
138
139
  if self.class.name == 'WidgetListActiveRecord'
139
140
  begin
@@ -1,3 +1,3 @@
1
1
  module WidgetList
2
- VERSION = "1.0.7"
2
+ VERSION = "1.0.8"
3
3
  end
@@ -588,6 +588,24 @@ module WidgetList
588
588
  items
589
589
  end
590
590
 
591
+ def self.validate_items(list,items)
592
+ valid = true
593
+ unless items.empty?
594
+ items.each { |k,v|
595
+ if !list.to_s.empty? && !list.key?(k)
596
+ valid = false
597
+ throw "Required item '#{k.to_s}' only passed in #{items.inspect}"
598
+ end
599
+ }
600
+ end
601
+
602
+ if list.to_s.empty? && !items.empty?
603
+ valid = false
604
+ throw "Required items are needing to be passed #{items.inspect} are all required for this function"
605
+ end
606
+ return valid
607
+ end
608
+
591
609
  # WidgetButton
592
610
  def self.widget_button(text='', list={}, small=false)
593
611
  items = {
data/lib/widget_list.rb CHANGED
@@ -387,7 +387,7 @@ module WidgetList
387
387
  end
388
388
 
389
389
  matchesCurrentList = $_REQUEST.key?('BUTTON_VALUE') && $_REQUEST['BUTTON_VALUE'] == @items['buttonVal']
390
- isSearchRequest = $_REQUEST.key?('search_filter')
390
+ isSearchRequest = $_REQUEST.key?('search_filter') && $_REQUEST['search_filter'] != 'undefined'
391
391
  templateCustomSearch = !@items['templateFilter'].empty? # if you define templateFilter WidgetList will not attempt to build a where clause with search
392
392
 
393
393
  #
@@ -1648,7 +1648,54 @@ module WidgetList
1648
1648
  '<div class="goback" onclick="ListHome(\'' + list_name + '\');" title="Go Back"></div>'
1649
1649
  end
1650
1650
 
1651
+ def self.build_drill_down(*params)
1652
+ required_params = {
1653
+ :list_id => true, # -- your widget_list name (used for JS)
1654
+ :drill_down_name => true, # -- an identifier that is pass for the "column" or "type of drill down" which is passed as $_REQUEST['drill_down'] when the user clicks and returned from get_filter_and_drilldown based on session or request
1655
+ :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
1656
+ :column_to_show => true, # -- The visible column or SQL functions to display to user for the link
1657
+ }
1658
+
1659
+ optional_params = {
1660
+ :column_alias => '', # -- AS XXXX
1661
+ :extra_function => '', # -- Onclick of link, call another JS function after the drill down function is called
1662
+ :js_function_name => 'ListDrillDown', # -- name of JS Function
1663
+ :column_class => '', # -- custom class on the <a> tag
1664
+ :link_color => 'blue', # -- whatever color you want the link to be
1665
+ :extra_js_func_params => '', # -- Add extra params to ListDrillDown outside of the default
1666
+ :primary_database => true, # -- Since this function builds a column before widget_list is instantiated, tell which connection you are using
1667
+ }
1668
+
1669
+ valid = WidgetList::Widgets::validate_items(params[0],required_params)
1670
+ items = WidgetList::Widgets::populate_items(params[0],optional_params)
1671
+
1672
+ if items[:column_alias].empty?
1673
+ items[:column_alias] = items[:column_to_show]
1674
+ end
1675
+
1676
+ if !items[:column_class].empty?
1677
+ items[:column_class] = ' "' + WidgetList::List::concat_string(items[:primary_database]) + items[:column_class] + WidgetList::List::concat_string(items[:primary_database]) + '"'
1678
+ end
1679
+
1680
+ if WidgetList::List.get_db_type(items[:primary_database]) == 'oracle'
1681
+ if $_REQUEST.key?('export_widget_list')
1682
+ link = "#{items[:column_to_show]} #{WidgetList::List::is_sequel(items[:primary_database]) ? " as #{items[:column_alias]} " : ""}"
1683
+ else
1684
+ 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]} " : ""}]
1685
+ end
1686
+ else
1687
+ if $_REQUEST.key?('export_widget_list')
1688
+ link = "#{items[:column_to_show]} #{WidgetList::List::is_sequel(items[:primary_database]) ? " as #{items[:column_alias]} " : ""}"
1689
+ else
1690
+ 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]} " : ""}]
1691
+ end
1692
+ end
1693
+ return link
1694
+
1695
+ end
1696
+
1651
1697
  def self.build_drill_down_link(listId,drillDownName,dataToPassFromView,columnToShow,columnAlias='',extraFunction='',functionName='ListDrillDown',columnClass='',color='blue',extraJSFunctionParams='',primary=true)
1698
+ warn "`build_drill_down_link` is deprecated. Use `build_drill_down` instead."
1652
1699
  if columnAlias.empty?
1653
1700
  columnAlias = columnToShow
1654
1701
  end
@@ -1670,8 +1717,7 @@ module WidgetList
1670
1717
  link = %[#{WidgetList::List::concat_inner(primary)}"<a style='cursor:pointer;color:#{color};' class='#{columnAlias}_drill#{columnClass}' onclick='#{functionName}(#{WidgetList::List::double_quote(primary)}#{drillDownName}#{WidgetList::List::double_quote(primary)}, ListDrillDownGetRowValue(this) ,#{WidgetList::List::double_quote(primary)}#{listId}#{WidgetList::List::double_quote(primary)}#{extraJSFunctionParams});#{extraFunction}'>"#{WidgetList::List::concat_string(primary)}#{columnToShow}#{WidgetList::List::concat_string(primary)}"</a><script class='val-db' type='text'>"#{WidgetList::List::concat_string(primary)} #{dataToPassFromView} #{WidgetList::List::concat_string(primary)}"</script>"#{WidgetList::List::concat_outer(primary)} #{WidgetList::List::is_sequel(primary) ? " as #{columnAlias} " : ""}]
1671
1718
  end
1672
1719
  end
1673
-
1674
-
1720
+ return link
1675
1721
  end
1676
1722
 
1677
1723
  def self.concat_string(primary)
@@ -2319,7 +2365,7 @@ module WidgetList
2319
2365
  end
2320
2366
  end
2321
2367
 
2322
- def self.get_db_type(primary)
2368
+ def self.get_db_type(primary=true)
2323
2369
  WidgetList::List::load_widget_list_yml()
2324
2370
  if primary
2325
2371
  database_conn = $widget_list_conf[:primary]
@@ -2329,13 +2375,13 @@ module WidgetList
2329
2375
  WidgetList::List::determine_db_type(database_conn)
2330
2376
  end
2331
2377
 
2332
- def get_db_type(primary)
2378
+ def get_db_type(primary=true)
2333
2379
  WidgetList::List::get_db_type(primary)
2334
2380
  end
2335
2381
 
2336
2382
  def get_view
2337
2383
  @active_record_model = false
2338
- if @is_sequel
2384
+ if (@is_primary_sequel && @items['database'] == 'primary') || (@is_secondary_sequel && @items['database'] == 'secondary')
2339
2385
  return @items['view']
2340
2386
  elsif @items['view'].respond_to?('scoped') && @items['view'].scoped.respond_to?('to_sql')
2341
2387
  @active_record_model = @items['view'].name.constantize
@@ -2383,6 +2429,7 @@ module WidgetList
2383
2429
  end
2384
2430
 
2385
2431
  def connect
2432
+
2386
2433
  @has_connected = true
2387
2434
  begin
2388
2435
  if Rails.root.join("config", "widget-list.yml").file?
@@ -2396,17 +2443,18 @@ module WidgetList
2396
2443
  throw 'widget-list.yml not found'
2397
2444
  end
2398
2445
 
2399
- @is_sequel = true
2400
- if @primary_conn != false && ! @primary_conn.include?('://')
2401
- @is_sequel = false
2446
+ @is_primary_sequel = true
2447
+ @is_secondary_sequel = true
2448
+ if @primary_conn != false && ! @primary_conn.include?(':/')
2449
+ @is_primary_sequel = false
2402
2450
  end
2403
2451
 
2404
- if @secondary_conn != false && !@secondary_conn.include?('://')
2405
- @is_sequel = false
2452
+ if @secondary_conn != false && !@secondary_conn.include?(':/')
2453
+ @is_secondary_sequel = false
2406
2454
  end
2407
2455
 
2408
2456
  if @primary_conn != false
2409
- if @primary_conn.include?('://')
2457
+ if @primary_conn.include?(':/')
2410
2458
  @widget_list_sequel_conn = Sequel.connect(@primary_conn)
2411
2459
  @widget_list_sequel_conn.db_type = WidgetList::List::determine_db_type(@primary_conn)
2412
2460
  else
@@ -2416,7 +2464,7 @@ module WidgetList
2416
2464
  end
2417
2465
 
2418
2466
  if @secondary_conn != false
2419
- if @secondary_conn.include?('://')
2467
+ if @secondary_conn.include?(':/')
2420
2468
  @widget_list_sequel_conn2 = Sequel.connect(@secondary_conn)
2421
2469
  @widget_list_sequel_conn2.db_type = WidgetList::List::determine_db_type(@secondary_conn)
2422
2470
  else
@@ -2426,7 +2474,7 @@ module WidgetList
2426
2474
  end
2427
2475
 
2428
2476
  rescue Exception => e
2429
- p "widget-list.yml and connection to @widget_list_sequel_conn or @widget_list_sequel_conn2 failed. Please fix and try again (" + e.to_s + ")"
2477
+ Rails.logger.info "widget-list.yml and connection to @widget_list_sequel_conn or @widget_list_sequel_conn2 failed. Please fix and try again (" + e.to_s + ")"
2430
2478
  end
2431
2479
 
2432
2480
  end
@@ -2446,36 +2494,36 @@ module WidgetList
2446
2494
  return is_sequel
2447
2495
  end
2448
2496
 
2497
+ def self.get_sequel(primary=true)
2498
+ WidgetList::List::load_widget_list_yml()
2499
+ if primary
2500
+ Sequel.connect($widget_list_conf[:primary])
2501
+ else
2502
+ Sequel.connect($widget_list_conf[:secondary])
2503
+ end
2504
+ end
2505
+
2449
2506
  def get_database
2450
2507
 
2451
2508
  if @has_connected.nil?
2452
2509
  connect
2453
2510
  end
2454
2511
 
2455
- if @is_sequel
2456
- begin
2457
- if @widget_list_sequel_conn.class.name.to_s.split('::').first == 'Sequel'
2458
- if @current_db_selection == 'primary' || @current_db_selection.nil?
2459
- @widget_list_sequel_conn.test_connection
2460
- end
2461
- if @current_db_selection == 'secondary'
2462
- @widget_list_sequel_conn2.test_connection
2463
- end
2464
- else
2465
- connect
2466
- end
2467
- rescue
2468
- connect
2469
- end
2512
+ if @is_primary_sequel && @widget_list_sequel_conn.class.name.to_s.split('::').first == 'Sequel' && @current_db_selection == 'primary' || @current_db_selection.nil?
2513
+ @widget_list_sequel_conn.test_connection
2514
+ end
2515
+
2516
+ if @is_secondary_sequel && @widget_list_sequel_conn2.class.name.to_s.split('::').first == 'Sequel' && @current_db_selection == 'secondary'
2517
+ @widget_list_sequel_conn2.test_connection
2470
2518
  end
2471
2519
 
2472
2520
  case @current_db_selection
2473
2521
  when 'primary'
2474
- return (@is_sequel) ? @widget_list_sequel_conn : @widget_list_ar_conn
2522
+ return (@is_primary_sequel) ? @widget_list_sequel_conn : @widget_list_ar_conn
2475
2523
  when 'secondary'
2476
- return (@is_sequel) ? @widget_list_sequel_conn2 : @widget_list_ar_conn2
2524
+ return (@is_secondary_sequel) ? @widget_list_sequel_conn2 : @widget_list_ar_conn2
2477
2525
  else
2478
- return (@is_sequel) ? @widget_list_sequel_conn : @widget_list_ar_conn
2526
+ return (@is_primary_sequel) ? @widget_list_sequel_conn : @widget_list_ar_conn
2479
2527
  end
2480
2528
 
2481
2529
  end
@@ -633,7 +633,7 @@ div.inputOuter .inputInner input.search-ahead {width:97%}
633
633
  * Search Ahead Magifier Glass
634
634
  */
635
635
  .widget-search-magnifier {background: url('../assets/images/gobblecons/mid-gray/search-16.png') no-repeat scroll 0px 0px transparent;float:right;margin:7px;position: relative;right:-13px;top:-30px;cursor:pointer;border:0px solid red;height:20px;width:20px}
636
- .widget-search-magnifier:hover {background: url('../assets/images/gobblecons/teal/search-16.png') no-repeat scroll 0px 0px transparent}
636
+ .widget-search-magnifier:hover {background: url('../assets/images/gobblecons/mid-gray/search-16.png') no-repeat scroll 0px 0px transparent}
637
637
 
638
638
  /**
639
639
  * Advanced Search Close Button
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: widget_list
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-18 00:00:00.000000000 Z
12
+ date: 2013-02-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sequel