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.
63 lines
2.7 KiB
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 )
|
|
|