From bc353f6887225d794de83b2f88558152fdb3a8ec Mon Sep 17 00:00:00 2001
From: davidg73 <david.gunnarsson@univie.ac.at>
Date: Tue, 27 May 2025 15:21:01 +0200
Subject: [PATCH] Configure sortable for final models

---
 app/avo/resources/actor.rb                 |  5 +++--
 app/avo/resources/actor_type.rb            |  4 +++-
 app/avo/resources/archaeometry_analysis.rb | 18 +++++++++---------
 app/avo/resources/fabric_code.rb           |  1 -
 app/avo/resources/sample.rb                | 17 +++++++++--------
 5 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/app/avo/resources/actor.rb b/app/avo/resources/actor.rb
index 760601b..606eee2 100644
--- a/app/avo/resources/actor.rb
+++ b/app/avo/resources/actor.rb
@@ -1,5 +1,6 @@
 class Avo::Resources::Actor < Avo::BaseResource
   self.title = -> { "#{record.forename} #{record.name}".strip }
+  self.index_query = -> { query.order(name: :asc) }
 
   # self.includes = []
   # self.attachments = []
@@ -8,8 +9,8 @@ class Avo::Resources::Actor < Avo::BaseResource
   # }
 
   def fields
-    field :name, as: :short_text
-    field :forename, as: :text, nullable: true
+    field :name, as: :short_text, sortable: true
+    field :forename, as: :text, nullable: true, sortable: true
     field :actor_type, as: :belongs_to
     field :address, as: :short_text, nullable: true
     field :phone, as: :text, nullable: true
diff --git a/app/avo/resources/actor_type.rb b/app/avo/resources/actor_type.rb
index b9cee35..dc81463 100644
--- a/app/avo/resources/actor_type.rb
+++ b/app/avo/resources/actor_type.rb
@@ -1,5 +1,7 @@
 class Avo::Resources::ActorType < Avo::BaseResource
   self.title = :actor_type
+  self.index_query = -> { query.order(actor_type: :asc) }
+
   # self.includes = []
   # self.attachments = []
   # self.search = {
@@ -7,6 +9,6 @@ class Avo::Resources::ActorType < Avo::BaseResource
   # }
 
   def fields
-    field :actor_type, as: :text
+    field :actor_type, as: :text, sortable: true
   end
 end
diff --git a/app/avo/resources/archaeometry_analysis.rb b/app/avo/resources/archaeometry_analysis.rb
index d163180..0c5997d 100644
--- a/app/avo/resources/archaeometry_analysis.rb
+++ b/app/avo/resources/archaeometry_analysis.rb
@@ -1,5 +1,6 @@
 class Avo::Resources::ArchaeometryAnalysis < Avo::BaseResource
   self.title = :sample_no
+  self.index_query = -> { query.order(sample_no: :asc) }
 
   # self.includes = []
   # self.attachments = []
@@ -8,19 +9,18 @@ class Avo::Resources::ArchaeometryAnalysis < Avo::BaseResource
   # }
 
   def fields
-    field :id, as: :id
-    field :sample_no, as: :text
+    field :sample_no, as: :text, sortable: true
     field :inclusions, as: :textarea
-    field :inventory_number, as: :text
-    field :type_of_ware, as: :text
-    field :fabric_type, as: :text
+    field :inventory_number, as: :text, sortable: true
+    field :type_of_ware, as: :text, sortable: true
+    field :fabric_type, as: :text, sortable: true
     field :comment, as: :textarea
+    field :discovery_site, as: :text, sortable: true
+    field :chronology, as: :text, sortable: true
+    field :date, as: :date
+    field :author_institution, as: :text
     field :author_name, as: :text
     field :author_email, as: :text
-    field :author_institution, as: :text
-    field :discovery_site, as: :text
-    field :chronology, as: :text
-    field :date, as: :date
     field :void_abundance, as: :text
     field :quartz_grains, as: :text
     field :optical_activity, as: :text
