diff --git a/www/data_module/guanlecoja/config.coffee b/www/data_module/guanlecoja/config.coffee index d35166d10af..bfadb0a9602 100644 --- a/www/data_module/guanlecoja/config.coffee +++ b/www/data_module/guanlecoja/config.coffee @@ -14,7 +14,7 @@ gulp.task "publish", ['default'], -> bower_json = name: "buildbot-data" version: "1.0.15" - main: ["scripts.js"] + main: ["buildbot-data.js"] moduleType: [], license: "MIT", ignore: [] @@ -71,7 +71,7 @@ config = files: 'lodash.js' # as angular is a test deps, the tests need to be loaded first! karma: - files: [ "tests.js", "scripts.js"] + files: [ "tests.js", "buildbot-data.js"] ngclassify: (config) -> return { diff --git a/www/data_module/src/data.config.coffee b/www/data_module/src/data.config.coffee index 5f31ec8d5aa..dce25a30c2e 100644 --- a/www/data_module/src/data.config.coffee +++ b/www/data_module/src/data.config.coffee @@ -4,3 +4,8 @@ class HttpConfig extends Config # of multiple http responses received at around # the same time via $rootScope.$applyAsync $httpProvider.useApplyAsync(true) + + +class Dataconfig extends Constant + constructor: -> + return enableIndexedDB: false diff --git a/www/data_module/src/services/indexeddb/indexeddb.service.coffee b/www/data_module/src/services/indexeddb/indexeddb.service.coffee index 78ae4363563..47e5fbc467e 100644 --- a/www/data_module/src/services/indexeddb/indexeddb.service.coffee +++ b/www/data_module/src/services/indexeddb/indexeddb.service.coffee @@ -1,8 +1,7 @@ class IndexedDB extends Service - constructor: ($log, $injector, $q, $window, config, $timeout, dataUtilsService, DBSTORES, SPECIFICATION) -> + constructor: ($log, $injector, $q, $window, DATACONFIG, $timeout, dataUtilsService, DBSTORES, SPECIFICATION) -> return new class IndexedDBService constructor: -> - # config.enableIndexedDB = true @db = new $window.Dexie('BBCache') version = $window.localStorage.getItem('BBCacheVERSION') # just recreate in case of old version in the browser @@ -48,11 +47,13 @@ class IndexedDB extends Service put: (table, value) -> table = @getTable(table) - if config.enableIndexedDB + if DATACONFIG.enableIndexedDB element = { } for k, v of value - if not angular.isObject(v) + if angular.isObject(v) element[k] = angular.toJson(v) + else + element[k] = v return table.put(element) else table.cache[value[table.schema.primKey.keyPath]] = value @@ -60,7 +61,7 @@ class IndexedDB extends Service getObject: (table, id) -> table = @getTable(table) - if config.enableIndexedDB + if DATACONFIG.enableIndexedDB return table.get(id) if not table.cache.hasOwnProperty(id) table.cache[id] = {} @@ -131,7 +132,7 @@ class IndexedDB extends Service return false native_filter: (table, query) -> - if not config.enableIndexedDB + if not DATACONFIG.enableIndexedDB return $.when([_.values(table.cache), query]) $q (resolve, reject) => diff --git a/www/data_module/src/services/tabex/tabex.service.coffee b/www/data_module/src/services/tabex/tabex.service.coffee index 71a7833816e..edf0c1ed412 100644 --- a/www/data_module/src/services/tabex/tabex.service.coffee +++ b/www/data_module/src/services/tabex/tabex.service.coffee @@ -1,5 +1,5 @@ class Tabex extends Service - constructor: ($log, $window, $q, config, $timeout, socketService, restService, dataUtilsService, indexedDBService, SPECIFICATION) -> + constructor: ($log, $window, $q, DATACONFIG, $timeout, socketService, restService, dataUtilsService, indexedDBService, SPECIFICATION) -> return new class TabexService CHANNELS = MASTER: '!sys.master' @@ -132,7 +132,7 @@ class Tabex extends Service t = dataUtilsService.type(path) specification = @getSpecification(t) # test if cached and active - if not config.enableIndexedDB + if not DATACONFIG.enableIndexedDB dbPaths = [] for dbPath in dbPaths dbPath.query = angular.fromJson(dbPath.query) diff --git a/www/data_module/src/services/tabex/tabex.service.spec.coffee b/www/data_module/src/services/tabex/tabex.service.spec.coffee index e802bcb643a..5bbd5e8f111 100644 --- a/www/data_module/src/services/tabex/tabex.service.spec.coffee +++ b/www/data_module/src/services/tabex/tabex.service.spec.coffee @@ -25,8 +25,11 @@ describe 'Tabex service', -> if angular.isArray(@channels[c]) and self for l in @channels[c] if angular.isFunction(l) then l(m) + class DbMock + put: -> $q.resolve() + schema: {primKey: 'x'} - tabexService = socketService = indexedDBService = restService = undefined + tabexService = socketService = indexedDBService = restService = DATACONFIG = undefined $window = $q = $rootScope = $timeout = undefined clientMock = new ClientMock() injected = ($injector) -> @@ -34,7 +37,8 @@ describe 'Tabex service', -> $q = $injector.get('$q') $rootScope = $injector.get('$rootScope') $timeout = $injector.get('$timeout') - + DATACONFIG = $injector.get('DATACONFIG') + DATACONFIG.enableIndexedDB = true spyOn($window.tabex, 'client').and.returnValue(clientMock) tabexService = $injector.get('tabexService') @@ -159,7 +163,7 @@ describe 'Tabex service', -> describe 'messageHandler(key, message)', -> it 'should update the object in the indexedDB', -> - indexedDBService.db = 'bsd': put: -> + indexedDBService.db = 'bsd': new DbMock() spyOn(indexedDBService.db['bsd'], 'put').and.returnValue($q.resolve()) expect(indexedDBService.db['bsd'].put).not.toHaveBeenCalled() message = bsd: 1 @@ -168,8 +172,8 @@ describe 'Tabex service', -> it 'should emit update events for matching paths', -> indexedDBService.db = - asd: put: -> $q.resolve() - bsd: put: -> $q.resolve() + asd: new DbMock() + bsd: new DbMock() spyOn(tabexService, 'activatePaths').and.returnValue($q.resolve()) spyOn(tabexService, 'startConsumingAll').and.returnValue($q.resolve()) @@ -195,7 +199,7 @@ describe 'Tabex service', -> it 'should emit update events for logs if the path contains `log`', -> indexedDBService.db = - logs: put: -> $q.resolve() + logs: new DbMock() spyOn(tabexService, 'activatePaths').and.returnValue($q.resolve()) spyOn(tabexService, 'startConsumingAll').and.returnValue($q.resolve())