Skip to content
Snippets Groups Projects
door2d.js 2.8 KiB
Newer Older
Lucio Zambon's avatar
Lucio Zambon committed
// 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);
		});
	}