Flash message handling is now a widget

This commit is contained in:
Dan Hansen 2011-05-08 10:53:09 -05:00
parent 8261547ed9
commit fc25c9bedb
7 changed files with 63 additions and 52 deletions

View file

@ -32,6 +32,7 @@ javascripts:
- public/javascripts/widgets/infinite-scroll.js
- public/javascripts/widgets/directionDetector.js
- public/javascripts/widgets/notifications.js
- public/javascripts/widgets/flashes.js
- public/javascripts/view.js
- public/javascripts/stream.js
- public/javascripts/search.js

View file

@ -73,7 +73,7 @@ var AspectEdit = {
},
success: function(data) {
AspectEdit.onMovePersonSuccess(person, dropzone);
View.flashes.render($.parseJSON(data));
Diaspora.widgets.flashes.render($.parseJSON(data));
}
});
}

View file

@ -10,9 +10,6 @@ var View = {
/* Tooltips */
this.tooltips.bindAll();
/* Animate flashes */
this.flashes.animate();
/* In field labels */
$("label").inFieldLabels();
$(document).bind('afterReveal.facebox', function() {
@ -99,26 +96,6 @@ var View = {
selector: "#debug_info"
},
flashes: {
animate: function() {
var $this = $(View.flashes.selector);
$this.animate({
top: 0
}).delay(2000).animate({
top: -100
}, $this.remove)
},
render: function(result) {
$("<div/>")
.attr("id", (result.success) ? "flash_notice" : "flash_error")
.prependTo(document.body)
.html(result.notice);
View.flashes.animate();
},
selector: "#flash_notice, #flash_error, #flash_alert"
},
gettingStarted: {
click: function() {
var $this = $(this);
@ -212,7 +189,7 @@ var View = {
if(element !== "bindAll") {
this[element].bind();
}
};
}
}
},

View file

@ -0,0 +1,27 @@
(function() {
var Flashes = function() {
this.start = function() {
this.animateMessages();
};
this.animateMessages = function() {
var $this = $("#flash_notice, #flash_error, #flash_alert");
$this.animate({
top: 0
}).delay(2000).animate({
top: -100
}, $this.remove);
};
this.render = function(result) {
$("<div/>")
.attr("id", (result.success) ? "flash_notice" : "flash_error")
.prependTo(document.body)
.html(result.notice);
this.animateMessages();
};
};
Diaspora.widgets.add("flashes", Flashes);
})();

View file

@ -30,6 +30,7 @@ src_files:
- public/javascripts/widgets/directionDetector.js
- public/javascripts/widgets/infinite-scroll.js
- public/javascripts/widgets/notifications.js
- public/javascripts/widgets/flashes.js
- public/javascripts/mobile.js
- public/javascripts/contact-list.js
- public/javascripts/web-socket-receiver.js

View file

@ -42,33 +42,6 @@ describe("View", function() {
});
});
describe("flashes", function() {
describe("animate", function() {
beforeEach(function() {
$("#jasmine_content").html(
'<div id="flash_notice">' +
'flash! flash! flash!' +
'</div>'
);
});
it("is called when the DOM is ready", function() {
spyOn(View.flashes, "animate").andCallThrough();
View.initialize();
expect(View.flashes.animate).toHaveBeenCalled();
});
});
describe("render", function() {
it("creates a new div and calls flashes.animate", function() {
spyOn(View.flashes, "animate");
View.flashes.render({
success: true,
message: "success!"
});
expect(View.flashes.animate).toHaveBeenCalled();
});
});
});
describe("newRequest", function() {
beforeEach(function() {

View file

@ -0,0 +1,32 @@
describe("Diaspora", function() {
describe("widgets", function() {
describe("flashes", function() {
describe("animateMessages", function() {
beforeEach(function() {
$("#jasmine_content").html(
'<div id="flash_notice">' +
'flash message' +
'</div>'
);
});
it("is called when the DOM is ready", function() {
spyOn(Diaspora.widgets.flashes, "animateMessages").andCallThrough();
Diaspora.widgets.flashes.start();
expect(Diaspora.widgets.flashes.animateMessages).toHaveBeenCalled();
});
});
describe("render", function() {
it("creates a new div for the message and calls flashes.animateMessages", function() {
spyOn(Diaspora.widgets.flashes, "animateMessages");
Diaspora.widgets.flashes.render({
success: true,
message: "success!"
});
expect(Diaspora.widgets.flashes.animateMessages).toHaveBeenCalled();
});
});
});
});
});