password-manager/frontend/delta/js/Clipperz/PM/UI/Components/Overlay.js

185 lines
5.4 KiB
JavaScript
Raw Normal View History

2013-08-30 17:56:53 +02:00
/*
2015-03-09 15:45:35 +01:00
Copyright 2008-2015 Clipperz Srl
2013-08-30 17:56:53 +02:00
This file is part of Clipperz, the online password manager.
For further information about its features and functionalities please
refer to http://www.clipperz.com.
* Clipperz is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
* Clipperz is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Affero General Public License for more details.
* You should have received a copy of the GNU Affero General Public
License along with Clipperz. If not, see http://www.gnu.org/licenses/.
*/
Clipperz.Base.module('Clipperz.PM.UI.Components');
Clipperz.PM.UI.Components.Overlay = function(args) {
args = args || {};
this._defaultDelay = 2;
this._element = MochiKit.DOM.getElement('overlay');
return this;
}
//=============================================================================
Clipperz.Base.extend(Clipperz.PM.UI.Components.Overlay, Object, {
//-------------------------------------------------------------------------
'toString': function () {
return "Clipperz.PM.UI.Components.Overlay component";
},
'element': function () {
// return MochiKit.DOM.getElement('overlay');
return this._element;
},
'getElement': function (aClass) {
return MochiKit.Selector.findChildElements(this.element(), ['.'+aClass])[0];
},
//-------------------------------------------------------------------------
2015-11-30 11:47:06 +01:00
'show': function (aMessage, showMask, showProgress, showOnCardDetail) {
if (showMask === true) {
2015-11-30 11:47:06 +01:00
this.showMask(showOnCardDetail);
2015-11-30 14:12:27 +01:00
} else {
this.hideMask();
}
if (showProgress === true) {
this.showProgressBar();
}
if (! aMessage && ! showProgress) {
MochiKit.DOM.addElementClass(this.element(), 'spinnerOnly');
} else {
MochiKit.DOM.removeElementClass(this.element(), 'spinnerOnly');
}
2015-11-30 11:47:06 +01:00
if (showOnCardDetail) {
MochiKit.DOM.addElementClass(this.element(), 'card');
} else {
MochiKit.DOM.removeElementClass(this.element(), 'card');
}
2013-08-30 17:56:53 +02:00
this.resetStatus();
this.setMessage(aMessage);
MochiKit.DOM.removeElementClass(this.element(), 'ios-overlay-hide');
MochiKit.DOM.addElementClass(this.element(), 'ios-overlay-show');
},
'done': function (aMessage, aDelayBeforeHiding) {
this.hideMask();
this.hideProgressBar();
2013-08-30 17:56:53 +02:00
this.completed(this.showDoneIcon, aMessage, aDelayBeforeHiding);
},
'failed': function (aMessage, aDelayBeforeHiding) {
this.completed(this.showFailIcon, aMessage, aDelayBeforeHiding);
},
//-------------------------------------------------------------------------
'maskElement': function () {
return this.getElement('mask');
},
2015-11-30 11:47:06 +01:00
'showMask': function (showOnCardDetail) {
MochiKit.DOM.removeElementClass(this.maskElement(), 'card');
if (showOnCardDetail) {
MochiKit.DOM.addElementClass(this.maskElement(), 'card');
}
MochiKit.DOM.removeElementClass(this.maskElement(), 'hidden');
},
'hideMask': function () {
MochiKit.DOM.addElementClass(this.maskElement(), 'hidden');
},
//-------------------------------------------------------------------------
2013-08-30 17:56:53 +02:00
'resetStatus': function () {
MochiKit.Style.showElement(this.element());
MochiKit.Style.showElement(this.getElement('spinner'));
MochiKit.Style.hideElement(this.getElement('done'));
MochiKit.Style.hideElement(this.getElement('failed'));
},
'setMessage': function (aMessage) {
if (typeof(aMessage) != 'undefined') {
this.getElement('title').innerHTML = aMessage;
}
},
'completed': function (aFunctionToShowResult, aMessage, aDelayBeforeHiding) {
var delay = aDelayBeforeHiding || this.defaultDelay();
this.hideSpinner();
MochiKit.Base.bind(aFunctionToShowResult, this)();
this.setMessage(aMessage);
return MochiKit.Async.callLater(delay, MochiKit.Base.bind(this.hide, this))
2013-08-30 17:56:53 +02:00
},
2015-11-30 11:47:06 +01:00
'hide': function (withoutAnimationTime) {
var secondsBeforeHiding = withoutAnimationTime ? 0 : 1;
var element = this.element();
this.hideProgressBar();
MochiKit.DOM.removeElementClass(element, 'ios-overlay-show');
MochiKit.DOM.addElementClass(element, 'ios-overlay-hide');
2015-11-30 11:47:06 +01:00
return MochiKit.Async.callLater(secondsBeforeHiding, MochiKit.Style.hideElement, element);
2013-08-30 17:56:53 +02:00
},
'hideSpinner': function () {
MochiKit.Style.hideElement(this.getElement('spinner'));
},
'showDoneIcon': function () {
MochiKit.Style.showElement(this.getElement('done'));
},
'showFailIcon': function () {
MochiKit.Style.showElement(this.getElement('failed'));
},
//-------------------------------------------------------------------------
'showProgressBar': function () {
MochiKit.Style.showElement(this.getElement('progressBar'));
},
'hideProgressBar': function () {
MochiKit.Style.hideElement(this.getElement('progressBar'));
},
'updateProgress': function (aProgressPercentage) {
MochiKit.Style.setElementDimensions(this.getElement('progress'), {'w': aProgressPercentage}, '%');
//console.log("OVERLAY - updating progress: " + aProgressPercentage + "%");
},
//-------------------------------------------------------------------------
2013-08-30 17:56:53 +02:00
'defaultDelay': function () {
return this._defaultDelay;
},
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
2015-03-23 18:10:09 +01:00