Some Javascript refactoring.
* Moved all initialisation stuff to init_plemp(). * No longer set and user BaseUrl but use document.baseURI instead. * Added the function key_handler() for handling key presses. * Added functionality to dismiss the add/upload dialog when pressing Escape.
This commit is contained in:
parent
3be69752f2
commit
f633696e7e
2
plemp.rb
2
plemp.rb
|
@ -126,7 +126,7 @@ module Plemp::Views
|
||||||
:type => "text/javascript"
|
:type => "text/javascript"
|
||||||
end
|
end
|
||||||
script :type => "text/javascript" do
|
script :type => "text/javascript" do
|
||||||
"BaseUrl = \"#{URL()}\";\nsetup_pu()";
|
"init_plemp();"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
body do
|
body do
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
// Main function to initialise plemp
|
||||||
|
function init_plemp(base_url) {
|
||||||
|
setup_pu();
|
||||||
|
document.onkeyup=key_handler;
|
||||||
|
}
|
||||||
|
|
||||||
// Creates a Draggable for each div with the given ID.
|
// Creates a Draggable for each div with the given ID.
|
||||||
function setup_draggable(id) {
|
function setup_draggable(id) {
|
||||||
drag = new Draggable(id, { scroll: window });
|
drag = new Draggable(id, { scroll: window });
|
||||||
|
@ -20,21 +26,34 @@ DragRegObserver.prototype = {
|
||||||
onEnd: function (eventName, draggable, event) {
|
onEnd: function (eventName, draggable, event) {
|
||||||
if (Draggables.activeDraggable.element == this.element) {
|
if (Draggables.activeDraggable.element == this.element) {
|
||||||
elem = draggable.element;
|
elem = draggable.element;
|
||||||
new Ajax.Request(BaseUrl + 'savepos/' + elem.id +
|
new Ajax.Request(document.baseURI + 'savepos/' + elem.id +
|
||||||
'/' + elem.style.top + '/' + elem.style.left);
|
'/' + elem.style.top + '/' + elem.style.left);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//// Helper functions
|
// Global function to handle key presses.
|
||||||
|
function key_handler(e) {
|
||||||
|
var key_code = e.keyCode;
|
||||||
|
|
||||||
function show_add_dialog() {
|
switch(key_code) {
|
||||||
$('text').clear();
|
case 27:
|
||||||
$('add_dialog').appear({duration: 0.5});
|
hide_add_dialog();
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//// Helper functions
|
||||||
|
|
||||||
|
// Shows the upload/add dialog.
|
||||||
|
function show_add_dialog() {
|
||||||
|
$('text').clear();
|
||||||
|
$('add_dialog').appear({duration: 0.25});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hides and clears the upload/add dialog.
|
||||||
function hide_add_dialog() {
|
function hide_add_dialog() {
|
||||||
$('add_dialog').fade({duration: 0.5});
|
$('add_dialog').fade({duration: 0.25});
|
||||||
$('add_form').reset();
|
$('add_form').reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +80,7 @@ function move_draggable_if_needed(id, left, top) {
|
||||||
var pu = null;
|
var pu = null;
|
||||||
function setup_pu() {
|
function setup_pu() {
|
||||||
if (!pu) {
|
if (!pu) {
|
||||||
pu = new Ajax.PeriodicalUpdater('', BaseUrl + "current/", {
|
pu = new Ajax.PeriodicalUpdater('', document.baseURI + "current/", {
|
||||||
method: 'get',
|
method: 'get',
|
||||||
frequency: 5,
|
frequency: 5,
|
||||||
evalJSON: 'force',
|
evalJSON: 'force',
|
||||||
|
|
Reference in New Issue