Added clearCache function
This commit is contained in:
parent
191ad1e4ee
commit
4fbf705ae5
|
@ -106,6 +106,12 @@ A javascript library providing server defined loading of assets for a single pag
|
|||
* cache.css = The cache backend for for css, null is auto select,false is disable. (default: null)
|
||||
* cache.cssData = The cache backend for for cssData, null is auto select,false is disable. (default: null)
|
||||
|
||||
## Functions
|
||||
|
||||
The functions iin FFSpaLoader.*;
|
||||
|
||||
* clearServerUrl(cb) = Clears the cached server url so after reload user get promted again.
|
||||
* clearCache(cb) = Clears the cached values so after reload all assets get refetched.
|
||||
|
||||
## Factory
|
||||
|
||||
|
@ -196,6 +202,7 @@ Add unit tests for any new or changed functionality. Lint and test your code.
|
|||
* Changed websql option openDatabase to returning open function.
|
||||
* Fixed sqlitePlugin open function was typo on openDatabase.
|
||||
* Added websql table option. (defaults to 'cache_store')
|
||||
* Added clearCache function.
|
||||
|
||||
### 0.1.0
|
||||
* Moved options.server.question to options.question.
|
||||
|
|
|
@ -431,7 +431,7 @@
|
|||
});
|
||||
};
|
||||
|
||||
var cleanupCache = function (resources, cb) {
|
||||
var cleanupCache = function (resources, deleteAll, cb) {
|
||||
var typedKeys = {};
|
||||
resources.forEach(function (r) {
|
||||
var typeKey = typedKeys[r.type];
|
||||
|
@ -456,11 +456,11 @@
|
|||
return cb(err);
|
||||
}
|
||||
if (value === null) {
|
||||
return cb(null);
|
||||
return cb(null); // meta has no keys
|
||||
}
|
||||
var diff = [];
|
||||
for (var i=0;i<value.length;i++) {
|
||||
if (typeKey.keys.indexOf(value[i]) === -1) {
|
||||
if (deleteAll || typeKey.keys.indexOf(value[i]) === -1) {
|
||||
diff.push(value[i]);
|
||||
}
|
||||
}
|
||||
|
@ -621,17 +621,14 @@
|
|||
}
|
||||
return;
|
||||
}
|
||||
var resources = [];
|
||||
JSON.parse(httpRequest.responseText).data.resources.forEach(function (r) {
|
||||
resources.push(r);
|
||||
});
|
||||
var resources = JSON.parse(httpRequest.responseText).data.resources;
|
||||
utilDebug('startLoader resources '+resources.length);
|
||||
if (cacheHasService('meta')) {
|
||||
cacheSetValue('meta','server_resources',resources, function (err) {
|
||||
if (err !== null) { return cb(err); }
|
||||
utilRunStack('loadResources', resources, loadResource , function (err) {
|
||||
if (err !== null) { return cb(err); }
|
||||
cleanupCache(resources,cb); // only clean when fetched + cached
|
||||
cleanupCache(resources,false,cb); // only clean when fetched + cached
|
||||
});
|
||||
});
|
||||
} else {
|
||||
|
@ -894,6 +891,40 @@
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Clears the cache.
|
||||
*
|
||||
* @param {function} cb Optional Error first callback gets called when cache is cleared.
|
||||
*/
|
||||
var clearCache = function(cb2) {
|
||||
if (cb2 === undefined) {
|
||||
cb2 = function() {};
|
||||
}
|
||||
var cb = function(err) {
|
||||
setTimeout(function() {cb2(err);}); // next tick to flush transactions.
|
||||
};
|
||||
if (cacheHasService('meta')) {
|
||||
cacheGetValue('meta','server_resources',function(err, value) {
|
||||
if (err !== null) {
|
||||
return cb(err);
|
||||
}
|
||||
if (value === null) {
|
||||
return cb(new Error('No cache value')); // TODO: check this or cb(null) or do fetch ?
|
||||
}
|
||||
cleanupCache(value,true,cb);
|
||||
});
|
||||
|
||||
} else {
|
||||
utilHttpFetch(options.server.url + options.server.assets,function(err, httpRequest) {
|
||||
if (err !== null) {
|
||||
return cb(err);
|
||||
}
|
||||
var resources = JSON.parse(httpRequest.responseText).data.resources;
|
||||
cleanupCache(resources,false,cb);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Boots angular modules if enabled.
|
||||
*
|
||||
|
@ -959,6 +990,7 @@
|
|||
options: options,
|
||||
factory: factory,
|
||||
start: start,
|
||||
clearServerUrl: clearServerUrl
|
||||
clearServerUrl: clearServerUrl,
|
||||
clearCache: clearCache
|
||||
};
|
||||
});
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
|
||||
var tpl = '<div><h2>Foo</h2><p>Welcome to the foo.</p></div>';
|
||||
tpl += '<input type=\"button\" class=\"btn btn-default\" ng-click=\"doReboot()\" value=\"Reboot\"></input>';
|
||||
tpl += '<input type=\"button\" class=\"btn btn-default\" ng-click=\"doClearServerUrl()\" value=\"Clear Server\"></input>';
|
||||
tpl += '<input type=\"button\" class=\"btn btn-default\" ng-click=\"doReload()\" value=\"Reload\"></input>';
|
||||
tpl += '<input type=\"button\" class=\"btn btn-default\" ng-click=\"doClearServerUrl()\" value=\"Clear Server Url\"></input>';
|
||||
tpl += '<input type=\"button\" class=\"btn btn-default\" ng-click=\"doClearCache()\" value=\"Clear Cache\"></input>';
|
||||
tpl += '<p>{{message}}</p>';
|
||||
|
||||
pageRouteInit.push(function ($routeProvider, $locationProvider) {
|
||||
$routeProvider.when('/example-ui/foo', {
|
||||
|
@ -11,17 +13,30 @@ pageRouteInit.push(function ($routeProvider, $locationProvider) {
|
|||
});
|
||||
|
||||
function PageFoo($scope) {
|
||||
$scope.doReboot = function ( path ) {
|
||||
$scope.message = '';
|
||||
$scope.doReload = function () {
|
||||
window.location.reload(true);
|
||||
};
|
||||
|
||||
$scope.doClearServerUrl = function ( path ) {
|
||||
$scope.doClearServerUrl = function () {
|
||||
FFSpaLoader.clearServerUrl(function(err) {
|
||||
if (err) {
|
||||
window.alert(err);
|
||||
$scope.message = 'Error: '+err;
|
||||
} else {
|
||||
window.location.reload(true);
|
||||
$scope.message = 'Cleared server url';
|
||||
}
|
||||
$scope.$apply();
|
||||
});
|
||||
};
|
||||
|
||||
$scope.doClearCache = function () {
|
||||
FFSpaLoader.clearCache(function(err) {
|
||||
if (err) {
|
||||
$scope.message = 'Error: '+err;
|
||||
} else {
|
||||
$scope.message = 'Cleared cache';
|
||||
}
|
||||
$scope.$apply();
|
||||
});
|
||||
};
|
||||
}
|
||||
|
|
|
@ -22,5 +22,11 @@ describe('Check module exports', function() {
|
|||
it('FFSpaLoader.clearServerUrl should be function', function() {
|
||||
assert.equal(true, typeof FFSpaLoader.clearServerUrl === 'function');
|
||||
});
|
||||
it('FFSpaLoader.clearCache should be defined', function() {
|
||||
assert.equal(false, FFSpaLoader.clearCache === undefined);
|
||||
});
|
||||
it('FFSpaLoader.clearCache should be function', function() {
|
||||
assert.equal(true, typeof FFSpaLoader.clearCache === 'function');
|
||||
});
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue