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

Update simulator2d.js

parent 84d160fd
No related branches found
No related tags found
No related merge requests found
// jshint esversion: 6
const factorsHor = {"": 1000, "position": 5000, 'beta': 0.5, 'eta': 20, 'mu': 0.2, 'sigma': 5000000};
const factorsVer = {"": 1000, "position": 5000, 'beta': 0.5, 'eta':200, 'mu': 0.2, 'sigma': 5000000};
// jshint esversion: 6
let factorsHor, factorsVer;
if (document.location.search.indexOf('machine=esrf')>-1 || document.location.search.indexOf('machine=simulator_esrf')>-1) {
factorsHor = {"": 1000, "position": 100000, 'beta': 0.2, 'eta': 100, 'mu': 0.2, 'sigma': 20000};
factorsVer = {"": 1000, "position": 1000, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000};
}
else if (document.location.search.indexOf('machine=simulator_soleil')>-1) {
factorsHor = {"": 1000, "position": 50000, 'beta': 0.2, 'eta': 50, 'mu': 0.2, 'sigma': 20000};
factorsVer = {"": 1000, "position": 10000, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000};
}
else if (document.location.search.indexOf('machine=elettra2')>-1) {
factorsHor = {"": 1000, "position": 500000, 'beta': 0.2, 'eta': 50, 'mu': 0.2, 'sigma': 20000};
factorsVer = {"": 1000, "position": 500000, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000};
}
else {
factorsHor = {"": 1000, "position": 5000, 'beta': 0.5, 'eta': 100, 'mu': 0.2, 'sigma': 5000000};
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 visibility = simulator==''? 'hidden': 'visible';
const scaleType = 'slider';
let scaleHor;
let scaleSaturated = false;
let scaleVer;
let simulatorBuffer = false;
let logScaleHor = 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 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;}
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);}
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) {
......@@ -30,15 +54,23 @@
const options = ['', 'position', 'beta', 'eta', 'mu', 'sigma'];
if (options.indexOf(params.simulator)==-1) params.simulator = 'position';
gui.add(params, 'simulator', options).name('simulator H <img id="h" src="red.svg" style="margin-bottom: -4px;">&nbsp;&nbsp;&nbsp;V <img id="v" src="green.svg" style="margin-bottom: -4px;"> ').onChange(function() {simulatorSwitch(compData, params);});
const controllerOption = $('.controller.option');
for (let i=0; i<controllerOption.length; i++) {
if (controllerOption.eq(i).children()[0].innerText.indexOf("simulator H") > -1) {
const maxVer = Math.pow(10, Math.floor(Math.log10(simulatorFactorVer/1000))+2);
$('<div class="simulatorgauge"><iframe id="vergauge" style="width: 100%;height:250px;" src="../misc/gauge.html?dark&r=115&ringwidth=30&max='+maxVer+'&throttlingPeriod=50&apply=factorVer&extbackground=green&exthighlight=darkgreen&intbackground=green&inthighlight=darkgreen&val='+simulatorFactorVer/1000+'"></iframe></div>').insertAfter(controllerOption.eq(i));
const maxHor = Math.pow(10, Math.floor(Math.log10(simulatorFactorHor/1000))+2);
$('<div class="simulatorgauge"><iframe id="horgauge" style="width: 100%;height:250px;" src="../misc/gauge.html?dark&r=115&ringwidth=30&max='+maxHor+'&throttlingPeriod=50&apply=factorHor&extbackground=red&exthighlight=darkred&intbackground=red&inthighlight=darkred&val='+simulatorFactorHor/1000+'"></iframe></div>').insertAfter(controllerOption.eq(i));
$('<div style="padding: 8px;" class="simulatorgauge">log scale H <img id="h" src="red.svg" style="margin-bottom: -2px;"> <input type="checkbox" id="logHor" onChange="logscale(0)">&nbsp;&nbsp;&nbsp;log V <img id="h" src="green.svg" style="margin-bottom: -2px;"> <input type="checkbox" id="logVer" onChange="logscale(1)"></div>').insertAfter(controllerOption.eq(i));
if (simulator=='') $('.simulatorgauge').hide();
const maxVer = Math.pow(10, Math.floor(Math.log10(simulatorFactorVer/1000))+2);
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);});
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);});
}
else {
const controllerOption = $('.controller.option');
for (let i=0; i<controllerOption.length; i++) {
if (controllerOption.eq(i).children()[0].innerText.indexOf("simulator H") > -1) {
$('<div class="simulatorgauge"><iframe id="vergauge" style="width: 100%;height:250px;" src="../misc/gauge.html?dark&r=115&ringwidth=30&max='+maxVer+'&throttlingPeriod=50&apply=factorVer&extbackground=green&exthighlight=darkgreen&intbackground=green&inthighlight=darkgreen&val='+simulatorFactorVer/1000+'"></iframe></div>').insertAfter(controllerOption.eq(i));
$('<div class="simulatorgauge"><iframe id="horgauge" style="width: 100%;height:250px;" src="../misc/gauge.html?dark&r=115&ringwidth=30&max='+maxHor+'&throttlingPeriod=50&apply=factorHor&extbackground=red&exthighlight=darkred&intbackground=red&inthighlight=darkred&val='+simulatorFactorHor/1000+'"></iframe></div>').insertAfter(controllerOption.eq(i));
$('<div style="padding: 8px;" class="simulatorgauge">log scale H <img id="h" src="red.svg" style="margin-bottom: -2px;"> <input type="checkbox" id="logHor" onChange="logscale(0)">&nbsp;&nbsp;&nbsp;log V <img id="h" src="green.svg" style="margin-bottom: -2px;"> <input type="checkbox" id="logVer" onChange="logscale(1)"></div>').insertAfter(controllerOption.eq(i));
if (simulator=='') $('.simulatorgauge').hide();
}
}
}
for (let f in facilities) {
......@@ -127,25 +159,43 @@
simulatorRead(simulatorData, params);
}
displayer = setInterval(simulatorDisplay, 200, params);
simulatorData.reader = setInterval(simulatorRead, 500, simulatorData, params);
simulatorData.reader = setInterval(simulatorRead, 200, simulatorData, params);
$('#application').show();
$('.simulatorhor').css('display', 'block');
$('.simulatorver').css('display', 'block');
simulatorFactorHor = factorsHor[params.simulator]*1000;
document.getElementById("horgauge").contentWindow.maxval = Math.pow(10, Math.floor(Math.log10(factorsHor[params.simulator]))+2);
document.getElementById("horgauge").contentWindow.reset();
document.getElementById("horgauge").contentWindow.setVal(factorsHor[params.simulator]);
simulatorFactorVer = factorsVer[params.simulator]*1000;
document.getElementById("vergauge").contentWindow.maxval = Math.pow(10, Math.floor(Math.log10(factorsVer[params.simulator]))+2);
document.getElementById("vergauge").contentWindow.reset();
document.getElementById("vergauge").contentWindow.setVal(factorsVer[params.simulator]);
$('.simulatorgauge').show();
simulatorFactorHor = factorsHor[menuParams.simulator]*1000;
simulatorFactorVer = factorsVer[menuParams.simulator]*1000;
if (scaleType == 'slider') {
const fHor = simulatorFactorHor/1000;
menuParams['scale H'] = fHor;
const mxHor = Math.pow(10, Math.floor(Math.log10(fHor))+1);
scaleHor.max(mxHor);
scaleHor.min(mxHor/100);
scaleHor.step(mxHor/1000);
scaleHor.setValue(fHor);
const fVer = simulatorFactorVer/1000;
menuParams['scale V'] = fVer;
const mxVer = Math.pow(10, Math.floor(Math.log10(fVer))+1);
scaleVer.max(mxVer);
scaleVer.min(mxVer/100);
scaleVer.step(mxVer/1000);
scaleVer.setValue(fVer);
}
else {
document.getElementById("horgauge").contentWindow.maxval = Math.pow(10, Math.floor(Math.log10(factorsHor[params.simulator]))+2);
document.getElementById("horgauge").contentWindow.reset();
document.getElementById("horgauge").contentWindow.setVal(factorsHor[params.simulator]);
document.getElementById("vergauge").contentWindow.maxval = Math.pow(10, Math.floor(Math.log10(factorsVer[params.simulator]))+2);
document.getElementById("vergauge").contentWindow.reset();
document.getElementById("vergauge").contentWindow.setVal(factorsVer[params.simulator]);
$('.simulatorgauge').show();
}
// $('#applicationFrame').attr("src", "/spa/index.html?s=simulator&src="+params.simulator+(document.location.search.indexOf('demo')>-1? '&demo': ''));
// $("#applicationFrame").height(window.innerHeight);
}
}
function simulatorRender(facility, val, simulator) {
// console.log('simulatorRender(), val', val, simulatorFactorHor);
// console.log('simulatorRender(), val', val, simulator, compData[facility]);
const dhor = [];
const dver = [];
if (val.Hor) {
......
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