trk_datatables 0.2.9 → 0.2.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +62 -6
- data/lib/trk_datatables/base_helpers.rb +2 -2
- data/lib/trk_datatables/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03d60af4ffecbd22baf81e7700ab5e3ec8b32e85ad7daa91017621ad972667d6
|
4
|
+
data.tar.gz: d6e0f467c5cda0e6ad41019d0eb23505a65194759c6c25d1dee3a7d441d23fe1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a98588013bfa4d99ccbbb55691cb7f028551f8d784ee869bf8dec2e9f4d68d8f4c8b4f36369bf0b7c56d49bafbef9b9b94933a52260b94c292c530fd21bfbaa
|
7
|
+
data.tar.gz: 1f5566bb0db920cb827a19b9bf0109a3e247a176e7310e57f05a608647a477d97d1e883d4e4e1dca4b6af520fdc620c5de041f65fcc7bd60206975549eaa4f08
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -256,7 +256,7 @@ For specific columns you can use following keys
|
|
256
256
|
* `order: false` disable ordering for this column
|
257
257
|
* `select_options: Post.statuses` generate select box instead of text input
|
258
258
|
* `predefined_ranges: {}` for datetime fiels add ranges to pick up from
|
259
|
-
* `hide: true` hide column with display none
|
259
|
+
* `hide: true` hide column with display none, for example `{ hide: @view.params[:user_id].present? }`
|
260
260
|
* `class_name: 'Admin::User'` use different class name than
|
261
261
|
`table_name.classify` (in this case of `admin_users` will be `AdminUser`)
|
262
262
|
* `column_type_in_db` one of the: `:string`, `:integer`, `:date`, `:datetime`,
|
@@ -332,7 +332,7 @@ def columns
|
|
332
332
|
end
|
333
333
|
|
334
334
|
# in view
|
335
|
-
link_to 'Active', search_posts_path(PostsDatatable.param_set('posts.status'
|
335
|
+
link_to 'Active', search_posts_path(PostsDatatable.param_set('posts.status',
|
336
336
|
Post.statues.values_at(:published, :promoted)))
|
337
337
|
```
|
338
338
|
|
@@ -575,7 +575,7 @@ Default [DOM](https://datatables.net/reference/option/dom) is
|
|
575
575
|
To set parameters that you can use for links to set column search value, use
|
576
576
|
this `PostsDatatable.param_set 'users.email', 'my@email.com'`. For between
|
577
577
|
search you can use range `Time.zone.today..(Time.zone.today + 1.year)` and for
|
578
|
-
in multiple values use array `[Post.statuses[:draft]]
|
578
|
+
in multiple values use array `[Post.statuses[:draft]]`:
|
579
579
|
|
580
580
|
```
|
581
581
|
<%= link_to 'Active posts for my@email.com', \
|
@@ -591,6 +591,15 @@ in multiple values use array `[Post.statuses[:draft]]`.
|
|
591
591
|
This will fill proper column search values so you do not need to do it manually
|
592
592
|
(`post_path(:columns=>{"3"=>{:search=>{:value=>"my@email.com"}},
|
593
593
|
"2"=>{:search=>{:value=>"1|2"}}}, :user_id=>1)`)
|
594
|
+
Please note that user_id is not inside datatable params so it will not be used
|
595
|
+
for next search params (all other search params are used with Datatables and
|
596
|
+
will remain on next search) so you need to manually add that param
|
597
|
+
```
|
598
|
+
<%= @datatable.render_html search_posts_path(user_id: params[:user_id], format: :json) %>
|
599
|
+
```
|
600
|
+
|
601
|
+
You can use generic name `params[:non_table_filter]` and split with colon
|
602
|
+
`user_id:123` but that is not needed.
|
594
603
|
|
595
604
|
For form fields you can use similar helper that will return name which points to
|
596
605
|
specific column, for example:
|
@@ -614,10 +623,39 @@ For global search you can use `[search][value]` for example
|
|
614
623
|
<% end %>
|
615
624
|
```
|
616
625
|
|
617
|
-
If you need, you can fetch params with this helper
|
626
|
+
If you need, you can fetch params with this helper and for example, show the
|
627
|
+
link for that record
|
628
|
+
|
629
|
+
```
|
630
|
+
if @datatable.param_get("locations.name").present? &&
|
631
|
+
(location = Location.find_by(name: @datatable.param_get("locations.name")))
|
632
|
+
page_description "For <a href='#{location_path(location)}'>#{location.name}</a>"
|
633
|
+
breadcrumb "Dashboard": dashboard_path, location.name => location_path(location), "Package Sales": nil
|
634
|
+
else
|
635
|
+
breadcrumb "Dashboard": dashboard_path, "Package Sales": nil
|
636
|
+
end
|
637
|
+
```
|
618
638
|
|
639
|
+
For other filter params which are not in columns you can use non table params
|
619
640
|
```
|
620
|
-
|
641
|
+
# on dashboard
|
642
|
+
<%= link_to 'Locations', isp_locations_path(non_table_filter: "reseller_operator_id:#{@reseller_operator.id}") %>
|
643
|
+
|
644
|
+
# on index
|
645
|
+
if params[:non_table_filter].present? &&
|
646
|
+
(reseller_operator = ResellerOperator.find(params[:non_table_filter].split(":").second))
|
647
|
+
page_description "For <a href='#{reseller_operator_path(reseller_operator)}'>#{reseller_operator.company_name}</a>"
|
648
|
+
breadcrumb 'Dashboard' => isp_dashboard_path, reseller_operator.company_name => reseller_operator_path(reseller_operator), 'Locations' => nil
|
649
|
+
else
|
650
|
+
breadcrumb 'Dashboard' => isp_dashboard_path, 'Locations' => nil
|
651
|
+
end
|
652
|
+
|
653
|
+
# in datatables
|
654
|
+
case @view.params[:non_table_filter].to_s.split(':').first
|
655
|
+
when 'reseller_operator_id'
|
656
|
+
reseller_operator = ResellerOperator.find @view.params[:non_table_filter].split(':').second
|
657
|
+
all_isp_locations = all_isp_locations.where(reseller_operator: reseller_operator)
|
658
|
+
end
|
621
659
|
```
|
622
660
|
|
623
661
|
You can set filters on datatable even params are blank, for example
|
@@ -679,7 +717,9 @@ end
|
|
679
717
|
|
680
718
|
You can use condition to provide different data, for example let's assume
|
681
719
|
`@view.api_user?` returns true for json requests from mobile app. Here is
|
682
|
-
example that provides different columns for normal and api_user
|
720
|
+
example that provides different columns for normal and api_user.
|
721
|
+
Note that when you are using different columns for some reason in `@view` you
|
722
|
+
need to provide view in `param_set` so it can check the same conditionals.
|
683
723
|
|
684
724
|
```
|
685
725
|
# app/datatables/posts_datatable.rb
|
@@ -689,8 +729,14 @@ class PostsDatatable < TrkDatatables::ActiveRecord
|
|
689
729
|
end
|
690
730
|
|
691
731
|
def columns_for_html
|
732
|
+
balance = @view.current_location
|
733
|
+
{}
|
734
|
+
else
|
735
|
+
{ 'integer_calculated_in_db.balance_amount_in_cents': { search: false, title: 'Balance' } }
|
736
|
+
end
|
692
737
|
{
|
693
738
|
'subscribers.subscriberid': {},
|
739
|
+
**balance,
|
694
740
|
'subscribers.name': {},
|
695
741
|
}
|
696
742
|
end
|
@@ -709,8 +755,14 @@ class PostsDatatable < TrkDatatables::ActiveRecord
|
|
709
755
|
|
710
756
|
def rows_for_html(filtered)
|
711
757
|
filtered.map do |subscriber|
|
758
|
+
balance = if Constant.STILL_WITH_OLD_CODE
|
759
|
+
[]
|
760
|
+
else
|
761
|
+
[@view.humanized_money_with_symbol(Money.new(location.balance_amount_in_cents)) : 'NA']
|
762
|
+
end
|
712
763
|
[
|
713
764
|
@view.link_to(subscriber.subscriberid, subscriber),
|
765
|
+
*balance,
|
714
766
|
subscriber.name,
|
715
767
|
]
|
716
768
|
end
|
@@ -730,6 +782,10 @@ class PostsDatatable < TrkDatatables::ActiveRecord
|
|
730
782
|
@view.api_user? ? columns_for_api : nil
|
731
783
|
end
|
732
784
|
end
|
785
|
+
|
786
|
+
# On some dashboard page provide @view using `self` to param_set
|
787
|
+
link_to 'Active', search_posts_path(PostsDatatable.param_set('posts.status',
|
788
|
+
:active, self))
|
733
789
|
```
|
734
790
|
|
735
791
|
## Test your datatables
|
@@ -13,8 +13,8 @@ module TrkDatatables
|
|
13
13
|
# @example
|
14
14
|
# link_to 'Published posts for user1',
|
15
15
|
# posts_path(PostsDatatable.param_set('posts.status', :published).merge(user_id: user1.id))
|
16
|
-
def param_set(column_key, value)
|
17
|
-
datatable = new OpenStruct.new(params: {})
|
16
|
+
def param_set(column_key, value, view = nil)
|
17
|
+
datatable = new view || OpenStruct.new(params: {})
|
18
18
|
value = value.join MULTIPLE_OPTION_SEPARATOR if value.is_a? Array
|
19
19
|
value = [value.first, value.last].join BETWEEN_SEPARATOR if value.is_a? Range
|
20
20
|
column_index = datatable.index_by_column_key column_key
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trk_datatables
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dusan Orlovic
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-03-
|
11
|
+
date: 2021-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|