aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers
diff options
context:
space:
mode:
authorjpl2017-08-16 15:04:35 +0200
committerjpl2017-08-16 15:04:35 +0200
commitf4f9f04f41696dd59cc982d8ea7a8ed862536622 (patch)
tree404629e24cbabff2e401e5e6fec6a0ccb0bf5563 /app/controllers
parent6b15887670d16978d81f3481ee402ba11ca37625 (diff)
downloadchouette-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.rb45
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