Class: EasyAdmin::ResourcesController

Inherits:
ApplicationController show all
Includes:
Concerns::BelongsToEditing, Concerns::InlineFieldEditing, Concerns::ResourceAuthorization, Concerns::ResourceFiltering, Concerns::ResourceLoading, Concerns::ResourcePagination, ResourceVersions
Defined in:
app/controllers/easy_admin/resources_controller.rb

Constant Summary

Constants included from ResourceVersions

EasyAdmin::ResourceVersions::DEFAULT_VERSIONS_PER_PAGE, EasyAdmin::ResourceVersions::MAX_VERSIONS_PER_PAGE

Instance Method Summary collapse

Methods included from Concerns::BelongsToEditing

#belongs_to_edit_attached, #belongs_to_reattach, #update_belongs_to_attached

Methods included from Concerns::InlineFieldEditing

#edit_field, #suggest, #update_field

Methods included from ResourceVersions

#load_record_versions, #record_has_versions?, #revert_version, #version_diff, #version_statistics, #versions

Methods inherited from ApplicationController

#policy_for

Instance Method Details

#chartObject



46
47
48
49
50
51
52
# File 'app/controllers/easy_admin/resources_controller.rb', line 46

def chart
  chart_config = find_chart_config(params[:chart_id])
  render turbo_stream: turbo_stream.replace(
    "chart-#{params[:chart_id]}",
    EasyAdmin::LazyChartCardComponent.new(chart_config: chart_config, record: @record)
  )
end

#createObject



66
67
68
69
70
71
72
73
74
75
# File 'app/controllers/easy_admin/resources_controller.rb', line 66

def create
  @record = @resource_class.model_class.new(record_params)

  if @record.save
    redirect_to easy_admin.resource_path(@resource_class.route_key, @record),
                notice: "#{@resource_class.singular_title} was successfully created."
  else
    render :new, status: :unprocessable_entity
  end
end

#destroyObject



104
105
106
107
108
# File 'app/controllers/easy_admin/resources_controller.rb', line 104

def destroy
  @record.destroy
  redirect_to easy_admin.resources_path(@resource_class.route_key),
              notice: "#{@resource_class.singular_title} was successfully deleted."
end

#editObject



77
78
# File 'app/controllers/easy_admin/resources_controller.rb', line 77

def edit
end

#indexObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/controllers/easy_admin/resources_controller.rb', line 13

def index
  # Prepare pagination data using concern methods
  prepare_index_pagination_data

  respond_to do |format|
    format.html do
      # Check if this is a turbo frame request
      if turbo_frame_request?
        @current_params = params.permit(:search, :scope, :sort, :direction, :period, :page, q: {})
        render template: 'easy_admin/resources/index_frame', layout: false
      else
        # Regular page load - shows skeleton with layout
        # Will render app/views/easy_admin/resources/index.html.erb
      end
    end
    format.turbo_stream do
      render turbo_stream: build_infinite_scroll_turbo_stream
    end
  end
end

#metricObject

Lazy loading endpoints for show page components



38
39
40
41
42
43
44
# File 'app/controllers/easy_admin/resources_controller.rb', line 38

def metric
  metric_config = find_metric_config(params[:metric_id])
  render turbo_stream: turbo_stream.replace(
    "metric-#{params[:metric_id]}",
    EasyAdmin::LazyMetricCardComponent.new(metric_config: metric_config, record: @record)
  )
end

#newObject



62
63
64
# File 'app/controllers/easy_admin/resources_controller.rb', line 62

def new
  @record = @resource_class.model_class.new
end

#showObject



34
35
# File 'app/controllers/easy_admin/resources_controller.rb', line 34

def show
end

#tab_contentObject



54
55
56
57
58
59
60
# File 'app/controllers/easy_admin/resources_controller.rb', line 54

def tab_content
  tab_config = find_tab_config(params[:tab_name])
  render turbo_stream: turbo_stream.replace(
    "tab-#{params[:tab_name]}-content",
    render_tab_elements(tab_config[:elements])
  )
end

#updateObject



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'app/controllers/easy_admin/resources_controller.rb', line 80

def update
  if @record.update(record_params)
    respond_to do |format|
      format.html {
        redirect_to easy_admin.resource_path(@resource_class.route_key, @record),
                    notice: "#{@resource_class.singular_title} was successfully updated."
      }
      format.turbo_stream {
        render turbo_stream: [
          turbo_stream.update("notifications",
                              EasyAdmin::NotificationComponent.new(
                                type: :success,
                                message: "#{@resource_class.singular_title} was successfully updated!",
                                title: "Success"
                              ).call
          )
        ]
      }
    end
  else
    render :edit, status: :unprocessable_entity
  end
end