Class: Oversee::ResourcesController

Inherits:
BaseController
  • Object
show all
Includes:
ActionView::RecordIdentifier
Defined in:
app/controllers/oversee/resources_controller.rb

Direct Known Subclasses

Oversee::Resources::FieldsController

Instance Method Summary collapse

Instance Method Details

#associationObject



81
82
83
84
85
86
87
88
89
90
91
# File 'app/controllers/oversee/resources_controller.rb', line 81

def association
  @resources = @resource_class.find(params[:id]).send(params[:association_name])
  @pagy, @resources = pagy(@resources, limit: params[:per_page] || Oversee.configuration.per_page)

  render Oversee::Resources::Index.new(
    resources: @resources,
    resource_class: @resource_class,
    pagy: @pagy,
    params: params
  )
end

#createObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'app/controllers/oversee/resources_controller.rb', line 29

def create
  @resource = @resource_class.new(resource_params)

  respond_to do |format|
    if @resource.update(resource_params)
      flash.now[:notice] = "Resource was successfully created."
      format.html { redirect_to resource_path(@resource.id, resource_class_name: @resource_class) }
      format.turbo_stream { redirect_to resource_path(@resource.id, resource_class_name: @resource_class), status: :see_other }
    else
      format.html { render :new }
      format.turbo_stream { render turbo_stream: turbo_stream.replace(dom_id(@resource), Oversee::Resources::Form.new(resource: @resource)) }
    end
  end
end

#destroyObject



76
77
78
79
# File 'app/controllers/oversee/resources_controller.rb', line 76

def destroy
  @resource.destroy
  redirect_to resources_path(resource: @resource_class)
end

#editObject



53
54
# File 'app/controllers/oversee/resources_controller.rb', line 53

def edit
end

#indexObject



9
10
11
12
13
14
15
16
17
18
# File 'app/controllers/oversee/resources_controller.rb', line 9

def index
  @pagy, @resources = pagy(@resources, limit: params[:per_page] || Oversee.configuration.per_page)

  render Oversee::Resources::Index.new(
    resources: @resources,
    resource_class: @resource_class,
    pagy: @pagy,
    params: params
  ), layout: false
end

#newObject



20
21
22
23
24
25
26
27
# File 'app/controllers/oversee/resources_controller.rb', line 20

def new
  @resource = @resource_class.new
  render Oversee::Resources::New.new(
    resource: @resource,
    resource_class: @resource_class,
    params: params
  ), layout: false
end

#showObject



44
45
46
47
48
49
50
51
# File 'app/controllers/oversee/resources_controller.rb', line 44

def show
  render Oversee::Resources::Show.new(
    resource: @resource,
    resource_class: @resource_class,
    resource_associations: resource_associations,
    params: params
  ), layout: false
end

#tableObject



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'app/controllers/oversee/resources_controller.rb', line 93

def table
  if params[:association_name].present?
    @resources = @resource_class.find(params[:id]).send(params[:association_name])
  else
    set_resources
  end

  component_id = dom_id(@resource_class, :table)
  component = Oversee::Resources::Table.new(resource_class: @resource_class, resources: @resources, params: params)

  respond_to do |format|
    format.turbo_stream do
      render turbo_stream: turbo_stream.replace(component_id, component)
    end
    format.html do
      render component, layout: false
    end
  end
end

#updateObject



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'app/controllers/oversee/resources_controller.rb', line 56

def update
  key = params[:oversee_key]
  datatype = params[:oversee_datatype]

  respond_to do |format|
    if @resource.update(resource_params)
      flash.now[:notice] = "#{@resource.class.to_s.titleize.capitalize.gsub("::"," ")} was successfully updated!"
      format.html { redirect_to resource_path(@resource.id, resource: @resource_class) }
      format.turbo_stream do
        component = Oversee::Field::Set.new(resource: @resource, datatype:, key:, value: @resource.send(key))
        render turbo_stream: [
          turbo_stream.replace(dom_id(@resource, key), component),
          turbo_stream.replace(:flash, Oversee::Flash)
        ]
      end
    else
    end
  end
end