table_on_steroids 0.1.1.2 → 0.1.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c9d0db1565b5c92a644b129ec08263c56cb174ce00de3a415111d3683cf65958
4
- data.tar.gz: b5db441dbd5e78723cd4ca3d7ae59737784fc0363e28915b3cb4d16825aa5e9b
3
+ metadata.gz: c9c5c3440b05a59bd943f908ac5b945b4070bab690e5316339181513c434ecc4
4
+ data.tar.gz: 5e9ab8b1e41d446dfe14184c2e898d1097f2e068416a69c5104d042a17098663
5
5
  SHA512:
6
- metadata.gz: 4c1b1094fc0231cec8167781e05e154ccc9fe02e04fc3c14399ecb55b9b91fface474df8897df1cadc8dabc6f617a31319f51ca845bad0b7d703984ca9c6b01b
7
- data.tar.gz: b0574a3eebd51d591b43c3f922155bef2d54c9f585726e5f0d4a4182eab74af5c71ef8b97c472211f8041dfdd381c202a9184119a9d621d570ab1d2665b1b5a7
6
+ metadata.gz: 40e0bdd265c1ea29797b5efdf1778535fee90867dd1b456cebc1d203e0f8c558cf5e1cecec64a06523e7aea431b48756d96fed9f75d9983483d16d319bfc5c99
7
+ data.tar.gz: 60fe2980de7cb7847b7f84da88a0306b6c5ba21469338da8ed1d0e2ee9048c7bd663f30104e1b6741d999c955e1b1b6f05b77beef505c66c8da5e8e8c65b1618
@@ -39,7 +39,10 @@ module TableOnSteroids
39
39
 
40
40
  def filter_and_order(objects, columns_on_steroid, global_search=nil, include_counts=false, all_pages=false )
41
41
  # execute the global search if you have one
42
- objects = global_search.call(objects,params[:search]) if global_search && params[:search].present?
42
+ if(params[:search].present?)
43
+ objects = global_search.call(objects,params[:search]) if global_search
44
+ objects = all_column_search(objects,columns_on_steroid, params[:search]) if !global_search
45
+ end
43
46
 
44
47
  [:activerecord, :array].each do |t|
45
48
 
@@ -98,6 +101,23 @@ module TableOnSteroids
98
101
  end
99
102
  end
100
103
  end
104
+
105
+ def all_column_search(objects, columns_on_steroid, query)
106
+ matched_object_ids = []
107
+ [:activerecord, :array].each do |t|
108
+ columns_on_steroid.each do |key, value|
109
+ if(value[t].present? && ((value[t][:search_lambda].present? && !["date","integer"].include?(value[:datatype])) || value[t][:global_search_lambda].present?))
110
+ if(value[t][:global_search_lambda].present?)
111
+ objects_returned = value[t][:global_search_lambda].call(objects, query)
112
+ else
113
+ objects_returned = value[t][:search_lambda].call(objects, query)
114
+ end
115
+ objects_returned.each{|o| matched_object_ids << o.id } if(objects_returned)
116
+ end
117
+ end
118
+ end
119
+ objects = objects.where(id: matched_object_ids.uniq)
120
+ end
101
121
 
102
122
 
103
123
  def objects_where(objects, columns_on_steroid, t)
@@ -137,7 +157,7 @@ module TableOnSteroids
137
157
  end
138
158
 
139
159
  def object_where_integer(integer, operator, value)
140
- case operator
160
+ case operator
141
161
  when "<",">=" then
142
162
  return integer.to_f < value.to_f
143
163
  when "=" then
@@ -168,7 +188,6 @@ module TableOnSteroids
168
188
 
169
189
  objects = objects.where(where_sql, *values)
170
190
  end
171
-
172
191
  objects
173
192
  end
174
193
  end
@@ -13,6 +13,10 @@
13
13
  <% csv_image ||= nil %>
14
14
  <% param_hash = CGI::parse(request.query_string) %>
15
15
  <% expected_column_keys = columns.map{|col,col_values| col }+columns.map{|col,col_values|("search_" + col)}+columns.map{|col,col_values|("search_operator_" + col)} %>
16
+ <% column_search_lambdas = columns.collect{|k,v|
17
+ (!v.dig(:datatype) && v.dig(:activerecord,:search_lambda)) || v.dig(:activerecord,:global_search_lambda) ||
18
+ (!v.dig(:datatype) && v.dig(:array,:search_lambda)) || v.dig(:array,:global_search_lambda) }.compact %>
19
+
16
20
  <div class="table-on-steroids" id="<%= table_on_steroid_id %>">
17
21
  <%= form_tag request.path, method: "get", id: ("knowledge_base_filters" + table_on_steroid_id) do %>
18
22
  <% param_hash.select{ |k,v| !expected_column_keys.include?(k) && !["utf8","columns[]"].include?(k) }.each do |k,v| %>
@@ -20,15 +24,15 @@
20
24
  <% end %>
21
25
  <%end%>
22
26
  <div class="row">
23
- <div class="col-8 col-sn-12">
27
+ <div class="col-6 col-sn-12">
24
28
  <div class="header-text-h1">
25
29
  <% if title %>
26
30
  <%= title %>
27
31
  <% end %>
28
32
  </div>
29
33
  </div>
30
- <div class="col-8 col-sn-12" style="text-align:right">
31
- <% if(search_lambda) %>
34
+ <div class="col-6 col-sn-12" style="text-align:right;margin-bottom:10px">
35
+ <% if(search_lambda || !column_search_lambdas.empty?) %>
32
36
  <%= text_field_tag 'search', params[:search], placeholder: 'Search ..', onchange: "$('#knowledge_base_filters#{table_on_steroid_id}').submit();", class: 'form-control global-search', form: "knowledge_base_filters#{table_on_steroid_id}" %>
33
37
  <% end %>
34
38
  </div>
@@ -1,3 +1,3 @@
1
1
  module TableOnSteroids
2
- VERSION = "0.1.1.2"
2
+ VERSION = "0.1.1.3"
3
3
  end
Binary file
Binary file
@@ -7,7 +7,7 @@ require "table_on_steroids/version"
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = "table_on_steroids"
9
9
  spec.version = TableOnSteroids::VERSION
10
- spec.authors = ["Marieke Gueye", "Matt Hyatt"]
10
+ spec.authors = ["Marieke Gueye", "Matt Hiatt"]
11
11
  spec.email = ["marieke@obvious.ly"]
12
12
 
13
13
  spec.summary = %q{Create awesome tables for rails}
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: table_on_steroids
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1.2
4
+ version: 0.1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marieke Gueye
8
- - Matt Hyatt
8
+ - Matt Hiatt
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2019-05-21 00:00:00.000000000 Z
12
+ date: 2019-06-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bootstrap-datepicker-rails
@@ -125,6 +125,8 @@ files:
125
125
  - bin/setup
126
126
  - lib/table_on_steroids.rb
127
127
  - lib/table_on_steroids/version.rb
128
+ - table_on_steroids-0.1.1.2.gem
129
+ - table_on_steroids-0.1.2.0.gem
128
130
  - table_on_steroids.gemspec
129
131
  - vendor/assets/images/csv.png
130
132
  - vendor/assets/javascripts/table_on_steroids.js