Class: Flms::LayerViewObject

Inherits:
Object
  • Object
show all
Defined in:
app/view_objects/flms/layer_view_object.rb

Overview

Create DOM for this layer, including all the necessary ‘data-*’ attributes to animate it as desired via skrollr.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(layer) ⇒ LayerViewObject

Returns a new instance of LayerViewObject.



7
8
9
# File 'app/view_objects/flms/layer_view_object.rb', line 7

def initialize(layer)
  @layer = layer
end

Class Method Details



15
16
17
18
19
20
21
22
# File 'app/view_objects/flms/layer_view_object.rb', line 15

def self.link_path_for(block, layer)
  link_path = Flms::Engine.routes.url_helpers.edit_block_image_layer_path(block, layer) if layer.is_a? Flms::ImageLayer
  link_path = Flms::Engine.routes.url_helpers.edit_block_text_layer_path(block, layer) if layer.is_a? Flms::TextLayer
  link_path = Flms::Engine.routes.url_helpers.edit_block_paragraph_layer_path(block, layer) if layer.is_a? Flms::ParagraphLayer
  link_path = Flms::Engine.routes.url_helpers.edit_block_embed_layer_path(block, layer) if layer.is_a? Flms::EmbedLayer
  link_path = Flms::Engine.routes.url_helpers.edit_block_animation_layer_path(block, layer) if layer.is_a? Flms::AnimationLayer
  link_path
end

Instance Method Details

#keyframe_data_hash(scroll_offset = 0) ⇒ Object

Generate a hash of data to be provided to skrollr that describes the keyframe animation for this layer



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'app/view_objects/flms/layer_view_object.rb', line 25

def keyframe_data_hash(scroll_offset = 0)
  data = { }
  data['data-anchor-target'] = '#skrollr-body'
  data[:style] = "z-index: #{ @layer.z_index };"

  initial_pos = calculate_scroll_position(:initial, scroll_offset)
  target_start_pos = calculate_scroll_position(:target_start, scroll_offset)
  target_end_pos = calculate_scroll_position(:target_end, scroll_offset)
  final_pos = calculate_scroll_position(:final, scroll_offset)

  start_view_object = Flms::KeyframeViewObject.new(@layer.start_state_keyframe)
  target_view_object = Flms::KeyframeViewObject.new(@layer.target_state_keyframe)
  end_view_object = Flms::KeyframeViewObject.new(@layer.end_state_keyframe)

  data['data-0'] = 'display:none;'
  data["data-#{initial_pos}"] = 'display:block; ' + start_view_object.styles(style_data_for_keyframes)
  data["data-#{target_start_pos}"] = target_view_object.styles(style_data_for_keyframes)
  data["data-#{target_end_pos}"] = target_view_object.styles(style_data_for_keyframes)
  data["data-#{final_pos}"] = end_view_object.styles(style_data_for_keyframes)
  data["data-#{final_pos + 1}"] = 'display:none; opacity: 0;' if @layer.dom_remove

  data
end

#view_partial_nameObject



11
12
13
# File 'app/view_objects/flms/layer_view_object.rb', line 11

def view_partial_name
  "flms/elements/#{ @layer.class.name.demodulize.underscore }"
end