From 34a97fa7df353984f7892e139b9c8079a03952e0 Mon Sep 17 00:00:00 2001
From: davidg73 <david.gunnarsson@univie.ac.at>
Date: Tue, 27 May 2025 14:37:09 +0200
Subject: [PATCH] Make use of sortable for location and object data

---
 app/avo/resources/analysis_method.rb  | 5 ++++-
 app/avo/resources/form.rb             | 3 ++-
 app/avo/resources/fragmentation.rb    | 3 ++-
 app/avo/resources/gazetteer.rb        | 4 ++--
 app/avo/resources/literature.rb       | 3 ++-
 app/avo/resources/phase.rb            | 2 +-
 app/avo/resources/type.rb             | 5 ++++-
 app/avo/resources/user.rb             | 5 +++--
 app/avo/resources/vessel_form_type.rb | 5 ++---
 app/avo/resources/ware.rb             | 4 ++--
 10 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/app/avo/resources/analysis_method.rb b/app/avo/resources/analysis_method.rb
index 0ff38c4..2090579 100644
--- a/app/avo/resources/analysis_method.rb
+++ b/app/avo/resources/analysis_method.rb
@@ -1,5 +1,8 @@
 class Avo::Resources::AnalysisMethod < Avo::BaseResource
   self.title = :code
+  self.index_query = -> {
+    query.order(code: :asc)
+  }
 
   # self.includes = []
   # self.attachments = []
@@ -8,7 +11,7 @@ class Avo::Resources::AnalysisMethod < Avo::BaseResource
   # }
 
   def fields
-    field :code, as: :text
+    field :code, as: :text, sortable: true
     field :method, as: :text
   end
 end
diff --git a/app/avo/resources/form.rb b/app/avo/resources/form.rb
index 5b5fa26..d840dd4 100644
--- a/app/avo/resources/form.rb
+++ b/app/avo/resources/form.rb
@@ -1,5 +1,6 @@
 class Avo::Resources::Form < Avo::BaseResource
   self.title = :form
+  self.index_query = -> { query.order(form: :asc) }
 
   # self.includes = []
   # self.attachments = []
@@ -8,6 +9,6 @@ class Avo::Resources::Form < Avo::BaseResource
   # }
 
   def fields
-    field :form, as: :text
+    field :form, as: :text, sortable: true
   end
 end
diff --git a/app/avo/resources/fragmentation.rb b/app/avo/resources/fragmentation.rb
index 2cd9ad5..b9089ca 100644
--- a/app/avo/resources/fragmentation.rb
+++ b/app/avo/resources/fragmentation.rb
@@ -1,5 +1,6 @@
 class Avo::Resources::Fragmentation < Avo::BaseResource
   self.title = :fragmentation
+  self.index_query = -> { query.order(fragmentation: :asc) }
 
   # self.includes = []
   # self.attachments = []
@@ -8,6 +9,6 @@ class Avo::Resources::Fragmentation < Avo::BaseResource
   # }
 
   def fields
-    field :fragmentation, as: :text
+    field :fragmentation, as: :text, sortable: true
   end
 end
diff --git a/app/avo/resources/gazetteer.rb b/app/avo/resources/gazetteer.rb
index 9c54da9..f5f96e3 100644
--- a/app/avo/resources/gazetteer.rb
+++ b/app/avo/resources/gazetteer.rb
@@ -19,10 +19,10 @@ class Avo::Resources::Gazetteer < Avo::BaseResource
   # }
 
   def fields
-    field :name, as: :text
+    field :name, as: :text, sortable: true
     field :name_alternative, as: :text
     field :show, as: :boolean
-    field :code, as: :text
+    field :code, as: :text, sortable: true
     field :type, as: :number
     field :parent, as: :belongs_to
     field :tgn, as: :number
diff --git a/app/avo/resources/literature.rb b/app/avo/resources/literature.rb
index affc6d8..4de75ce 100644
--- a/app/avo/resources/literature.rb
+++ b/app/avo/resources/literature.rb
@@ -1,5 +1,6 @@
 class Avo::Resources::Literature < Avo::BaseResource
   self.title = :shortcut
