hooch 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 50e01c687750265f50a10a17bd2ba2e6161b92cb
4
- data.tar.gz: 49d02d95c90c7b1de4d8e23805baa07322f5a39e
3
+ metadata.gz: 4d67b1b958e3b12561ada28c23195172d87206bc
4
+ data.tar.gz: 5ff5259338df3bde4f96b7a4885c4cf0eef681cf
5
5
  SHA512:
6
- metadata.gz: 105fbf16ca53a603d5f22f8f0718bd8172623737a47b6c7c5c8efea1b65aac3d00ee170ce479b9c0f04f6e996a037867722c25fcd60058758f8ec370ac8a2857
7
- data.tar.gz: 4ee8021ad19eb852f6fca4be879a9144cec5c11ab1fb39543b60c473a67be3cfbbb5c119276c2e2cf174b82d74e94c3e10064605ba6726679695a1c2105fb13b
6
+ metadata.gz: 7c869362a248c2f485342e1c74ea027299a6baadd8b4078610bb35744d582175e126af33ef0b9984bfd22c048db269e5d1c95fb29806a3ebc78149515c7484b5
7
+ data.tar.gz: d4322ea13fd7dac82374153df36799b3d649959967a7c0de09e9920340d258685eeeea515ba434b700a30ea8875d711d1dd1fde4f6e6b282514b6e6acd129c36
@@ -604,11 +604,43 @@ var initHooch = function(){
604
604
  },
605
605
  onMousemove: function(e){
606
606
  if(this.dragging_element){
607
- hooch.pauseEvent(e)
608
- this.redrawDraggingElement(e);
609
- this.refreshSequence(e)
610
- return false
607
+ this.handleMouseMove(e)
608
+ } else {
609
+ var pressed_element = this.getPressedElement()
610
+ if(pressed_element){
611
+ pressed_element.setDragging()
612
+ this.handleMouseMove(e)
613
+ }
614
+ }
615
+ return true
616
+ },
617
+ handleMouseMove: function(e){
618
+ hooch.pauseEvent(e)
619
+ this.dragging_element.dragging = true
620
+ this.redrawDraggingElement(e);
621
+ this.refreshSequence(e)
622
+ return false
623
+ },
624
+ onMouseup: function(){
625
+ if(this.dragging_element){
626
+ var tmp_dragging_element = this.dragging_element
627
+ this.removeDraggingElement()
628
+ if(tmp_dragging_element.dragging){
629
+ this.sendSort()
630
+ }
631
+ tmp_dragging_element.dragging = false
632
+ }
633
+ var pressed_element = this.getPressedElement()
634
+ if(pressed_element){
635
+ pressed_element.unSetPressed()
636
+ }
637
+ },
638
+ getPressedElement: function(){
639
+ var possible_pressed_element = $.grep(this.sort_elements, function(sort_element,i){return sort_element.pressed})
640
+ if(possible_pressed_element.length > 0){
641
+ return possible_pressed_element[0]
611
642
  }
643
+ return false
612
644
  },
613
645
  getSortElements: function(){
614
646
  this.$sort_elements = this.$sorter.children()
@@ -848,10 +880,6 @@ var initHooch = function(){
848
880
  this.removeDraggingElement()
849
881
  }
850
882
  },
