diff --git a/door2d.js b/door2d.js new file mode 100644 index 0000000000000000000000000000000000000000..60af255784428d1f17a1759640cbe32a924feb21 --- /dev/null +++ b/door2d.js @@ -0,0 +1,79 @@ +// jshint esversion: 6 + const doorNaming = {}; + let doorInterval = false; + function doorInit() { + fetch((conf.doorSrcUrl+'&machine='+machine).replace('?&','?'), {cache: "no-store"}) + .then((response) => {return response.json();}) + .then((doorList) => { + for (let facility in doorList) { + doorNaming[facility] = []; + for (let d=0; d<doorList[facility].length; d++) { + if (doorNaming[facility][d] == "") continue; + doorNaming[facility][d] = doorList[facility][d]; + const id = doorNaming[facility][d].replace('.', '_'); + $('#'+id).css('fill', 'gray'); + $('#'+id).css('stroke', 'gray'); + // console.log('doorNaming', facility, doorNaming[facility], d, id); + } + } + doorInterval = setInterval(doorRead, 1000); + }); + } + function doorMenu(menuParams) { + // console.log('doorMenu', menuParams, (conf.doorSrcUrl+'&machine='+machine).replace('?&','?')); + menuParams.door = document.location.search.indexOf('door')>-1; + gui.add(menuParams, 'door').name('doors').onChange(function() {doorSwitch(menuParams);}); + if (menuParams.door) { + doorInit(); + } + } + + function door2d(lattice, menuParams) { + console.log('door2d',lattice, menuParams); + $('.doorpss').css('fill', 'gray'); + $('.doorpss').css('stroke', 'gray'); + doorMenu(menuParams); + } + function doorSwitch(menuParams) { + console.log('doorSwitch()',menuParams, menuParams.door); + if (doorInterval !== false) { + clearInterval(doorInterval); + } + doorInterval = false; + if (menuParams.door==false) { + for (let facility in doorNaming) { + for (let d=0; d<doorNaming[facility].length; d++) { + const id = doorNaming[facility][d].replace('.', '_'); + $('#'+id).css('fill', 'gray'); + $('#'+id).css('stroke', 'gray'); + // console.log('doorNaming', facility, doorNaming[facility], d, id); + } + } + } + else { + if ($.isEmptyObject(doorNaming)) doorInit(); + else { + doorRead(); + doorInterval = setInterval(doorRead, 1000); + } + } + } + function doorRender(val) { + for (let facility in val) { + for (let d=0; d<val[facility].door.length; d++) { + if (typeof doorNaming[facility][d]=='undefined') continue; + const id = doorNaming[facility][d].replace('.', '_'); + $('#'+id).css('fill', val[facility].door[d]!=1? '#00000000': (val[facility].hold[d]==1 != facility=='sr'? 'yellow': 'white')); + $('#'+id).css('stroke', val[facility].door[d]!=1? 'red': '#00000000'); + // console.log('doorNaming', facility, doorNaming[facility], d, id); + } + } + } + function doorRead() { + fetch((conf.doorUrl+'&machine='+machine).replace('?&','?'), {cache: "no-store"}) + .then((response) => {return response.json();}) + .then((eventData) => { + // console.log('fetch()',(conf.doorUrl+'&machine='+machine).replace('?&','?'), eventData); + doorRender(eventData); + }); + }