diff --git a/gof2d.js b/gof2d.js index 4798d18c37cf9b5bc2e596c6ea54c4b183c3028a..eacba7df37e87046fb1f7495df2fe93d11c4c492 100644 --- a/gof2d.js +++ b/gof2d.js @@ -3,31 +3,32 @@ // sr/feedback/profile_s->GetSrCorrNames // sr/feedback/profile_s/OrbitHorFast let gofFactorsHor, gofFactorsVer; - let gofSt, gofFps, gofMaxFps, gofDataTs, gPos; + let gofSt, gofFps, gofDataTs, gPos; + let gofMaxFps = 25; function getParam(param, defaultValue) { if (document.location.search.indexOf(param+'=')>-1) return document.location.search.split(param+'=')[1].split('&')[0]; return defaultValue; } if (document.location.search.indexOf('machine=esrf')>-1 || document.location.search.indexOf('machine=gof_esrf')>-1) { - gofFactorsHor = {"": 1, "position": 100000, 'beta': 0.2, 'eta': 100, 'mu': 0.2, 'sigma': 20000000000}; - gofFactorsVer = {"": 1, "position": 1, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000000000}; + gofFactorsHor = {"": 1, "corr": 100000, 'beta': 0.2, 'eta': 100, 'mu': 0.2, 'sigma': 20000000000}; + gofFactorsVer = {"": 1, "corr": 1, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000000000}; } else if (document.location.search.indexOf('machine=gof_soleil')>-1) { - gofFactorsHor = {"": 1, "position": 50000, 'beta': 0.2, 'eta': 50, 'mu': 0.2, 'sigma': 20000000000}; - gofFactorsVer = {"": 1, "position": 10000, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000000000}; + gofFactorsHor = {"": 1, "corr": 50000, 'beta': 0.2, 'eta': 50, 'mu': 0.2, 'sigma': 20000000000}; + gofFactorsVer = {"": 1, "corr": 10000, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000000000}; } else if (document.location.search.indexOf('machine=elettra2')>-1) { - gofFactorsHor = {"": 1, "position": 500000, 'beta': 0.2, 'eta': 50, 'mu': 0.2, 'sigma': 20000000000}; - gofFactorsVer = {"": 1, "position": 500000, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000000000}; + gofFactorsHor = {"": 1, "corr": 500000, 'beta': 0.2, 'eta': 50, 'mu': 0.2, 'sigma': 20000000000}; + gofFactorsVer = {"": 1, "corr": 500000, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000000000}; } else { - gofFactorsHor = {"": 1, "position": getParam('positionScaleH', 0.005), 'beta': 0.5, 'eta': 100, 'mu': 0.2, 'sigma': 5000000000000}; - gofFactorsVer = {"": 1, "position": getParam('positionScaleV', 0.005), 'beta': 0.25, 'eta': 100, 'mu': 0.2, 'sigma': 5000000000000}; + gofFactorsHor = {"": 1, "corr": getParam('positionScaleH', 0.005), 'beta': 0.5, 'eta': 100, 'mu': 0.2, 'sigma': 5000000000000}; + gofFactorsVer = {"": 1, "corr": getParam('positionScaleV', 0.005), 'beta': 0.25, 'eta': 100, 'mu': 0.2, 'sigma': 5000000000000}; } let gof = document.location.search.indexOf('gof=')>-1? document.location.search.split('gof=')[1].split('&')[0]: ''; - const gofTimeout = document.location.search.indexOf('gofTimeout=')>-1? document.location.search.split('gofTimeout=')[1].split('&')[0]: 40; + const gofTimeout = document.location.search.indexOf('gofTimeout=')>-1? document.location.search.split('gofTimeout=')[1].split('&')[0]: 10; const gofPeriod = document.location.search.indexOf('gofPeriod=')>-1? document.location.search.split('gofPeriod=')[1].split('&')[0]: 200; - const gofDisplayerPeriod = document.location.search.indexOf('gofDisplayerPeriod=')>-1? document.location.search.split('gofDisplayerPeriod=')[1].split('&')[0]: 200; + const gofDisplayerPeriod = document.location.search.indexOf('gofDisplayerPeriod=')>-1? document.location.search.split('gofDisplayerPeriod=')[1].split('&')[0]: 40; const gofVisibility = gof==''? 'hidden': 'visible'; const gofScaleType = 'slider'; const gofSimfacilities = []; @@ -43,7 +44,7 @@ const gofScaleSteps = 10; // let ruler = document.location.search.indexOf('ruler')>-1; rulerInit(); - main.addEventListener('mousemove', function(e) {getRulerPosition(main, e, 'sr');}); + // main.addEventListener('mousemove', function(e) {getRulerposition(main, e, 'sr');}); if (ruler) { main.style.cursor = 'crosshair'; } @@ -56,12 +57,12 @@ const action = param.split('_')[1]; if (action=='set') { localStorage.setItem('reference'+gof+dir, gofBuffer[dir=='hor'? 0: 1]); - $("#sr_gofreference"+dir).attr('gofVisibility', "visible"); + $("#sr_gofreference"+dir).attr('visibility', "visible"); } if (action=='clear') { localStorage.removeItem('reference'+gof+dir); localStorage.removeItem('scale'+gof+dir); - $("#sr_gofreference"+dir).attr('gofVisibility', "hidden"); + $("#sr_gofreference"+dir).attr('visibility', "hidden"); } } function elapseHor(step, up) { @@ -134,10 +135,6 @@ function fpsSet(v) { gofMaxFps = v; } -/* -$("#fps")[0].getBoundingClientRect(); -jQuery('<div>', { id: 'id2', style: 'min-width: 45px; min-height: 3px; position: absolute; background-color: yellow; left: 1480px; top: 450px;', class: 'some-class some-other-class', title: 'now this div has a title!',}).appendTo('body'); -*/ function gofMenu(lattice, facilities, params) { console.log('gofMenu',lattice, facilities, params, gui); $('#notice').hide(); @@ -147,16 +144,19 @@ jQuery('<div>', { id: 'id2', style: 'min-width: 45px; min-height: 3px; pos // params.gof = false; $('.gofhor').css('display', 'none'); $('.gofver').css('display', 'none'); - params.gof = document.location.search.indexOf('gof')>-1 && document.location.search.indexOf('=gof')==-1? 'position': ''; + params.gof = document.location.search.indexOf('gof')>-1 && document.location.search.indexOf('=gof')==-1? 'corr': ''; if (document.location.search.indexOf('gof=')>-1) params.gof = document.location.search.split('gof=')[1].split('&')[0]; - const options = ['', 'position', 'beta', 'eta', 'mu', 'sigma']; - if (options.indexOf(params.gof)==-1) params.gof = 'position'; + const options = ['', 'corr']; + if (options.indexOf(params.gof)==-1) params.gof = 'corr'; gui.add(params, 'gof', options).name('gof H <img id="h" src="red.svg" style="margin-bottom: -4px;"> V <img id="v" src="green.svg" style="margin-bottom: -4px;"> ').onChange(function() {gofSwitch(compData, params);}); const maxVer = Math.pow(10, Math.floor(Math.log10(gofFactorVer/1000))+2); const maxHor = Math.pow(10, Math.floor(Math.log10(gofFactorHor/1000))+2); - menuParams['fps'] = 5; - gofFpsMenu = gui.add(menuParams, 'fps', 0.1, 20, 0.5).onChange(function() {fpsSet(menuParams['fps']);}); // .title('fps (max)') + menuParams['fps'] = gofMaxFps; + gofFpsMenu = gui.add(menuParams, 'fps', 0.5, 25, 0.5).onChange(function() {fpsSet(menuParams['fps']);}); // .title('fps (max)') guiconf(gui, 'fps'); + gPos = $("#fps").children().eq(1).children()[0].getBoundingClientRect(); + jQuery('<div>', {id: 'fpsr', style: 'z-index: 1000; min-width: 45px; min-height: 3px; position: absolute; background-color: yellow; left: '+(gPos.left+0)+'px; top: '+(gPos.top+gPos.height-3)+'px;', title: 'fps',}).appendTo('body'); + // $('#fpsr').hide(); if (gofScaleType == 'slider') { /*menuParams['ruler'] = ruler; gui.add(menuParams, 'ruler').onChange(function() {rulerSwitch();}); @@ -220,11 +220,8 @@ jQuery('<div>', { id: 'id2', style: 'min-width: 45px; min-height: 3px; pos Math.round(compData[facility].pos[i][1] + f*1.05*Math.cos(beta)) ); } - appendSvg("path", {id:facility+"_gofhor", class: "gofhor trajectory "+facility, gofVisibility:gofVisibility, name:"gofhor", fill: "none", "stroke-width":"150", "stroke":"red", "stroke-opacity":"0.6", d: dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, gof_clicked_hor, false, false, '.svg-pan-zoom_viewport'); - // appendSvg("path", {id:facility+"_gofreferencehor", class: "gofhor trajectory "+facility, gofVisibility:gofVisibility, name:"gofreferencehor", fill: "none", "stroke-width":"150", "stroke":"darkred", "stroke-opacity":"0.9", d: dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, gof_clicked_hor, false, false, '.svg-pan-zoom_viewport'); - appendSvg("path", {id:facility+"_gofver", class: "gofver trajectory "+facility, gofVisibility:gofVisibility, name:"gofver", fill: "none", "stroke-width":"150", "stroke":"limegreen", "stroke-opacity":"0.6", d: dver.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, gof_clicked_ver, false, false, '.svg-pan-zoom_viewport'); - // appendSvg("path", {id:facility+"_gofreferencever", class: "gofver trajectory "+facility, gofVisibility:gofVisibility, name:"gofreferencever", fill: "none", "stroke-width":"150", "stroke":"darkgreen", "stroke-opacity":"0.9", d: dver.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, gof_clicked_ver, false, false, '.svg-pan-zoom_viewport'); - // console.log("path", {id:facility+"_gofhor", name:"gofhor", d: dver.join(' ')+' Z'}); + appendSvg("path", {id:facility+"_gofhor", class: "gofhor trajectory "+facility, visibility:gofVisibility, name:"gofhor", fill: "none", "stroke-width":"150", "stroke":"red", "stroke-opacity":"0.6", d: dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, gof_clicked_hor, false, false, '.svg-pan-zoom_viewport'); + appendSvg("path", {id:facility+"_gofver", class: "gofver trajectory "+facility, visibility:gofVisibility, name:"gofver", fill: "none", "stroke-width":"150", "stroke":"limegreen", "stroke-opacity":"0.6", d: dver.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, gof_clicked_ver, false, false, '.svg-pan-zoom_viewport'); } } rulerScale(''); @@ -249,8 +246,6 @@ jQuery('<div>', { id: 'id2', style: 'min-width: 45px; min-height: 3px; pos } function gofSwitch(gofData, params) { gof = params.gof; - // $("#sr_gofreferencehor").attr('gofVisibility', "hidden"); - // $("#sr_gofreferencever").attr('gofVisibility', "hidden"); gofScaleHor.$fill.style.width = "50%"; gofScaleVer.$fill.style.width = "50%"; if (gofData.reader !== false) { @@ -259,15 +254,14 @@ jQuery('<div>', { id: 'id2', style: 'min-width: 45px; min-height: 3px; pos gofData.reader = false; if (params.gof=='') { for (let facility in gofData) { - if (typeof $('#'+facility+"_gofhor").attr('gofVisibility') != 'undefined') { - $('#'+facility+"_gofhor").attr('gofVisibility', "hidden"); - $('#'+facility+"_gofver").attr('gofVisibility', "hidden"); - // $('#'+facility+"_gofreferencehor").attr('gofVisibility', "hidden"); - // $('#'+facility+"_gofreferencever").attr('gofVisibility', "hidden"); + if (typeof $('#'+facility+"_gofhor").attr('visibility') != 'undefined') { + $('#'+facility+"_gofhor").attr('visibility', "hidden"); + $('#'+facility+"_gofver").attr('visibility', "hidden"); } } $('.gofgauge').hide(); $('#fps').hide(); + $('#fpsr').hide(); $('#scaleh').hide(); $('#scalev').hide(); $('#ruler').hide(); @@ -276,30 +270,28 @@ jQuery('<div>', { id: 'id2', style: 'min-width: 45px; min-height: 3px; pos $('#trajectoryWidth').hide(); $('#application').hide(); $('#applicationReference').hide(); - gofData.reader.clearInterval(); + gofData.reader.clearInterval(); + gofMaxFps = 0; } else { // $('#application').show(); // $('#applicationReference').show(); $('#fps').show(); + $('#fpsr').show(); $('#scaleh').show(); $('#scalev').show(); $('#trajectoryWidth').show(); $('#ruler').show(); $('#notice').show(); - gPos = $("#fps").children().eq(1).children()[0].getBoundingClientRect(); - jQuery('<div>', {id: 'fpsr', style: 'z-index: 1000; min-width: 45px; min-height: 3px; position: absolute; background-color: yellow; left: '+(gPos.left+0)+'px; top: '+(gPos.top+gPos.height-3)+'px;', class: 'some-class some-other-class', title: 'now this div has a title!',}).appendTo('body'); for (let facility in gofData) { - if (typeof $('#'+facility+"_gofhor").attr('gofVisibility') != 'undefined') { - $('#'+facility+"_gofhor").attr('gofVisibility', "visible"); - $('#'+facility+"_gofver").attr('gofVisibility', "visible"); + if (typeof $('#'+facility+"_gofhor").attr('visibility') != 'undefined') { + $('#'+facility+"_gofhor").attr('visibility', "visible"); + $('#'+facility+"_gofver").attr('visibility', "visible"); } - // console.log('#'+facility+"_gofhor", $('#'+facility+"_gofhor").attr('gofVisibility'), typeof gofData[facility]); if (typeof gofData[facility] == 'undefined' || typeof gofData[facility].corrMap == 'undefined') continue; gofData.oldIndex = facility; gofRead(gofData, params); } - /* */ displayer = setInterval(gofDisplay, gofDisplayerPeriod, params); if (gofTimeout) { setTimeout(gofRead, gofTimeout, gofData, params); @@ -307,7 +299,6 @@ jQuery('<div>', { id: 'id2', style: 'min-width: 45px; min-height: 3px; pos else { gofData.reader = setInterval(gofRead, gofPeriod, gofData, params); } - /* */ $('.gofhor').css('display', 'block'); $('.gofver').css('display', 'block'); gofFactorHor = localStorage.getItem('scale'+gof+'hor')!=null? localStorage.getItem('scale'+gof+'hor')-0: gofFactorsHor[menuParams.gof]*1000; @@ -337,6 +328,9 @@ jQuery('<div>', { id: 'id2', style: 'min-width: 45px; min-height: 3px; pos document.getElementById("vergauge").contentWindow.setVal(gofFactorsVer[params.gof]); $('.gofgauge').show(); } + gPos = $("#fps").children().eq(1).children()[0].getBoundingClientRect(); + $('#fpsr').css('left', gPos.left); + $('#fpsr').css('top', gPos.top+gPos.height-3); } } function gofRender(facility, gb, gof) { @@ -392,7 +386,7 @@ jQuery('<div>', { id: 'id2', style: 'min-width: 45px; min-height: 3px; pos const gofOldSt = gofSt; gofSt = new Date(); gofFps = 1000/(gofSt-gofOldSt); - $('#fpsr').css('min-width', gofFps/20*gPos.width); + if (gofFps<30) $('#fpsr').css('min-width', gofFps/20*gPos.width); // console.log(1000/(gofSt-gofOldSt)); $('#lt').html(gofSt.getFullYear()+'-'+pad(gofSt.getMonth()+1, 2)+'-'+pad(gofSt.getDate(), 2)+' '+pad(gofSt.getHours(), 2)+':'+pad(gofSt.getMinutes(), 2)+':'+pad(gofSt.getSeconds(), 2)); fetch((conf.gofUrl+'&machine='+machine+'¶m='+params.gof).replace('?&','?'), {cache: "no-store"}) @@ -410,6 +404,12 @@ jQuery('<div>', { id: 'id2', style: 'min-width: 45px; min-height: 3px; pos const gofMinPeriod = 1000/gofMaxFps; const elapsed = new Date() - gofSt; const gp = gofMinPeriod-elapsed > gofTimeout? gofMinPeriod-elapsed: gofTimeout; - setTimeout(gofRead, gp, gofData, params); + if (params.gof!='') setTimeout(gofRead, gp, gofData, params); + }) + .catch((err) => { + const gofMinPeriod = 1000/gofMaxFps; + const elapsed = new Date() - gofSt; + const gp = gofMinPeriod-elapsed > gofTimeout? gofMinPeriod-elapsed: gofTimeout; + if (params.gof!='') setTimeout(gofRead, gp, gofData, params); }); }