You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
spasca-fot-sloan-q2/data/filters/mapvisualmeta.json.js

63 lines
2.7 KiB

function filterMapVisualMetaJSON( contentFilename ){
let file = filesWithMetadata[contentFilename]
if (!file) return
let contentType = file.contentType
let sidecarFile = contentFilename.replace("dynamicview", "glossary")
const scale = 1/1000
const xOffset = 1
const yOffset = 1
const idprefix = 'visualmetaexport_'
if ( contentType.includes("json") && contentFilename.endsWith("_dynamicviewvisualmetaexport.json")) {
console.log('it is a map visualmeta export file', contentFilename)
fetch( contentFilename ).then( r => r.json() ).then( json => {
fetch( sidecarFile ).then( r => r.json() ).then( sidecarjson => {
let glossary = Object.entries( sidecarjson.entries ).map( i => i[1].phrase )
// console.log( json, sidecarjson )
json.nodes.map( n => {
let x = json.layout.nodePositions[ n.identifier ].x * scale + xOffset
let y = -json.layout.nodePositions[ n.identifier ].y * scale + yOffset
let z = -1/2
let el = addNewNote( n.title, "" + x + " " + y + " " + z )
el.id = "visualmetaexport_"+n.title.toLowerCase().replaceAll(" ","_").replaceAll(".","_").replaceAll("'","_")
el.setAttribute("outline-width", 0)
// optional background color "#7c7c7c"
// could use onpicked/onreleased to show links from glossary
// check if any word from title is in glossary
// if so, display line or highlight visually by removing outline
// reset onreleased
})
Object.entries( sidecarjson.entries ).map( i => i[1].phrase ).map( n => {
Object.entries( sidecarjson.entries )
.map( i => { return {phrase:i[1].phrase, entry:i[1].entry} } )
.filter( i => i.entry.toLowerCase().includes(n.toLowerCase()) )
.map( i => {
let el = document.createElement("a-entity")
el.setAttribute('live-selector-line',
'start: #'+(idprefix+n.toLowerCase().replaceAll(" ","_").replaceAll(".","_").replaceAll("'","_"))
+'; end: #'+(idprefix+i.phrase.toLowerCase().replaceAll(" ","_").replaceAll(".","_").replaceAll("'","_"))
+';' )
el.classList.add('visualmeta_export_link')
AFRAME.scenes[0].appendChild(el)
})
})
Array.from( document.querySelectorAll("[line]") ).map( el => el.setAttribute("line", "color", "black"))
// should filter a bit better otherwise take lines from other components and elements e.g. raycaster
AFRAME.scenes[0].emit('mapvisualmetajsonloaded', contentFilename)
// to use the event consider :
//AFRAME.scenes[0].addEventListener("mapvisualmetajsonloaded", e => console.log(e))
})
})
}
applyNextFilter( contentFilename )
}
sequentialFilters.push( filterMapVisualMetaJSON )