diff --git a/app/avo/resources/fabric_code.rb b/app/avo/resources/fabric_code.rb
index 2461a7e..f9335cb 100644
--- a/app/avo/resources/fabric_code.rb
+++ b/app/avo/resources/fabric_code.rb
@@ -11,7 +11,6 @@ class Avo::Resources::FabricCode < Avo::BaseResource
   # }
 
   def fields
-    field :id, as: :id
     field :gazetteer, as: :belongs_to
     field :ware, as: :belongs_to
     field :serial_number, as: :number
diff --git a/app/avo/resources/sample.rb b/app/avo/resources/sample.rb
index 7bae194..c2be836 100644
--- a/app/avo/resources/sample.rb
+++ b/app/avo/resources/sample.rb
@@ -1,5 +1,6 @@
 class Avo::Resources::Sample < Avo::BaseResource
   self.title = :sample_no
+  self.index_query = -> { query.includes(:ware, :fabric_code, :status, :taken_by_institution, :taken_by_person, :production_site, :discovery_site, :vessel_type, :certainty_archaeometric, :certainty_archaeological, :fragmentation, :surface_description, :texture, :hardness).order(sample_no: :asc) }
 
   # self.includes = []
   # self.attachments = []
@@ -8,15 +9,15 @@ class Avo::Resources::Sample < Avo::BaseResource
   # }
 
   def fields
-    field :sample_no, as: :text
+    field :sample_no, as: :text, sortable: true
     field :publication_restricted, as: :boolean
-    field :fabric_code, as: :belongs_to
+    field :fabric_code, as: :belongs_to, sortable: -> { query.joins(:fabric_code).order(fabric_code: {serial_number: direction}) }
     field :previous_fabric_name, as: :textarea
-    field :ware, as: :belongs_to
+    field :ware, as: :belongs_to, sortable: -> { query.joins(:ware).order(name: direction) }
     field :ware_addinfo, as: :textarea
     field :analysis_method_ids, as: :select, options: -> { AnalysisMethod.all.map { |am| ["#{am.code} - #{am.method}", am.id] } }, multiple: true
     field :analysis_method_addinfo, as: :textarea
-    field :analysis_author, as: :number
+    field :analysis_author, as: :number, sortable: true
     field :pet_min_type, as: :textarea
     field :analysis_publication, as: :textarea
     field :status, as: :belongs_to
@@ -24,19 +25,19 @@ class Avo::Resources::Sample < Avo::BaseResource
     field :taken_by_institution, as: :belongs_to
     field :taken_by_person, as: :belongs_to
     field :taken_by_addinfo, as: :textarea
-    field :production_site, as: :belongs_to
+    field :production_site, as: :belongs_to, sortable: -> { query.joins(:production_site).order(production_site: {name: direction}) }
     field :production_site_addinfo, as: :textarea
     field :context_code, as: :text
     field :certainty_archaeometric, as: :belongs_to
     field :certainty_archaeological, as: :belongs_to
-    field :discovery_site, as: :belongs_to
+    field :discovery_site, as: :belongs_to, sortable: -> { query.joins(:discovery_site).order(discovery_site: {name: direction}) }
     field :discovery_site_addinfo, as: :textarea
     field :images, as: :textarea
-    field :vessel_type, as: :belongs_to
+    field :vessel_type, as: :belongs_to, sortable: -> { query.joins(:vessel_type).order(vessel_type: {name: direction}) }
     field :vessel_type_addinfo, as: :textarea
     field :classification_id, as: :number
     field :classification_addinfo, as: :textarea
-    field :chronology_object_ID, as: :number
+    field :chronology_object_ID, as: :number, sortable: true
     field :chronology_object_addinfo, as: :textarea
     field :chronology_context, as: :textarea
     field :chronology_context_addinfo, as: :textarea
-- 
GitLab