mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-18 08:10:13 +01:00
Integrated protoload.js to facilitate easier ajax indicators.
Use it on the Add New Action form, and also prevent use of the form while an action is being added via Ajax. The latter aspect fixes #339. git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@562 a4c988fc-2ded-0310-b66e-134b36920a42
This commit is contained in:
parent
16b9c2947b
commit
33d7341b6d
8 changed files with 117 additions and 5 deletions
82
tracks/public/javascripts/protoload.js
Normal file
82
tracks/public/javascripts/protoload.js
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
/* protoload 0.1 beta by Andreas Kalsch
|
||||
* last change: 09.07.2007
|
||||
*
|
||||
* This simple piece of code automates the creating of Ajax loading symbols.
|
||||
* The loading symbol covers an HTML element with correct position and size - example:
|
||||
* $('myElement').startWaiting() and $('myElement').stopWaiting()
|
||||
*/
|
||||
|
||||
Protoload = {
|
||||
// the script to wait this amount of msecs until it shows the loading element
|
||||
timeUntilShow: 250,
|
||||
|
||||
// opacity of loading element
|
||||
opacity: 0.8,
|
||||
|
||||
// Start waiting status - show loading element
|
||||
startWaiting: function(element, className, timeUntilShow) {
|
||||
if (typeof element == 'string')
|
||||
element = document.getElementById(element);
|
||||
if (className == undefined)
|
||||
className = 'waiting';
|
||||
if (timeUntilShow == undefined)
|
||||
timeUntilShow = Protoload.timeUntilShow;
|
||||
|
||||
element._waiting = true;
|
||||
if (!element._loading) {
|
||||
var e = document.createElement('div');
|
||||
(element.offsetParent || document.body).appendChild(element._loading = e);
|
||||
e.style.position = 'absolute';
|
||||
try {e.style.opacity = Protoload.opacity;} catch(e) {}
|
||||
try {e.style.MozOpacity = Protoload.opacity;} catch(e) {}
|
||||
try {e.style.filter = 'alpha(opacity='+Math.round(Protoload.opacity * 100)+')';} catch(e) {}
|
||||
try {e.style.KhtmlOpacity = Protoload.opacity;} catch(e) {}
|
||||
|
||||
/*var zIndex = 0;
|
||||
if (window.UI)
|
||||
if (UI.zIndex)
|
||||
zIndex = ++UI.zIndex;
|
||||
if (!zIndex)
|
||||
zIndex = ++Protoload._zIndex;
|
||||
e.style.zIndex = zIndex;*/
|
||||
}
|
||||
element._loading.className = className;
|
||||
window.setTimeout((function() {
|
||||
if (this._waiting) {
|
||||
var left = this.offsetLeft,
|
||||
top = this.offsetTop,
|
||||
width = this.offsetWidth,
|
||||
height = this.offsetHeight,
|
||||
l = this._loading;
|
||||
|
||||
l.style.left = left+'px';
|
||||
l.style.top = top+'px';
|
||||
l.style.width = width+'px';
|
||||
l.style.height = height+'px';
|
||||
l.style.display = 'inline';
|
||||
}
|
||||
}).bind(element), timeUntilShow);
|
||||
},
|
||||
|
||||
// Get current waiting status
|
||||
isWaiting: function(element) {
|
||||
return element._waiting == true;
|
||||
},
|
||||
|
||||
// Stop waiting status - hide loading element
|
||||
stopWaiting: function(element) {
|
||||
if (element._waiting) {
|
||||
element._waiting = false;
|
||||
element._loading.parentNode.removeChild(element._loading);
|
||||
element._loading = null;
|
||||
}
|
||||
}/*,
|
||||
|
||||
_zIndex: 1000000*/
|
||||
};
|
||||
|
||||
if (Prototype) {
|
||||
Element.addMethods(Protoload);
|
||||
Object.extend(Element, Protoload);
|
||||
}
|
||||
/* */
|
||||
Loading…
Add table
Add a link
Reference in a new issue