feat(manager): exports dashboard
This commit is contained in:
parent
ab84222ce4
commit
08c68ef970
7 changed files with 126 additions and 0 deletions
44
app/controllers/manager/exports_controller.rb
Normal file
44
app/controllers/manager/exports_controller.rb
Normal file
|
@ -0,0 +1,44 @@
|
|||
module Manager
|
||||
class ExportsController < Manager::ApplicationController
|
||||
# Overwrite any of the RESTful controller actions to implement custom behavior
|
||||
# For example, you may want to send an email after a foo is updated.
|
||||
#
|
||||
# def update
|
||||
# super
|
||||
# send_foo_updated_email(requested_resource)
|
||||
# end
|
||||
|
||||
# Override this method to specify custom lookup behavior.
|
||||
# This will be used to set the resource for the `show`, `edit`, and `update`
|
||||
# actions.
|
||||
#
|
||||
# def find_resource(param)
|
||||
# Foo.find_by!(slug: param)
|
||||
# end
|
||||
#
|
||||
def scoped_resource
|
||||
super.includes(groupe_instructeurs: :procedure)
|
||||
end
|
||||
|
||||
def filter_resources(resources, search_term:)
|
||||
return super if search_term.blank?
|
||||
|
||||
ids = Export.joins(:groupe_instructeurs).where(groupe_instructeurs: { procedure_id: search_term }).pluck(:id)
|
||||
super.or(Export.where(id: ids))
|
||||
end
|
||||
|
||||
# Override `resource_params` if you want to transform the submitted
|
||||
# data before it's persisted. For example, the following would turn all
|
||||
# empty values into nil values. It uses other APIs such as `resource_class`
|
||||
# and `dashboard`:
|
||||
#
|
||||
# def resource_params
|
||||
# params.require(resource_class.model_name.param_key).
|
||||
# permit(dashboard.permitted_attributes).
|
||||
# transform_values { |value| value == "" ? nil : value }
|
||||
# end
|
||||
|
||||
# See https://administrate-prototype.herokuapp.com/customizing_controller_actions
|
||||
# for more information
|
||||
end
|
||||
end
|
60
app/dashboards/export_dashboard.rb
Normal file
60
app/dashboards/export_dashboard.rb
Normal file
|
@ -0,0 +1,60 @@
|
|||
require "administrate/base_dashboard"
|
||||
|
||||
class ExportDashboard < Administrate::BaseDashboard
|
||||
# ATTRIBUTE_TYPES
|
||||
# a hash that describes the type of each of the model's fields.
|
||||
#
|
||||
# Each different type represents an Administrate::Field object,
|
||||
# which determines how the attribute is displayed
|
||||
# on pages throughout the dashboard.
|
||||
ATTRIBUTE_TYPES = {
|
||||
id: Field::Number.with_options(searchable: true),
|
||||
file: AttachmentField,
|
||||
format: Field::Select.with_options(searchable: false, collection: -> (field) { field.resource.class.send(field.attribute.to_s.pluralize).keys }),
|
||||
groupe_instructeurs: IdField,
|
||||
job_status: Field::Select.with_options(searchable: false, collection: -> (field) { field.resource.class.send(field.attribute.to_s.pluralize).keys }),
|
||||
key: Field::Text,
|
||||
procedure_presentation: IdField,
|
||||
procedure_presentation_snapshot: Field::String.with_options(searchable: false),
|
||||
statut: Field::Select.with_options(searchable: false, collection: -> (field) { field.resource.class.send(field.attribute.to_s.pluralize).keys }),
|
||||
time_span_type: Field::Select.with_options(searchable: false, collection: -> (field) { field.resource.class.send(field.attribute.to_s.pluralize).keys }),
|
||||
created_at: Field::DateTime.with_options(format: "%d/%m %H:%M:%S"),
|
||||
updated_at: Field::DateTime.with_options(format: "%d/%m %H:%M:%S"),
|
||||
procedure: IdField
|
||||
}.freeze
|
||||
|
||||
# COLLECTION_ATTRIBUTES
|
||||
# an array of attributes that will be displayed on the model's index page.
|
||||
#
|
||||
# By default, it's limited to four items to reduce clutter on index pages.
|
||||
# Feel free to add, remove, or rearrange items.
|
||||
COLLECTION_ATTRIBUTES = [:id, :procedure, :job_status, :created_at, :updated_at].freeze
|
||||
|
||||
# SHOW_PAGE_ATTRIBUTES
|
||||
# an array of attributes that will be displayed on the model's show page.
|
||||
SHOW_PAGE_ATTRIBUTES = [:id, :procedure, :job_status, :format, :statut, :file, :groupe_instructeurs, :key, :procedure_presentation, :procedure_presentation_snapshot, :time_span_type, :created_at, :updated_at].freeze
|
||||
|
||||
# FORM_ATTRIBUTES
|
||||
# an array of attributes that will be displayed
|
||||
# on the model's form (`new` and `edit`) pages.
|
||||
FORM_ATTRIBUTES = [].freeze
|
||||
|
||||
# COLLECTION_FILTERS
|
||||
# a hash that defines filters that can be used while searching via the search
|
||||
# field of the dashboard.
|
||||
#
|
||||
# For example to add an option to search for open resources by typing "open:"
|
||||
# in the search field:
|
||||
#
|
||||
# COLLECTION_FILTERS = {
|
||||
# open: ->(resources) { resources.where(open: true) }
|
||||
# }.freeze
|
||||
COLLECTION_FILTERS = {}.freeze
|
||||
|
||||
# Overwrite this method to customize how exports are displayed
|
||||
# across all pages of the admin dashboard.
|
||||
#
|
||||
# def display_resource(export)
|
||||
# "Export ##{export.id}"
|
||||
# end
|
||||
end
|
|
@ -3,6 +3,8 @@ require "administrate/field/base"
|
|||
class AttachmentField < Administrate::Field::Base
|
||||
include ActionView::Helpers::NumberHelper
|
||||
def to_s
|
||||
return "" if data.blank?
|
||||
|
||||
"#{data.filename} (#{number_to_human_size(data.byte_size)})"
|
||||
end
|
||||
end
|
||||
|
|
16
app/fields/id_field.rb
Normal file
16
app/fields/id_field.rb
Normal file
|
@ -0,0 +1,16 @@
|
|||
require "administrate/field/base"
|
||||
|
||||
class IdField < Administrate::Field::Number
|
||||
def to_s
|
||||
return "" if data.nil?
|
||||
return data.ids.map { format(_1) }.join(", ") if data.respond_to?(:ids)
|
||||
|
||||
format(data.id)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def format(id)
|
||||
"##{id}"
|
||||
end
|
||||
end
|
1
app/views/fields/id_field/_index.html.haml
Normal file
1
app/views/fields/id_field/_index.html.haml
Normal file
|
@ -0,0 +1 @@
|
|||
= field.to_s
|
1
app/views/fields/id_field/_show.html.haml
Normal file
1
app/views/fields/id_field/_show.html.haml
Normal file
|
@ -0,0 +1 @@
|
|||
= field.to_s
|
|
@ -58,6 +58,8 @@ Rails.application.routes.draw do
|
|||
|
||||
resources :bill_signatures, only: [:index]
|
||||
|
||||
resources :exports, only: [:index, :show]
|
||||
|
||||
resources :services, only: [:index, :show]
|
||||
|
||||
resources :super_admins, only: [:index, :show, :destroy]
|
||||
|
|
Loading…
Reference in a new issue