From 948174f04d9dea93271bec62283b1c09e687e157 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sun, 16 Dec 2018 17:47:21 +0100 Subject: map and citations workin --- client/index.js | 72 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 59 insertions(+), 13 deletions(-) (limited to 'client/index.js') diff --git a/client/index.js b/client/index.js index 27110a18..109d2c27 100644 --- a/client/index.js +++ b/client/index.js @@ -7,6 +7,7 @@ import { toArray } from './util' import Applet from './applet' import { store } from './store' import appendTable from './tables' +import appendMap from './map' function appendReactApplet(el, payload) { ReactDOM.render( @@ -18,20 +19,24 @@ function appendReactApplet(el, payload) { ) } -function appendApplets() { - toArray(document.querySelectorAll('.applet')).forEach(el => { - console.log(el.dataset.payload) - let payload; - try { - payload = JSON.parse(el.dataset.payload) - } catch (e) { - return - } - console.log(payload) - switch (payload.command) { - case 'load file': + +function fetchDataset(payload) { + const url = "https://megapixels.nyc3.digitaloceanspaces.com/v1/citations/" + payload.dataset + ".json" + return fetch(url, { mode: 'cors' }).then(r => r.json()) +} + +function appendApplets(applets) { + applets.forEach(([el, payload]) => { + switch (payload.cmd) { + case 'citations': + case 'load_file': appendTable(el, payload) break + case 'map': + el.parentNode.classList.add('wide') + el.classList.add(payload.cmd) + appendMap(el, payload) + break default: appendReactApplet(el, payload) break @@ -39,6 +44,47 @@ function appendApplets() { }) } +function runApplets() { + const applets = toArray(document.querySelectorAll('.applet')).map(el => { + console.log(el.dataset.payload) + let payload + try { + payload = JSON.parse(el.dataset.payload) + } catch (e) { + return null + } + console.log(payload) + let cmdPartz = payload.command.split(" ") + let cmd = cmdPartz.shift() + let dataset = null + payload.cmd = cmd + payload.parts = cmdPartz + if (payload.parts.length) { + dataset = payload.parts[0].trim() + } + if (!dataset) { + const path = window.location.pathname.split('/').filter(s => !!s) + if (path.length) { + dataset = path[path.length - 1] + } else { + console.log('couldnt determine citations dataset') + return null + } + } + payload.dataset = dataset + return [el, payload] + }).filter(a => !!a) + const withDataset = applets.map(a => a[1].dataset ? a[1] : null).filter(a => !!a) + if (withDataset.length) { + fetchDataset(withDataset[0]).then(data => { + withDataset.forEach(dataset => dataset.data = data) + appendApplets(applets) + }) + } else { + appendApplets(applets) + } +} + function main() { const paras = document.querySelectorAll('section p') if (paras.length) { @@ -49,7 +95,7 @@ function main() { tag.classList.add('active') } }) - appendApplets() + runApplets() } main() -- cgit v1.2.3-70-g09d2