WIP explore records

This commit is contained in:
AJ ONeal 2018-01-12 02:46:17 -07:00
parent 72e920c1dd
commit 8d329b93b2
2 changed files with 122 additions and 14 deletions

View File

@ -21,8 +21,17 @@
<input class="js-name" <input class="js-name"
type="text" placeholder="example.com"/></p> type="text" placeholder="example.com"/></p>
<ul class="js-zones"> <h3>Peers:</h3>
<li class="js-zone">blah</li> <ul class="js-peer-tpl">
<li class="js-peer-name">peer-name</li>
</ul>
<ul class="js-zone-tpl">
<li><button type="button" class="js-zone-name">zone-name</button></li>
</ul>
<ul class="js-record-tpl">
<li><span class="js-record-type">record-type</span> <span class="js-record-name">record-name</span></li>
</ul> </ul>
<script src="/js/app.js"></script> <script src="/js/app.js"></script>

View File

@ -4,8 +4,8 @@
if (!Element.prototype.matches) { if (!Element.prototype.matches) {
Element.prototype.matches = Element.prototype.msMatchesSelector; Element.prototype.matches = Element.prototype.msMatchesSelector;
} }
function $qs(qs) { function $qs(qs, el) {
return document.querySelector(qs); return (el||document).querySelector(qs);
} }
function $on(selector, eventname, cb) { function $on(selector, eventname, cb) {
if (!$on._events[eventname]) { if (!$on._events[eventname]) {
@ -35,21 +35,13 @@
return true; return true;
} }
}); });
if (!matches) { if (matches) {
console.warn("no handlers for selector"); console.warn("no handlers for selector");
} }
}; };
}; };
$on('body', 'click', function () {
console.log('woo-hoo, that tickles my body!');
});
var auth = localStorage.getItem('auth'); function verifyAuth(/*ev*/) {
$qs('input.js-jwt').value = auth || '';
$on('button.js-jwt', 'click', function (/*ev*/) {
auth = $qs('input.js-jwt').value; auth = $qs('input.js-jwt').value;
return window.fetch( return window.fetch(
'/api/verify-auth' '/api/verify-auth'
@ -59,18 +51,119 @@
).then(function (resp) { ).then(function (resp) {
return resp.json().then(function (data) { return resp.json().then(function (data) {
if (data.error) { if (data.error) {
localStorage.removeItem('auth');
console.error(data.error); console.error(data.error);
window.alert('Bad HTTP Response: ' + data.error.message); window.alert('Bad HTTP Response: ' + data.error.message);
throw new Error('Bad HTTP Response: ' + data.error.message); throw new Error('Bad HTTP Response: ' + data.error.message);
} }
console.log('verify-auth:');
console.log(data); console.log(data);
localStorage.setItem('auth', auth); localStorage.setItem('auth', auth);
return fetchPeers(auth).then(function () {
return fetchZones(auth);
});
}); });
}); });
}
function fetchPeers(auth) {
return window.fetch('/api/peers', {
method: 'GET'
, headers: new window.Headers({ 'Authorization': 'Bearer ' + auth })
}).then(function (resp) {
return resp.json().then(function (data) {
var tpl = '';
var el;
if (!tpls.peer) {
tpls.peer = $qs('.js-peer-tpl').innerHTML;
}
data.peers.forEach(function (peer) {
el = document.createElement('div');
el.innerHTML = tpls.peer;
console.log(el);
console.log($qs('.js-peer-name', el));
$qs('.js-peer-name', el).innerText = peer.name;
$qs('.js-peer-name', el).dataset.id = peer.name;
console.log(el.innerHTML);
tpl += el.innerHTML;
console.log(tpl);
});
$qs('.js-peer-tpl').innerHTML = tpl;
console.log($qs('.js-peer-tpl').innerHTML);
});
});
}
function fetchZones(auth) {
return window.fetch('/api/zones', {
method: 'GET'
, headers: new window.Headers({ 'Authorization': 'Bearer ' + auth })
}).then(function (resp) {
return resp.json().then(function (data) {
var tpl = '';
var el;
if (!tpls.zone) {
tpls.zone = $qs('.js-zone-tpl').innerHTML;
}
data.zones.forEach(function (zone) {
el = document.createElement('div');
el.innerHTML = tpls.zone;
console.log(el);
console.log($qs('.js-zone-name', el));
$qs('.js-zone-name', el).innerText = zone.id;
$qs('.js-zone-name', el).dataset.id = zone.id;
console.log(el.innerHTML);
tpl += el.innerHTML;
console.log(tpl);
});
$qs('.js-zone-tpl').innerHTML = tpl;
console.log($qs('.js-zone-tpl').innerHTML);
});
});
}
function fetchRecords(zone) {
return window.fetch('/api/zones/' + zone + '/records', {
method: 'GET'
, headers: new window.Headers({ 'Authorization': 'Bearer ' + auth })
}).then(function (resp) {
return resp.json().then(function (data) {
var tpl = '';
var el;
if (!tpls.record) {
tpls.record = $qs('.js-record-tpl').innerHTML;
}
data.records.forEach(function (record) {
el = document.createElement('div');
el.innerHTML = tpls.record;
console.log(el);
console.log($qs('.js-record-name', el));
$qs('.js-record-type', el).innerText = record.type;
$qs('.js-record-name', el).innerText = record.name;
console.log(el.innerHTML);
tpl += el.innerHTML;
console.log(tpl);
});
$qs('.js-record-tpl').innerHTML = tpl;
console.log($qs('.js-record-tpl').innerHTML);
});
});
}
// BEGIN
var tpls = {};
var auth = localStorage.getItem('auth');
if (auth) {
$qs('input.js-jwt').value = auth;
verifyAuth();
}
$on('body', 'click', function () {
console.log('woo-hoo, that tickles my body!');
}); });
$on('button.js-jwt', 'click', verifyAuth);
$on('input.js-zone', 'keyup', function (ev) { $on('input.js-zone', 'keyup', function (ev) {
$qs('code.js-zone').innerHTML = ev.target.value || ':zone'; $qs('code.js-zone').innerHTML = ev.target.value || ':zone';
// $qs('a.js-zone').setAttribute('data-href', ...) // $qs('a.js-zone').setAttribute('data-href', ...)
@ -84,4 +177,10 @@
$qs('a.js-name').dataset.href.replace(/:name/, ev.target.value || ':name'); $qs('a.js-name').dataset.href.replace(/:name/, ev.target.value || ':name');
}); });
$on('button.js-zone-name', 'click', function (ev) {
var zone = ev.target.dataset.id;
return fetchRecords(zone);/*.then(function () {
});*/
});
}()); }());