trk_datatables 0.2.5 → 0.2.6
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +24 -30
- data/lib/trk_datatables/base.rb +23 -7
- data/lib/trk_datatables/base_helpers.rb +5 -1
- data/lib/trk_datatables/column_key_options.rb +2 -2
- data/lib/trk_datatables/render_html.rb +19 -0
- data/lib/trk_datatables/version.rb +1 -1
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 40eeba5483cf896ad0df528f5b329a0bdfd7b2a7d78ab18df295f1b30737ba8f
         | 
| 4 | 
            +
              data.tar.gz: 7e9c1cd8f4c9fcf942dd5639b7f406e85ccb6c0c037e2dd6a3a7b42ece5d641b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b29ccb1148bb7b4782b4cf5d466330d241bbc90c5554129b4d243833d5585a2fad599fbf6e518e62a08db487e32adcdf0ebd65232592f9d01fe048a4898f0310
         | 
| 7 | 
            +
              data.tar.gz: 3b3f65377b9bc66f33874abcbe231fc6e5ace020b82526fb8edbab5b697085bcf1f3bd48c2bc8f7d42873770a6c61e2096716a3bf95343dad20aa9c2947ee0dd
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -18,7 +18,7 @@ you can get something like | |
| 18 18 |  | 
| 19 19 | 
             
            
         | 
| 20 20 |  | 
| 21 | 
            -
             | 
| 21 | 
            +
            Currently supports:
         | 
| 22 22 | 
             
            * ActiveRecord
         | 
| 23 23 | 
             
            * Neo4j
         | 
| 24 24 |  | 
| @@ -284,47 +284,32 @@ class PostsDatatable < TrkDatatables::ActiveRecord | |
| 284 284 | 
             
            end
         | 
| 285 285 | 
             
            ```
         | 
| 286 286 |  | 
| 287 | 
            -
             | 
| 288 | 
            -
             | 
| 289 | 
            -
             | 
| 290 | 
            -
             | 
| 291 | 
            -
             | 
| 292 | 
            -
            class BaseTrkDatable < TrkDatatables::ActiveRecord
         | 
| 293 | 
            -
              def predefined_ranges
         | 
| 294 | 
            -
                # defaults are defined in https://github.com/trkin/trk_datatables/blob/master/lib/trk_datatables/base.rb
         | 
| 295 | 
            -
                default_predefined_ranges
         | 
| 296 | 
            -
              end
         | 
| 297 | 
            -
            end
         | 
| 298 | 
            -
            ```
         | 
| 299 | 
            -
            or you can enable for all `date` and `datetime columns` for specific datatable
         | 
| 300 | 
            -
            by defining `predefined_ranges` on that datatable. You can disable for specific columns also
         | 
| 287 | 
            +
            By default, predefined ranges are enabled. You can find source for
         | 
| 288 | 
            +
            `predefined_date_ranges` and `predefined_datetime_ranges` in
         | 
