api-console-assets
Version:
This repo only exists to publish api console components to npm
272 lines (247 loc) • 10.2 kB
HTML
<!--
@license
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
<title>response-status-view demo</title>
<script src="../../webcomponentsjs/webcomponents-lite.js"></script>
<link rel="import" href="../../iron-demo-helpers/demo-pages-shared-styles.html">
<link rel="import" href="../../iron-demo-helpers/demo-snippet.html">
<link rel="import" href="../../paper-input/paper-input.html">
<link rel="import" href="../../paper-input/paper-textarea.html">
<link rel="import" href="../../paper-tabs/paper-tabs.html">
<link rel="import" href="../../paper-tabs/paper-tab.html">
<link rel="import" href="../../iron-pages/iron-pages.html">
<link rel="import" href="../../paper-button/paper-button.html">
<link rel="import" href="../../paper-checkbox/paper-checkbox.html">
<link rel="import" href="../../arc-definitions/arc-definitions.html">
<link rel="import" href="../response-status-view.html">
<style is="custom-style" include="demo-pages-shared-styles">
:root {
--main-section-block: {
background-color: #fff;
padding: 40px;
margin-bottom: 40px;
@apply(--shadow-elevation-4dp);
}
--arc-font-code: {
font-family: monospace;
}
}
body {
background-color: #EEEEEE;
}
.vertical-section-container {
max-width: 900px;
}
.row {
@apply(--layout-horizontal);
width: 100%;
}
paper-textarea {
width: 100%;
}
.status-code-input {
margin-right: 8px;
min-width: 120px;
}
.info {
color: rgba(0, 0, 0, 0.54);
}
iron-pages {
margin-bottom: 40px;
}
.redirect-timings-form {
margin-bottom: 24px;
border: 1px #e5e5e5 solid;
padding: 16px;
}
.response-data-form {
@apply(--main-section-block);
}
.response-status-section {
background-color: #ffffff;
padding: 40px;
@apply(--main-section-block);
}
.basic-options {
margin: 12px 0;
}
.basic-options paper-checkbox {
margin-right: 12px;
}
</style>
</head>
<body unresolved>
<template is="dom-bind" id="app">
<div class="vertical-section-container centered">
<h3>Display data form</h3>
<section class="response-data-form">
<p class="info">Set up the request / response data.</p>
<div class="basic-options">
<paper-checkbox checked="{{isXhr}}">XHR type of request</paper-checkbox>
<paper-checkbox checked="{{isError}}">Error in the response</paper-checkbox>
</div>
<div class="basic-options">
<p class="info">Request info</p>
<paper-input type="text" value="{{requestMethod}}" label="HTTP method" required auto-validate></paper-input>
<paper-input type="text" value="{{requestUrl}}" label="Request URL" required auto-validate></paper-input>
</div>
<paper-tabs selected="{{selectedTab}}">
<paper-tab>Basic settings</paper-tab>
<paper-tab hidden$="[[isXhr]]">Response timings</paper-tab>
<paper-tab hidden$="[[isXhr]]">Redirect headers</paper-tab>
<paper-tab hidden$="[[isXhr]]">Redirect timings</paper-tab>
</paper-tabs>
<iron-pages selected="[[selectedTab]]">
<section>
<div class="row">
<paper-input class="status-code-input" type="number" value="{{statusCode}}" step="1" min="100" max="599" label="Status code" required auto-validate></paper-input>
<paper-input type="text" value="{{statusMessage}}" label="Status message"></paper-input>
</div>
<div class="row">
<paper-textarea label="Request headers" value="{{requestHeaders}}"></paper-textarea>
</div>
<div class="row">
<paper-textarea label="Response headers" value="{{responseHeaders}}"></paper-textarea>
</div>
<div class="row">
<paper-input type="number" value="{{loadingTime}}" step="0.001" min="1" label="Total loading time"></paper-input>
</div>
</section>
<section hidden$="[[isXhr]]">
<div class="redirect-timings-form">
<div class="row">
<paper-input type="number" value="{{timings.connect}}" step="0.0001" label="Connect"></paper-input>
<paper-input type="number" value="{{timings.send}}" step="0.0001" label="Send"></paper-input>
<paper-input type="number" value="{{timings.wait}}" step="0.0001" label="Wait time"></paper-input>
<paper-input type="number" value="{{timings.receive}}" step="0.0001" label="Receive time"></paper-input>
</div>
<div class="row">
<paper-input type="number" value="{{timings.blocked}}" step="0.0001" label="Blocked"></paper-input>
<paper-input type="number" value="{{timings.dns}}" step="0.0001" label="DNS"></paper-input>
<paper-input type="number" value="{{timings.ssl}}" step="0.0001" label="SSL"></paper-input>
</div>
</div>
</section>
<section hidden$="[[isXhr]]">
<template is="dom-repeat" items="{{redirects}}">
<div class="row">
<paper-input class="status-code-input" type="number" value="{{item.status}}" step="1" min="100" max="599" label="Status code" required auto-validate></paper-input>
<paper-input type="text" value="{{item.statusText}}" label="Status message"></paper-input>
</div>
<paper-textarea label="Redirect headers #[[index]]" value="{{item.headers}}"></paper-textarea>
</template>
<paper-button on-tap="addRedirectHeader">Add redirect headers</paper-button>
</section>
<section hidden$="[[isXhr]]">
<template is="dom-repeat" items="{{redirectTimings}}">
<div class="redirect-timings-form">
<div class="row">
<paper-input type="number" value="{{item.connect}}" step="0.0001" label="Connect"></paper-input>
<paper-input type="number" value="{{item.send}}" step="0.0001" label="Send"></paper-input>
<paper-input type="number" value="{{item.wait}}" step="0.0001" label="Wait time"></paper-input>
<paper-input type="number" value="{{item.receive}}" step="0.0001" label="Receive time"></paper-input>
</div>
<div class="row">
<paper-input type="number" value="{{item.blocked}}" step="0.0001" label="Blocked"></paper-input>
<paper-input type="number" value="{{item.dns}}" step="0.0001" label="DNS"></paper-input>
<paper-input type="number" value="{{item.ssl}}" step="0.0001" label="SSL"></paper-input>
</div>
</div>
</template>
<paper-button on-tap="addRedirectTimings">Add redirect timings</paper-button>
</section>
</iron-pages>
</section>
<h3>The `response-status-view`</h3>
<section class="response-status-section">
<response-status-view
opened
status-code="[[statusCode]]"
status-message="[[statusMessage]]"
request-headers="[[requestHeaders]]"
response-headers="[[responseHeaders]]"
loading-time="[[loadingTime]]"
http-message="[[_computeHttpMessage(requestHeaders)]]"
redirects="[[redirects]]"
redirect-timings="[[redirectTimings]]"
timings="[[timings]]"
is-xhr="[[isXhr]]"
response-error="[[responseError]]"
request-method="[[requestMethod]]"
request-url="[[requestUrl]]"></response-status-view>
</section>
</div>
<arc-definitions></arc-definitions>
</template>
<script>
(function(app) {
var initHeaders = 'content-type: application/json\ncontent-length: 128\n';
initHeaders += 'content-encoding: gzip';
app.selectedTab = 0;
app.statusCode = 200;
app.loadingTime = 124.12;
app.statusMessage = 'OK';
app.requestHeaders = 'accept: application/json';
app.responseHeaders = initHeaders;
app.redirects = [];
app.redirectTimings = [];
app.requestUrl = 'https://anypoint.mulesoft.com/';
app.requestMethod = 'GET';
app.timings = {
connect: 12.1345,
send: 2.12,
wait: 135.15,
receive: 112.412
};
app.isXhr = false;
app.isError = false;
app.responseError = undefined;
app.observers = [
'_isErrorChanged(isError)'
];
app._isErrorChanged = function(isError) {
if (isError) {
app.responseError = new Error('Error in the response.');
} else {
app.responseError = undefined;
}
};
app._computeHttpMessage = function(headers) {
if (!headers) {
return undefined;
}
var msg = 'GET /get HTTP/1.1\n';
msg += headers;
return msg;
};
app.addRedirectHeader = function() {
app.push('redirects', {
headers: 'Location: https://domain.com\n',
status: 301,
statusText: 'Moved'
});
};
app.addRedirectTimings = function() {
app.push('redirectTimings', {
connect: 12.1345,
send: 2.12,
wait: 135.15,
receive: 112.412
});
};
})(document.querySelector('#app'));
</script>
</body>
</html>