diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/js/services | |
parent | Initial commit. (diff) | |
download | firefox-esr-upstream.tar.xz firefox-esr-upstream.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/js/services')
-rw-r--r-- | third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/js/services/todoStorage.js | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/js/services/todoStorage.js b/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/js/services/todoStorage.js new file mode 100644 index 0000000000..b68e59628d --- /dev/null +++ b/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/js/services/todoStorage.js @@ -0,0 +1,96 @@ +/*global angular */ + +/** + * Services that persists and retrieves todos from memory or a backend API + * if available. + * + * They both follow the same API, returning promises for all changes to the + * model. + */ +angular.module('todomvc') + .factory('todoStorage', function ($http, $injector) { + 'use strict'; + return Promise.resolve().then(function() { + return $injector.get('localCache'); + }); + }) + + .factory('localCache', function ($q) { + 'use strict'; + + var STORAGE_ID = 'todos-angularjs'; + + var store = { + todos: [], + cache: [], + + _getFromLocalCache: function () { + // return JSON.parse(this.cache[STORAGE_ID] || '[]'); + return []; + }, + + _saveToLocalCache: function (todos) { + // this.cache[STORAGE_ID] = JSON.stringify(todos); + return; + }, + + clearCompleted: function () { + var deferred = $q.defer(); + + var incompleteTodos = store.todos.filter(function (todo) { + return !todo.completed; + }); + + angular.copy(incompleteTodos, store.todos); + + store._saveToLocalCache(store.todos); + deferred.resolve(store.todos); + + return deferred.promise; + }, + + delete: function (todo) { + var deferred = $q.defer(); + + store.todos.splice(store.todos.indexOf(todo), 1); + + store._saveToLocalCache(store.todos); + deferred.resolve(store.todos); + + return deferred.promise; + }, + + get: function () { + var deferred = $q.defer(); + + angular.copy(store._getFromLocalCache(), store.todos); + deferred.resolve(store.todos); + + return deferred.promise; + }, + + insert: function (todo) { + var deferred = $q.defer(); + + store.todos.push(todo); + + store._saveToLocalCache(store.todos); + deferred.resolve(store.todos); + + return deferred.promise; + }, + + put: function (todo, index) { + var deferred = $q.defer(); + + store.todos[index] = todo; + + store._saveToLocalCache(store.todos); + deferred.resolve(store.todos); + + return deferred.promise; + } + }; + + return store; + }); |