@@ -9,41 +9,51 @@ class AgendaController < ApplicationController
99 skip_before_action :authenticate_person!
1010 skip_authorization_check
1111
12- layout "agenda"
12+ before_action :set_default_type_filter , only : :index
13+ before_action :set_default_date_range_filter , only : :index , unless : :turbo_frame_request?
14+ before_action :preload_filter_select_options , only : :index , unless : :turbo_frame_request?
1315
14- helper_method :group , :events , :event
16+ layout -> { turbo_frame_request? ? false : "agenda" }
17+
18+ helper_method :group , :events , :event , :event_filter
1519
1620 def index
17- init_filter_values
21+ if turbo_frame_request?
22+ render partial : "agenda/list" , locals : { events : events }
23+ else
24+ render :index
25+ end
1826 end
1927
2028 def show
2129 end
2230
2331 private
2432
25- def init_filter_values
26- set_date_range
27- set_event_type
33+ def set_default_type_filter
34+ params [ :filters ] ||= { }
35+ params [ :filters ] [ :type ] ||= { types : [ Event :: Tour . sti_name ] }
2836 end
2937
30- def set_date_range
38+ def set_default_date_range_filter
3139 params [ :filters ] ||= { }
32- params [ :filters ] [ :date_range ] ||= {
33- since : I18n . l ( Time . zone . today . to_date )
34- }
40+ params [ :filters ] [ :date_range ] ||= { since : I18n . l ( Time . zone . today . to_date ) }
3541 end
3642
37- def set_event_type
38- params [ :filters ] ||= { }
39- params [ :filters ] [ :type ] ||= { types : [ "Event::Tour" ] }
43+ def preload_filter_select_options
44+ @target_groups = Event ::TargetGroup . list . without_deleted
45+ @activities = Event ::Activity . list . without_deleted
46+ @technical_requirements = Event ::TechnicalRequirement . list . without_deleted
47+ @fitness_requirements = Event ::FitnessRequirement . list . without_deleted
4048 end
4149
42- def events = @events ||= event_filter . entries . joins ( :dates ) . order ( dates : { start_at : :asc } )
50+ def event_filter
51+ @event_filter ||= Events ::Filter ::AgendaList . new ( nil , params )
52+ end
4353
44- def event_filter = @event_filter ||= Events :: Filter :: AgendaList . new ( nil , params )
54+ def events = @events ||= event_filter . entries . joins ( :dates ) . order ( dates : { start_at : :asc } )
4555
4656 def group = @group ||= params [ :group_id ] . present? ? Group . find ( params [ :group_id ] ) : nil
4757
48- def event = @event ||= events . find ( params [ :event_id ] )
58+ def event = @event ||= event_filter . entries . find ( params [ :event_id ] )
4959end
0 commit comments