From 298c9831e200bef017cba335c6a75cee3bcc8dc1 Mon Sep 17 00:00:00 2001
From: Lucio Zambon <lucio.zambon@elettra.eu>
Date: Thu, 28 Nov 2024 01:02:14 +0000
Subject: [PATCH] Add new file

---
 door2d.js | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 79 insertions(+)
 create mode 100644 door2d.js

diff --git a/door2d.js b/door2d.js
new file mode 100644
index 0000000..60af255
--- /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);
+		});
+	}
-- 
GitLab