|
| 1 | +<!doctype html> |
| 2 | +<html lang=en> |
| 3 | +<head> |
| 4 | + |
| 5 | +<meta charset=utf-8> |
| 6 | +<title>mix-n-mock!</title> |
| 7 | +<style type="text/css"> |
| 8 | + html { |
| 9 | + background: white; |
| 10 | + } |
| 11 | + body { |
| 12 | + font: 16px / 1.2 Arial, sans-serif; |
| 13 | + } |
| 14 | + body:before { |
| 15 | + display: block; |
| 16 | + width: 200px; |
| 17 | + height: 100px; |
| 18 | + content: ''; |
| 19 | + float: right; |
| 20 | + background: transparent top center no-repeat url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="-11.6 -12.4 70 24.8"><g stroke-width="6" fill="none" stroke-linejoin="round" stroke-linecap="round" fill-opacity=".05"><circle r="8.2" stroke="%230d47a1" fill="%230d47a1"/><path d="M 17.2,9 l 1.5,-18 m 10,0 l -1.5,18" stroke="%23263238"/><path d="M 39,8 v -16 h 16 v 16 z" stroke="%23f57f17" fill="%23f57f17"/></g></svg>'); |
| 21 | + background-size: contain; |
| 22 | + } |
| 23 | + |
| 24 | + ul, li { |
| 25 | + list-style: none; |
| 26 | + padding: 0; |
| 27 | + display: block; |
| 28 | + margin: 0 0 1em; |
| 29 | + } |
| 30 | + ul { |
| 31 | + padding-bottom: 20px; |
| 32 | + clear: both; |
| 33 | + } |
| 34 | + |
| 35 | + body[data-loading] ul { |
| 36 | + background: transparent left bottom no-repeat url("data:image/gif;base64,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EAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOwAAAAAAAAAAADxiciAvPgo8Yj5XYXJuaW5nPC9iPjogIG15c3FsX3F1ZXJ5KCkgWzxhIGhyZWY9J2Z1bmN0aW9uLm15c3FsLXF1ZXJ5Jz5mdW5jdGlvbi5teXNxbC1xdWVyeTwvYT5dOiBDYW4ndCBjb25uZWN0IHRvIGxvY2FsIE15U1FMIHNlcnZlciB0aHJvdWdoIHNvY2tldCAnL3Zhci9ydW4vbXlzcWxkL215c3FsZC5zb2NrJyAoMikgaW4gPGI+L2hvbWUvYWpheGxvYWQvd3d3L2xpYnJhaXJpZXMvY2xhc3MubXlzcWwucGhwPC9iPiBvbiBsaW5lIDxiPjY4PC9iPjxiciAvPgo8YnIgLz4KPGI+V2FybmluZzwvYj46ICBteXNxbF9xdWVyeSgpIFs8YSBocmVmPSdmdW5jdGlvbi5teXNxbC1xdWVyeSc+ZnVuY3Rpb24ubXlzcWwtcXVlcnk8L2E+XTogQSBsaW5rIHRvIHRoZSBzZXJ2ZXIgY291bGQgbm90IGJlIGVzdGFibGlzaGVkIGluIDxiPi9ob21lL2FqYXhsb2FkL3d3dy9saWJyYWlyaWVzL2NsYXNzLm15c3FsLnBocDwvYj4gb24gbGluZSA8Yj42ODwvYj48YnIgLz4KPGJyIC8+CjxiPldhcm5pbmc8L2I+OiAgbXlzcWxfcXVlcnkoKSBbPGEgaHJlZj0nZnVuY3Rpb24ubXlzcWwtcXVlcnknPmZ1bmN0aW9uLm15c3FsLXF1ZXJ5PC9hPl06IENhbid0IGNvbm5lY3QgdG8gbG9jYWwgTXlTUUwgc2VydmVyIHRocm91Z2ggc29ja2V0ICcvdmFyL3J1bi9teXNxbGQvbXlzcWxkLnNvY2snICgyKSBpbiA8Yj4vaG9tZS9hamF4bG9hZC93d3cvbGlicmFpcmllcy9jbGFzcy5teXNxbC5waHA8L2I+IG9uIGxpbmUgPGI+Njg8L2I+PGJyIC8+CjxiciAvPgo8Yj5XYXJuaW5nPC9iPjogIG15c3FsX3F1ZXJ5KCkgWzxhIGhyZWY9J2Z1bmN0aW9uLm15c3FsLXF1ZXJ5Jz5mdW5jdGlvbi5teXNxbC1xdWVyeTwvYT5dOiBBIGxpbmsgdG8gdGhlIHNlcnZlciBjb3VsZCBub3QgYmUgZXN0YWJsaXNoZWQgaW4gPGI+L2hvbWUvYWpheGxvYWQvd3d3L2xpYnJhaXJpZXMvY2xhc3MubXlzcWwucGhwPC9iPiBvbiBsaW5lIDxiPjY4PC9iPjxiciAvPgo8YnIgLz4KPGI+V2FybmluZzwvYj46ICBteXNxbF9xdWVyeSgpIFs8YSBocmVmPSdmdW5jdGlvbi5teXNxbC1xdWVyeSc+ZnVuY3Rpb24ubXlzcWwtcXVlcnk8L2E+XTogQ2FuJ3QgY29ubmVjdCB0byBsb2NhbCBNeVNRTCBzZXJ2ZXIgdGhyb3VnaCBzb2NrZXQgJy92YXIvcnVuL215c3FsZC9teXNxbGQuc29jaycgKDIpIGluIDxiPi9ob21lL2FqYXhsb2FkL3d3dy9saWJyYWlyaWVzL2NsYXNzLm15c3FsLnBocDwvYj4gb24gbGluZSA8Yj42ODwvYj48YnIgLz4KPGJyIC8+CjxiPldhcm5pbmc8L2I+OiAgbXlzcWxfcXVlcnkoKSBbPGEgaHJlZj0nZnVuY3Rpb24ubXlzcWwtcXVlcnknPmZ1bmN0aW9uLm15c3FsLXF1ZXJ5PC9hPl06IEEgbGluayB0byB0aGUgc2VydmVyIGNvdWxkIG5vdCBiZSBlc3RhYmxpc2hlZCBpbiA8Yj4vaG9tZS9hamF4bG9hZC93d3cvbGlicmFpcmllcy9jbGFzcy5teXNxbC5waHA8L2I+IG9uIGxpbmUgPGI+Njg8L2I+PGJyIC8+Cg=="); |
| 37 | + } |
| 38 | + |
| 39 | + button { |
| 40 | + width: 15em; |
| 41 | + height: 2em; |
| 42 | + text-align: center; |
| 43 | + } |
| 44 | + |
| 45 | + a { |
| 46 | + margin-top: 1em; |
| 47 | + margin-bottom: 1em; |
| 48 | + display: inline-block; |
| 49 | + transition: opacity .3s ease-out; |
| 50 | + } |
| 51 | + |
| 52 | + div.config, |
| 53 | + div.result { |
| 54 | + font-family: monospace; |
| 55 | + white-space: pre; |
| 56 | + outline: 1px solid gray; |
| 57 | + padding: .5em; |
| 58 | + clear: left; |
| 59 | + } |
| 60 | + .hidden { |
| 61 | + display: none; |
| 62 | + } |
| 63 | +</style> |
| 64 | + |
| 65 | +</head> |
| 66 | +<body> |
| 67 | + |
| 68 | +<h1>Welcome to mix-n-mock</h1> |
| 69 | +<h2>Advanced example</h2> |
| 70 | +<a href="img/example.by.Marcelo.Quinan.from.unsplash.com-CC-zero.jpg" target="_blank">static file</a> |
| 71 | +<ul> |
| 72 | + <li> |
| 73 | + <button type="submit" data-method="GET" data-action="rest/exampleEndpoint"> |
| 74 | + Submit GET-Request |
| 75 | + </button> |
| 76 | + <span>(no delay)</span> |
| 77 | + </li> |
| 78 | + <li> |
| 79 | + <button type="submit" data-method="POST" data-action="rest/exampleEndpoint"> |
| 80 | + Submit POST-Request |
| 81 | + </button> |
| 82 | + <span>(100ms delay)</span> |
| 83 | + </li> |
| 84 | + <li> |
| 85 | + <button type="submit" data-method="PUT" data-action="rest/exampleEndpoint"> |
| 86 | + Submit PUT-Request |
| 87 | + </button> |
| 88 | + <span>(1s delay)</span> |
| 89 | + </li> |
| 90 | + <li> |
| 91 | + <button type="submit" data-method="DELETE" data-action="rest/exampleEndpoint"> |
| 92 | + Submit DELETE-Request |
| 93 | + </button> |
| 94 | + <span>(5s delay)</span> |
| 95 | + </li> |
| 96 | +</ul> |
| 97 | +<div class="hidden"> |
| 98 | + <div class="result"></div> |
| 99 | + <a class="show-config" href="#">Show method config</a> |
| 100 | + <div class="config hidden"></div> |
| 101 | +</div> |
| 102 | +<script type="text/javascript"> |
| 103 | + var configs = {}; |
| 104 | + ['POST', 'GET', 'PUT', 'DELETE'].forEach(function (method) { |
| 105 | + var fileName = '/src/example2/config/services/' + method + '.mock.development.json'; |
| 106 | + var xhr = new XMLHttpRequest(); |
| 107 | + xhr.open('get', fileName, false); |
| 108 | + xhr.send(null); |
| 109 | + configs[method] = xhr.responseText + '\n\n' + fileName; |
| 110 | + }); |
| 111 | + document.querySelector('.show-config').addEventListener('click', function (e) { |
| 112 | + e.preventDefault(); |
| 113 | + var method = document.querySelector('.result').dataset.method; |
| 114 | + var div = document.querySelector('.config'); |
| 115 | + div.style.display = 'block'; |
| 116 | + div.textContent = configs[method]; |
| 117 | + document.querySelector('.show-config').style.opacity = 0; |
| 118 | + document.querySelector('.show-config').style.pointerEvents = 'none'; |
| 119 | + }, false); |
| 120 | +</script> |
| 121 | +<script type="text/javascript"> |
| 122 | + var loading = 0; |
| 123 | + var div = document.querySelector('div.result'); |
| 124 | + Array.from(document.querySelectorAll('button')).forEach(function (button) { |
| 125 | + button.addEventListener('click', function (e) { |
| 126 | + e.preventDefault(); |
| 127 | + loading++; |
| 128 | + document.body.dataset.loading = 1; |
| 129 | + var url = button.dataset.action; |
| 130 | + var xhr = new XMLHttpRequest(); |
| 131 | + var method = button.dataset.method; |
| 132 | + xhr.open(method, url, true); |
| 133 | + xhr.onreadystatechange = function () { |
| 134 | + var innerHTML = 'Result of ' + method + ' to ' + button.dataset.action + ':\n\n'; |
| 135 | + if (xhr.readyState == 4) { |
| 136 | + if (xhr.status == 200) { |
| 137 | + innerHTML += xhr.responseText; |
| 138 | + } else { |
| 139 | + innerHTML += 'ERROR ' + xhr.status; |
| 140 | + } |
| 141 | + div.innerHTML = innerHTML; |
| 142 | + div.parentNode.style.display = 'block'; |
| 143 | + div.dataset.method = method; |
| 144 | + document.querySelector('.config').style.display = 'none'; |
| 145 | + document.querySelector('.show-config').style.opacity = 1; |
| 146 | + document.querySelector('.show-config').style.pointerEvents = ''; |
| 147 | + loading--; |
| 148 | + if (!loading) { |
| 149 | + delete document.body.dataset.loading; |
| 150 | + } |
| 151 | + } |
| 152 | + }; |
| 153 | + xhr.send('examplePayload: 42'); |
| 154 | + }); |
| 155 | + }); |
| 156 | +</script> |
| 157 | + |
| 158 | +</body> |
| 159 | +</html> |
0 commit comments