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 +4 -4
- data/app/assets/javascripts/hooch.js +55 -20
- data/jasmine/spec/hoochSpec.js +24 -1
- data/lib/hooch/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d67b1b958e3b12561ada28c23195172d87206bc
|
4
|
+
data.tar.gz: 5ff5259338df3bde4f96b7a4885c4cf0eef681cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
608
|
-
|
609
|
-
this.
|
610
|
-
|
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
|
-
|
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);
|
data/jasmine/spec/hoochSpec.js
CHANGED
@@ -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.
|
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()
|
data/lib/hooch/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2015-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|