From 40d9edb1dad467ef765f87624513b5f79a6baa3f Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 16 Jan 2026 10:51:36 -0800 Subject: [PATCH] update admin panel --- Gemfile | 1 + Gemfile.lock | 5 +++++ app/avo/resources/account.rb | 13 ++++++++----- app/avo/resources/add_on.rb | 6 +++++- app/avo/resources/cluster.rb | 6 +++++- app/avo/resources/project.rb | 6 +++++- app/avo/resources/team.rb | 6 +++++- app/avo/resources/user.rb | 6 +++++- app/models/account.rb | 4 ++++ app/models/add_on.rb | 4 ++++ app/models/cluster.rb | 4 ++++ app/models/project.rb | 4 ++++ app/models/team.rb | 4 ++++ app/models/user.rb | 4 ++++ 14 files changed, 63 insertions(+), 10 deletions(-) diff --git a/Gemfile b/Gemfile index ffaa21cc..bb493b9e 100644 --- a/Gemfile +++ b/Gemfile @@ -64,6 +64,7 @@ end gem "actioncable-enhanced-postgresql-adapter", "~> 1.0" gem "annotate", "~> 3.2" gem "avo", "~> 3.25" +gem "ransack", "~> 4.2" gem "cron2english", "~> 0.1.7" gem "cssbundling-rails" gem "devise", "~> 4.9" diff --git a/Gemfile.lock b/Gemfile.lock index 4606f20b..5784e273 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -527,6 +527,10 @@ GEM zeitwerk (~> 2.6) rainbow (3.1.1) rake (13.3.1) + ransack (4.4.1) + activerecord (>= 7.2) + activesupport (>= 7.2) + i18n rdoc (6.15.1) erb psych (>= 4.0.0) @@ -775,6 +779,7 @@ DEPENDENCIES pundit (~> 2.5) rack (~> 3.1) rails (~> 7.2.2) + ransack (~> 4.2) redcarpet (~> 3.6) responders! rspec-rails (~> 8.0) diff --git a/app/avo/resources/account.rb b/app/avo/resources/account.rb index 75f87afb..f1fd0ed9 100644 --- a/app/avo/resources/account.rb +++ b/app/avo/resources/account.rb @@ -1,9 +1,12 @@ class Avo::Resources::Account < Avo::BaseResource - # self.includes = [] - # self.attachments = [] - # self.search = { - # query: -> { query.ransack(id_eq: params[:q], m: "or").result(distinct: false) } - # } + self.search = { + query: -> { query.ransack(name_cont: params[:q], slug_cont: params[:q], m: "or").result(distinct: false) }, + item: -> { + { + title: record.name + } + } + } def fields field :id, as: :id diff --git a/app/avo/resources/add_on.rb b/app/avo/resources/add_on.rb index 964adfed..89b4503f 100644 --- a/app/avo/resources/add_on.rb +++ b/app/avo/resources/add_on.rb @@ -2,7 +2,11 @@ class Avo::Resources::AddOn < Avo::BaseResource self.includes = [ :cluster ] self.search = { query: -> { query.ransack(name_cont: params[:q], chart_type_cont: params[:q], m: "or").result(distinct: false) }, - item: -> { record.name } + item: -> { + { + title: record.name + } + } } def fields diff --git a/app/avo/resources/cluster.rb b/app/avo/resources/cluster.rb index e736de7b..4330156b 100644 --- a/app/avo/resources/cluster.rb +++ b/app/avo/resources/cluster.rb @@ -1,7 +1,11 @@ class Avo::Resources::Cluster < Avo::BaseResource self.search = { query: -> { query.ransack(name_cont: params[:q], m: "or").result(distinct: false) }, - item: -> { record.name } + item: -> { + { + title: record.name + } + } } def fields diff --git a/app/avo/resources/project.rb b/app/avo/resources/project.rb index 1d8e1e9b..6134f566 100644 --- a/app/avo/resources/project.rb +++ b/app/avo/resources/project.rb @@ -1,7 +1,11 @@ class Avo::Resources::Project < Avo::BaseResource self.search = { query: -> { query.ransack(name_cont: params[:q], m: "or").result(distinct: false) }, - item: -> { record.name } + item: -> { + { + title: record.name + } + } } def fields diff --git a/app/avo/resources/team.rb b/app/avo/resources/team.rb index d5817f79..6035cac0 100644 --- a/app/avo/resources/team.rb +++ b/app/avo/resources/team.rb @@ -2,7 +2,11 @@ class Avo::Resources::Team < Avo::BaseResource self.includes = [ :account, :users ] self.search = { query: -> { query.ransack(name_cont: params[:q], m: "or").result(distinct: false) }, - item: -> { record.name } + item: -> { + { + title: record.name + } + } } def fields diff --git a/app/avo/resources/user.rb b/app/avo/resources/user.rb index f4865c3d..4b2bad47 100644 --- a/app/avo/resources/user.rb +++ b/app/avo/resources/user.rb @@ -2,7 +2,11 @@ class Avo::Resources::User < Avo::BaseResource self.includes = [ :accounts, :teams ] self.search = { query: -> { query.ransack(email_cont: params[:q], first_name_cont: params[:q], last_name_cont: params[:q], m: "or").result(distinct: false) }, - item: -> { record.name.presence || record.email } + item: -> { + { + title: record.name.presence || record.email + } + } } def fields diff --git a/app/models/account.rb b/app/models/account.rb index 5339fb8d..25e1a155 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -22,6 +22,10 @@ class Account < ApplicationRecord extend FriendlyId friendly_id :name, use: :slugged + def self.ransackable_attributes(auth_object = nil) + %w[name slug] + end + belongs_to :owner, class_name: "User" has_many :account_users, dependent: :destroy has_many :users, through: :account_users diff --git a/app/models/add_on.rb b/app/models/add_on.rb index f8d8bc8b..2fa2f97f 100644 --- a/app/models/add_on.rb +++ b/app/models/add_on.rb @@ -33,6 +33,10 @@ class AddOn < ApplicationRecord include Favoriteable include AccountUniqueName belongs_to :cluster + + def self.ransackable_attributes(auth_object = nil) + %w[name chart_type] + end has_one :account, through: :cluster enum :status, { diff --git a/app/models/cluster.rb b/app/models/cluster.rb index ca2f545b..4ec44cc2 100644 --- a/app/models/cluster.rb +++ b/app/models/cluster.rb @@ -26,6 +26,10 @@ class Cluster < ApplicationRecord include TeamAccessible include Favoriteable broadcasts_refreshes + + def self.ransackable_attributes(auth_object = nil) + %w[name] + end belongs_to :account has_many :projects, dependent: :destroy diff --git a/app/models/project.rb b/app/models/project.rb index 77b37cfb..d7770442 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -40,6 +40,10 @@ class Project < ApplicationRecord include Favoriteable include AccountUniqueName broadcasts_refreshes + + def self.ransackable_attributes(auth_object = nil) + %w[name] + end belongs_to :cluster has_one :account, through: :cluster has_many :users, through: :account diff --git a/app/models/team.rb b/app/models/team.rb index 20803e4f..a7c2774b 100644 --- a/app/models/team.rb +++ b/app/models/team.rb @@ -23,6 +23,10 @@ class Team < ApplicationRecord extend FriendlyId friendly_id :name, use: :slugged + def self.ransackable_attributes(auth_object = nil) + %w[name] + end + belongs_to :account has_many :team_memberships, dependent: :destroy has_many :users, through: :team_memberships diff --git a/app/models/user.rb b/app/models/user.rb index d51da726..d0d9228a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -58,6 +58,10 @@ class User < ApplicationRecord attr_readonly :admin + def self.ransackable_attributes(auth_object = nil) + %w[email first_name last_name created_at] + end + # has_many :notifications, as: :recipient, dependent: :destroy, class_name: "Noticed::Notification" # has_many :notification_mentions, as: :record, dependent: :destroy, class_name: "Noticed::Event"