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

Update simulator2d.js

parent 84d160fd
Branches master
Tags 1.0.8
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