Class: Slider::MainController

Inherits:
Volt::ModelController
  • Object
show all
Defined in:
app/slider/controllers/main_controller.rb

Instance Method Summary collapse

Instance Method Details

#before_index_removeObject



59
60
61
62
63
# File 'app/slider/controllers/main_controller.rb', line 59

def before_index_remove
  if RUBY_PLATFORM == 'opal'
    clear_interval(@interval)
  end
end

#clear_interval(interval) ⇒ Object



71
72
73
74
75
# File 'app/slider/controllers/main_controller.rb', line 71

def clear_interval( interval )
  if RUBY_PLATFORM == 'opal'
    `clearInterval(#{interval})`
  end
end

#create_options_vars(options) ⇒ Object



23
24
25
26
27
# File 'app/slider/controllers/main_controller.rb', line 23

def create_options_vars(options)

#          options.each { |k,v| puts "@#{k}" + (( (attrs.send(k) == '') ? nil : attrs.send(k) )  || v).to_s }
  options.each { |k,v| instance_variable_set("@#{k}", (( (attrs.send(k) == '') ? nil : attrs.send(k) )|| v)) } #instance variables from attrs
end

#default_optionsObject



9
10
11
12
13
14
15
16
17
# File 'app/slider/controllers/main_controller.rb', line 9

def default_options
  {
    interval_time: 3000,       #interval between moves in ms
    move_length:  800,    #in pixels
    transition_time: 700,
    leftmost_point: -1600,     #if container moved farther than that it's reset to zero - showing first slide
    stop_on_mouseover: true
  }
end

#indexObject



19
20
21
# File 'app/slider/controllers/main_controller.rb', line 19

def index
  create_options_vars(default_options)
end

#index_readyObject



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'app/slider/controllers/main_controller.rb', line 40

def index_ready
  if RUBY_PLATFORM == 'opal'
    if @stop_on_mouseover==true or @stop_on_mouseover=="true"
      el = Element.find('.slider-viewport')

      el.on :mouseover do
        clear_interval(@interval)
      end

      el.on :mouseout do
        @interval = set_interval(@interval_time) do move end
      end
    end

    @interval = set_interval(@interval_time) do move end

  end
end

#moveObject



29
30
31
32
33
34
35
36
37
38
# File 'app/slider/controllers/main_controller.rb', line 29

def move
  if RUBY_PLATFORM == 'opal'
    el = Element.find('.slider-container')
    moveto = el.css('left').to_i - @move_length.to_i
    if moveto < @leftmost_point
      moveto = 0
    end
    el.animate({left: moveto, speed: @transition_time })
  end
end

#set_interval(time = 0, &block) ⇒ Object



65
66
67
68
69
# File 'app/slider/controllers/main_controller.rb', line 65

def set_interval( time=0, &block )
  if RUBY_PLATFORM == 'opal'
    `setInterval(function(){#{block.call}}, time)`
  end
end