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

Update simulator2d.js

parent d5e7ad35
No related branches found
No related tags found
No related merge requests found
......@@ -17,6 +17,8 @@
factorsVer = {"": 1000, "position": 5000, 'beta': 0.25, 'eta': 100, 'mu': 0.2, 'sigma': 5000000};
}
const simulator = document.location.search.indexOf('simulator=')>-1? document.location.search.split('simulator=')[1].split('&')[0]: '';
const readerPeriod = document.location.search.indexOf('readerPeriod=')>-1? document.location.search.split('readerPeriod=')[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 scaleType = 'slider';
let scaleHor;
......@@ -27,25 +29,85 @@
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 simulatorFactorVer = document.location.search.indexOf('simulatorFactorVer=')>-1? document.location.search.split('simulatorFactorVer=')[1].split('&')[0]*1000*(simulator=='sigma'? 1000000: 1): factorsVer[simulator]*1000;
function elapseSaturated() {scaleSaturated = false;}
const scaleSteps = 5;
function elapseHor(step) {
console.log('elapseHor()',step,scaleHor.$fill.style.width, 100 - (scaleSteps-step)/scaleSteps*90);
scaleSaturated = false;
if (scaleHor.$fill.style.width=="100%") {
if (step<scaleSteps) {const pc = Math.round(100 - (scaleSteps-step)/scaleSteps*90); scaleHor.$fill.style.width=pc+"%";setTimeout(elapseHor, 1000, step+1); return;}
const buf = scaleHor._max;
scaleHor.max(buf*10);
scaleHor.min(buf/10);
scaleHor.step(buf/100);
}
else if (scaleHor.$fill.style.width=="0%") {
if (step<scaleSteps) {const pc = Math.round(step/scaleSteps*10); scaleHor.$fill.style.width=pc+"%";setTimeout(elapseHor, 200, step+1); return;}
const buf = scaleHor._max/10;
scaleHor.max(buf);
scaleHor.min(buf/100);
scaleHor.step(buf/1000);
}
scaleHor.$fill.style.width="10%";
scaleHor.$fill.style.borderColor = '#2cc9ff';
}
function elapseVer(step) {
scaleSaturated = false;
if (scaleVer.$fill.style.width=="100%") {
const buf = scaleVer._max;
scaleVer.max(buf*10);
scaleVer.min(buf/10);
scaleVer.step(buf/100);
//
}
else if (scaleVer.$fill.style.width=="0%") {
const buf = scaleVer._max/10;
scaleVer.max(buf);
scaleVer.min(buf/100);
scaleVer.step(buf/1000);
}
scaleVer.$fill.style.width="10%";
}
function finishHor() {
console.log('finishHor()', scaleHor.$fill.style.width);
if (scaleHor.$fill.style.width=="100%" || scaleHor.$fill.style.width=="0%") {
// scaleHor.$fill.style.borderColor = 'yellow';
setTimeout(elapseHor, 200, 1);
}
}
function finishVer() {
console.log('finishHor()', scaleHor.$fill.style.width);
if (scaleSaturated) setTimeout(elapseVer, 100, 1);
}
function factorHor(v) {
console.log('factorHor()', v);
if (scaleHor._max*1000000 == v*1000000 && v<1000000000000 && !scaleSaturated) {scaleSaturated = true; setTimeout(elapseSaturated, 3000); const buf = scaleHor._max; scaleHor.max(buf*10); scaleHor.min(buf/10); scaleHor.step(buf/100);}
else if (scaleHor._min*1000000 == v*1000000 && v>0.000000000001 && !scaleSaturated) {scaleSaturated = true; setTimeout(elapseSaturated, 3000); const buf = scaleHor._max/10; scaleHor.max(buf); scaleHor.min(buf/100);scaleHor.step(buf/1000);}
scaleHor.$fill.style.borderColor = (scaleHor.$fill.style.width=="100%" || scaleHor.$fill.style.width=="0%")? 'yellow': '#2cc9ff';
simulatorFactorHor = v * 1000;
}
function factorVer(v) {
console.log('factorVer()', v);
if (scaleVer._max == v && v<1000000000000 && !scaleSaturated) {scaleSaturated = true; setTimeout(elapseSaturated, 3000); const buf = scaleVer._max; scaleVer.max(buf*10); scaleVer.min(buf/10); scaleVer.step(buf/100);}
else if (scaleVer._min == v && v>0.000000000001 && !scaleSaturated) {scaleSaturated = true; setTimeout(elapseSaturated, 3000); const buf = scaleVer._max/10; scaleVer.max(buf); scaleVer.min(buf/100);scaleVer.step(buf/1000);}
simulatorFactorVer = v * 1000;
}
function logscale(dirNum) {
if (dirNum==0) logScaleHor = $('#logHor').attr('checked')=='checked';
else logScaleVer = $('#logVer').attr('checked')=='checked';
}
function decademinus(id) {
const buf = scaleHor._max/10; scaleHor.max(buf); scaleHor.min(buf/100);scaleHor.step(buf/1000);
console.log(id, scaleHor._max);
}
function decadeplus(id) {
const buf = scaleHor._max; scaleHor.max(buf*10); scaleHor.min(buf/10); scaleHor.step(buf/100);
console.log(id, scaleHor._max);
}
function guiscale(gui, id) {
const i = gui.children.length - 1;
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.setAttribute('id', id);
}
function simulatorMenu(lattice, facilities, params) {
console.log('simulatorMenu',lattice, facilities, params);
console.log('simulatorMenu',lattice, facilities, params, gui);
if (['elettra2', 'esrf', 'soleil'].indexOf(machine)>-1) for (let i=0; i<gui.children.length; i++) {
if (['vlv', 'ps', 'bpm', 'blm'].indexOf(gui.children[i].property)>-1) gui.children[i].domElement.style.display = 'none';
}
// params.simulator = false;
$('.simulatorhor').css('display', 'none');
$('.simulatorver').css('display', 'none');
......@@ -58,9 +120,11 @@
const maxHor = Math.pow(10, Math.floor(Math.log10(simulatorFactorHor/1000))+2);
if (scaleType == 'slider') {
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);});
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');
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);});
// guiscale(gui, 'scalev');
}
else {
const controllerOption = $('.controller.option');
......@@ -113,8 +177,8 @@
Math.round(compData[facility].pos[i][1] + f*1.05*Math.cos(beta))
);
}
appendSvg("path", {id:facility+"_simulatorhor", class: "simulatorhor "+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':'')}, false, false, false, '.svg-pan-zoom_viewport');
appendSvg("path", {id:facility+"_simulatorver", class: "simulatorver "+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':'')}, false, 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+"_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');
// console.log("path", {id:facility+"_simulatorhor", name:"simulatorhor", d: dver.join(' ')+' Z'});
}
}
......@@ -124,6 +188,14 @@
}
// const threshold = document.location.search.indexOf('threshold=')>-1? document.location.search.split('threshold=')[1].split('&')[0]: 1000;
// const f = document.location.search.indexOf('factor=')>-1? document.location.search.split('factor=')[1].split('&')[0]: 3000;
function simulator_clicked_hor(event) {
// console.log('simulator hor', event);
openTooltip('trajectory hor '+event.clientX+' '+event.clientY);
}
function simulator_clicked_ver(lattice, params) {
// console.log('simulator ver');
openTooltip('trajectory ver'+event.clientX+' '+event.clientY);
}
function simulator2d(lattice, params) {
console.log('simulator2d',lattice, params);
const facilities = [];
......@@ -136,6 +208,14 @@
clearInterval(simulatorData.reader);
}
simulatorData.reader = false;
if (params.simulator=='position') {
$('#application').show();
$('#applicationFrame').attr("src", $('#applicationFrame').attr("data-src"));
}
else {
$('#application').hide();
$('#applicationFrame').removeAttr("src");
}
if (params.simulator=='') {
for (let facility in simulatorData) {
if (typeof $('#'+facility+"_simulatorhor").attr('visibility') != 'undefined') {
......@@ -143,11 +223,13 @@
$('#'+facility+"_simulatorver").attr('visibility', "hidden");
}
}
$('#application').hide();
$('#applicationFrame').removeAttr("src");
$('.simulatorgauge').hide();
$('#scaleh').hide();
$('#scalev').hide();
}
else {
$('#scaleh').show();
$('#scalev').show();
for (let facility in simulatorData) {
if (typeof $('#'+facility+"_simulatorhor").attr('visibility') != 'undefined') {
$('#'+facility+"_simulatorhor").attr('visibility', "visible");
......@@ -158,9 +240,8 @@
simulatorData.oldIndex = facility;
simulatorRead(simulatorData, params);
}
displayer = setInterval(simulatorDisplay, 200, params);
simulatorData.reader = setInterval(simulatorRead, 200, simulatorData, params);
$('#application').show();
displayer = setInterval(simulatorDisplay, displayerPeriod, params);
simulatorData.reader = setInterval(simulatorRead, readerPeriod, simulatorData, params);
$('.simulatorhor').css('display', 'block');
$('.simulatorver').css('display', 'block');
simulatorFactorHor = factorsHor[menuParams.simulator]*1000;
......
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