Files
async-programming-promises/node_modules/json-server/lib/front/index.js
2019-10-23 07:41:03 -05:00

77 lines
1.4 KiB
JavaScript

"use strict";
require("promise-polyfill/src/polyfill");
require("whatwg-fetch");
require("./style.css");
function ResourceItem({
name,
length
}) {
return `
<li>
<a href="${name}">/${name}</a>
<sup>${length ? `${length}x` : 'object'}</sup>
</li>
`;
}
function ResourceList({
db
}) {
return `
<ul>
${Object.keys(db).map(name => ResourceItem({
name,
length: Array.isArray(db[name]) && db[name].length
})).join('')}
</ul>
`;
}
function NoResources() {
return `<p>No resources found</p>`;
}
function ResourcesBlock({
db
}) {
return `
<div>
<h1>Resources</h1>
${Object.keys(db).length ? ResourceList({
db
}) : NoResources()}
</div>
`;
}
window.fetch('db').then(response => response.json()).then(db => document.getElementById('resources').innerHTML = ResourcesBlock({
db
}));
function CustomRoutesBlock({
customRoutes
}) {
const rules = Object.keys(customRoutes);
if (rules.length) {
return `
<div>
<h1>Custom Routes</h1>
<table>
${rules.map(rule => `<tr>
<td>${rule}</td>
<td><code>⇢</code> ${customRoutes[rule]}</td>
</tr>`).join('')}
</table>
</div>
`;
}
}
window.fetch('__rules').then(response => response.json()).then(customRoutes => document.getElementById('custom-routes').innerHTML = CustomRoutesBlock({
customRoutes
}));