Skip to content
Snippets Groups Projects
panther.php 5.41 KiB
Newer Older
Lucio Zambon's avatar
Lucio Zambon committed
<?php
Lucio Zambon's avatar
Lucio Zambon committed
	$local = (isset($_REQUEST['cdn']) || $_SERVER['SERVER_NAME']=='mac3d.elettra.eu')? false: true; // true = use only locally installed modules, false = use cdn
Lucio Zambon's avatar
Lucio Zambon committed
	$machine = empty($_REQUEST['machine'])? 'elettra': strtolower($_REQUEST['machine']);
Lucio Zambon's avatar
Lucio Zambon committed
	$simulator = false;
	if (strpos($machine, 'simulator_')!==false) {$simulator = true; list($trash, $machine) = explode('_', $machine, 2);}
Lucio Zambon's avatar
Lucio Zambon committed
	$l = file_get_contents($simulator? 'http://'.$_SERVER["HTTP_HOST"].strtr($_SERVER["PHP_SELF"], array('panther.php'=>'', 'index.php'=>'')).'simulator.php?lattice&machine='.$machine: $machine.'_lattice.json');
Lucio Zambon's avatar
Lucio Zambon committed
	$lattice = json_decode($l, true);
	$modules = '';
	if (!empty($lattice['conf']['modules'])) foreach ($lattice['conf']['modules'] as $m) {
		$modules .= ",\n					\"$m\": \"./$m.js\"";
	}
Lucio Zambon's avatar
Lucio Zambon committed
	$mode = isset($_REQUEST['fast'])? 'fast': (isset($_REQUEST['premium'])? 'premium': (isset($_REQUEST['plus'])? 'plus': ''));
Lucio Zambon's avatar
Lucio Zambon committed
	$mode = !empty($_REQUEST['fast'])? 'all': $mode;
Lucio Zambon's avatar
Lucio Zambon committed
	$threejs = empty($_REQUEST['threejs'])? 'threejs': 'threejs'.$_REQUEST['threejs'];
Lucio Zambon's avatar
Lucio Zambon committed
    file_put_contents('./logs'.date('Y').'.txt', date('Y-m-d H:i:s').' '.$_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_X_FORWARDED_FOR'].' - '.$_SERVER['QUERY_STRING'].PHP_EOL , FILE_APPEND | LOCK_EX);
?>
<!DOCTYPE html>
<html lang="en">
	<head>
		<title>PAnTHer</title>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">

		<!--
			Firefox seems to not like having scripts that come in before the importmap
			https://discourse.threejs.org/t/solved-importmaps-broken-on-firefox-which-now-supports-importmaps/48413/5 
		-->
		<script type="importmap">
			{
				"imports": {
Lucio Zambon's avatar
Lucio Zambon committed
                    "three": "<?php echo ($local? "./$threejs": 'https://cdn.jsdelivr.net/npm/three@0.161.0/build');?>/three.module.js",
                    "three/addons/": "<?php echo ($local? "./$threejs/": 'https://cdn.jsdelivr.net/npm/three@0.161.0/examples/jsm/');?>",
Lucio Zambon's avatar
Lucio Zambon committed
					"components/": "./components/src/",
Lucio Zambon's avatar
Lucio Zambon committed
					"bundle": "./components/bundle_<?php echo $simulator? 'simulator': $machine.$mode;?>.js"<?php echo $modules;?>
Lucio Zambon's avatar
Lucio Zambon committed
				}
			}
		</script>

		<style>
			body {
				background-color: #333333;
				color: #000;
				margin: 0px;
			}
			a {
				color: #f00;
			}
			#c {
				width: 100%;
				height: 100%;
				display: block;
			}
			.blm {
				display: none;
			}
			.blmVal {
				background-color: white;
				padding: 2px;
				color: black;
				border-radius: 5px;
			}
		</style>
