From 258a64daf8d4e4d2ee21c6a289c7b2e501e3a69d Mon Sep 17 00:00:00 2001 From: Roman Gotsiy Date: Thu, 22 Oct 2015 20:53:07 +0300 Subject: [PATCH] Added responses samples component --- .../ResponsesSamples/responses-samples.css | 11 +++++ .../ResponsesSamples/responses-samples.html | 6 +++ .../ResponsesSamples/responses-samples.js | 44 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 lib/components/ResponsesSamples/responses-samples.css create mode 100644 lib/components/ResponsesSamples/responses-samples.html create mode 100644 lib/components/ResponsesSamples/responses-samples.js diff --git a/lib/components/ResponsesSamples/responses-samples.css b/lib/components/ResponsesSamples/responses-samples.css new file mode 100644 index 00000000..ad8a31a2 --- /dev/null +++ b/lib/components/ResponsesSamples/responses-samples.css @@ -0,0 +1,11 @@ +header { + font-size: 20px; +} + +tab, tabs { + display: block; +} + +schema-sample { + display: block; +} diff --git a/lib/components/ResponsesSamples/responses-samples.html b/lib/components/ResponsesSamples/responses-samples.html new file mode 100644 index 00000000..4c540c7b --- /dev/null +++ b/lib/components/ResponsesSamples/responses-samples.html @@ -0,0 +1,6 @@ +
Responses samples
+ + + + + diff --git a/lib/components/ResponsesSamples/responses-samples.js b/lib/components/ResponsesSamples/responses-samples.js new file mode 100644 index 00000000..dec82e39 --- /dev/null +++ b/lib/components/ResponsesSamples/responses-samples.js @@ -0,0 +1,44 @@ +'use strict'; + +import {RedocComponent, BaseComponent} from '../base'; +import {JsonPointer} from '../../utils/JsonPointer'; +import {Tabs, Tab} from '../../common-components/Tabs/tabs'; +import {SchemaSample} from '../SchemaSample/schema-sample'; + + +function isNumeric(n) { + return (!isNaN(parseFloat(n)) && isFinite(n)); +} + +@RedocComponent({ + selector: 'responses-samples', + templateUrl: './lib/components/ResponsesSamples/responses-samples.html', + styleUrls: ['./lib/components/ResponsesSamples/responses-samples.css'], + directives: [SchemaSample, Tabs, Tab] +}) +export class ResponsesSamples extends BaseComponent { + constructor(schemaMgr) { + super(schemaMgr); + } + + prepareModel() { + this.data = {}; + let responses = this.componentSchema; + responses = Object.keys(responses).filter(respCode => { + // only response-codes and "default" + return ( isNumeric(respCode) || (respCode === 'default')); + }).map(respCode => { + let resp = responses[respCode]; + resp.pointer = JsonPointer.join(this.pointer, respCode); + if (resp.$ref) { + let ref = resp.$ref; + resp = this.schemaMgr.byPointer(resp.$ref); + resp.pointer = ref; + } + + resp.code = respCode; + return resp; + }); + this.data.responses = responses; + } +}