diff --git a/app/assets/javascripts/activeadmin-async_panel.js.coffee b/app/assets/javascripts/activeadmin-async_panel.js.coffee index 1e48a50..8f5e0fb 100644 --- a/app/assets/javascripts/activeadmin-async_panel.js.coffee +++ b/app/assets/javascripts/activeadmin-async_panel.js.coffee @@ -17,19 +17,33 @@ # end $(document).on "page:load turbolinks:load turbo:load", -> - $('.async-panel').each (index, item) -> + loadVisibleData() + $(window).scroll -> + loadVisibleData() + +loadVisibleData = -> + $('.async-panel:not([data-loaded]):in-viewport').each (index, item) -> + $(item).attr('data-loaded', '0'); + + $('.async-panel[data-loaded=0]:in-viewport').each (index, item) -> item = $(item) requiresClick = !!item.data('clickable') + if ($('.panel_contents', item).length > 0) + data_target = $('.panel_contents', item) + else + data_target = item + worker = -> item.addClass('processing') + item.attr('data-loaded', '1'); $('h3', item).hide().show(0) $.ajax url: item.data('url') success: (data) -> - $('.panel_contents', item).html(data) + $(data_target).html(data) error: (data, status, error) -> - $('.panel_contents', item).html(error) + $(data_target).html(error) complete: -> item.removeClass('processing')