5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/flex_infinite_scroll/actionview/extension.rb', line 5
def fis_tag(data = nil, fis_config = {}, container_config = {})
container_config[:data] ||= {}
container_config[:class] = "fis-container #{container_config[:class]}"
virtual_el_size = fis_config[:virtualScrollElementSize]
page = fis_config[:startPage] || 1
fis_config[:startPage] = page + 1
fis_config.each do |k, _v|
container_config[:data][k.to_s.underscore] = fis_config[k]
end
content_tag :div, container_config do
data = data.fis(page: page, per_page: fis_config[:perPage])
data_html = data.map { |el| yield el }.join
baloons = []
if virtual_el_size
(fis_config[:startPage]..data.total_pages).each do |page_number|
baloons.push(
content_tag(:div, nil,
class: 'fis-baloon',
data: {
baloon_page: page_number
},
style: "height: #{virtual_el_size * data.per_page}px")
)
end
end
(data_html + baloons.join).html_safe
end
end
|