Skip to content

Commit c85d9d1

Browse files
committed
Show type documentation of non native types in request/response bodies too
1 parent c0e916a commit c85d9d1

File tree

4 files changed

+126
-2
lines changed

4 files changed

+126
-2
lines changed

dist/scripts/api-console.js

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2594,6 +2594,11 @@
25942594

25952595
$scope.cleanupTypeName = RAML.Inspector.Types.cleanupTypeName;
25962596

2597+
$scope.typeDocumentation = function(type) {
2598+
type = RAML.Inspector.Types.findType(type.type[0], $rootScope.types);
2599+
return RAML.Inspector.Types.typeDocumentation(type);
2600+
};
2601+
25972602
$scope.getSupertTypes = function (type) {
25982603
return RAML.Inspector.Types.findType(type.type[0], $rootScope.types).type.map(function (aTypeName) {
25992604
return aTypeName;
@@ -4368,6 +4373,61 @@ RAML.Inspector = (function() {
43684373
return Array.isArray(type) ? type : [type];
43694374
}
43704375

4376+
function typeDocumentation(type) {
4377+
var result = [];
4378+
4379+
if (type.minItems) {
4380+
result.push('minItems: ' + type.minItems);
4381+
}
4382+
4383+
if (type.maxItems) {
4384+
result.push('maxItems: ' + type.maxItems);
4385+
}
4386+
4387+
if (type['enum']) {
4388+
var enumValues = type['enum'];
4389+
var enumDescription = '';
4390+
4391+
if (enumValues.length > 1) {
4392+
enumDescription += 'one of ';
4393+
}
4394+
4395+
enumDescription += '(' + enumValues.filter(function (value) { return value !== ''; }).join(', ') + ')';
4396+
4397+
result.push(enumDescription);
4398+
}
4399+
4400+
if (type.pattern) {
4401+
result.push('pattern: ' + type.pattern);
4402+
}
4403+
4404+
if (type.minLength) {
4405+
result.push('minLength: ' + type.minLength);
4406+
}
4407+
4408+
if (type.maxLength) {
4409+
result.push('maxLength: ' + type.maxLength);
4410+
}
4411+
4412+
if (type.minimum) {
4413+
result.push('minimum: ' + type.minimum);
4414+
}
4415+
4416+
if (type.format) {
4417+
result.push('format: ' + type.format);
4418+
}
4419+
4420+
if (type.multipleOf) {
4421+
result.push('multipleOf: ' + type.multipleOf);
4422+
}
4423+
4424+
if (type.fileTypes) {
4425+
result.push('fileTypes: ' + type.fileTypes.join(', '));
4426+
}
4427+
4428+
return result.join(', ');
4429+
}
4430+
43714431
RAML.Inspector.Types = {
43724432
mergeType: mergeType,
43734433
isNativeType: isNativeType,
@@ -4377,7 +4437,8 @@ RAML.Inspector = (function() {
43774437
getTypeInfo: getTypeInfo,
43784438
getTypeFromTypeInfo: getTypeFromTypeInfo,
43794439
ensureArray: ensureArray,
4380-
cleanupTypeName: cleanupTypeName
4440+
cleanupTypeName: cleanupTypeName,
4441+
typeDocumentation: typeDocumentation
43814442
};
43824443
})();
43834444

@@ -7407,6 +7468,7 @@ angular.module('ramlConsoleApp').run(['$templateCache', function($templateCache)
74077468
"<div ng-if=\"selectedType\" class=\"raml-console-type-info-popover\">\n" +
74087469
" <h3>\n" +
74097470
" <span>{{selectedType.displayName}}</span>\n" +
7471+
" <span class=\"raml-console-resource-param-instructional\">{{typeDocumentation(selectedType)}}</span>\n" +
74107472
" <div class=\"raml-console-subtitle\">\n" +
74117473
" <span ng-repeat-start=\"superType in getSupertTypes(selectedType)\">{{superType}}</span>\n" +
74127474
" <span ng-if=\"!$last\" ng-repeat-end>, </span>\n" +

src/app/directives/type.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@
2828

2929
$scope.cleanupTypeName = RAML.Inspector.Types.cleanupTypeName;
3030

31+
$scope.typeDocumentation = function(type) {
32+
type = RAML.Inspector.Types.findType(type.type[0], $rootScope.types);
33+
return RAML.Inspector.Types.typeDocumentation(type);
34+
};
35+
3136
$scope.getSupertTypes = function (type) {
3237
return RAML.Inspector.Types.findType(type.type[0], $rootScope.types).type.map(function (aTypeName) {
3338
return aTypeName;

src/app/directives/type.tpl.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<div ng-if="selectedType" class="raml-console-type-info-popover">
1010
<h3>
1111
<span>{{selectedType.displayName}}</span>
12+
<span class="raml-console-resource-param-instructional">{{typeDocumentation(selectedType)}}</span>
1213
<div class="raml-console-subtitle">
1314
<span ng-repeat-start="superType in getSupertTypes(selectedType)">{{superType}}</span>
1415
<span ng-if="!$last" ng-repeat-end>, </span>

src/common/inspector/types.js

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,61 @@
154154
return Array.isArray(type) ? type : [type];
155155
}
156156

157+
function typeDocumentation(type) {
158+
var result = [];
159+
160+
if (type.minItems) {
161+
result.push('minItems: ' + type.minItems);
162+
}
163+
164+
if (type.maxItems) {
165+
result.push('maxItems: ' + type.maxItems);
166+
}
167+
168+
if (type['enum']) {
169+
var enumValues = type['enum'];
170+
var enumDescription = '';
171+
172+
if (enumValues.length > 1) {
173+
enumDescription += 'one of ';
174+
}
175+
176+
enumDescription += '(' + enumValues.filter(function (value) { return value !== ''; }).join(', ') + ')';
177+
178+
result.push(enumDescription);
179+
}
180+
181+
if (type.pattern) {
182+
result.push('pattern: ' + type.pattern);
183+
}
184+
185+
if (type.minLength) {
186+
result.push('minLength: ' + type.minLength);
187+
}
188+
189+
if (type.maxLength) {
190+
result.push('maxLength: ' + type.maxLength);
191+
}
192+
193+
if (type.minimum) {
194+
result.push('minimum: ' + type.minimum);
195+
}
196+
197+
if (type.format) {
198+
result.push('format: ' + type.format);
199+
}
200+
201+
if (type.multipleOf) {
202+
result.push('multipleOf: ' + type.multipleOf);
203+
}
204+
205+
if (type.fileTypes) {
206+
result.push('fileTypes: ' + type.fileTypes.join(', '));
207+
}
208+
209+
return result.join(', ');
210+
}
211+
157212
RAML.Inspector.Types = {
158213
mergeType: mergeType,
159214
isNativeType: isNativeType,
@@ -163,6 +218,7 @@
163218
getTypeInfo: getTypeInfo,
164219
getTypeFromTypeInfo: getTypeFromTypeInfo,
165220
ensureArray: ensureArray,
166-
cleanupTypeName: cleanupTypeName
221+
cleanupTypeName: cleanupTypeName,
222+
typeDocumentation: typeDocumentation
167223
};
168224
})();

0 commit comments

Comments
 (0)