tabulatr2 0.9.3 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/app/views/tabulatr/_tabulatr_filter_dialog.html.slim +21 -20
- data/lib/tabulatr/data/filtering.rb +20 -7
- data/lib/tabulatr/generators/tabulatr/templates/tabulatr.yml +27 -0
- data/lib/tabulatr/version.rb +1 -1
- data/spec/dummy/db/migrate/20140128140114_add_publish_at_to_products.rb +5 -0
- data/spec/dummy/db/schema.rb +2 -1
- data/spec/lib/tabulatr/data/filtering_spec.rb +72 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b11a5d5bda9718541550adc016fca03765e3e06
|
4
|
+
data.tar.gz: 5281e726afe6e44bec05af2a31d72e3546201180
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1cb47ebf2433da0db9280acb652d833fd4311629d111b03b175ff94ca3e695249222ce841dc7ba94e9e881ac935ebdb095aa1eaf2884670e93ce6284d95596e7
|
7
|
+
data.tar.gz: 231823bbb5a39e6f95c0991d3debab968f978d9a8ae8fe07203b9266eacb5f9ff729fa8ce9da26fcffd04ecfa7b93f2f5b5d828369c60e63ba8105d50586e5bb
|
data/CHANGELOG.md
CHANGED
@@ -29,35 +29,36 @@ form.form.form-horizontal.tabulatr_filter_form data-table=table_id data-remote=
|
|
29
29
|
- iname = "#{formatted_name}_filter[#{name}]"
|
30
30
|
- filter_name = "tabulatr_form_#{name}"
|
31
31
|
|
32
|
-
label.control-label.col-
|
32
|
+
label.control-label.col-sm-3.col-xs-12 for=filter_name
|
33
33
|
= column.human_name
|
34
34
|
|
35
|
-
.controls.col-
|
35
|
+
.controls.col-sm-9.col-xs-12.row
|
36
36
|
- if column.filter.is_a?(Hash) || column.filter.is_a?(Array) || column.filter.is_a?(String)
|
37
|
-
|
38
|
-
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
37
|
+
.col-sm-11
|
38
|
+
select.form-control id=name name=iname
|
39
|
+
- if column.filter.class.is_a?(String)
|
40
|
+
= column.filter
|
41
|
+
- else
|
42
|
+
option
|
43
|
+
= options_for_select(column.filter)
|
43
44
|
- elsif column.filter == :range
|
44
|
-
.col-
|
45
|
+
.col-sm-5
|
45
46
|
input.tabulatr_filter.form-control type="text" id="#{name}_from" data-tabulatr-attribute="#{name}_from" name="#{iname}[from]"
|
46
|
-
span.col-
|
47
|
-
.col-
|
47
|
+
span.col-sm-1.text-center —
|
48
|
+
.col-sm-5
|
48
49
|
input.tabulatr_filter.form-control type="text" id="#{name}_to" data-tabulatr-attribute="#{name}_to" name="#{iname}[to]"
|
49
50
|
- elsif column.filter == :checkbox
|
50
|
-
.col-
|
51
|
+
.col-sm-11
|
51
52
|
= select_tag(iname, options_for_select([ \
|
52
53
|
[t('tabulatr.boolean_filter.both'), ""],
|
53
54
|
[t('tabulatr.boolean_filter.no'), "false"],
|
54
55
|
[t('tabulatr.boolean_filter.yes'), "true"]] \
|
55
56
|
), class: 'form-control')
|
56
57
|
- elsif column.filter == :exact
|
57
|
-
.col-
|
58
|
+
.col-sm-11
|
58
59
|
input.tabulatr_filter.form-control type="text" id="#{name}_exact" data-tabulatr-attribute="#{name}" name="#{iname}"
|
59
60
|
- elsif column.filter == :date
|
60
|
-
.col-
|
61
|
+
.col-sm-3
|
61
62
|
select.form-control name="#{iname}[date][simple]" data-tabulatr-date-filter="#{formatted_name}_#{name}_filter"
|
62
63
|
option= I18n.t("tabulatr.date_filter.none")
|
63
64
|
option value="today"= I18n.t("tabulatr.date_filter.today")
|
@@ -67,18 +68,18 @@ form.form.form-horizontal.tabulatr_filter_form data-table=table_id data-remote=
|
|
67
68
|
option value="this_month"= I18n.t("tabulatr.date_filter.this_month")
|
68
69
|
option value="last_30_days"= I18n.t("tabulatr.date_filter.last_30_days")
|
69
70
|
option value="from_to"= I18n.t("tabulatr.date_filter.from_to")
|
70
|
-
.col-
|
71
|
-
.col-
|
71
|
+
.col-sm-1
|
72
|
+
.col-sm-3
|
72
73
|
input.tabulatr_filter.form-control.date-picker.hidden.from_to type="text" id="#{formatted_name}_#{name}_filter_from" name="#{iname}[date][from]"
|
73
|
-
.col-
|
74
|
+
.col-sm-1.text-center
|
74
75
|
.span.from_to.hidden
|
75
76
|
|—
|
76
|
-
.col-
|
77
|
+
.col-sm-3
|
77
78
|
input.tabulatr_filter.form-control.date-picker.from_to.hidden type="text" id="#{formatted_name}_#{name}_filter_to" name="#{iname}[date][to]"
|
78
79
|
- else
|
79
|
-
.col-
|
80
|
+
.col-sm-11
|
80
81
|
input.tabulatr_filter.form-control type="text" id="#{name}_like" data-tabulatr-attribute="#{name}" name="#{iname}[like]"
|
81
|
-
.col-
|
82
|
+
.col-sm-1
|
82
83
|
= link_to "✕", '#', 'data-hide-table-filter' => name, class: 'form-control btn btn-danger btn-mini'
|
83
84
|
|
84
85
|
.control-group.form-group data-filter-column-name="_submit"
|
@@ -78,17 +78,30 @@ module Tabulatr::Data::Filtering
|
|
78
78
|
today = Date.today
|
79
79
|
case cond[:simple]
|
80
80
|
when 'none' then return
|
81
|
-
when 'today'
|
82
|
-
|
83
|
-
|
84
|
-
when '
|
85
|
-
|
86
|
-
|
81
|
+
when 'today'
|
82
|
+
since = today
|
83
|
+
to = today.at_end_of_day
|
84
|
+
when 'yesterday'
|
85
|
+
since = today - 1.day
|
86
|
+
to = since.at_end_of_day
|
87
|
+
when 'this_week'
|
88
|
+
since = today.at_beginning_of_week.beginning_of_day
|
89
|
+
to = today.at_end_of_week.end_of_day
|
90
|
+
when 'last_7_days'
|
91
|
+
since = (today - 6.day).beginning_of_day
|
92
|
+
to = today.at_end_of_day
|
93
|
+
when 'this_month'
|
94
|
+
since = today.at_beginning_of_month.beginning_of_day
|
95
|
+
to = today.at_end_of_month.end_of_day
|
96
|
+
when 'last_30_days'
|
97
|
+
since = (today - 29.day).beginning_of_day
|
98
|
+
to = today.at_end_of_day
|
87
99
|
when 'from_to'
|
88
100
|
since = Date.parse(cond[:from]) if cond[:from].present?
|
89
|
-
|
101
|
+
to = Date.parse(cond[:to]) if cond[:to].present?
|
90
102
|
end
|
91
103
|
@relation = @relation.where("#{n} >= ?", since) if since.present?
|
104
|
+
@relation = @relation.where("#{n} <= ?", to) if to.present?
|
92
105
|
end
|
93
106
|
|
94
107
|
def apply_string_condition(replacement_string, value)
|
@@ -6,6 +6,20 @@ en:
|
|
6
6
|
count: 'Showing: %{current} of total %{total}. %{per_page} items per page.'
|
7
7
|
apply_filters: 'Apply'
|
8
8
|
search: 'Search'
|
9
|
+
date_filter:
|
10
|
+
none: ''
|
11
|
+
today: "Today"
|
12
|
+
yesterday: Yesterday
|
13
|
+
this_week: This Week
|
14
|
+
last_7_days: Last 7 Days
|
15
|
+
this_month: This Month
|
16
|
+
last_30_days: Last 30 Days
|
17
|
+
from_to: From - To
|
18
|
+
boolean_filter:
|
19
|
+
both: All
|
20
|
+
yes: Yes
|
21
|
+
no: No
|
22
|
+
|
9
23
|
de:
|
10
24
|
tabulatr:
|
11
25
|
rows_per_page: 'Ergebnisse pro Seite'
|
@@ -14,3 +28,16 @@ de:
|
|
14
28
|
count: 'Zeige %{current} von insgesamt %{total}. %{per_page} pro Seite.'
|
15
29
|
apply_filters: 'Anwenden'
|
16
30
|
search: 'Suche'
|
31
|
+
date_filter:
|
32
|
+
none: ''
|
33
|
+
today: "Heute"
|
34
|
+
yesterday: Gestern
|
35
|
+
this_week: Diese Woche
|
36
|
+
last_7_days: Letzte 7 Tage
|
37
|
+
this_month: Dieser Monat
|
38
|
+
last_30_days: Letzte 30 Tage
|
39
|
+
from_to: Von - Bis
|
40
|
+
boolean_filter:
|
41
|
+
both: Alle
|
42
|
+
yes: Ja
|
43
|
+
no: Nein
|
data/lib/tabulatr/version.rb
CHANGED
data/spec/dummy/db/schema.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended that you check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(version:
|
14
|
+
ActiveRecord::Schema.define(version: 20140128140114) do
|
15
15
|
|
16
16
|
create_table "products", force: true do |t|
|
17
17
|
t.integer "vendor_id"
|
@@ -20,6 +20,7 @@ ActiveRecord::Schema.define(version: 20130730132348) do
|
|
20
20
|
t.boolean "active"
|
21
21
|
t.datetime "created_at"
|
22
22
|
t.datetime "updated_at"
|
23
|
+
t.datetime "publish_at"
|
23
24
|
end
|
24
25
|
|
25
26
|
add_index "products", ["vendor_id"], name: "index_products_on_vendor_id"
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Tabulatr::Data::Filtering do
|
4
|
+
class DummySpecClass
|
5
|
+
include Tabulatr::Data::Filtering
|
6
|
+
end
|
7
|
+
|
8
|
+
before(:each) do
|
9
|
+
@dummy = DummySpecClass.new
|
10
|
+
@dummy.instance_variable_set('@relation', Product.all)
|
11
|
+
@yesterday = Product.create!(publish_at: DateTime.new(2013, 12, 31, 0, 0))
|
12
|
+
@today = Product.create!(publish_at: DateTime.new(2014, 1, 1, 15, 0))
|
13
|
+
@week_one = Product.create!(publish_at: DateTime.new(2013, 12, 30, 0, 0))
|
14
|
+
@week_two = Product.create!(publish_at: DateTime.new(2014, 1, 5, 8, 0))
|
15
|
+
@last_seven_days = Product.create!(publish_at: DateTime.new(2013, 12, 26, 0, 0))
|
16
|
+
@last_thirty_days = Product.create!(publish_at: DateTime.new(2013, 12, 3, 0, 0))
|
17
|
+
@outside_last_thirty_days = Product.create!(publish_at: DateTime.new(2013, 12, 2, 23, 59))
|
18
|
+
@this_month = Product.create!(publish_at: DateTime.new(2014, 1, 15, 0, 0))
|
19
|
+
@next_year = Product.create!(publish_at: DateTime.new(2015, 1, 1, 12, 0))
|
20
|
+
Date.stub(:today).and_return(Date.new(2014,1,1))
|
21
|
+
end
|
22
|
+
describe '.apply_date_condition' do
|
23
|
+
it "filters for 'today'" do
|
24
|
+
@dummy.apply_date_condition('publish_at', {simple: 'today'})
|
25
|
+
result = @dummy.instance_variable_get('@relation')
|
26
|
+
expect(result.count).to be 1
|
27
|
+
expect(result[0].id).to be @today.id
|
28
|
+
end
|
29
|
+
|
30
|
+
it "filters for 'yesterday'" do
|
31
|
+
@dummy.apply_date_condition('publish_at', {simple: 'yesterday'})
|
32
|
+
result = @dummy.instance_variable_get('@relation')
|
33
|
+
expect(result.count).to be 1
|
34
|
+
expect(result[0].id).to be @yesterday.id
|
35
|
+
end
|
36
|
+
|
37
|
+
it "filters for 'this week'" do
|
38
|
+
@dummy.apply_date_condition('publish_at', {simple: 'this_week'})
|
39
|
+
result = @dummy.instance_variable_get('@relation')
|
40
|
+
expect(result.count).to be 4
|
41
|
+
expect(result.map(&:id).sort).to eq [@yesterday.id, @today.id, @week_one.id, @week_two.id].sort
|
42
|
+
end
|
43
|
+
|
44
|
+
it "filters for 'last 7 days'" do
|
45
|
+
@dummy.apply_date_condition('publish_at', {simple: 'last_7_days'})
|
46
|
+
result = @dummy.instance_variable_get('@relation')
|
47
|
+
expect(result.map(&:id).sort).to eq ([@last_seven_days.id, @yesterday.id, @today.id, @week_one.id].sort)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "filters for 'this month'" do
|
51
|
+
@dummy.apply_date_condition('publish_at', {simple: 'this_month'})
|
52
|
+
result = @dummy.instance_variable_get('@relation')
|
53
|
+
expect(result.map(&:id).sort).to eq ([@today.id, @week_two.id, @this_month.id])
|
54
|
+
end
|
55
|
+
|
56
|
+
it "filters for 'last 30 days'" do
|
57
|
+
@dummy.apply_date_condition('publish_at', {simple: 'last_30_days'})
|
58
|
+
result = @dummy.instance_variable_get('@relation')
|
59
|
+
expect(result.map(&:id).sort).to eq ([
|
60
|
+
@last_thirty_days.id, @yesterday.id, @last_seven_days.id, @today.id,
|
61
|
+
@week_one.id].sort)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "filters from 'start_date' to 'end_date'" do
|
65
|
+
@dummy.apply_date_condition('publish_at', {
|
66
|
+
simple: 'from_to', from: '31.12.2013 15:00',
|
67
|
+
to: '15.01.2014 00:00'})
|
68
|
+
result = @dummy.instance_variable_get('@relation')
|
69
|
+
expect(result.map(&:id)).to eq ([@yesterday.id, @today.id, @week_two.id].sort)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tabulatr2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Horn
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-01-
|
13
|
+
date: 2014-01-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -171,6 +171,7 @@ files:
|
|
171
171
|
- spec/dummy/db/migrate/20130730132101_create_vendors.rb
|
172
172
|
- spec/dummy/db/migrate/20130730132321_create_products.rb
|
173
173
|
- spec/dummy/db/migrate/20130730132348_create_tags.rb
|
174
|
+
- spec/dummy/db/migrate/20140128140114_add_publish_at_to_products.rb
|
174
175
|
- spec/dummy/db/schema.rb
|
175
176
|
- spec/dummy/lib/assets/.keep
|
176
177
|
- spec/dummy/log/.keep
|
@@ -180,6 +181,7 @@ files:
|
|
180
181
|
- spec/dummy/public/favicon.ico
|
181
182
|
- spec/features/tabulatrs_spec.rb
|
182
183
|
- spec/lib/tabulatr/data/data_spec.rb
|
184
|
+
- spec/lib/tabulatr/data/filtering_spec.rb
|
183
185
|
- spec/lib/tabulatr/data/pagination_spec.rb
|
184
186
|
- spec/lib/tabulatr/json_builder_spec.rb
|
185
187
|
- spec/lib/tabulatr/renderer/renderer_spec.rb
|
@@ -263,6 +265,7 @@ test_files:
|
|
263
265
|
- spec/dummy/db/migrate/20130730132101_create_vendors.rb
|
264
266
|
- spec/dummy/db/migrate/20130730132321_create_products.rb
|
265
267
|
- spec/dummy/db/migrate/20130730132348_create_tags.rb
|
268
|
+
- spec/dummy/db/migrate/20140128140114_add_publish_at_to_products.rb
|
266
269
|
- spec/dummy/db/schema.rb
|
267
270
|
- spec/dummy/lib/assets/.keep
|
268
271
|
- spec/dummy/log/.keep
|
@@ -272,6 +275,7 @@ test_files:
|
|
272
275
|
- spec/dummy/public/favicon.ico
|
273
276
|
- spec/features/tabulatrs_spec.rb
|
274
277
|
- spec/lib/tabulatr/data/data_spec.rb
|
278
|
+
- spec/lib/tabulatr/data/filtering_spec.rb
|
275
279
|
- spec/lib/tabulatr/data/pagination_spec.rb
|
276
280
|
- spec/lib/tabulatr/json_builder_spec.rb
|
277
281
|
- spec/lib/tabulatr/renderer/renderer_spec.rb
|