diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-12-16 17:47:21 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-12-16 17:47:21 +0100 |
| commit | 948174f04d9dea93271bec62283b1c09e687e157 (patch) | |
| tree | e755bb15d77ef21e43744fc07397b4b2b5cb20ca /client/index.js | |
| parent | 00eb85af05208e2129e7eba46da795e4528d2735 (diff) | |
map and citations workin
Diffstat (limited to 'client/index.js')
| -rw-r--r-- | client/index.js | 72 |
1 files changed, 59 insertions, 13 deletions
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() |
