From 0c73d24f05566037f15de0aeb67da69b69a78118 Mon Sep 17 00:00:00 2001 From: Jimmy Date: Fri, 9 Apr 2021 17:16:16 +0800 Subject: [PATCH] [feat]Use Ajax for paginating happening_now --- app/assets/javascripts/application.js | 3 +++ app/controllers/conferences_controller.rb | 2 +- .../conferences/_about_and_happening_now.haml | 16 ++++------------ app/views/conferences/_happening_now.haml | 12 ++++++++++++ app/views/conferences/show.js.erb | 5 +++++ config/initializers/pagy.rb | 2 +- 6 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 app/views/conferences/_happening_now.haml create mode 100644 app/views/conferences/show.js.erb diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index ca8cf3da..6548a3fe 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -54,6 +54,7 @@ //= require selectize //= require bootstrap-select //= require osem-survey +//= require pagy $(document).ready(function() { $('a[disabled=disabled]').click(function(event){ @@ -63,4 +64,6 @@ $(document).ready(function() { $('body').smoothScroll({ delegateSelector: 'a.smoothscroll' }); + + window.addEventListener("load", Pagy.init); }); diff --git a/app/controllers/conferences_controller.rb b/app/controllers/conferences_controller.rb index 8e1a364b..643f97e5 100644 --- a/app/controllers/conferences_controller.rb +++ b/app/controllers/conferences_controller.rb @@ -77,7 +77,7 @@ class ConferencesController < ApplicationController events_schedules_list = get_happening_now_events_schedules(@conference) @events_schedules_limit = EVENTS_PER_PAGE @events_schedules_length = events_schedules_list.length - @pagy, @events_schedules = pagy_array(events_schedules_list, items: @events_schedules_limit) + @pagy, @events_schedules = pagy_array(events_schedules_list, items: @events_schedules_limit, link_extra: 'data-remote="true"') @happening_now_url = happening_now_conference_schedule_path(conference_id: @conference.short_title, format: :json) end end diff --git a/app/views/conferences/_about_and_happening_now.haml b/app/views/conferences/_about_and_happening_now.haml index d0925a52..93bf8b2b 100644 --- a/app/views/conferences/_about_and_happening_now.haml +++ b/app/views/conferences/_about_and_happening_now.haml @@ -4,18 +4,10 @@ -# happening now events are displayed second in md or lg view .col-md-6.col-md-push-6.col-lg-4.col-lg-push-8 #happening-now - - if conference.splashpage.include_happening_now - - if @events_schedules.any? - .row - %h2.text-center{ style: 'margin-bottom:30px' } Happening Now - - events_schedules.each do |event_schedule| - = render 'schedules/event', conference: conference, event_schedule: event_schedule, event: event_schedule.event - - if events_schedules_length > events_schedules_limit - .container{ style: 'width:100%; text-align:center' } - != pagy_bootstrap_nav(pagy) - - else - .row - %h3.text-center There are no events happening now. + = render 'happening_now', conference: conference, + events_schedules: events_schedules, pagy: pagy, + events_schedules_length: events_schedules_length, + events_schedules_limit: events_schedules_limit - if conference.description.present? .col-md-6.col-md-pull-6.col-lg-8.col-lg-pull-4 #about diff --git a/app/views/conferences/_happening_now.haml b/app/views/conferences/_happening_now.haml new file mode 100644 index 00000000..20e3cbd4 --- /dev/null +++ b/app/views/conferences/_happening_now.haml @@ -0,0 +1,12 @@ +- if conference.splashpage.include_happening_now + - if events_schedules.any? + .row + %h2.text-center{ style: 'margin-bottom:30px' } Happening Now + - events_schedules.each do |event_schedule| + = render 'schedules/event', conference: conference, event_schedule: event_schedule, event: event_schedule.event + - if events_schedules_length > events_schedules_limit + .container{ style: 'width:100%; text-align:center' } + != pagy_bootstrap_nav_js(pagy) + - else + .row + %h3.text-center There are no events happening now. diff --git a/app/views/conferences/show.js.erb b/app/views/conferences/show.js.erb new file mode 100644 index 00000000..27a6ba37 --- /dev/null +++ b/app/views/conferences/show.js.erb @@ -0,0 +1,5 @@ +$('#happening-now').html("<%= j(render 'happening_now', conference: @conference, + events_schedules: @events_schedules, pagy: @pagy, + events_schedules_length: @events_schedules_length, + events_schedules_limit: @events_schedules_limit)%>"); +Pagy.init(document.getElementById('happening-now')); \ No newline at end of file diff --git a/config/initializers/pagy.rb b/config/initializers/pagy.rb index 282b3e73..a446edc0 100644 --- a/config/initializers/pagy.rb +++ b/config/initializers/pagy.rb @@ -124,7 +124,7 @@ require 'pagy/extras/bootstrap' # Rails: extras assets path required by the helpers that use javascript # (pagy*_nav_js, pagy*_combo_nav_js, and pagy_items_selector_js) # See https://ddnexus.github.io/pagy/extras#javascript -# Rails.application.config.assets.paths << Pagy.root.join('javascripts') +Rails.application.config.assets.paths << Pagy.root.join('javascripts') # I18n