diff --git a/dist/xrfragment.aframe.js b/dist/xrfragment.aframe.js index d34fb4f..c8ad43a 100644 --- a/dist/xrfragment.aframe.js +++ b/dist/xrfragment.aframe.js @@ -1116,11 +1116,11 @@ xrf.frag.href = function(v, opts){ let click = mesh.userData.XRF.href.exec = (e) => { xrf - .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree + .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree .then( () => { - if( v.string[0] == '#' ){ // apply modifications to scene + if( v.string[0] == '#' && v.string.match(/\|/) ){ // apply modifications to scene xrf.eval( v.string, xrf.model, xrf.XRF.PV_OVERRIDE ) - }else xrf.navigator.to(v.string) // or let's surf to HREF! + }else xrf.navigator.to(v.string) // or let's surf to HREF! }) } @@ -1177,14 +1177,15 @@ xrf.frag.pos = function(v, opts){ const doPredefinedView = (opts) => { let {frag,scene} = opts - const selectionOfInterest = (id,scene,mesh) => { + const selectionOfInterest = (frag,scene,mesh) => { + let id = frag.string // Selection of Interest if predefined_view matches object name if( mesh.selection ){ scene.remove(mesh.selection) delete mesh.selection } if( id == mesh.name || id.substr(1) == mesh.userData.class ){ - xrf.emit('selection',opts) + xrf.emit('selection',{...opts,frag}) .then( () => { const margin = 1.2 mesh.scale.multiplyScalar( margin ) @@ -1204,7 +1205,7 @@ const doPredefinedView = (opts) => { let frag = xrf.URI.parse( mesh.userData[id], xrf.XRF.NAVIGATOR | xrf.XRF.PV_OVERRIDE | xrf.XRF.EMBEDDED ) for ( let k in frag ){ let opts = {frag, model, camera: xrf.camera, scene: xrf.scene, renderer: xrf.renderer, THREE: xrf.THREE } - xrf.emit('predefinedView',opts) + xrf.emit('predefinedView',{...opts,frag}) .then( () => xrf.eval.fragment(k,opts) ) } } @@ -1219,7 +1220,7 @@ const doPredefinedView = (opts) => { setTimeout( () => { if( !scene ) return scene.traverse( (mesh) => { - selectionOfInterest( v.string, scene, mesh ) + selectionOfInterest( v, scene, mesh ) predefinedView( v , scene, mesh ) }) },100) @@ -1236,6 +1237,13 @@ xrf.addEventListener('href', (opts) => { let frag = xrf.URI.parse( opts.xrf.string, xrf.XRF.NAVIGATOR | xrf.XRF.PV_OVERRIDE | xrf.XRF.EMBEDDED ) doPredefinedView({frag,scene:xrf.scene}) }) + +//let updateUrl = (opts) => { +// console.dir(opts) +//} +// +//xrf.addEventListener('predefinedView', updateUrl ) +//xrf.addEventListener('selection', updateUrl ) xrf.frag.q = function(v, opts){ let { frag, mesh, model, camera, scene, renderer, THREE} = opts console.log(" └ running query ") @@ -1273,8 +1281,6 @@ xrf.frag.q = function(v, opts){ const showHide = () => { let q = frag.q.query - console.log(frag.q.string) - console.dir(frag) scene.traverse( (mesh) => { for ( let i in q ) { let isMeshId = q[i].id != undefined diff --git a/dist/xrfragment.three.js b/dist/xrfragment.three.js index 252c859..f42dede 100644 --- a/dist/xrfragment.three.js +++ b/dist/xrfragment.three.js @@ -1116,11 +1116,11 @@ xrf.frag.href = function(v, opts){ let click = mesh.userData.XRF.href.exec = (e) => { xrf - .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree + .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree .then( () => { - if( v.string[0] == '#' ){ // apply modifications to scene + if( v.string[0] == '#' && v.string.match(/\|/) ){ // apply modifications to scene xrf.eval( v.string, xrf.model, xrf.XRF.PV_OVERRIDE ) - }else xrf.navigator.to(v.string) // or let's surf to HREF! + }else xrf.navigator.to(v.string) // or let's surf to HREF! }) } @@ -1177,14 +1177,15 @@ xrf.frag.pos = function(v, opts){ const doPredefinedView = (opts) => { let {frag,scene} = opts - const selectionOfInterest = (id,scene,mesh) => { + const selectionOfInterest = (frag,scene,mesh) => { + let id = frag.string // Selection of Interest if predefined_view matches object name if( mesh.selection ){ scene.remove(mesh.selection) delete mesh.selection } if( id == mesh.name || id.substr(1) == mesh.userData.class ){ - xrf.emit('selection',opts) + xrf.emit('selection',{...opts,frag}) .then( () => { const margin = 1.2 mesh.scale.multiplyScalar( margin ) @@ -1204,7 +1205,7 @@ const doPredefinedView = (opts) => { let frag = xrf.URI.parse( mesh.userData[id], xrf.XRF.NAVIGATOR | xrf.XRF.PV_OVERRIDE | xrf.XRF.EMBEDDED ) for ( let k in frag ){ let opts = {frag, model, camera: xrf.camera, scene: xrf.scene, renderer: xrf.renderer, THREE: xrf.THREE } - xrf.emit('predefinedView',opts) + xrf.emit('predefinedView',{...opts,frag}) .then( () => xrf.eval.fragment(k,opts) ) } } @@ -1219,7 +1220,7 @@ const doPredefinedView = (opts) => { setTimeout( () => { if( !scene ) return scene.traverse( (mesh) => { - selectionOfInterest( v.string, scene, mesh ) + selectionOfInterest( v, scene, mesh ) predefinedView( v , scene, mesh ) }) },100) @@ -1236,6 +1237,13 @@ xrf.addEventListener('href', (opts) => { let frag = xrf.URI.parse( opts.xrf.string, xrf.XRF.NAVIGATOR | xrf.XRF.PV_OVERRIDE | xrf.XRF.EMBEDDED ) doPredefinedView({frag,scene:xrf.scene}) }) + +//let updateUrl = (opts) => { +// console.dir(opts) +//} +// +//xrf.addEventListener('predefinedView', updateUrl ) +//xrf.addEventListener('selection', updateUrl ) xrf.frag.q = function(v, opts){ let { frag, mesh, model, camera, scene, renderer, THREE} = opts console.log(" └ running query ") @@ -1273,8 +1281,6 @@ xrf.frag.q = function(v, opts){ const showHide = () => { let q = frag.q.query - console.log(frag.q.string) - console.dir(frag) scene.traverse( (mesh) => { for ( let i in q ) { let isMeshId = q[i].id != undefined diff --git a/dist/xrfragment.three.module.js b/dist/xrfragment.three.module.js index 606e894..92de644 100644 --- a/dist/xrfragment.three.module.js +++ b/dist/xrfragment.three.module.js @@ -1116,11 +1116,11 @@ xrf.frag.href = function(v, opts){ let click = mesh.userData.XRF.href.exec = (e) => { xrf - .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree + .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree .then( () => { - if( v.string[0] == '#' ){ // apply modifications to scene + if( v.string[0] == '#' && v.string.match(/\|/) ){ // apply modifications to scene xrf.eval( v.string, xrf.model, xrf.XRF.PV_OVERRIDE ) - }else xrf.navigator.to(v.string) // or let's surf to HREF! + }else xrf.navigator.to(v.string) // or let's surf to HREF! }) } @@ -1177,14 +1177,15 @@ xrf.frag.pos = function(v, opts){ const doPredefinedView = (opts) => { let {frag,scene} = opts - const selectionOfInterest = (id,scene,mesh) => { + const selectionOfInterest = (frag,scene,mesh) => { + let id = frag.string // Selection of Interest if predefined_view matches object name if( mesh.selection ){ scene.remove(mesh.selection) delete mesh.selection } if( id == mesh.name || id.substr(1) == mesh.userData.class ){ - xrf.emit('selection',opts) + xrf.emit('selection',{...opts,frag}) .then( () => { const margin = 1.2 mesh.scale.multiplyScalar( margin ) @@ -1204,7 +1205,7 @@ const doPredefinedView = (opts) => { let frag = xrf.URI.parse( mesh.userData[id], xrf.XRF.NAVIGATOR | xrf.XRF.PV_OVERRIDE | xrf.XRF.EMBEDDED ) for ( let k in frag ){ let opts = {frag, model, camera: xrf.camera, scene: xrf.scene, renderer: xrf.renderer, THREE: xrf.THREE } - xrf.emit('predefinedView',opts) + xrf.emit('predefinedView',{...opts,frag}) .then( () => xrf.eval.fragment(k,opts) ) } } @@ -1219,7 +1220,7 @@ const doPredefinedView = (opts) => { setTimeout( () => { if( !scene ) return scene.traverse( (mesh) => { - selectionOfInterest( v.string, scene, mesh ) + selectionOfInterest( v, scene, mesh ) predefinedView( v , scene, mesh ) }) },100) @@ -1236,6 +1237,13 @@ xrf.addEventListener('href', (opts) => { let frag = xrf.URI.parse( opts.xrf.string, xrf.XRF.NAVIGATOR | xrf.XRF.PV_OVERRIDE | xrf.XRF.EMBEDDED ) doPredefinedView({frag,scene:xrf.scene}) }) + +//let updateUrl = (opts) => { +// console.dir(opts) +//} +// +//xrf.addEventListener('predefinedView', updateUrl ) +//xrf.addEventListener('selection', updateUrl ) xrf.frag.q = function(v, opts){ let { frag, mesh, model, camera, scene, renderer, THREE} = opts console.log(" └ running query ") @@ -1273,8 +1281,6 @@ xrf.frag.q = function(v, opts){ const showHide = () => { let q = frag.q.query - console.log(frag.q.string) - console.dir(frag) scene.traverse( (mesh) => { for ( let i in q ) { let isMeshId = q[i].id != undefined diff --git a/src/3rd/js/three/xrf/href.js b/src/3rd/js/three/xrf/href.js index 30e08b1..61638c1 100644 --- a/src/3rd/js/three/xrf/href.js +++ b/src/3rd/js/three/xrf/href.js @@ -91,11 +91,11 @@ xrf.frag.href = function(v, opts){ let click = mesh.userData.XRF.href.exec = (e) => { xrf - .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree + .emit('href',{click:true,mesh,xrf:v}) // let all listeners agree .then( () => { - if( v.string[0] == '#' ){ // apply modifications to scene + if( v.string[0] == '#' && v.string.match(/\|/) ){ // apply modifications to scene xrf.eval( v.string, xrf.model, xrf.XRF.PV_OVERRIDE ) - }else xrf.navigator.to(v.string) // or let's surf to HREF! + }else xrf.navigator.to(v.string) // or let's surf to HREF! }) } diff --git a/src/3rd/js/three/xrf/predefinedView.js b/src/3rd/js/three/xrf/predefinedView.js index b871625..0e22f4b 100644 --- a/src/3rd/js/three/xrf/predefinedView.js +++ b/src/3rd/js/three/xrf/predefinedView.js @@ -1,14 +1,15 @@ const doPredefinedView = (opts) => { let {frag,scene} = opts - const selectionOfInterest = (id,scene,mesh) => { + const selectionOfInterest = (frag,scene,mesh) => { + let id = frag.string // Selection of Interest if predefined_view matches object name if( mesh.selection ){ scene.remove(mesh.selection) delete mesh.selection } if( id == mesh.name || id.substr(1) == mesh.userData.class ){ - xrf.emit('selection',opts) + xrf.emit('selection',{...opts,frag}) .then( () => { const margin = 1.2 mesh.scale.multiplyScalar( margin ) @@ -28,7 +29,7 @@ const doPredefinedView = (opts) => { let frag = xrf.URI.parse( mesh.userData[id], xrf.XRF.NAVIGATOR | xrf.XRF.PV_OVERRIDE | xrf.XRF.EMBEDDED ) for ( let k in frag ){ let opts = {frag, model, camera: xrf.camera, scene: xrf.scene, renderer: xrf.renderer, THREE: xrf.THREE } - xrf.emit('predefinedView',opts) + xrf.emit('predefinedView',{...opts,frag}) .then( () => xrf.eval.fragment(k,opts) ) } } @@ -43,7 +44,7 @@ const doPredefinedView = (opts) => { setTimeout( () => { if( !scene ) return scene.traverse( (mesh) => { - selectionOfInterest( v.string, scene, mesh ) + selectionOfInterest( v, scene, mesh ) predefinedView( v , scene, mesh ) }) },100) @@ -60,3 +61,10 @@ xrf.addEventListener('href', (opts) => { let frag = xrf.URI.parse( opts.xrf.string, xrf.XRF.NAVIGATOR | xrf.XRF.PV_OVERRIDE | xrf.XRF.EMBEDDED ) doPredefinedView({frag,scene:xrf.scene}) }) + +//let updateUrl = (opts) => { +// console.dir(opts) +//} +// +//xrf.addEventListener('predefinedView', updateUrl ) +//xrf.addEventListener('selection', updateUrl ) diff --git a/src/3rd/js/three/xrf/q.js b/src/3rd/js/three/xrf/q.js index a0d07ce..e1e0071 100644 --- a/src/3rd/js/three/xrf/q.js +++ b/src/3rd/js/three/xrf/q.js @@ -35,8 +35,6 @@ xrf.frag.q = function(v, opts){ const showHide = () => { let q = frag.q.query - console.log(frag.q.string) - console.dir(frag) scene.traverse( (mesh) => { for ( let i in q ) { let isMeshId = q[i].id != undefined