diff options
| author | jpl | 2017-08-16 15:04:35 +0200 |
|---|---|---|
| committer | jpl | 2017-08-16 15:04:35 +0200 |
| commit | f4f9f04f41696dd59cc982d8ea7a8ed862536622 (patch) | |
| tree | 404629e24cbabff2e401e5e6fec6a0ccb0bf5563 /app/controllers | |
| parent | 6b15887670d16978d81f3481ee402ba11ca37625 (diff) | |
| download | chouette-core-f4f9f04f41696dd59cc982d8ea7a8ed862536622.tar.bz2 | |
Refs #4256: adding pagination and so for imports#index
Diffstat (limited to 'app/controllers')
| -rw-r--r-- | app/controllers/imports_controller.rb | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/app/controllers/imports_controller.rb b/app/controllers/imports_controller.rb index 70c5c1a0d..9ddbbb012 100644 --- a/app/controllers/imports_controller.rb +++ b/app/controllers/imports_controller.rb @@ -11,7 +11,15 @@ class ImportsController < BreadcrumbController end def index - index! do + index! do |format| + format.html { + if collection.out_of_bounds? + redirect_to params.merge(:page => 1) + end + + @imports = decorate_imports(@imports) + } + build_breadcrumb :index end end @@ -34,6 +42,17 @@ class ImportsController < BreadcrumbController end end + protected + def collection + @q = parent.imports.search(params[:q]) + + if sort_column && sort_direction + @imports ||= @q.result(distinct: true).order(sort_column + ' ' + sort_direction).paginate(page: params[:page], per_page: 10) + else + @imports ||= @q.result(distinct: true).order(:name).paginate(page: params[:page], per_page: 10) + end + end + private def build_resource @@ -44,6 +63,28 @@ class ImportsController < BreadcrumbController end def import_params - params.require(:import).permit(:name, :file, :type, :referential_id) + params.require(:import).permit( + :name, + :file, + :type, + :referential_id + ) + end + + def sort_column + parent.imports.column_names.include?(params[:sort]) ? params[:sort] : 'name' + end + def sort_direction + %w[asc desc].include?(params[:direction]) ? params[:direction] : 'asc' + end + + def decorate_imports(imports) + ModelDecorator.decorate( + imports, + with: ImportDecorator, + context: { + workbench: @workbench + } + ) end end |
