From 37e06a57231291cc8d2bf6387c80d42ea147af96 Mon Sep 17 00:00:00 2001 From: Tim Buckley Date: Mon, 5 Oct 2015 14:45:01 -0600 Subject: [PATCH] Add DatasetService to read and manage `config.json`. The DatasetService is intended to load and manage any number of configured data sources as specified in `config.json`. It also enforces use of Angular's built-in content caching to improve loading times of already-accessed datasets. Change-Id: Ibb161a171d6375bf024bf8c0ab051c3f1a97f760 --- app/js/services/dataset.js | 73 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 app/js/services/dataset.js diff --git a/app/js/services/dataset.js b/app/js/services/dataset.js new file mode 100644 index 0000000..38c7daa --- /dev/null +++ b/app/js/services/dataset.js @@ -0,0 +1,73 @@ +'use strict'; + +var servicesModule = require('./_index.js'); + +/** + * @ngInject + */ +function DatasetService($q, $http) { + + var service = {}; + + service.list = function() { + return $http({ + cache: true, + url: 'data/config.json', + method: 'GET' + }); + }; + + service.get = function(id) { + return $q(function(resolve, reject) { + service.list().then(function(response) { + for (let entry of response.data.tempest) { + if (entry.id === id) { + resolve(entry); + return; + } + } + + reject("Dataset not found with ID: " + id); + }, function(reason) { + reject(reason); + }); + }); + }; + + service.raw = function(dataset) { + return $http({ + cache: true, + url: dataset.raw, + method: 'GET' + }); + }; + + service.details = function(dataset) { + return $http({ + cache: true, + url: dataset.details, + method: 'GET' + }); + }; + + service.tree = function(dataset) { + return $http({ + cache: true, + url: dataset.tree, + method: 'GET' + }); + }; + + service.dstat = function(dataset) { + return $http({ + cache: true, + url: dataset.dstat, + method: 'GET' + }); + }; + + return service; + +} + +servicesModule.service('datasetService', DatasetService);