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

Reply via email to