851
- onMouseup: function(){
852
- this.removeDraggingElement()
853
- this.sendSort()
854
- },
855
883
  removeDraggingElement: function(){
856
884
  if(this.dragging_element){
857
885
  var placeholder_row = this.removePlaceholder()
@@ -901,6 +929,7 @@ var initHooch = function(){
901
929
  this.old_position = $sort_element.css('position')
902
930
  this.width = this.$sort_element.width()
903
931
  this.height = this.$sort_element.height()
932
+ this.dragging = false
904
933
  var sort_element = this
905
934
  this.$sort_element.on('dragstart', function(e){
906
935
  hooch.pauseEvent(e)
@@ -911,22 +940,28 @@ var initHooch = function(){
911
940
  onMousedown: function(e){
912
941
  if(1 == e.which){
913
942
  this.sorter.clearDraggingElement();
914
- hooch.pauseEvent(e)
943
+ this.pressed = true
915
944
  this.starting_offset = this.getOffset();
916
945
  this.mouse_start = {top: e.originalEvent.pageY, left: e.originalEvent.pageX}
917
- this.placeholder = new hooch.SortPlaceholder(this.$sort_element.clone().removeAttr('id').css({width: this.width, height: this.height}),this.sorter)
918
- this.placeholder.css({'visibility': 'hidden'});
919
- this.placeholder.css({background: 'none', 'background-color': 'pink'});
920
- $tmp = $('<div style="display: none;"></div>')
921
- this.$sort_element.before($tmp)
922
- this.$sort_element
923
- .css({position: 'absolute', top: this.starting_offset.top, left: this.starting_offset.left})
924
- .appendTo('body')
925
- $tmp.replaceWith(this.placeholder.$sort_element)
926
- this.sorter.setDraggingElement(this,e);
927
- return false;
928
946
  }
929
947
  },
948
+ unSetPressed: function(){
949
+ this.pressed = false
950
+ },
951
+ setDragging: function(){
952
+ this.sorter.clearDraggingElement();
953
+ this.unSetPressed()
954
+ this.placeholder = new hooch.SortPlaceholder(this.$sort_element.clone().removeAttr('id').css({width: this.width, height: this.height}),this.sorter)
955
+ this.placeholder.css({'visibility': 'hidden'});
956
+ this.placeholder.css({background: 'none', 'background-color': 'pink'});
957
+ $tmp = $('<div style="display: none;"></div>')
958
+ this.$sort_element.before($tmp)
959
+ this.$sort_element
960
+ .css({position: 'absolute', top: this.starting_offset.top, left: this.starting_offset.left})
961
+ .appendTo('body')
962
+ $tmp.replaceWith(this.placeholder.$sort_element)
963
+ this.sorter.setDraggingElement(this);
964
+ },
930
965
  drop: function(){
931
966
  this.css({position: this.old_position, top: '', left: ''})
932
967
  this.placeholder.replaceWith(this.$sort_element);
@@ -134,10 +134,25 @@ describe("hooch", function() {
134
134
  })
135
135
  it('Handles mousedown on a sort element', function(){
136
136
  sort_elem_a.onMousedown({which: 1, originalEvent: {pageY: 10, pageX: 10}})
137
+ //Pressing the left mouse button on a sort element sets the mousestart position
138
+ expect(sort_elem_a.mouse_start.top).toEqual(10)
139
+ expect(sort_elem_a.mouse_start.left).toEqual(10)
140
+ //That initial press should also set the 'pressed' attribute
141
+ expect(sort_elem_a.pressed).toBe(true)
142
+ //There should be no dragging element for the sorter yet
143
+ expect(sorter.dragging_element).toBeUndefined()
144
+
145
+ })
146
+ it('Handles the initial mousemove when dragging an element', function(){
147
+ sort_elem_a.onMousedown({which: 1, originalEvent: {pageY: 10, pageX: 10}})
148
+ sorter.onMousemove({originalEvent: {pageY: 10, pageX: 11}})
149
+ //Starting to move the mouse will unset the pressed flag so we don't try to initialize the movement again.
150
+ expect(sort_elem_a.pressed).toBe(false)
137
151
  //We set the dragging element for the sorter to be element 'a'
138
152
  expect(sorter.dragging_element.$sort_element.attr('id')).toEqual('a')
139
153
  //We created a placeholder for element a
140
154
  expect(sort_elem_a.placeholder.is_placeholder).toBe(true)
155
+
141
156
  var elem_before_b = sort_elem_b.$sort_element.prev()
142
157
  //The dom element for the placeholder had it's id removed to avoid duplication
143
158
  expect(elem_before_b.attr('id')).toBeUndefined()
@@ -145,6 +160,7 @@ describe("hooch", function() {
145
160
  expect(elem_before_b.is(sort_elem_a.placeholder.$sort_element)).toBe(true)
146
161
  //The real element 'a' is now attached directly to the body
147
162
  expect(sort_elem_a.$sort_element.parent()[0].nodeName).toEqual('BODY')
163
+
148
164
  })
149
165
  it('Handles mousemove when dragging an element', function(){
150
166
  sort_elem_a.onMousedown({which: 1, originalEvent: {pageY: 10, pageX: 10}})
@@ -165,11 +181,18 @@ describe("hooch", function() {
165
181
  it('Handles dropping an element', function(){
166
182
  sort_elem_a.onMousedown({which: 1, originalEvent: {pageY: 10, pageX: 10}})
167
183
  sorter.onMousemove({originalEvent: {pageY: 210, pageX: 10}})
168
- sorter.removeDraggingElement()
184
+ sorter.onMouseup()
169
185
  last_elem = sorter.$sorter.children(':last')
170
186
  //Now the real element 'a' is in last place after being dragged below the sorter
171
187
  expect(sort_elem_a.$sort_element.is(last_elem)).toBe(true)
172
188
  })
189
+ it('Handles a click without a drag', function(){
190
+ sort_elem_a.onMousedown({which: 1, originalEvent: {pageY: 10, pageX: 10}})
191
+ sorter.onMouseup()
192
+ expect(sorter.dragging_element).toBeUndefined()
193
+ var pressed_element = sorter.getPressedElement()
194
+ expect(pressed_element).toBe(false)
195
+ })
173
196
  it('Builds form data', function(){
174
197
  sorter.$sorter.attr('data-sort-field','my_sort')
175
198
  form_data = sorter.getFormData()
@@ -1,3 +1,3 @@
1
1
  module Hooch
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hooch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Draut
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-22 00:00:00.000000000 Z
11
+ date: 2015-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails