switch_access-rails 1.1.6 → 1.1.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  module SwitchAccess
2
2
  module Rails
3
- VERSION = '1.1.6'
3
+ VERSION = '1.1.7'
4
4
  end
5
5
  end
@@ -3,7 +3,7 @@ Switch Access for webpages
3
3
  (c) 2012 Leif Ringstad
4
4
  Dual-licensed under GPL or commercial license (LICENSE and LICENSE.GPL)
5
5
  Source: http://github.com/leifcr/switch_access
6
- v 1.1.6
6
+ v 1.1.7
7
7
  ###
8
8
 
9
9
  SwitchAccessCommon =
@@ -305,8 +305,10 @@ class SwitchAccess
305
305
  parent_idx: 0 # the last idx on the parent before moving into the group
306
306
  action_triggered: false # set to true if an action is triggered
307
307
  keypress_allowed: true # keypress allowed or not
308
- timers:
309
- single_switch_id: null # The id of the single switch timer
308
+ single_switch:
309
+ timer_id: null # The id of the single switch timer
310
+ running: false # if the timer is running or not
311
+ activate_triggered: false # if the activate action has been triggered
310
312
 
311
313
  highlighter_holder: null # The highlighter holder as a jquery object
312
314
 
@@ -532,6 +534,7 @@ class SwitchAccess
532
534
  moveToNext: ->
533
535
  @log "moveToNext Current: I: #{@runtime.element.next_idx} L: #{@runtime.element.level} Next: I: #{@runtime.element.next_idx} L: #{@runtime.element.next_level}" if (@options.debug)
534
536
  @runtime.action_triggered = true
537
+ @runtime.single_switch.activate_triggered = false
535
538
 
536
539
  # return if current level and idxs are equal
537
540
  return false if (@runtime.element.next_level == @runtime.element.level) and (@runtime.element.idx == @runtime.element.next_idx)
@@ -562,6 +565,11 @@ class SwitchAccess
562
565
  @runtime.current_list = list_n
563
566
  @runtime.element.current = list_n[@runtime.element.idx]
564
567
 
568
+ # check if this is a "stay-element" and it's single switch
569
+ if (@options.switches.number_of_switches == 1)
570
+ if @runtime.element.current.jq_element().data("sw-single-stay") == true
571
+ @stopSingleSwitchTimer()
572
+
565
573
  @makeElementVisible()
566
574
  return true
567
575
 
@@ -636,21 +644,28 @@ class SwitchAccess
636
644
  activateElementCallBack: ->
637
645
  @log "activateElementCallBack" if (@options.debug)
638
646
 
639
- # see if the element has children, if so go into level
640
- if @runtime.element.current.children().length > 0
647
+ # see if the element has more than 1 child, if so go into level
648
+ if @runtime.element.current.children().length > 1
641
649
  @startSingleSwitchTimer()
642
650
  return @moveToNextLevel()
643
651
  # else the element should "activate"
644
652
 
645
- if ((@runtime.element.current.jq_element().is("a")) || (@activate_first_link == false))
646
- element_to_click = @runtime.element.current.jq_element()
653
+ # choose correct element to "activate"
654
+ # first child if there is one
655
+ if @runtime.element.current.children().length == 1
656
+ el = @runtime.element.current.jq_element()[0]
657
+ else # activate the current element
658
+ el = @runtime.element.current.jq_element()
659
+
660
+ if ((el.is("a")) || (@activate_first_link == false))
661
+ element_to_click = el
647
662
  else
648
663
  # if element isn't a link, find first link within element and go to the url/trigger it
649
- element_to_click = @runtime.element.current.jq_element().find("a")
664
+ element_to_click = el.find("a")
650
665
 
651
666
  # safety catch
652
667
  if (element_to_click.length <= 0)
653
- element_to_click = @runtime.element.current.jq_element()
668
+ element_to_click = el
654
669
 
655
670
  @log "Triggering Element: IDX: #{@runtime.element.current_idx} Element Tag: #{$(element_to_click).get(0).tagName.toLowerCase()} Text: #{$(element_to_click).text()}" if (@options.debug)
656
671
 
@@ -662,7 +677,7 @@ class SwitchAccess
662
677
  if (@options.switches.number_of_switches == 1)
663
678
  @runtime.next_element_idx = -1 if (@options.single_switch_restart_on_activate)
664
679
  @runtime.next_level = 0
665
- @startSingleSwitchTimer()
680
+ # @startSingleSwitchTimer()
666
681
  else
667
682
  msg = "Nothing to do. Verify options passed to SwitchAccess"
668
683
  @log msg, "warn" if (@options.debug)
@@ -699,7 +714,17 @@ class SwitchAccess
699
714
  if !@runtime.keypress_allowed
700
715
  event.stopPropagation()
701
716
  return false
702
- action = @activateElement()
717
+ # check if stayed at element and if element has "trigger" action
718
+ if @runtime.element.current.jq_element().data("sw-single-stay") == true
719
+ if @runtime.element.current.jq_element().data("sw-single-noaction") == true or @runtime.single_switch.activate_triggered == true
720
+ action = @moveToNextElementAtLevel()
721
+ if @runtime.element.current.jq_element().data("sw-single-stay") != true
722
+ @startSingleSwitchTimer()
723
+ else
724
+ @runtime.single_switch.activate_triggered = true
725
+
726
+ if action == 0
727
+ action = @activateElement()
703
728
 
704
729
  else if @options.switches.number_of_switches == 2
705
730
  if (event.which in @options.switches.keys_2[0]) || (event.which in @options.switches.keys_2[1])
@@ -736,12 +761,14 @@ class SwitchAccess
736
761
  startSingleSwitchTimer: ->
737
762
  return unless @options.switches.number_of_switches == 1
738
763
  @log "startSingleSwitchTimer", "trace" if (@options.debug)
739
- @runtime.single_switch_timer_id = window.setInterval(( => @singleSwitchTimerCallback();return), @options.switches.single_switch_move_time)
764
+ @runtime.single_switch.timer_id = window.setInterval(( => @singleSwitchTimerCallback();return), @options.switches.single_switch_move_time)
765
+ @runtime.single_switch.running = true
740
766
 
741
767
  stopSingleSwitchTimer: ->
742
768
  return unless @options.switches.number_of_switches == 1
743
769
  @log "stopSingleSwitchTimer", "trace" if (@options.debug)
744
- window.clearInterval(@runtime.single_switch_timer_id)
770
+ window.clearInterval(@runtime.single_switch.timer_id)
771
+ @runtime.single_switch.running = false
745
772
 
746
773
  removeCallbacks: ->
747
774
  @log "removeCallbacks", "trace" if (@options.debug)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: switch_access-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 1.1.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-19 00:00:00.000000000 Z
12
+ date: 2013-01-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -113,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
113
  version: '0'
114
114
  segments:
115
115
  - 0
116
- hash: -2588918025023367467
116
+ hash: -219704317675928756
117
117
  required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  none: false
119
119
  requirements:
@@ -122,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
122
  version: '0'
123
123
  segments:
124
124
  - 0
125
- hash: -2588918025023367467
125
+ hash: -219704317675928756
126
126
  requirements: []
127
127
  rubyforge_project:
128
128
  rubygems_version: 1.8.24