little-cui closed pull request #348: SCB-491 Add the Test Schema Feature URL: https://github.com/apache/incubator-servicecomb-service-center/pull/348
This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/frontend/app/index.html b/frontend/app/index.html index c6694f2d..406d6c97 100644 --- a/frontend/app/index.html +++ b/frontend/app/index.html @@ -62,15 +62,18 @@ <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-material-data-table/0.10.10/md-data-table.js"></script> <script src="https://rawcdn.githack.com/chartjs/Chart.js/v2.7.0/dist/Chart.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-chart.js/1.1.1/angular-chart.js"></script> - <script src="https://rawcdn.githack.com/Orange-OpenSource/angular-swagger-ui/0.5.4/dist/scripts/swagger-ui.js"></script> + <!-- <script src="https://rawcdn.githack.com/Orange-OpenSource/angular-swagger-ui/0.5.4/dist/scripts/swagger-ui.js"></script> --> <script src="https://rawcdn.githack.com/mmumshad/angular-yamljs/master/dist/angular-yamljs.js"></script> + <script src="https://cdn.rawgit.com/asifdxtreme/angular-swagger-ui/565ed3ea/dist/scripts/swagger-ui.js"></script> + + <script src="https://cdnjs.cloudflare.com/ajax/libs/js-yaml/3.11.0/js-yaml.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/yamljs/0.1.5/yaml.js"></script> - <script src="https://rawcdn.githack.com/Orange-OpenSource/angular-swagger-ui/0.5.4/dist/scripts/modules/swagger-yaml-parser.min.js"></script> + <script src="https://cdn.rawgit.com/asifdxtreme/angular-swagger-ui/565ed3ea/dist/scripts/modules/swagger-yaml-parser.min.js"></script> <script src="https://fastcdn.org/FileSaver.js/1.1.20151003/FileSaver.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.4/jszip.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.3.2/swagger-ui-bundle.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.3.2/swagger-ui-standalone-preset.js"></script> - <script src="https://cdnjs.cloudflare.com/ajax/libs/js-yaml/3.10.0/js-yaml.min.js"></script> + <script src="https://cdn.rawgit.com/jeremyfa/yaml.js/v0.3.0/dist/yaml.js"></script> <!-- build:js({.tmp,app}) scripts/scripts.js --> <script src="scripts/app.js"></script> <!-- Load common services --> diff --git a/frontend/app/scripts/languages/locale-cz.js b/frontend/app/scripts/languages/locale-cz.js index a37d9a08..0036ee6d 100644 --- a/frontend/app/scripts/languages/locale-cz.js +++ b/frontend/app/scripts/languages/locale-cz.js @@ -86,6 +86,9 @@ angular.module('serviceCenter') "areYouSureToDelete": "你确定删除吗?", "cannotDeleteServiceWhenInstanceIsAvailable": "实例可用时无法删除服务", "serviceDeletedSuccessfully": "服务已成功删除", - "unableToDeleteService": "无法删除服务 再试一次" + "unableToDeleteService": "无法删除服务 再试一次", + "back": "返回", + "highwayErr": "Highway目前不受支持", + "noInstanceTip": "实例不可用" }); diff --git a/frontend/app/scripts/languages/locale-en.js b/frontend/app/scripts/languages/locale-en.js index 98d86ac3..16ce3a01 100644 --- a/frontend/app/scripts/languages/locale-en.js +++ b/frontend/app/scripts/languages/locale-en.js @@ -86,6 +86,8 @@ angular.module('serviceCenter') "areYouSureToDelete": "Are you sure to delete ?", "cannotDeleteServiceWhenInstanceIsAvailable": "Cannot delete service when instance is available", "serviceDeletedSuccessfully": "Service Deleted Successfully", - "unableToDeleteService": "Unable to delete service..Try again" - + "unableToDeleteService": "Unable to delete service..Try again", + "back": "back", + "highwayErr": "Highway is not supported currently", + "noInstanceTip": "Instance is not available" }); diff --git a/frontend/app/scripts/modules/serviceCenter/controllers/schemaCtrl.js b/frontend/app/scripts/modules/serviceCenter/controllers/schemaCtrl.js index aded9caf..4ff3e2b2 100644 --- a/frontend/app/scripts/modules/serviceCenter/controllers/schemaCtrl.js +++ b/frontend/app/scripts/modules/serviceCenter/controllers/schemaCtrl.js @@ -16,159 +16,177 @@ */ 'use strict'; angular.module('serviceCenter.sc') - .controller('schemaController',['$scope', 'apiConstant', 'httpService', '$stateParams', 'servicesList', '$q', '$mdDialog', 'YAML', '$http', '$state', '$document', '$interval', - function($scope, apiConstant, httpService, $stateParams, servicesList, $q, $mdDialog, YAML, $http, $state, $document, $interval) { - - var serviceId = $stateParams.serviceId; - $scope.schemaName = []; - var addresses = []; - var instances = []; - var promises = []; - if(servicesList && servicesList.data && servicesList.data.services){ - servicesList.data.services.forEach(function(services){ - if(services.serviceId == serviceId){ - $scope.schemaName = services.schemas || []; - } - }); - } + .controller('schemaController', ['$scope', 'apiConstant', 'httpService', '$stateParams', 'servicesList', '$q', '$mdDialog', 'YAML', '$http', '$state', '$document', '$interval', + function($scope, apiConstant, httpService, $stateParams, servicesList, $q, $mdDialog, YAML, $http, $state, $document, $interval) { - $scope.downloadAllSchema = function(){ - $(".loader").show(); - for(var s= 0; s < $scope.schemaName.length; s++){ - var schemaApi = apiConstant.api.schema.url; - var api = schemaApi.replace("{{serviceId}}", serviceId); - var url = api.replace("{{schemaId}}", $scope.schemaName[s]); - var method = apiConstant.api.schema.method; - var headers = {"X-ConsumerId": serviceId}; - promises.push(httpService.apiRequest(url, method, null, headers, "nopopup")); - } - - $q.all(promises).then(function(response){ - if(response){ - promises = []; - for(var i = 0; i < response.length; i++){ - $scope.schemaJson = YAML.parse(response[i].data.schema); - var schemaName = $scope.schemaName[i].split('.'); - var id = schemaName[schemaName.length - 1]; - const ui = SwaggerUIBundle({ - spec: $scope.schemaJson, - dom_id: '#'+id, - presets: [ - SwaggerUIBundle.presets.apis, - SwaggerUIStandalonePreset - ], - plugins: [ - SwaggerUIBundle.plugins.DownloadUrl - ], - layout: "StandaloneLayout", - docExpansion: 'full' - }); + var serviceId = $stateParams.serviceId; + $scope.schemaName = []; + $scope.selectedAddress = ''; + $scope.disableNext = false; + var addresses = []; + var instances = []; + var promises = []; + if (servicesList && servicesList.data && servicesList.data.services) { + servicesList.data.services.forEach(function(services) { + if (services.serviceId == serviceId) { + $scope.schemaName = services.schemas || []; + } + }); + } - if(i == 0){ - var zip = new JSZip(); - var folder = zip.folder('schemas'); - } + $scope.downloadAllSchema = function() { + $(".loader").show(); + for (var s = 0; s < $scope.schemaName.length; s++) { + var schemaApi = apiConstant.api.schema.url; + var api = schemaApi.replace("{{serviceId}}", serviceId); + var url = api.replace("{{schemaId}}", $scope.schemaName[s]); + var method = apiConstant.api.schema.method; + var headers = { + "X-ConsumerId": serviceId + }; + promises.push(httpService.apiRequest(url, method, null, headers, "nopopup")); + } - (function(i){ - var interval = $interval(function(){ - if(angular.element('.swagger-ui').length){ - $interval.cancel(interval); - var schemaName = $scope.schemaName[i].split('.'); - var fileName = schemaName[schemaName.length - 1]; - var content = $document[0].getElementById('multipleTemplate').innerHTML; - zip.file(fileName+".html", content); - var clearDom = angular.element(document.querySelector('#'+fileName)); - clearDom.empty(); - if(i == response.length - 1){ - $(".loader").hide(); - zip.generateAsync({type: "blob"}).then(function(content) { - saveAs(content, "schemas.zip"); - }) - } - } - },500) - })(i); - } - } - },function(error){ - $(".loader").hide(); - $scope.noSchemaFound(); - }) - } + $q.all(promises).then(function(response) { + if (response) { + promises = []; + for (var i = 0; i < response.length; i++) { + $scope.schemaJson = YAML.parse(response[i].data.schema); + var schemaName = $scope.schemaName[i].split('.'); + var id = schemaName[schemaName.length - 1]; + const ui = SwaggerUIBundle({ + spec: $scope.schemaJson, + dom_id: '#' + id, + presets: [ + SwaggerUIBundle.presets.apis, + SwaggerUIStandalonePreset + ], + plugins: [ + SwaggerUIBundle.plugins.DownloadUrl + ], + layout: "StandaloneLayout", + docExpansion: 'full' + }); - $scope.instanceDetails = function(){ - var instanceUrl = apiConstant.api.instances.url; - var instanceApi = instanceUrl.replace('{{serviceId}}', serviceId); - var instanceMethod = apiConstant.api.instances.method; - var instanceHeaders = {"X-ConsumerId": serviceId}; - httpService.apiRequest(instanceApi, instanceMethod, null, instanceHeaders, "nopopup").then(function(response){ - if(response && response.data && response.data.instances) { - for(var i = 0; i < response.data.instances.length; i++){ - addresses[i] = []; - instances.push(response.data.instances[i].hostName + '-' +response.data.instances[i].instanceId); - for(var j = 0; j< response.data.instances[i].endpoints.length; j++){ - addresses[i].push(response.data.instances[i].endpoints[j]) - } - } - } - else { - addresses = [[]]; - } - },function(error){ - addresses = [[]]; - }); - } - $scope.instanceDetails(); + if (i == 0) { + var zip = new JSZip(); + var folder = zip.folder('schemas'); + } - $scope.downloadSchema = function(selectedSchema){ - $(".loader").show(); - var schemaApi = apiConstant.api.schema.url; - var api = schemaApi.replace("{{serviceId}}", serviceId); - var url = api.replace("{{schemaId}}", selectedSchema); - var method = apiConstant.api.schema.method; - var headers = {"X-ConsumerId": serviceId}; - httpService.apiRequest(url, method, null, headers, "nopopup").then(function(response){ - if(response && response.data && response.data.schema){ - $scope.template = response.data.schema; - $scope.json = YAML.parse($scope.template); - const ui = SwaggerUIBundle({ - spec: $scope.json, - dom_id: '#swagger-template', - presets: [ - SwaggerUIBundle.presets.apis, - SwaggerUIStandalonePreset - ], - plugins: [ - SwaggerUIBundle.plugins.DownloadUrl - ], - layout: "StandaloneLayout", - docExpansion: 'full' - }); + (function(i) { + var interval = $interval(function() { + if (angular.element('.swagger-ui').length) { + $interval.cancel(interval); + var schemaName = $scope.schemaName[i].split('.'); + var fileName = schemaName[schemaName.length - 1]; + var content = $document[0].getElementById('multipleTemplate').innerHTML; + zip.file(fileName + ".html", content); + var clearDom = angular.element(document.querySelector('#' + fileName)); + clearDom.empty(); + if (i == response.length - 1) { + $(".loader").hide(); + zip.generateAsync({ + type: "blob" + }).then(function(content) { + saveAs(content, "schemas.zip"); + }) + } + } + }, 500) + })(i); + } + } + }, function(error) { + $(".loader").hide(); + $scope.noSchemaFound(); + }) + } - var interval = $interval(function(){ - if(angular.element('.swagger-ui').length){ - $(".loader").hide(); - var content = $document[0].getElementById('singleTemplate').innerHTML; - var blob = new Blob([ content ], { type : "text/html;charset=utf-8" }); - var link = angular.element('<a></a>'); - link.attr('href', window.URL.createObjectURL(blob)); - link.attr('download', selectedSchema+".html"); - link[0].click(); - $interval.cancel(interval); - var clearDom = angular.element(document.querySelector('#swagger-template')); - clearDom.empty(); + $scope.instanceDetails = function() { + var instanceUrl = apiConstant.api.instances.url; + var instanceApi = instanceUrl.replace('{{serviceId}}', serviceId); + var instanceMethod = apiConstant.api.instances.method; + var instanceHeaders = { + "X-ConsumerId": serviceId + }; + httpService.apiRequest(instanceApi, instanceMethod, null, instanceHeaders, "nopopup").then(function(response) { + if (response && response.data && response.data.instances && response.data.instances.length > 0) { + for (var i = 0; i < response.data.instances.length; i++) { + addresses[i] = []; + instances.push(response.data.instances[i].hostName + '-' + response.data.instances[i].instanceId); + for (var j = 0; j < response.data.instances[i].endpoints.length; j++) { + addresses[i].push(response.data.instances[i].endpoints[j]) + } } - },500) - } - },function(error) { - $(".loader").hide(); - $scope.noSchemaFound() - }); - }; + $scope.noInstance = false; + } else { + addresses = [ + [] + ]; + $scope.noInstance = true; + } + }, function(error) { + addresses = [ + [] + ]; + $scope.noInstance = true; + }); + } + $scope.instanceDetails(); - $scope.noSchemaFound = function(){ - $mdDialog.show({ - template: `<md-dialog flex="30"> + $scope.downloadSchema = function(selectedSchema) { + $(".loader").show(); + var schemaApi = apiConstant.api.schema.url; + var api = schemaApi.replace("{{serviceId}}", serviceId); + var url = api.replace("{{schemaId}}", selectedSchema); + var method = apiConstant.api.schema.method; + var headers = { + "X-ConsumerId": serviceId + }; + httpService.apiRequest(url, method, null, headers, "nopopup").then(function(response) { + if (response && response.data && response.data.schema) { + $scope.template = response.data.schema; + $scope.json = YAML.parse($scope.template); + const ui = SwaggerUIBundle({ + spec: $scope.json, + dom_id: '#swagger-template', + presets: [ + SwaggerUIBundle.presets.apis, + SwaggerUIStandalonePreset + ], + plugins: [ + SwaggerUIBundle.plugins.DownloadUrl + ], + layout: "StandaloneLayout", + docExpansion: 'full' + }); + + var interval = $interval(function() { + if (angular.element('.swagger-ui').length) { + $(".loader").hide(); + var content = $document[0].getElementById('singleTemplate').innerHTML; + var blob = new Blob([content], { + type: "text/html;charset=utf-8" + }); + var link = angular.element('<a></a>'); + link.attr('href', window.URL.createObjectURL(blob)); + link.attr('download', selectedSchema + ".html"); + link[0].click(); + $interval.cancel(interval); + var clearDom = angular.element(document.querySelector('#swagger-template')); + clearDom.empty(); + } + }, 500) + } + }, function(error) { + $(".loader").hide(); + $scope.noSchemaFound() + }); + }; + + $scope.noSchemaFound = function() { + $mdDialog.show({ + template: `<md-dialog flex="30"> <md-toolbar> <div class="md-toolbar-tools"> <h2>{{ "alert" | translate }}</h2> @@ -188,88 +206,102 @@ angular.module('serviceCenter.sc') </md-button> </md-dialog-actions> </md-dialog>`, - parent: angular.element(document.body), - clickOutsideToClose: true, - controller: function($scope, $mdDialog) { - $scope.cancel = function(){ - $mdDialog.hide(); + parent: angular.element(document.body), + clickOutsideToClose: true, + controller: function($scope, $mdDialog) { + $scope.cancel = function() { + $mdDialog.hide(); + } } - } - }) - }; + }) + }; - $scope.testSchema = function(selectedSchema) { - $mdDialog.show({ - controller: function ($scope, $mdDialog, apiConstant, httpService) { - $scope.showSchema = false; + $scope.testSchema = function(selectedSchema) { + $mdDialog.show({ + controller: function($scope, $mdDialog, apiConstant, httpService) { + $scope.showSchema = false; - $scope.instances = instances; - $scope.selectedInstance = instances[0] || ''; + $scope.instances = instances; + $scope.selectedInstance = instances[0] || ''; - $scope.addresses = addresses[0]; - $scope.selectedAddress = addresses[0][0] || ''; + $scope.addresses = addresses[0]; + angular.forEach($scope.addresses, function(addr) { + if (addr.indexOf("rest") >= 0) { + $scope.selectedAddress = addr; + } + }); + $scope.selectedAddress = ($scope.selectedAddress == '') ? addresses[0][0] : $scope.selectedAddress; + $scope.disableNext = $scope.selectedAddress.indexOf("highway") >= 0 ? true : false; - $scope.setInstance = function(instance) { - for(var i = 0; i < $scope.instances.length; i++){ - if(instance == $scope.instances[i]){ - $scope.selectedInstance = instance[i]; - $scope.addresses = addresses[i]; - $scope.selectedAddress = addresses[i][0]; - } - } + $scope.setInstance = function(instance) { + for (var i = 0; i < $scope.instances.length; i++) { + if (instance == $scope.instances[i]) { + $scope.selectedInstance = instance[i]; + $scope.addresses = addresses[i]; + $scope.selectedAddress = addresses[i][0]; + } + } - }; + }; - $scope.setAddress = function(address) { - $scope.selectedAddress = address; - }; + $scope.setAddress = function(address) { + $scope.disableNext = address.indexOf("highway") >= 0 ? true : false; + $scope.selectedAddress = address; + }; - $scope.getSchema = function(){ - var schemaApi = apiConstant.api.schema.url; - var api = schemaApi.replace("{{serviceId}}", serviceId); - var url = api.replace("{{schemaId}}", selectedSchema); - var method = apiConstant.api.schema.method; - var headers = {"X-ConsumerId": serviceId}; - httpService.apiRequest(url, method, null, headers, "nopopup").then(function(response){ - $(".loader").hide(); - if(response && response.data && response.data.schema){ - if($scope.selectedAddress.indexOf("rest") != -1){ - var rest = $scope.selectedAddress.split(':'); - var ip = rest[1].substring(2,rest[1].length)+":"+rest[2].substring(0,4); - } - if($scope.selectedAddress.indexOf("highway") != -1){ - var highway = $scope.selectedAddress.split(':'); - var ip = highway[1].substring(2,highway[1].length)+":"+highway[2].substring(0,4); - } - var schema = response.data.schema; - var json = YAML.parse(schema); - json.basePath = "/testSchema"; - json.instanceIP = ip; - json.schemaName = selectedSchema; - var yamlString = YAML.stringify(json); - $scope.testSchema = yamlString; - $scope.showSchema = true; - } - },function(error) { - $(".loader").hide(); - $scope.showSchema = true; - }); - } + $scope.getSchema = function() { + var schemaApi = apiConstant.api.schema.url; + var api = schemaApi.replace("{{serviceId}}", serviceId); + var url = api.replace("{{schemaId}}", selectedSchema); + var method = apiConstant.api.schema.method; + var headers = { + "X-ConsumerId": serviceId + }; + httpService.apiRequest(url, method, null, headers, "nopopup").then(function(response) { + $(".loader").hide(); + if (response && response.data && response.data.schema) { + if ($scope.selectedAddress.indexOf("rest") != -1) { + var rest = $scope.selectedAddress.split(':'); + var ip = rest[1].substring(2, rest[1].length) + ":" + rest[2].substring(0, 4); + } + if ($scope.selectedAddress.indexOf("highway") != -1) { + var highway = $scope.selectedAddress.split(':'); + var ip = highway[1].substring(2, highway[1].length) + ":" + highway[2].substring(0, 4); + } + var schema = response.data.schema; + var json = YAML.parse(schema); + json.basePath = "/testSchema" + json.basePath; + json.instanceIP = ip; + json.schemaName = selectedSchema; + var yamlString = YAML.stringify(json); + $scope.testSchema = yamlString; + $scope.showSchema = true; + } + }, function(error) { + $(".loader").hide(); + $scope.showSchema = true; + }); + } + + $scope.hide = function() { + $mdDialog.hide(); + }; + + $scope.goBack = function() { + $scope.showSchema = false; + } - $scope.hide = function() { - $mdDialog.hide(); - }; + $scope.cancel = function() { + $mdDialog.cancel(); + }; + }, + templateUrl: 'scripts/modules/serviceCenter/views/testSchema.html', + parent: angular.element(document.body), + clickOutsideToClose: true, + fullscreen: false + }); + }; - $scope.cancel = function() { - $mdDialog.cancel(); - }; - }, - templateUrl: 'scripts/modules/serviceCenter/views/testSchema.html', - parent: angular.element(document.body), - clickOutsideToClose:true, - fullscreen: false - }); - }; - -}]); \ No newline at end of file + } + ]); \ No newline at end of file diff --git a/frontend/app/scripts/modules/serviceCenter/controllers/serviceInfoCtrl.js b/frontend/app/scripts/modules/serviceCenter/controllers/serviceInfoCtrl.js index 82579444..c13db219 100644 --- a/frontend/app/scripts/modules/serviceCenter/controllers/serviceInfoCtrl.js +++ b/frontend/app/scripts/modules/serviceCenter/controllers/serviceInfoCtrl.js @@ -85,4 +85,20 @@ angular.module('serviceCenter.sc') return commonService.timeFormat(timestamp); }; + $scope.getActiveTab = function(){ + if($state.current.name == "sc.info.instance"){ + $scope.selectedTab = 0; + } + if($state.current.name == "sc.info.provider"){ + $scope.selectedTab = 1; + } + if($state.current.name == "sc.info.consumer"){ + $scope.selectedTab = 2; + } + if($state.current.name == "sc.info.schema"){ + $scope.selectedTab = 3; + } + } + $scope.getActiveTab(); + }]); diff --git a/frontend/app/scripts/modules/serviceCenter/views/schema.html b/frontend/app/scripts/modules/serviceCenter/views/schema.html index 23b9e757..b0760c94 100644 --- a/frontend/app/scripts/modules/serviceCenter/views/schema.html +++ b/frontend/app/scripts/modules/serviceCenter/views/schema.html @@ -23,8 +23,13 @@ <tbody> <tr ng-repeat="schema in schemaName"> <td>{{ schema }}</td> - <td><md-button class="md-raised schemaBtn" ng-click="testSchema(schema)">{{ "testSchema" | translate }}</md-button> - <md-button class="md-raised schemaBtn" ng-click="downloadSchema(schema)" >{{ "download" | translate }} HTML</md-button> + <td> + <div class="tooltip-wrapper inline" title="{{(noInstance ? ('noInstanceTip' | translate) : '')}}"> + <md-button class="md-raised" ng-disabled="noInstance" ng-class="{schemaBtn: !noInstance}" ng-click="testSchema(schema)"> + {{ "testSchema" | translate }} + </md-button> + </div> + <md-button class="md-raised schemaBtn" ng-click="downloadSchema(schema)" >{{ "download" | translate }} HTML</md-button> </td> </tr> <tr ng-if="schemaName.length == 0" class="text-center"> diff --git a/frontend/app/scripts/modules/serviceCenter/views/serviceInfo.html b/frontend/app/scripts/modules/serviceCenter/views/serviceInfo.html index d6b74c16..dd0a4094 100644 --- a/frontend/app/scripts/modules/serviceCenter/views/serviceInfo.html +++ b/frontend/app/scripts/modules/serviceCenter/views/serviceInfo.html @@ -30,7 +30,7 @@ <h1>{{serviceDetail.serviceName || "S" | limitTo : 1 : 0 }}</h1> <div class="serviceInfoTab" ng-cloak> <md-content> - <md-tabs md-dynamic-height md-border-bottom> + <md-tabs md-selected="selectedTab" md-dynamic-height md-border-bottom> <md-tab label="{{ 'serviceInstances' | translate }}({{instances.length}})" ng-click="getInstance()"> </md-tab> diff --git a/frontend/app/scripts/modules/serviceCenter/views/testSchema.html b/frontend/app/scripts/modules/serviceCenter/views/testSchema.html index df1879fc..b8938697 100644 --- a/frontend/app/scripts/modules/serviceCenter/views/testSchema.html +++ b/frontend/app/scripts/modules/serviceCenter/views/testSchema.html @@ -45,6 +45,7 @@ <h2 class="text-center">{{ "noSchemaExists" | translate }}</h2> <select class="form-control" ng-model="selectedAddress" ng-change="setAddress(selectedAddress)"> <option ng-repeat="address in addresses" value="{{address}}"> {{ address }} </option> </select> + <p class="highwayErr" ng-if="disableNext">{{"highwayErr" | translate}}</p> </div> <div flex="25"></div> </div> @@ -56,9 +57,12 @@ <h3 class="text-center">{{ "noInstance" | translate }}</h3> </md-dialog-content> <md-dialog-actions layout="row"> <span flex></span> - <md-button class="md-raised schemaBtn" ng-show="(!showSchema) && (instances.length != 0) " ng-click="getSchema()"> + <md-button class="md-raised" ng-disabled="disableNext" ng-class="{schemaBtn: !disableNext}" ng-show="(!showSchema) && (instances.length != 0) " ng-click="getSchema()"> {{ "next" | translate}} </md-button> + <md-button class="schemaBtn" ng-show="showSchema" ng-click="goBack()"> + {{"back" | translate}} + </md-button> <md-button ng-click="cancel()"> {{ "close" | translate}} </md-button> diff --git a/frontend/app/styles/main.css b/frontend/app/styles/main.css index 3e4e8752..5ad3d4c8 100644 --- a/frontend/app/styles/main.css +++ b/frontend/app/styles/main.css @@ -411,4 +411,12 @@ md-table-pagination .md-select-icon { table, md-toolbar { font-family: sans-serif; } +.highwayErr { + color: red; + text-align: center; + padding-top: 10px; +} +.inline { + display: inline; +} /*# sourceMappingURL=main.css.map */ diff --git a/frontend/schema/schemahandler.go b/frontend/schema/schemahandler.go index 047ac62c..1a9a557a 100644 --- a/frontend/schema/schemahandler.go +++ b/frontend/schema/schemahandler.go @@ -36,8 +36,7 @@ func SchemaHandleFunc(c echo.Context) (err error) { response *http.Response req *http.Request instanceIP = r.Header.Get("X-InstanceIP") - schemaName = r.Header.Get("X-SchemaName") - requestUrl = strings.Replace(r.RequestURI, "testSchema", schemaName, -1) + requestUrl = strings.Replace(r.RequestURI, "testSchema/", "", 1) url = "http://" + instanceIP + requestUrl ) @@ -64,10 +63,15 @@ func SchemaHandleFunc(c echo.Context) (err error) { for key, values := range r.Header { for _, val := range values { - req.Header.Add(key, val) + if key == "Accept-Encoding" || key == "Connection" || key == "X-Schemaname" || key == "Cookie" || key == "User-Agent" || key == "AppleWebKit" || key == "Dnt" || key == "Referer" || key == "Accept-Language" { + continue + } else { + req.Header.Add(key, val) + } + } } - + req.Header.Add("Content-Type", "application/json") client := http.Client{Timeout: time.Second * 20} response, err = client.Do(req) if err != nil { @@ -75,7 +79,6 @@ func SchemaHandleFunc(c echo.Context) (err error) { fmt.Sprintf("( Error while sending request due to : %s", err)) return } - respBody, err := ioutil.ReadAll(response.Body) if err != nil { c.String(http.StatusNotFound, diff --git a/frontend/server.go b/frontend/server.go index 141e946d..4264bf64 100644 --- a/frontend/server.go +++ b/frontend/server.go @@ -38,7 +38,7 @@ func Serve(c Config) { staticPath := filepath.Join(dir, "app") e.Static("/", staticPath) - e.Any("/testSchema/", schema.SchemaHandleFunc) + e.Any("/testSchema/*", schema.SchemaHandleFunc) scProxy(c, e) ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services