1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
define([], function() {
/**
* Load and stores pages definitions from and to the backend.
* This class just delegates to the registered instance of the PagesManager.
*
* Please do not confuse this object with PagesManager from V1 - use
* Pages object for the same purpose as PagesManager in V1
*
* TODO: lazy pages loading
* TODO: add some prefix to the page keys in the storage
*
* @singleton.
*/
var PagesManager = function() {
Breeze.checkThis(this);
Breeze.checkSingleton(PagesManager);
this._implementation = null;
};
PagesManager.NO_IMPLEMENTATION_ERROR = new Error('No implementation of PagesManagerImpl registered!');
PagesManager.INVALID_ARGUMENT = new Error('Invalid argument!');
PagesManager.ALREADY_REGISTERED = new Error('Already registered!');
PagesManager.prototype.loadPage = function(id, callback) {
if (!this._implementation) {
throw PagesManager.NO_IMPLEMENTATION_ERROR;
}
this._implementation.loadPage(id, callback);
};
PagesManager.prototype.getIds = function(callback) {
if (!this._implementation) {
throw PagesManager.NO_IMPLEMENTATION_ERROR;
}
this._implementation.getIds(callback);
};
PagesManager.prototype.storePage = function(page) {
if (!this._implementation) {
throw PagesManager.NoImplementationError;
}
this._implementation.storePage(page);
};
PagesManager.prototype.registerImplementation = function(impl) {
if (!impl) {
throw PagesManager.INVALID_ARGUMENT;
}
if (this._implementation) {
throw PagesManager.ALREADY_REGISTERED;
}
this._implementation = impl;
};
return Breeze.initSingleton(PagesManager);
});
|