Merge pull request #502 from CanineHQ/chriszhu__users_admin

update admin panel
This commit is contained in:
Chris Zhu
2026-01-16 10:54:36 -08:00
committed by GitHub
14 changed files with 63 additions and 10 deletions

View File

@@ -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"

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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, {

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"