refactor aspect-edit.js in prep for jasmine testing
This commit is contained in:
parent
e282abd526
commit
fad9c09212
3 changed files with 157 additions and 144 deletions
|
|
@ -3,44 +3,46 @@
|
|||
* the COPYRIGHT file.
|
||||
*/
|
||||
|
||||
function decrementRequestsCounter() {
|
||||
var $new_requests = $(".new_requests");
|
||||
var request_html = $new_requests.html();
|
||||
var old_request_count = request_html.match(/\d+/);
|
||||
var AspectEdit = {
|
||||
|
||||
if( old_request_count == 1 ) {
|
||||
$new_requests.html(
|
||||
request_html.replace(/ \(\d+\)/,'')
|
||||
);
|
||||
} else {
|
||||
$new_requests.html(
|
||||
request_html.replace(/\d+/,old_request_count-1)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Dragging person between aspects
|
||||
$(function() {
|
||||
initialize: function() {
|
||||
$("ul .person").draggable({
|
||||
revert: true,
|
||||
start: function(event,ui){
|
||||
$(this).children("img").animate({'height':80, 'width':80, 'opacity':0.8},200)
|
||||
.tipsy("hide");
|
||||
$(".draggable_info").fadeIn(100);
|
||||
},
|
||||
drag: function(event,ui){
|
||||
$(this).children("img").tipsy("hide"); //ensure this is hidden
|
||||
},
|
||||
stop: function(event,ui){
|
||||
$(this).children("img").animate({'height':70, 'width':70, 'opacity':1},200);
|
||||
$(".draggable_info").fadeOut(100);
|
||||
}
|
||||
start: AspectEdit.startDrag,
|
||||
drag: AspectEdit.duringDrag,
|
||||
stop: AspectEdit.stopDrag
|
||||
});
|
||||
|
||||
$(".aspect ul.dropzone").droppable({
|
||||
hoverClass: 'active',
|
||||
drop: function(event, ui) {
|
||||
drop: AspectEdit.onDropMove
|
||||
});
|
||||
|
||||
$(".aspect_remove ul").droppable({
|
||||
hoverClass: 'active',
|
||||
drop: AspectEdit.onDropDelete
|
||||
});
|
||||
|
||||
$(".delete").live("click", AspectEdit.deletePerson);
|
||||
$(".aspect h3").live('focus', AspectEdit.changeName);
|
||||
},
|
||||
|
||||
startDrag: function(event, ui) {
|
||||
$(this).children("img").animate({'height':80, 'width':80, 'opacity':0.8}, 200)
|
||||
.tipsy("hide");
|
||||
$(".draggable_info").fadeIn(100);
|
||||
},
|
||||
|
||||
duringDrag: function(event, ui) {
|
||||
$(this).children("img").tipsy("hide"); //ensure this is hidden
|
||||
},
|
||||
|
||||
stopDrag: function(event, ui) {
|
||||
$(this).children("img").animate({'height':70, 'width':70, 'opacity':1}, 200);
|
||||
$(".draggable_info").fadeOut(100);
|
||||
},
|
||||
|
||||
onDropMove: function(event, ui) {
|
||||
var dropzone = $(this);
|
||||
var person = ui.draggable;
|
||||
|
||||
|
|
@ -50,11 +52,10 @@ $(function() {
|
|||
url: "/requests/" + person.attr('data-guid'),
|
||||
data: {"accept" : true, "aspect_id" : dropzone.attr('data-aspect_id') },
|
||||
success: function(data) {
|
||||
decrementRequestsCounter();
|
||||
AspectEdit.decrementRequestsCounter();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
if (dropzone.attr('data-aspect_id') != person.attr('data-aspect_id')) {
|
||||
$.ajax({
|
||||
|
|
@ -68,14 +69,9 @@ $(function() {
|
|||
}
|
||||
|
||||
dropzone.closest("ul").append(person);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$(".aspect_remove ul").droppable({
|
||||
hoverClass: 'active',
|
||||
drop: function(event, ui) {
|
||||
},
|
||||
|
||||
onDropDelete: function(event, ui) {
|
||||
var person = ui.draggable;
|
||||
|
||||
if (person.attr('data-guid').length == 1) {
|
||||
|
|
@ -92,49 +88,13 @@ $(function() {
|
|||
'aspect_id' : person.attr('data-aspect_id') }
|
||||
});
|
||||
}
|
||||
person.fadeOut(400, function(){person.remove();});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// Person deletion
|
||||
$(".delete").live("click", function() {
|
||||
|
||||
var person = $(this).closest("li.person");
|
||||
|
||||
if (person.hasClass('request')){
|
||||
if( confirm("Ignore request?") ){
|
||||
var request_id = person.attr("data-guid");
|
||||
|
||||
$.ajax({
|
||||
type: "DELETE",
|
||||
url: "/requests/" + request_id,
|
||||
success: function () {
|
||||
decrementRequestsCounter();
|
||||
}
|
||||
person.fadeOut(400, function() {
|
||||
person.remove();
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
} else {
|
||||
if( confirm("Remove this person from all aspects?") ){
|
||||
var person_id = $(this).closest("li.person").attr('data-guid');
|
||||
|
||||
$.ajax({
|
||||
type: "DELETE",
|
||||
url: "/people/" + person_id,
|
||||
success: function() {
|
||||
person.fadeOut(200);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Editing aspect name
|
||||
$(".aspect h3").live('focus', function() {
|
||||
changeName: function() {
|
||||
|
||||
var $this = $(this);
|
||||
var id = $this.closest("li.aspect").attr("data-guid");
|
||||
|
|
@ -157,4 +117,53 @@ $(".aspect h3").live('focus', function() {
|
|||
$("#aspect_nav a[href='" + link + "']").text($this.text());
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
deletePerson: function() {
|
||||
var person = $(this).closest("li.person");
|
||||
|
||||
if (person.hasClass('request')) {
|
||||
if (confirm("Ignore request?")) {
|
||||
var request_id = person.attr("data-guid");
|
||||
|
||||
$.ajax({
|
||||
type: "DELETE",
|
||||
url: "/requests/" + request_id,
|
||||
success: function () {
|
||||
AspectEdit.decrementRequestsCounter();
|
||||
}
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (confirm("Remove this person from all aspects?")) {
|
||||
var person_id = $(this).closest("li.person").attr('data-guid');
|
||||
|
||||
$.ajax({
|
||||
type: "DELETE",
|
||||
url: "/people/" + person_id,
|
||||
success: function() {
|
||||
person.fadeOut(200);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
decrementRequestsCounter: function() {
|
||||
var $new_requests = $(".new_requests");
|
||||
var request_html = $new_requests.html();
|
||||
var old_request_count = request_html.match(/\d+/);
|
||||
|
||||
if (old_request_count == 1) {
|
||||
$new_requests.html(
|
||||
request_html.replace(/ \(\d+\)/, '')
|
||||
);
|
||||
} else {
|
||||
$new_requests.html(
|
||||
request_html.replace(/\d+/, old_request_count - 1)
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$(document).ready(AspectEdit.initialize);
|
||||
|
|
@ -1,27 +1,30 @@
|
|||
describe("editing aspects", function() {
|
||||
describe("AspectEdit", function() {
|
||||
|
||||
// describe("initialize", function() {
|
||||
//
|
||||
// });
|
||||
|
||||
describe("decrementRequestsCounter", function() {
|
||||
describe("when there is one request", function() {
|
||||
it("removes the counter from the new requests div", function() {
|
||||
$('#jasmine_content').html("<div class='new_requests'>Requests (1)</div>");
|
||||
decrementRequestsCounter();
|
||||
AspectEdit.decrementRequestsCounter();
|
||||
expect($('.new_requests').first().html()).toEqual("Requests");
|
||||
});
|
||||
});
|
||||
describe("when there is more than one request", function() {
|
||||
it("decrements the request counter", function() {
|
||||
$('#jasmine_content').html("<div class='new_requests'>Requests (67)</div>");
|
||||
decrementRequestsCounter();
|
||||
AspectEdit.decrementRequestsCounter();
|
||||
expect($('.new_requests').first().html()).toEqual("Requests (66)");
|
||||
});
|
||||
});
|
||||
describe("error cases", function() {
|
||||
it("fails silently if there are no requests", function() {
|
||||
$('#jasmine_content').html("<div class='new_requests'>Requests</div>");
|
||||
decrementRequestsCounter();
|
||||
AspectEdit.decrementRequestsCounter();
|
||||
expect($('.new_requests').first().html()).toEqual("Requests");
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
|
@ -12,6 +12,7 @@
|
|||
#
|
||||
src_files:
|
||||
- public/javascripts/jquery142.js
|
||||
- public/javascripts/jquery-ui-1.8.4.custom.min.js
|
||||
- public/javascripts/aspect-edit.js
|
||||
|
||||
# stylesheets
|
||||
|
|
|
|||
Loading…
Reference in a new issue