WiceGrid 3.6.0.pre4 examples

Callback to process records of the current page

In addition to current_page_records and current_page_records helpers a callback can be setup in the controller which is executed when a grid page is rendered. Though the results of that processing is rendered on page, normally such callbacks are used for some kind of background processing. Please notice that the callback is executed after the controller action and thus all controller instance variables have already been injected inti the view, that is why the current example has a definition of @one_page_records before the callback, so that the object is injected into the view and the callback block has access to the object as well. The callback can be setup separately as a block:

@grid.with_paginated_resultset do |records|
  ...
end
or as an argument of initialize_grid where the value is the name of the method to be invoked:
@grid = initialize_grid(Task,
  with_paginated_resultset: :process_records
)

  • # encoding: utf-8
    class ResultsetProcessingsController < ApplicationController
      def index
        @tasks_grid = initialize_grid(Task,
          include: [:priority, :status, :project, :assigned_users],
          order: 'statuses.name',
          name: 'g',
          per_page: 10,
          # :with_paginated_resultset => :process_records,
          custom_order: {
            'tasks.priority_id' => 'priorities.name',
            'tasks.status_id' => 'statuses.position',
            'tasks.project_id' => 'projects.name'
          }
    
        )
    
        @one_page_records = []
    
        @tasks_grid.with_paginated_resultset do |records|
          records.each { |rec| @one_page_records << rec }
        end
      end
    
      protected
    
      # def process_records(records)
      #   records.each{|rec| @one_page_records << rec}
      # end
    end
    
  • .well
      %h2= current_page_title
      %p
        In addition to
        %a{href:  integration_with_application_view_index_path}
          %code current_page_records
        and
        %a{href: integration_with_application_view_index_path}
          %code current_page_records
        helpers
        a callback can be setup in the controller which is executed when a grid page is rendered.
        Though the results of that processing is rendered on page, normally such callbacks are used
        for some kind of background processing. Please notice that the callback is executed
        %em after
        the controller action and thus all controller instance variables have already been injected inti the view,
        that is why the current example has a definition of
        %code @one_page_records
        %em before
        the callback, so that the object is injected into the view and the callback block has access to the object as well.
    
        The callback can be setup separately as a block:
    
        :plain
          <pre>
          @grid.with_paginated_resultset do |records|
            ...
          end
          </pre>
    
        or as an argument of
        %code initialize_grid
        where the value is the name of the method to be invoked:
    
        :plain
          <pre>
          @grid = initialize_grid(Task,
            with_paginated_resultset: :process_records
          )
          </pre>
    
    = show_code
    
    = render   'grid'
    
    .row-fluid
      .col-md-12
        .well
          = @one_page_records.size
          records on the current page:
          = @one_page_records.map(&:id).to_sentence
    
  • <%= grid(@tasks_grid, hide_submit_button: true) do |g|
    
      g.column name:  'ID', attribute: 'id', filter: false
    
      g.column name:  'Title', attribute: 'title', auto_reload:  true
    
      g.column name:  'Priority', attribute: 'priority_id', custom_filter: Priority.to_dropdown, auto_reload:  true do |task|
        task.priority.name if task.priority
      end
    
      g.column name:  'Status', attribute: 'status_id', custom_filter: Status.to_dropdown, auto_reload:  true  do |task|
        task.status.name if task.status
      end
    
      g.column name:  'Project Name', attribute: 'project_id', custom_filter: Project.to_dropdown, auto_reload:  true do |task|
        task.project.name if task.project
      end
    
      g.column  name:  'Archived', attribute: 'archived', auto_reload:  true do |task|
        task.archived? ? 'Yes' : 'No'
      end
    
      g.column name:  'Added', attribute: 'created_at', auto_reload:  true do |task|
        task.created_at.to_s(:short)
      end
    
    end -%>
    
IDTitlePriorityStatusProject NameArchivedAdded

491-500 / 500 Alle rijen tonen
439namVerifiedDivine FirmwareNo23 May 12:37
444asperiores quisLowVerifiedSuper GameYes09 Apr 12:37
460consequatur nemoHighVerifiedUltimate WebsiteNo10 Apr 12:37
466autAnecdoticVerifiedDivine FirmwareNo19 Mar 12:37
473voluptatum quiVerifiedUltimate WebsiteNo11 Jun 12:37
479provident exUrgentVerifiedSuper GameNo02 May 12:37
483laborum dictaLowVerifiedSuper GameNo09 May 12:37
493estVerifiedDivine FirmwareNo28 May 12:37
495qui ut inAnecdoticVerifiedUltimate WebsiteNo21 Apr 12:37
422harum enimAnecdoticVerifiedSuper GameNo25 Apr 12:37
10 records on the current page: 439, 444, 460, 466, 473, 479, 483, 493, 495, and 422

Fork me on GitHub