Lucio Zambon's avatar
Lucio Zambon committed
		<link rel="stylesheet" href="<?php echo ($local? '../lib/jquery/jquery-ui.min.css': 'https://code.jquery.com/ui/1.13.3/themes/base/jquery-ui.css');?>">
		<script src="<?php echo ($local? '../lib/jquery/jquery.min.js': 'https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js');?>" type="text/javascript"></script>
		<script src="<?php echo ($local? '../lib/jquery/jquery-ui.min.js': 'https://cdn.jsdelivr.net/npm/jquery-ui@1.13.3/dist/jquery-ui.min.js');?>" type="text/javascript"></script>
Lucio Zambon's avatar
Lucio Zambon committed
		<script>;
			const client = '<?php echo gethostbyaddr($_SERVER['REMOTE_ADDR']);?>'.split('.')[0];
			const fermi = ['do','re','mi','fa','sol','la','si'].indexOf(client)>-1 && document.location.search.indexOf('machine=elettra')==-1? '?machine=fermi': '';
			if (navigator.userAgent.indexOf('Firefox/63')>-1) {
				document.location = './ff63/'+fermi;
			}
			if (document.location.pathname.indexOf('ff63')>-1) {
Lucio Zambon's avatar
Lucio Zambon committed
				// $('#tooltip').show();
Lucio Zambon's avatar
Lucio Zambon committed
				$('#tooltip').css('left', '5px');
				$('#tooltip').css('top', '5px');
			}
		</script>
Lucio Zambon's avatar
Lucio Zambon committed
	</head>

	<body style="overflow: hidden;">
		<canvas id="c" style="margin-top: -15px;"></canvas>
		<div id="demo" style="position: absolute; display: none; top: 0px; right: -8px; z-index: 10000;" <?php
Lucio Zambon's avatar
Lucio Zambon committed
			if ($_REQUEST['machine']=='elettra2') echo 'title="click me for Lattice source" onClick="document.location=\'https://drive.elettra.eu/group/268/\';"'; ?>>
			<svg width="150px" height="150px" viewBox="0 0 100 100" class="icon" version="1.1" xmlns="http://www.w3.org/2000/svg">
				<path d="M0 0 h70 l30 30 v70 z" stroke="black" stroke-width="2" fill="red"></path>
				<text transform="rotate(45)" x="43" y="-30" font-weight="bold" fill="white">DEMO</text>
				<text transform="rotate(45)" x="14" y="-6" font-size="70%" fill="white"> all numbers are random</text>
			</svg>
		</div>
Lucio Zambon's avatar
Lucio Zambon committed
		<script type="module" src="./panther<?php echo empty($_REQUEST['threejs'])? '': $_REQUEST['threejs'];?>.js"></script>
Lucio Zambon's avatar
Lucio Zambon committed
		<div id='tooltip' style='position:absolute; display:none; z-index: 100000000;'>
			<div style='width: 490px; background-color: white; padding:5px; border-width: 3px; border-color: blue; border-top-left-radius: 5px; border-top-right-radius: 5px;'><button id='compdb'>find component <span id='compname'/> on components DB</button></div>
			<iframe id='tooltipFrame' style="border:0; position:absolute; background:transparent; " width="240px" height="220px" src=''></iframe>
		</div>
Lucio Zambon's avatar
Lucio Zambon committed
		<div id='application' style='display:none; position:absolute; left:0; top:0; bottom:0; width:340px; max-width:340px; z-index: 10000;'>
			<iframe id='applicationFrame' style="border:0; position:absolute; width: 100%; height: 800px;" src='' data-src="https://puma-01.elettra.eu/knob/tunefb.php"></iframe>
Lucio Zambon's avatar
Lucio Zambon committed
		</div>
		<div id='notice' style='display:<?php echo $_REQUEST['machine']=='elettra2'? 'block': 'none';?>; position:absolute; right:5px; bottom:5px; max-width:600px; z-index: 10000;'>
			Data source <a href='https://drive.elettra.eu/group/268/'>https://drive.elettra.eu/group/268/</a>
		</div>
	</body>
Lucio Zambon's avatar
Lucio Zambon committed
</html>