summaryrefslogtreecommitdiff
path: root/client/index.js
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-12-16 17:47:21 +0100
committerJules Laplace <julescarbon@gmail.com>2018-12-16 17:47:21 +0100
commit948174f04d9dea93271bec62283b1c09e687e157 (patch)
treee755bb15d77ef21e43744fc07397b4b2b5cb20ca /client/index.js
parent00eb85af05208e2129e7eba46da795e4528d2735 (diff)
map and citations workin
Diffstat (limited to 'client/index.js')
-rw-r--r--client/index.js72
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()