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
|
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 |>METHOD:PagesManager<| = function() {
|>GLOBAL:Breeze<|.checkThis(this);
|>GLOBAL:Breeze<|.checkSingleton(PagesManager);
};
PagesManager.|>FIELD:NO_IMPLEMENTATION_ERROR<| = new Error('No implementation of PagesManagerImpl registered!');
PagesManager.|>FIELD:INVALID_ARGUMENT<| = new Error('Invalid argument!');
PagesManager.|>FIELD:ALREADY_REGISTERED<| = new Error('Already registered!');
PagesManager.prototype.|>CLASS:_implementation<| = null;
PagesManager.prototype.|>METHOD:loadPage<| = function(id, callback) {
if (!this._implementation) {
throw PagesManager.|>FIELD:NO_IMPLEMENTATION_ERROR<|;
}
this._implementation.loadPage(id, callback);
};
PagesManager.prototype.|>METHOD:getIds<| = function(callback) {
if (!this._implementation) {
throw PagesManager.|>FIELD:NO_IMPLEMENTATION_ERROR<|;
}
this._implementation.getIds(callback);
};
PagesManager.prototype.|>METHOD:storePage<| = function(page) {
if (!this._implementation) {
throw PagesManager.NoImplementationError;
}
this._implementation.storePage(page);
};
PagesManager.prototype.|>METHOD:registerImplementation<| = function(impl) {
if (!impl) {
throw PagesManager.|>FIELD:INVALID_ARGUMENT<|;
}
if (this._implementation) {
throw PagesManager.|>FIELD:ALREADY_REGISTERED<|;
}
this._implementation = impl;
};
return |>GLOBAL:Breeze<|.initSingleton(PagesManager);
});
|