| 289 | 
            +
            [base.rb](https://github.com/trkin/trk_datatables/blob/master/lib/trk_datatables/base.rb)
         | 
| 290 | 
            +
            You can overwrite them in BaseTrkDatable or your trk datatable class.
         | 
| 291 | 
            +
            You can disable or enable for specific columns like in this example:
         | 
| 301 292 | 
             
            ```
         | 
| 302 293 | 
             
            class PostsDatatable < TrkDatatables::ActiveRecord
         | 
| 303 | 
            -
              def  | 
| 294 | 
            +
              def predefined_datetime_ranges
         | 
| 304 295 | 
             
                {
         | 
| 305 296 | 
             
                  'Today': Time.zone.now.beginning_of_day..Time.zone.now.end_of_day,
         | 
| 306 297 | 
             
                  'Yesterday': [Time.zone.now.beginning_of_day - 1.day, Time.zone.now.end_of_day - 1.day],
         | 
| 307 298 | 
             
                  'This Month': Time.zone.today.beginning_of_month...Time.zone.now.end_of_day,
         | 
| 308 299 | 
             
                  'Last Month': Time.zone.today.prev_month.beginning_of_month...Time.zone.today.prev_month.end_of_month.end_of_day,
         | 
| 309 300 | 
             
                  'This Year': Time.zone.today.beginning_of_year...Time.zone.today.end_of_day,
         | 
| 310 | 
            -
             | 
| 301 | 
            +
               }.transform_values do |range|
         | 
| 302 | 
            +
                 # datepicker expects format 2020-11-29 11:59:59
         | 
| 303 | 
            +
                 range.first.strftime('%F %T')..range.last.strftime('%F %T')
         | 
| 304 | 
            +
               end
         | 
| 311 305 | 
             
              end
         | 
| 312 306 |  | 
| 313 307 | 
             
              def columns
         | 
| 314 308 | 
             
                {
         | 
| 315 | 
            -
                  'posts.created_at': {}, # this column will have  | 
| 316 | 
            -
                  'posts.published_on': { predefined_ranges: false }
         | 
| 317 | 
            -
             | 
| 318 | 
            -
             | 
| 319 | 
            -
            ```
         | 
| 320 | 
            -
            or you can define for specific column
         | 
| 321 | 
            -
            ```
         | 
| 322 | 
            -
            # app/datatables/posts_datatable.rb
         | 
| 323 | 
            -
            class PostsDatatable < TrkDatatables::ActiveRecord
         | 
| 324 | 
            -
              def columns
         | 
| 325 | 
            -
                {
         | 
| 326 | 
            -
                  'posts.created_at': { predefined_ranges: { 'Today': Time.zone.now.beginning_of_day...Time.zone.now.end_of_day } },
         | 
| 327 | 
            -
                }
         | 
| 309 | 
            +
                  'posts.created_at': {}, # this column will have predefined_datetime_ranges
         | 
| 310 | 
            +
                  'posts.published_on': { predefined_ranges: false },
         | 
| 311 | 
            +
                  'posts.updated_at': { predefined_ranges: { 'Today': Time.zone.now.beginning_of_day...Time.zone.now.end_of_day } },
         | 
| 312 | 
            +
               }
         | 
| 328 313 | 
             
              end
         | 
| 329 314 | 
             
            end
         | 
| 330 315 | 
             
            ```
         | 
| @@ -602,6 +587,15 @@ Usefull when you want to provide a form for a user to search on specific column | |
| 602 587 | 
             
            <% end %>
         | 
| 603 588 | 
             
            ```
         | 
| 604 589 |  | 
| 590 | 
            +
            For global search you can use `[search][value]` for example
         | 
| 591 | 
            +
             | 
| 592 | 
            +
            ```
         | 
| 593 | 
            +
            <%= form_tag url: posts_path, method: :get do |f| %>
         | 
| 594 | 
            +
              <%= f.text_field '[search][value]', 'my@email.com' %>
         | 
| 595 | 
            +
              <%= f.submit 'Search' %>
         | 
| 596 | 
            +
            <% end %>
         | 
| 597 | 
            +
            ```
         | 
| 598 | 
            +
             | 
| 605 599 | 
             
            If you need, you can fetch params with this helper
         | 
| 606 600 |  | 
| 607 601 | 
             
            ```
         | 
    
        data/lib/trk_datatables/base.rb
    CHANGED
    
    | @@ -219,18 +219,34 @@ module TrkDatatables | |
| 219 219 | 
             
                end
         | 
| 220 220 |  | 
| 221 221 | 
             
                def predefined_ranges
         | 
| 222 | 
            -
                   | 
| 222 | 
            +
                  Time.zone ||= 'UTC'
         | 
| 223 | 
            +
                  {
         | 
| 224 | 
            +
                    date: predefined_date_ranges,
         | 
| 225 | 
            +
                    datetime: predefined_datetime_ranges,
         | 
| 226 | 
            +
                  }
         | 
| 223 227 | 
             
                end
         | 
| 224 228 |  | 
| 225 | 
            -
                def  | 
| 226 | 
            -
                   | 
| 229 | 
            +
                def predefined_date_ranges
         | 
| 230 | 
            +
                  {
         | 
| 231 | 
            +
                    'Today': Time.zone.today..Time.zone.today,
         | 
| 232 | 
            +
                    'Yesterday': [Time.zone.today - 1.day, Time.zone.today - 1.day],
         | 
| 233 | 
            +
                    'This Month': Time.zone.today.beginning_of_month...Time.zone.today,
         | 
| 234 | 
            +
                    'Last Month': Time.zone.today.prev_month.beginning_of_month...Time.zone.today.prev_month.end_of_month,
         | 
| 235 | 
            +
                    'This Year': Time.zone.today.beginning_of_year...Time.zone.today,
         | 
| 236 | 
            +
                  }
         | 
| 237 | 
            +
                end
         | 
| 238 | 
            +
             | 
| 239 | 
            +
                def predefined_datetime_ranges
         | 
| 227 240 | 
             
                  {
         | 
| 228 241 | 
             
                    'Today': Time.zone.now.beginning_of_day..Time.zone.now.end_of_day,
         | 
| 229 242 | 
             
                    'Yesterday': [Time.zone.now.beginning_of_day - 1.day, Time.zone.now.end_of_day - 1.day],
         | 
| 230 | 
            -
                    'This Month': Time.zone.today.beginning_of_month...Time.zone.now.end_of_day,
         | 
| 231 | 
            -
                    'Last Month': Time.zone.today.prev_month.beginning_of_month...Time.zone.today.prev_month.end_of_month.end_of_day,
         | 
| 232 | 
            -
                    'This Year': Time.zone.today.beginning_of_year...Time.zone.today.end_of_day,
         | 
| 233 | 
            -
                  }
         | 
| 243 | 
            +
                    'This Month': Time.zone.today.beginning_of_month.beginning_of_day...Time.zone.now.end_of_day,
         | 
| 244 | 
            +
                    'Last Month': Time.zone.today.prev_month.beginning_of_month.beginning_of_day...Time.zone.today.prev_month.end_of_month.end_of_day,
         | 
| 245 | 
            +
                    'This Year': Time.zone.today.beginning_of_year.beginning_of_day...Time.zone.today.end_of_day,
         | 
| 246 | 
            +
                  }.transform_values do |range|
         | 
