From fabeb1aa24bbfd3dbbd9a6500f5f69c14926665a Mon Sep 17 00:00:00 2001 From: William Welling Date: Wed, 20 Jun 2018 22:46:14 -0500 Subject: [PATCH 1/2] apply weaver table to service management --- app/config/apiMapping.js | 5 +++ app/config/appConfig.js | 2 +- app/controllers/serviceController.js | 54 ++++++++++++++++++-------- app/directives/weaverTableDirective.js | 2 +- app/repo/serviceRepo.js | 49 ++++++++++++++++++++++- app/views/management/services.html | 53 +++++++++++++++++++++++++ tests/mocks/repo/mockServiceRepo.js | 11 ++++++ 7 files changed, 156 insertions(+), 20 deletions(-) diff --git a/app/config/apiMapping.js b/app/config/apiMapping.js index b35e4862..69121135 100644 --- a/app/config/apiMapping.js +++ b/app/config/apiMapping.js @@ -251,6 +251,11 @@ var apiMapping = { submitRequest: { 'endpoint': '/private/queue', 'controller': 'services' + }, + page: { + 'endpoint': '/private/queue', + 'controller': 'services', + 'method': 'page' } }, Notification: { diff --git a/app/config/appConfig.js b/app/config/appConfig.js index 827f9dde..210d279c 100644 --- a/app/config/appConfig.js +++ b/app/config/appConfig.js @@ -9,7 +9,7 @@ var appConfig = { // Set this to the webService if mocking AuthService 'authService': 'https://labs.library.tamu.edu/auth3', - 'webService': 'http://localhost:9000', + 'webService': 'http://janus.evans.tamu.edu:9001', 'storageType': 'session', diff --git a/app/controllers/serviceController.js b/app/controllers/serviceController.js index e430d4f2..2d214d76 100644 --- a/app/controllers/serviceController.js +++ b/app/controllers/serviceController.js @@ -10,13 +10,45 @@ app.controller('ServiceController', function ($controller, $route, $scope, Proje options: ['UP', 'DOWN', 'MAINTENANCE'] }; - $scope.serviceRepo = ServiceRepo; - - $scope.services = ServiceRepo.getAll(); + $scope.repo = ServiceRepo; $scope.forms = {}; $scope.serviceToDelete = {}; + + $scope.filters = [ + { + gloss: 'Service', + property: 'name' + }, + { + gloss: 'Status', + property: 'status' + }, + { + gloss: 'Auto Updating', + property: 'isAuto' + }, + { + gloss: 'Public', + property: 'isPublic' + }, + { + gloss: 'Short List', + property: 'onShortList' + }, + { + gloss: 'URL', + property: 'serviceUrl' + } + ]; + + $scope.defaultSort = [ + { + property: 'name', + direction: 'ASC' + } + ]; ProjectService.getAll().then(function (projects) { $scope.projects = projects; @@ -94,20 +126,8 @@ app.controller('ServiceController', function ($controller, $route, $scope, Proje $scope.resetServices(); }; - var buildTable = function () { - var allServices = ServiceRepo.getAll(); - $scope.tableParams = new NgTableParams({ - count: allServices.length - }, { - counts: [], - filterDelay: 0, - dataset: allServices - }); - }; - - ServiceRepo.ready().then(function () { - buildTable(); - $scope.tableParams.reload(); + ServiceRepo.ready().then(function () { + $scope.tableParams = ServiceRepo.getTableParams(); }); $scope.confirmDelete = function (service) { diff --git a/app/directives/weaverTableDirective.js b/app/directives/weaverTableDirective.js index de0a19bc..87cc8c27 100644 --- a/app/directives/weaverTableDirective.js +++ b/app/directives/weaverTableDirective.js @@ -50,7 +50,7 @@ app.directive('weaverTable', function ($controller) { } - var activeSort = $scope.repo.getPageSettings().sort = [{ + var activeSort = $scope.repo.getPageSettings().sort = $scope.defaultSort ? $scope.defaultSort : [{ property: 'service.name', direction: 'ASC' }, { diff --git a/app/repo/serviceRepo.js b/app/repo/serviceRepo.js index 927a5141..25c1eb60 100644 --- a/app/repo/serviceRepo.js +++ b/app/repo/serviceRepo.js @@ -1,6 +1,53 @@ -app.repo("ServiceRepo", function ServiceRepo($q, $timeout, WsApi) { +app.repo("ServiceRepo", function ServiceRepo($q, $timeout, WsApi, Service, TableFactory) { var serviceRepo = this; + + serviceRepo.getPageSettings = function () { + return table.getPageSettings(); + }; + + serviceRepo.getTableParams = function () { + return table.getTableParams(); + }; + + serviceRepo.fetchPage = function (pageSettings) { + angular.extend(serviceRepo.mapping.page, { + 'data': pageSettings ? pageSettings : table.getPageSettings() + }); + return WsApi.fetch(serviceRepo.mapping.page); + }; + + var safePage = function(resolve) { + serviceRepo.fetchPage().then(function (response) { + var page = angular.fromJson(response.body).payload.PageImpl; + serviceRepo.empty(); + serviceRepo.addAll(page.content); + if (table.getPageSettings().pageNumber > 1 && table.getPageSettings().pageNumber > page.totalPages) { + table.setPage(page.totalPages); + safePage(resolve); + } else { + resolve(page); + } + }); + }; + + serviceRepo.page = function () { + return $q(function (resolve) { + safePage(resolve); + }); + }; + + var table = TableFactory.buildTable({ + pageNumber: sessionStorage.getItem('services-page') ? sessionStorage.getItem('services-page') : 1, + pageSize: sessionStorage.getItem('services-size') ? sessionStorage.getItem('services-size') : 10, + direction: 'DESC', + properties: ['name'], + filters: {}, + counts: [5, 10, 25, 50, 100], + page: serviceRepo.page, + data: serviceRepo.getContents(), + name: 'services' + }); var checkCreateNotes = function (service) { if (service.notes === undefined) { diff --git a/app/views/management/services.html b/app/views/management/services.html index 633bc698..b7103fca 100644 --- a/app/views/management/services.html +++ b/app/views/management/services.html @@ -1,3 +1,4 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ServiceStatusAuto UpdatingPublicShort ListURLProjectActions
{{service.name}} (scheduled){{service.status}}{{service.isAuto}}{{service.isPublic}}{{service.onShortList}}{{service.serviceUrl}}{{getProject(service).name}} + + + +
+
+ + + + + + + +
+ +
\ No newline at end of file diff --git a/tests/mocks/repo/mockServiceRepo.js b/tests/mocks/repo/mockServiceRepo.js index 88ded39a..e414f504 100644 --- a/tests/mocks/repo/mockServiceRepo.js +++ b/tests/mocks/repo/mockServiceRepo.js @@ -119,4 +119,15 @@ angular.module('mock.serviceRepo', []).service('ServiceRepo', function ($q) { return defer.promise; }; + ServiceRepo.getPageSettings = function () { + return { + sort: [ + { + property: 'name', + direction: 'ASC' + } + ] + }; + }; + }); \ No newline at end of file From d119296cfe17294dba93baf273437a064d3cf048 Mon Sep 17 00:00:00 2001 From: William Welling Date: Wed, 20 Jun 2018 22:52:55 -0500 Subject: [PATCH 2/2] fixed appConfig, removed commented out html --- app/config/appConfig.js | 2 +- app/views/management/services.html | 35 ------------------------------ 2 files changed, 1 insertion(+), 36 deletions(-) diff --git a/app/config/appConfig.js b/app/config/appConfig.js index 210d279c..827f9dde 100644 --- a/app/config/appConfig.js +++ b/app/config/appConfig.js @@ -9,7 +9,7 @@ var appConfig = { // Set this to the webService if mocking AuthService 'authService': 'https://labs.library.tamu.edu/auth3', - 'webService': 'http://janus.evans.tamu.edu:9001', + 'webService': 'http://localhost:9000', 'storageType': 'session', diff --git a/app/views/management/services.html b/app/views/management/services.html index b7103fca..97eb9873 100644 --- a/app/views/management/services.html +++ b/app/views/management/services.html @@ -1,38 +1,3 @@ - -