From 6275f5a43bed2a5053df8b977026dda6f1683775 Mon Sep 17 00:00:00 2001 From: Jeremy Mitchell Date: Mon, 26 Jun 2017 09:16:44 -0600 Subject: [PATCH] adds the ability to define a custom menu via a json file --- traffic_ops/experimental/ui/app/src/app.js | 18 +++++++- .../app/src/common/api/TrafficOpsService.js | 12 ++++++ .../app/src/common/models/PropertiesModel.js | 31 ++++++++++++++ .../ui/app/src/common/models/index.js | 3 +- .../src/common/modules/header/header.tpl.html | 2 +- .../navigation/NavigationController.js | 19 ++++++++- .../modules/navigation/navigation.tpl.html | 8 +++- .../private/custom/CustomController.js | 42 +++++++++++++++++++ .../src/modules/private/custom/_custom.scss | 36 ++++++++++++++++ .../modules/private/custom/custom.tpl.html | 20 +++++++++ .../app/src/modules/private/custom/index.js | 33 +++++++++++++++ .../experimental/ui/app/src/styles/main.scss | 7 +++- .../ui/app/src/traffic_ops_properties.json | 10 +++++ traffic_ops/experimental/ui/grunt/copy.js | 6 ++- 14 files changed, 237 insertions(+), 10 deletions(-) create mode 100644 traffic_ops/experimental/ui/app/src/common/models/PropertiesModel.js create mode 100644 traffic_ops/experimental/ui/app/src/modules/private/custom/CustomController.js create mode 100644 traffic_ops/experimental/ui/app/src/modules/private/custom/_custom.scss create mode 100644 traffic_ops/experimental/ui/app/src/modules/private/custom/custom.tpl.html create mode 100644 traffic_ops/experimental/ui/app/src/modules/private/custom/index.js create mode 100644 traffic_ops/experimental/ui/app/src/traffic_ops_properties.json diff --git a/traffic_ops/experimental/ui/app/src/app.js b/traffic_ops/experimental/ui/app/src/app.js index b02fd365f7..e74681f98b 100644 --- a/traffic_ops/experimental/ui/app/src/app.js +++ b/traffic_ops/experimental/ui/app/src/app.js @@ -151,12 +151,17 @@ var trafficOps = angular.module('trafficOps', [ require('./modules/private/configure/servers/new').name, require('./modules/private/configure/servers/list').name, + // custom + require('./modules/private/custom').name, + // monitor require('./modules/private/monitor').name, - // dashboards + // dashboard require('./modules/private/monitor/dashboard').name, require('./modules/private/monitor/dashboard/view').name, + + // map require('./modules/private/monitor/map').name, // common modules @@ -311,7 +316,16 @@ var trafficOps = angular.module('trafficOps', [ .state('trafficOps', { url: '/', abstract: true, - templateUrl: 'common/templates/master.tpl.html' + templateUrl: 'common/templates/master.tpl.html', + resolve: { + properties: function(trafficOpsService, propertiesModel) { + return trafficOpsService.getProperties() + .then(function(result) { + propertiesModel.setProperties(result); + }); + } + } + }); }) diff --git a/traffic_ops/experimental/ui/app/src/common/api/TrafficOpsService.js b/traffic_ops/experimental/ui/app/src/common/api/TrafficOpsService.js index 9b121e4337..0779dfa7a1 100644 --- a/traffic_ops/experimental/ui/app/src/common/api/TrafficOpsService.js +++ b/traffic_ops/experimental/ui/app/src/common/api/TrafficOpsService.js @@ -39,6 +39,18 @@ var TrafficOpsService = function($http, $q) { window.location = 'http://localhost:3000/api/1.2/dbdump'; }; + this.getProperties = function() { + var deferred = $q.defer(); + $http.get('traffic_ops_properties.json') + .then( + function(result) { + deferred.resolve(result.data.properties); + } + ); + + return deferred.promise; + }; + }; TrafficOpsService.$inject = ['$http', '$q']; diff --git a/traffic_ops/experimental/ui/app/src/common/models/PropertiesModel.js b/traffic_ops/experimental/ui/app/src/common/models/PropertiesModel.js new file mode 100644 index 0000000000..5720a184d2 --- /dev/null +++ b/traffic_ops/experimental/ui/app/src/common/models/PropertiesModel.js @@ -0,0 +1,31 @@ +/* + + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +var PropertiesModel = function() { + + this.properties = {}; + this.loaded = false; + + this.setProperties = function(properties) { + this.properties = properties; + this.loaded = true; + }; + +}; + +PropertiesModel.$inject = []; +module.exports = PropertiesModel; \ No newline at end of file diff --git a/traffic_ops/experimental/ui/app/src/common/models/index.js b/traffic_ops/experimental/ui/app/src/common/models/index.js index 8001b095a2..2925da5225 100644 --- a/traffic_ops/experimental/ui/app/src/common/models/index.js +++ b/traffic_ops/experimental/ui/app/src/common/models/index.js @@ -20,4 +20,5 @@ module.exports = angular.module('trafficOps.models', []) .service('changeLogModel', require('./ChangeLogModel')) .service('messageModel', require('./MessageModel')) - .service('userModel', require('./UserModel')); + .service('propertiesModel', require('./PropertiesModel')) + .service('userModel', require('./UserModel')); diff --git a/traffic_ops/experimental/ui/app/src/common/modules/header/header.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/header/header.tpl.html index cf6ad47326..adf90e6e79 100644 --- a/traffic_ops/experimental/ui/app/src/common/modules/header/header.tpl.html +++ b/traffic_ops/experimental/ui/app/src/common/modules/header/header.tpl.html @@ -17,7 +17,7 @@ under the License. --> -