activeadmin_sortable_table
activeadmin_sortable_table copied to clipboard
Drag and drop sort interface for ActiveAdmin tables
Active Admin Sortable Table
This gem extends ActiveAdmin so that your index page's table rows can be orderable via a drag-and-drop interface.
Improvements over the @neo version
- Test coverage
- Configurable labels for handler
- Move to top button allows to push any item from any page to the top of the list
- Sorting works on all pages ( not only on the first one)
Prerequisites
This extension assumes that you're using acts_as_list on any model you want to be sortable.
class Page < ActiveRecord::Base
acts_as_list
end
Usage
Add it to your Gemfile
gem "activeadmin_sortable_table"
Include the JavaScript in active_admin.js.coffee
#= require activeadmin_sortable_table
Include the Stylesheet in active_admin.css.scss
@import "activeadmin_sortable_table"
Configure your ActiveAdmin Resource
ActiveAdmin.register Page do
include ActiveAdmin::SortableTable # creates the controller action which handles the sorting
config.sort_order = 'position_asc' # assumes you are using 'position' for your acts_as_list column
index do
handle_column
end
show do |c|
attributes_table do
row :id
row :name
end
panel 'Contents' do
table_for c.collection_memberships do
handle_column
column :position
column :collectable
end
end
end
end
Configure handler
You can override handler column symbol using handle_column options:
You can configure sort_url
using handle column options by providing static value, symbolized instance method name, or blocks.
handle_column sort_url: ->(category) { compute_url_for_category(category) }
handle_column sort_url: '/admin/categories/1/sort'
handle_column sort_url: :sort_category
The same options available for move_to_top_url
:
handle_column move_to_top_url: '/admin/categories/1/move_to_top
It's also possible to override handle lables:
handle_column sort_handle: '☰'.html_safe
handle_column move_to_top_handle: 'Move to top'
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Prepare tests database (
bundle exec rake dummy:prepare
) - Make your changes and runs specs (
bundle exec rspec
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create Pull Request