| 247 | 
            +
                    # datepicker expects format 2020-11-29 11:59:59
         | 
| 248 | 
            +
                    range.first.strftime('%F %T')..range.last.strftime('%F %T')
         | 
| 249 | 
            +
                  end
         | 
| 234 250 | 
             
                end
         | 
| 235 251 | 
             
              end
         | 
| 236 252 | 
             
            end
         | 
| @@ -22,11 +22,15 @@ module TrkDatatables | |
| 22 22 | 
             
                end
         | 
| 23 23 |  | 
| 24 24 | 
             
                # Get the form field name for column. This is class method so you do not
         | 
| 25 | 
            -
                # need datatable instance.
         | 
| 25 | 
            +
                # need datatable instance. It returns something like
         | 
| 26 | 
            +
                # 'column[3][search][value]`. For global search you can use
         | 
| 27 | 
            +
                # '[search][value]`
         | 
| 26 28 | 
             
                #
         | 
| 27 29 | 
             
                # @example
         | 
| 28 30 | 
             
                # form_tag url: posts_path, method: :get do |f|
         | 
| 29 31 | 
             
                #   f.text_field PostsDatatable.form_field_name('users.email'), 'my@email.com'
         | 
| 32 | 
            +
                #   # it is the same as
         | 
| 33 | 
            +
                #   f.text_field 'columns[3][search][value]', 'my@email.com'
         | 
| 30 34 | 
             
                def form_field_name(column_key)
         | 
| 31 35 | 
             
                  datatable = new OpenStruct.new(params: {})
         | 
| 32 36 | 
             
                  column_index = datatable.index_by_column_key column_key
         | 
