Skip to content
Snippets Groups Projects
Commit 81531b98 authored by Lucio Zambon's avatar Lucio Zambon
Browse files

Update simulator2d.js

parent 54dc1860
No related branches found
No related tags found
No related merge requests found
...@@ -21,27 +21,33 @@ ...@@ -21,27 +21,33 @@
const displayerPeriod = document.location.search.indexOf('displayerPeriod=')>-1? document.location.search.split('displayerPeriod=')[1].split('&')[0]: 200; const displayerPeriod = document.location.search.indexOf('displayerPeriod=')>-1? document.location.search.split('displayerPeriod=')[1].split('&')[0]: 200;
const visibility = simulator==''? 'hidden': 'visible'; const visibility = simulator==''? 'hidden': 'visible';
const scaleType = 'slider'; const scaleType = 'slider';
let simulatorDataHor = [];
let simulatorDataVer = [];
let scaleHor; let scaleHor;
let scaleSaturated = false;
let scaleVer; let scaleVer;
let simulatorBuffer = false; let simulatorBuffer = false;
let logScaleHor = false; let logScaleHor = false;
let logScaleVer = false; let logScaleVer = false;
let simulatorFactorHor = document.location.search.indexOf('simulatorFactorHor=')>-1? document.location.search.split('simulatorFactorHor=')[1].split('&')[0]*1000*(simulator=='sigma'? 1000000: 1): factorsHor[simulator]*1000; let simulatorFactorHor = document.location.search.indexOf('simulatorFactorHor=')>-1? document.location.search.split('simulatorFactorHor=')[1].split('&')[0]*1000*(simulator=='sigma'? 1000000: 1): factorsHor[simulator]*1000;
let simulatorFactorVer = document.location.search.indexOf('simulatorFactorVer=')>-1? document.location.search.split('simulatorFactorVer=')[1].split('&')[0]*1000*(simulator=='sigma'? 1000000: 1): factorsVer[simulator]*1000; let simulatorFactorVer = document.location.search.indexOf('simulatorFactorVer=')>-1? document.location.search.split('simulatorFactorVer=')[1].split('&')[0]*1000*(simulator=='sigma'? 1000000: 1): factorsVer[simulator]*1000;
const scaleSteps = 5; const scaleSteps = 10;
function elapseHor(step) { function myreference(param) {
console.log('elapseHor()',step,scaleHor.$fill.style.width, 100 - (scaleSteps-step)/scaleSteps*90); const dir = param.split('_')[0];
scaleSaturated = false; const action = param.split('_')[1];
if (scaleHor.$fill.style.width=="100%") { if (action=='set') localStorage.setItem('reference'+dir, JSON.stringify(dir=='hor'? simulatorDataHor: simulatorDataVer));
if (step<scaleSteps) {const pc = Math.round(100 - (scaleSteps-step)/scaleSteps*90); scaleHor.$fill.style.width=pc+"%";setTimeout(elapseHor, 1000, step+1); return;} if (action=='clear') localStorage.removeItem('reference'+dir);
}
function elapseHor(step, up) {
// console.log('elapseHor()',step,scaleHor.$fill.style.width, (scaleSteps-step)/scaleSteps*90);
if (up) {
if (step<scaleSteps) {const pc = Math.round((scaleSteps-step)/scaleSteps*90); scaleHor.$fill.style.width=pc+"%";setTimeout(elapseHor, 20, step+1, up); return;}
const buf = scaleHor._max; const buf = scaleHor._max;
scaleHor.max(buf*10); scaleHor.max(buf*10);
scaleHor.min(buf/10); scaleHor.min(buf/10);
scaleHor.step(buf/100); scaleHor.step(buf/100);
} }
else if (scaleHor.$fill.style.width=="0%") { else {
if (step<scaleSteps) {const pc = Math.round(step/scaleSteps*10); scaleHor.$fill.style.width=pc+"%";setTimeout(elapseHor, 200, step+1); return;} if (step<scaleSteps) {const pc = Math.round(step/scaleSteps*10); scaleHor.$fill.style.width=pc+"%";setTimeout(elapseHor, 20, step+1, up); return;}
const buf = scaleHor._max/10; const buf = scaleHor._max/10;
scaleHor.max(buf); scaleHor.max(buf);
scaleHor.min(buf/100); scaleHor.min(buf/100);
...@@ -50,39 +56,43 @@ ...@@ -50,39 +56,43 @@
scaleHor.$fill.style.width="10%"; scaleHor.$fill.style.width="10%";
scaleHor.$fill.style.borderColor = '#2cc9ff'; scaleHor.$fill.style.borderColor = '#2cc9ff';
} }
function elapseVer(step) { function elapseVer(step, up) {
scaleSaturated = false; if (up) {
if (scaleVer.$fill.style.width=="100%") { if (step<scaleSteps) {const pc = Math.round(100 - (scaleSteps-step)/scaleSteps*90); scaleVer.$fill.style.width=pc+"%";setTimeout(elapseVer, 200, step+1, up); return;}
const buf = scaleVer._max; const buf = scaleVer._max;
scaleVer.max(buf*10); scaleVer.max(buf*10);
scaleVer.min(buf/10); scaleVer.min(buf/10);
scaleVer.step(buf/100); scaleVer.step(buf/100);
//
} }
else if (scaleVer.$fill.style.width=="0%") { else {
if (step<scaleSteps) {const pc = Math.round(step/scaleSteps*10); scaleVer.$fill.style.width=pc+"%";setTimeout(elapseVer, 200, step+1, up); return;}
const buf = scaleVer._max/10; const buf = scaleVer._max/10;
scaleVer.max(buf); scaleVer.max(buf);
scaleVer.min(buf/100); scaleVer.min(buf/100);
scaleVer.step(buf/1000); scaleVer.step(buf/1000);
} }
scaleVer.$fill.style.width="10%"; scaleVer.$fill.style.width="10%";
scaleVer.$fill.style.borderColor = '#2cc9ff';
} }
function finishHor() { function finishHor() {
console.log('finishHor()', scaleHor.$fill.style.width); // console.log('finishHor()', scaleHor.$fill.style.width);
if (scaleHor.$fill.style.width=="100%" || scaleHor.$fill.style.width=="0%") { if (scaleHor.$fill.style.width=="100%" || scaleHor.$fill.style.width=="0%") {
// scaleHor.$fill.style.borderColor = 'yellow'; // scaleHor.$fill.style.borderColor = 'yellow';
setTimeout(elapseHor, 200, 1); setTimeout(elapseHor, 200, 1, scaleHor.$fill.style.width=="100%");
} }
} }
function finishVer() { function finishVer() {
console.log('finishHor()', scaleHor.$fill.style.width); if (scaleVer.$fill.style.width=="100%" || scaleVer.$fill.style.width=="0%") {
if (scaleSaturated) setTimeout(elapseVer, 100, 1); setTimeout(elapseVer, 200, 1, scaleVer.$fill.style.width=="100%");
}
} }
function factorHor(v) { function factorHor(v) {
scaleHor.$fill.style.borderColor = (scaleHor.$fill.style.width=="100%" || scaleHor.$fill.style.width=="0%")? 'yellow': '#2cc9ff'; // console.log('factorHor(v)', v, scaleHor.$fill.style.width);
scaleHor.$fill.style.borderColor = (scaleHor.$fill.style.width=="100%" || scaleHor.$fill.style.width=="0%")? 'yellow': '#2cc9ff';
simulatorFactorHor = v * 1000; simulatorFactorHor = v * 1000;
} }
function factorVer(v) { function factorVer(v) {
scaleVer.$fill.style.borderColor = (scaleVer.$fill.style.width=="100%" || scaleVer.$fill.style.width=="0%")? 'yellow': '#2cc9ff';
simulatorFactorVer = v * 1000; simulatorFactorVer = v * 1000;
} }
function logscale(dirNum) { function logscale(dirNum) {
...@@ -100,7 +110,7 @@ ...@@ -100,7 +110,7 @@
function guiscale(gui, id) { function guiscale(gui, id) {
const i = gui.children.length - 1; const i = gui.children.length - 1;
gui.children[i].domElement.style.display = 'none'; gui.children[i].domElement.style.display = 'none';
gui.children[i].domElement.children[0].innerHTML = '<span style="padding: 5px;" onClick="decademinus(\''+id+'\')">-</span> '+ gui.children[i].domElement.children[0].innerHTML + ' <span style="padding: 3px;" onClick="decadeplus(\''+id+'\')">+</span>'; // gui.children[i].domElement.children[0].innerHTML = '<span style="padding: 5px;" onClick="decademinus(\''+id+'\')">-</span> '+ gui.children[i].domElement.children[0].innerHTML + ' <span style="padding: 3px;" onClick="decadeplus(\''+id+'\')">+</span>';
gui.children[i].domElement.setAttribute('id', id); gui.children[i].domElement.setAttribute('id', id);
} }
function simulatorMenu(lattice, facilities, params) { function simulatorMenu(lattice, facilities, params) {
...@@ -121,10 +131,10 @@ ...@@ -121,10 +131,10 @@
if (scaleType == 'slider') { if (scaleType == 'slider') {
menuParams['scale H'] = simulatorFactorHor/1000; menuParams['scale H'] = simulatorFactorHor/1000;
scaleHor = gui.add(menuParams, 'scale H', maxVer/100, maxVer, Math.round(maxVer/1000)).onChange(function() {factorHor(menuParams['scale H'], gui);}).onFinishChange(function() {finishHor(gui);}); scaleHor = gui.add(menuParams, 'scale H', maxVer/100, maxVer, Math.round(maxVer/1000)).onChange(function() {factorHor(menuParams['scale H'], gui);}).onFinishChange(function() {finishHor(gui);});
// guiscale(gui, 'scaleh'); guiscale(gui, 'scaleh');
menuParams['scale V'] = simulatorFactorHor/1000; menuParams['scale V'] = simulatorFactorHor/1000;
scaleVer = gui.add(menuParams, 'scale V', maxHor/100, maxHor, Math.round(maxHor/1000)).onChange(function() {factorVer(menuParams['scale V'], gui);}); scaleVer = gui.add(menuParams, 'scale V', maxHor/100, maxHor, Math.round(maxHor/1000)).onChange(function() {factorVer(menuParams['scale V'], gui);});
// guiscale(gui, 'scalev'); guiscale(gui, 'scalev');
} }
else { else {
const controllerOption = $('.controller.option'); const controllerOption = $('.controller.option');
...@@ -178,7 +188,9 @@ ...@@ -178,7 +188,9 @@
); );
} }
appendSvg("path", {id:facility+"_simulatorhor", class: "simulatorhor trajectory "+facility, visibility:visibility, name:"simulatorhor", fill: "none", "stroke-width":"150", "stroke":"red", "stroke-opacity":"0.8", d: dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, simulator_clicked_hor, false, false, '.svg-pan-zoom_viewport'); appendSvg("path", {id:facility+"_simulatorhor", class: "simulatorhor trajectory "+facility, visibility:visibility, name:"simulatorhor", fill: "none", "stroke-width":"150", "stroke":"red", "stroke-opacity":"0.8", d: dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, simulator_clicked_hor, false, false, '.svg-pan-zoom_viewport');
appendSvg("path", {id:facility+"_simulatorreferencehor", class: "simulatorhor trajectory "+facility, visibility:visibility, name:"simulatorreferencehor", fill: "none", "stroke-width":"150", "stroke":"darkred", "stroke-opacity":"0.8", d: dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, simulator_clicked_hor, false, false, '.svg-pan-zoom_viewport');
appendSvg("path", {id:facility+"_simulatorver", class: "simulatorver trajectory "+facility, visibility:visibility, name:"simulatorver", fill: "none", "stroke-width":"150", "stroke":"green", "stroke-opacity":"0.8", d: dver.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, simulator_clicked_ver, false, false, '.svg-pan-zoom_viewport'); appendSvg("path", {id:facility+"_simulatorver", class: "simulatorver trajectory "+facility, visibility:visibility, name:"simulatorver", fill: "none", "stroke-width":"150", "stroke":"green", "stroke-opacity":"0.8", d: dver.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, simulator_clicked_ver, false, false, '.svg-pan-zoom_viewport');
appendSvg("path", {id:facility+"_simulatorreferencever", class: "simulatorver trajectory "+facility, visibility:visibility, name:"simulatorreferencever", fill: "none", "stroke-width":"150", "stroke":"darkgreen", "stroke-opacity":"0.8", d: dver.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, simulator_clicked_ver, false, false, '.svg-pan-zoom_viewport');
// console.log("path", {id:facility+"_simulatorhor", name:"simulatorhor", d: dver.join(' ')+' Z'}); // console.log("path", {id:facility+"_simulatorhor", name:"simulatorhor", d: dver.join(' ')+' Z'});
} }
} }
...@@ -204,12 +216,14 @@ ...@@ -204,12 +216,14 @@
} }
function simulatorSwitch(simulatorData, params) { function simulatorSwitch(simulatorData, params) {
console.log('simulatorSwitch()',simulatorData, params, params.simulator); console.log('simulatorSwitch()',simulatorData, params, params.simulator);
scaleHor.$fill.style.width = "50%";
scaleVer.$fill.style.width = "50%";
if (simulatorData.reader !== false) { if (simulatorData.reader !== false) {
clearInterval(simulatorData.reader); clearInterval(simulatorData.reader);
} }
simulatorData.reader = false; simulatorData.reader = false;
if (params.simulator=='position') { if (params.simulator=='position') {
$('#application').show(); $('#application').show();
$('#applicationFrame').attr("src", $('#applicationFrame').attr("data-src")); $('#applicationFrame').attr("src", $('#applicationFrame').attr("data-src"));
} }
else { else {
...@@ -226,8 +240,10 @@ ...@@ -226,8 +240,10 @@
$('.simulatorgauge').hide(); $('.simulatorgauge').hide();
$('#scaleh').hide(); $('#scaleh').hide();
$('#scalev').hide(); $('#scalev').hide();
$('#applicationReference').hide();
} }
else { else {
$('#applicationReference').show();
$('#scaleh').show(); $('#scaleh').show();
$('#scalev').show(); $('#scalev').show();
for (let facility in simulatorData) { for (let facility in simulatorData) {
...@@ -277,8 +293,8 @@ ...@@ -277,8 +293,8 @@
} }
function simulatorRender(facility, val, simulator) { function simulatorRender(facility, val, simulator) {
// console.log('simulatorRender(), val', val, simulator, compData[facility]); // console.log('simulatorRender(), val', val, simulator, compData[facility]);
const dhor = []; simulatorDataHor = [];
const dver = []; simulatorDataVer = [];
if (val.Hor) { if (val.Hor) {
for (i=0; i<val.Hor.length; i++) { for (i=0; i<val.Hor.length; i++) {
if (typeof compData[facility].map[i] == 'undefined') continue; if (typeof compData[facility].map[i] == 'undefined') continue;
...@@ -291,18 +307,18 @@ ...@@ -291,18 +307,18 @@
const valHor = logScaleHor? Math.sign(val.Hor[i])*Math.log10(1+ Math.abs(val.Hor[i]*Math.LN10)): val.Hor[i]; const valHor = logScaleHor? Math.sign(val.Hor[i])*Math.log10(1+ Math.abs(val.Hor[i]*Math.LN10)): val.Hor[i];
const valVer = logScaleVer? Math.sign(val.Ver[i])*Math.log10(1+ Math.abs(val.Ver[i]*Math.LN10)): val.Ver[i]; const valVer = logScaleVer? Math.sign(val.Ver[i])*Math.log10(1+ Math.abs(val.Ver[i]*Math.LN10)): val.Ver[i];
// if (i<20) console.log('i', i, 'pos',pos, 'dir', compData[facility].dir[i], 'facility', facility, beta, Math.cos(beta), Math.sin(beta)); // if (i<20) console.log('i', i, 'pos',pos, 'dir', compData[facility].dir[i], 'facility', facility, beta, Math.cos(beta), Math.sin(beta));
dhor.push((dhor.length==0?'M':'L')+ simulatorDataHor.push((simulatorDataHor.length==0?'M':'L')+
Math.round(pos[0] - valHor*simulatorFactorHor*Math.sin(beta)) + ' ' + Math.round(pos[0] - valHor*simulatorFactorHor*Math.sin(beta)) + ' ' +
Math.round(pos[1] + valHor*simulatorFactorHor*Math.cos(beta)) Math.round(pos[1] + valHor*simulatorFactorHor*Math.cos(beta))
); );
dver.push((dver.length==0?'M':'L')+ simulatorDataVer.push((simulatorDataVer.length==0?'M':'L')+
Math.round(pos[0] - valVer*simulatorFactorVer*Math.sin(beta)) + ' ' + Math.round(pos[0] - valVer*simulatorFactorVer*Math.sin(beta)) + ' ' +
Math.round(pos[1] + valVer*simulatorFactorVer*Math.cos(beta)) Math.round(pos[1] + valVer*simulatorFactorVer*Math.cos(beta))
); );
} }
// console.log('Hor', dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')); // console.log('Hor', simulatorDataHor.join(' ')+(lattice[facility].sections[0].chamber?' Z':''));
$('#'+facility+"_simulatorhor").attr('d', dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')); $('#'+facility+"_simulatorhor").attr('d', simulatorDataHor.join(' ')+(lattice[facility].sections[0].chamber?' Z':''));
$('#'+facility+"_simulatorver").attr('d', dver.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')); $('#'+facility+"_simulatorver").attr('d', simulatorDataVer.join(' ')+(lattice[facility].sections[0].chamber?' Z':''));
} }
} }
function simulatorDisplay(params) { function simulatorDisplay(params) {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment