//original file is from: /var/www/html/sand/web-dev/visualiz/3d/media-menu/app/app/core/vgraph/navigation.js
( function() {
var ANAME = "m-nest";
var app = window[ ANAME ] = window[ ANAME ] || {};
var lib = app.lib = app.lib || {};
var rots = 0.04;
var cosa = Math.cos( rots );
var sina = Math.sin( rots );
var conf3D =
{
roomCenter :
{
xx : 0, // 20000,
yy : 0 // 20000
},
obs :
{
min : { xx : null, yy : null, zz : null },
max : { xx : null, yy : null, zz : null },
// xx : 20000, // null,
// yy : 20000,
// zz : -200, // strong persp.
zz : -20000,
stepX : 20,
stepY : 20,
stepZ : 100
},
// scale : 100 // strong persp.
scale : 25000
};
var priority_3D_navigator = function ( event )
{
var control = {};
var doHandle = false;
var stopDefaults = false;
if( event.altKey ) {
switch ( event.keyCode )
{
//arr up
case 38 : app.doMove( { moveY : conf3D.obs.stepY } );
stopDefaults = true;
break;
//arr down
case 40 : app.doMove( { moveY : -conf3D.obs.stepY } );
stopDefaults = true;
break;
}
} else if( event.ctrlKey ) {
//// CAN BE BROKEN ON APPLE
//// Apparently "Mac. Lion" takes away Ctro+arrow up.
switch ( event.keyCode )
{
//arr up
case 38 : app.doMove( { moveY : conf3D.obs.stepY } );
stopDefaults = true;
break;
//arr down
case 40 : app.doMove( { moveY : -conf3D.obs.stepY } );
stopDefaults = true;
break;
}
}else if( event.shiftKey ) {
switch ( event.keyCode )
{
//arr up
case 38 : app.doMove( { axis : 0, cosa : cosa, sina : -sina, comm : "around X, clockwise" } );
stopDefaults = true;
break;
//arr down
case 40 : app.doMove( { axis : 0, cosa : cosa, sina : sina, comm : "around X, counter clockwise" } );
stopDefaults = true;
break;
//arr right
case 39 : app.doMove( { axis : 1, cosa : cosa, sina : -sina, comm : "around Y, clockwise" } );
stopDefaults = true;
break;
//arr left
case 37 : app.doMove( { axis : 1, cosa : cosa, sina : sina, comm : "around Y, counter clockwise" } );
stopDefaults = true;
break;
}
}else{
ccc( event.keyCode );
switch ( event.keyCode )
{
//arr up
case 38 : app.doMove( { moveZ : -conf3D.obs.stepZ } );
stopDefaults = true;
break;
//arr down
case 40 : app.doMove( { moveZ : conf3D.obs.stepZ } );
stopDefaults = true;
break;
//arr right
case 39 : app.doMove( { moveX : -conf3D.obs.stepX } );
stopDefaults = true;
break;
//arr left
case 37 : app.doMove( { moveX : conf3D.obs.stepX } );
stopDefaults = true;
break;
}
}
if( stopDefaults ) {
event.preventDefault();
//this.event.cancelBubble = true; //historical? https://developer.mozilla.org/en-US/docs/Web/API/Event/cancelBubble
//---------------------------------------------------------
//very good: https://javascript.info/bubbling-and-capturing
//event.stopPropagation();
event.stopImmediatePropagation();
//for legacy browsers: btb/dom-events.js
//---------------------------------------------------------
}
return false;
};
// $( document).bind ( 'keydown', priority_3D_navigator );
// $( document).bind ( 'keypress', priority_3D_navigator );
// fails in Chrome: $( document ).bind ( 'keypress', btb.throttledCallback( priority_3D_navigator ) );
//window.document.addEventListener ( 'keydown', btb.throttledCallback( priority_3D_navigator ) );
window.document.addEventListener ( 'keydown', priority_3D_navigator );
}) ();