+  self.index_query = -> { query.order(shortcut: :asc) }
 
   # self.includes = []
   # self.attachments = []
@@ -8,7 +9,7 @@ class Avo::Resources::Literature < Avo::BaseResource
   # }
 
   def fields
-    field :shortcut, as: :text
+    field :shortcut, as: :text, sortable: true
     field :full_reference, as: :short_text, nullable: true
   end
 end
diff --git a/app/avo/resources/phase.rb b/app/avo/resources/phase.rb
index d5d0fcd..1548d5d 100644
--- a/app/avo/resources/phase.rb
+++ b/app/avo/resources/phase.rb
@@ -11,7 +11,7 @@ class Avo::Resources::Phase < Avo::BaseResource
   # }
 
   def fields
-    field :phase, as: :text
+    field :phase, as: :text, sortable: true
     field :from, as: :number, nullable: true
     field :to, as: :number, nullable: true
     field :sorting, as: :text
diff --git a/app/avo/resources/type.rb b/app/avo/resources/type.rb
index 8e30835..d673f5c 100644
--- a/app/avo/resources/type.rb
+++ b/app/avo/resources/type.rb
@@ -1,5 +1,8 @@
 class Avo::Resources::Type < Avo::BaseResource
   self.title = :type
+  self.index_query = -> {
+    query.order(type: :asc)
+  }
 
   # self.includes = []
   # self.attachments = []
@@ -8,6 +11,6 @@ class Avo::Resources::Type < Avo::BaseResource
   # }
 
   def fields
-    field :type, as: :text
+    field :type, as: :text, sortable: true
   end
 end
diff --git a/app/avo/resources/user.rb b/app/avo/resources/user.rb
index 78b6571..7676e43 100644
--- a/app/avo/resources/user.rb
+++ b/app/avo/resources/user.rb
@@ -1,6 +1,7 @@
 class Avo::Resources::User < Avo::BaseResource
   self.title = :email_address
   self.description = User.all_role_descriptions
+  self.index_query = -> { query.order(created_at: :desc) }
 
   # self.attachments = []
   # self.search = {
@@ -8,7 +9,7 @@ class Avo::Resources::User < Avo::BaseResource
   # }
 
   def fields
-    field :email_address, as: :text
-    field :role, as: :select, options: User::ROLES
+    field :email_address, as: :text, sortable: true
+    field :role, as: :select, options: User::ROLES, sortable: true
   end
 end
diff --git a/app/avo/resources/vessel_form_type.rb b/app/avo/resources/vessel_form_type.rb
index 10aa912..31a1f18 100644
--- a/app/avo/resources/vessel_form_type.rb
+++ b/app/avo/resources/vessel_form_type.rb
@@ -1,7 +1,6 @@
 class Avo::Resources::VesselFormType < Avo::BaseResource
   self.title = :name
-  self.default_sort_column = :name
-  self.default_sort_direction = :asc
+  self.index_query = -> { query.order(name: :asc) }
 
   # self.includes = []
   # self.attachments = []
@@ -10,6 +9,6 @@ class Avo::Resources::VesselFormType < Avo::BaseResource
   # }
 
   def fields
-    field :name, as: :text
+    field :name, as: :text, sortable: true
   end
 end
diff --git a/app/avo/resources/ware.rb b/app/avo/resources/ware.rb
index 43140b6..b0967ee 100644
--- a/app/avo/resources/ware.rb
+++ b/app/avo/resources/ware.rb
@@ -11,9 +11,9 @@ class Avo::Resources::Ware < Avo::BaseResource
   # }
 
   def fields
-    field :name, as: :text
+    field :name, as: :text, sortable: true
     field :code, as: :text
     field :definition, as: :text, nullable: true
-    field :sort_key, as: :number
+    field :sort_key, as: :number, sortable: true
   end
 end
-- 
GitLab