| @@ -244,11 +244,11 @@ module TrkDatatables | |
| 244 244 | 
             
                  if %i[date datetime].include? column_type_in_db
         | 
| 245 245 | 
             
                    res['data-datatable-range'] = column_type_in_db == :datetime ? :datetime : true
         | 
| 246 246 | 
             
                    if column_options[PREDEFINED_RANGES].present? ||
         | 
| 247 | 
            -
             | 
| 247 | 
            +
                        (@predefined_ranges.try(:[], column_type_in_db).present? && column_options[PREDEFINED_RANGES] != false)
         | 
| 248 248 | 
             
                      res['data-datatable-predefined-ranges'] = if column_options[PREDEFINED_RANGES].is_a? Hash
         | 
| 249 249 | 
             
                                                                  column_options[PREDEFINED_RANGES]
         | 
| 250 250 | 
             
                                                                else
         | 
| 251 | 
            -
                                                                  @predefined_ranges
         | 
| 251 | 
            +
                                                                  @predefined_ranges[column_type_in_db]
         | 
| 252 252 | 
             
                                                                end
         | 
| 253 253 | 
             
                      res['data-datatable-predefined-ranges'].transform_values! do |range|
         | 
| 254 254 | 
             
                        [range.first.to_s, range.last.to_s]
         | 
| @@ -128,6 +128,25 @@ module TrkDatatables | |
| 128 128 | 
             
                end
         | 
| 129 129 |  | 
| 130 130 | 
             
                def table_tag_client
         | 
| 131 | 
            +
                  # Should we allow generating datatable only in view
         | 
| 132 | 
            +
                  # <%= ClientDatatable.new(self).render_html do %>
         | 
| 133 | 
            +
                  #    <thead>
         | 
| 134 | 
            +
                  #      <tr>
         | 
| 135 | 
            +
                  # so we do not need datatable and search route
         | 
| 136 | 
            +
                  # than we just need <table> tag, but it uses datatable to determine page
         | 
| 137 | 
            +
                  # length and order (which in turn it determines from params or
         | 
| 138 | 
            +
                  # preferences)
         | 
| 139 | 
            +
                  # _content_tag(
         | 
| 140 | 
            +
                  #   :table,
         | 
| 141 | 
            +
                  #   class: "table table-bordered table-striped #{@html_options[:class]}",
         | 
| 142 | 
            +
                  #   'data-datatable': true,
         | 
| 143 | 
            +
                  #   'data-datatable-ajax-url': @search_link,
         | 
| 144 | 
            +
                  #   'data-datatable-page-length': @datatable.dt_per_page_or_default,
         | 
| 145 | 
            +
                  #   'data-datatable-order': @datatable.dt_orders_or_default_index_and_direction.to_json,
         | 
| 146 | 
            +
                  #   # for initial page load we do not have ability to show recordsTotal
         | 
| 147 | 
            +
                  #   # https://github.com/trkin/trk_datatables_js/issues/1
         | 
| 148 | 
            +
                  #   'data-datatable-total-length': @datatable.filtered_items_count,
         | 
| 149 | 
            +
                  # ) do
         | 
| 131 150 | 
             
                  ''
         | 
| 132 151 | 
             
                end
         | 
| 133 152 | 
             
              end
         | 
    
        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.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Dusan Orlovic
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020- | 
| 11 | 
            +
            date: 2020-11-29 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activesupport
         | 
| @@ -206,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 206 206 | 
             
                - !ruby/object:Gem::Version
         | 
| 207 207 | 
             
                  version: '0'
         | 
| 208 208 | 
             
            requirements: []
         | 
| 209 | 
            -
            rubygems_version: 3.0. | 
| 209 | 
            +
            rubygems_version: 3.0.8
         | 
| 210 210 | 
             
            signing_key: 
         | 
| 211 211 | 
             
            specification_version: 4
         | 
| 212 212 | 
             
            summary: Gem that simplify using datatables with Ruby on Rails and Sinatra.
         |