[
https://issues.apache.org/jira/browse/SCB-491?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16471523#comment-16471523
]
ASF GitHub Bot commented on SCB-491:
------------------------------------
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:
[email protected]
> Test Schema function of Service Center is not available
> -------------------------------------------------------
>
> Key: SCB-491
> URL: https://issues.apache.org/jira/browse/SCB-491
> Project: Apache ServiceComb
> Issue Type: Bug
> Components: Service-Center
> Affects Versions: service-center-1.0.0-m1
> Reporter: mabin
> Assignee: Mohammad Asif Siddiqui
> Priority: Major
> Fix For: service-center-1.0.0-m2
>
> Attachments: bmi_test_schema.png
>
>
> Service Center version: 1.0.0-m1
> Test case:
> https://github.com/apache/incubator-servicecomb-java-chassis/tree/master/samples/bmi
> !bmi_test_schema.png!
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)