From 79b291418367ad51a331b3b4f1c603d8fd6e6cd9 Mon Sep 17 00:00:00 2001
From: y0083088 <j.rode@tu-bs.de>
Date: Tue, 29 Jun 2021 10:38:57 +0200
Subject: [PATCH] Added fullscreen_listener function and with it the automatic
 resize for entering and exiting the fullscreen mode

---
 graph.js | 28 +++++++++++++++++++++-------
 1 file changed, 21 insertions(+), 7 deletions(-)

diff --git a/graph.js b/graph.js
index 25eb93c..b33c1b0 100644
--- a/graph.js
+++ b/graph.js
@@ -7,7 +7,6 @@ let firstTick = true;
 const colorPallette = ['rgb(104, 169, 77)', 'rgb(102, 75, 154)', 'rgb(41, 171, 226)', 'rgb(224, 133, 35)',
     'rgb(214, 207, 126)', 'rgb(239, 65, 35)', 'rgb(255, 255, 255)'];
 const edgeColors = {};
-var graph_element = document.getElementById('3d-graph');
 
 loadGraph();
 
@@ -29,7 +28,8 @@ async function loadGraph() {
         .nodeThreeObjectExtend(false)
         .nodeThreeObject(drawNode)
         .onEngineTick(loadComponents)
-        .width(getWidth());
+        .width(getWidth())
+        .height(969);
     //Graph.renderer().sortObjects = true;
 }
 
@@ -42,12 +42,13 @@ function loadComponents() {
         createLinkOverlay();
         createInfoOverlay();
         add_fullscreen_mode_button();
+        add_fullscreen_Listener();
         firstTick = false;
     }
 }
 
 function getWidth() {
-    return graph_element.parentElement.offsetWidth;
+    return document.getElementById('3d-graph').offsetWidth;
 }
 
 function mapEdgeColors() {
@@ -186,21 +187,34 @@ function createLinkOverlay() {
 }
 
 function add_fullscreen_mode_button() {
-    const sceneNode = getCanvasDivNode();
+    const sceneNode = document.getElementById('3d-graph');
     const overlayNode = document.createElement('button');
     overlayNode.className = 'fullscreen_button';
     overlayNode.innerText = 'fullscreen';
     overlayNode.addEventListener("click", fullscreen_mode);
-    sceneNode.insertBefore(overlayNode, sceneNode.childNodes[2]);
+    sceneNode.appendChild(overlayNode);
 }
 
 function fullscreen_mode(){
+    if(getCanvasDivNode().requestFullscreen) {
+        getCanvasDivNode().requestFullscreen().catch();
+    }
+}
 
-    if(graph_element.requestFullscreen) {
-        graph_element.requestFullscreen().catch();
+function resize_canvas() {
+    if(document.fullscreenElement == getCanvasDivNode()) {
+        Graph.height(getCanvasDivNode().height);
+        Graph.width(getCanvasDivNode().width);
+    } else {
+        Graph.height(969);
+        Graph.width(getWidth());
     }
 }
 
+function add_fullscreen_Listener() {
+    getCanvasDivNode().addEventListener("fullscreenchange", resize_canvas);
+}
+
 function add_background() {
     const sphereGeometry = new THREE.SphereGeometry(20000, 32, 32);
     //const planeGeometry = new THREE.PlaneGeometry(1000, 1000, 1, 1);
-- 
GitLab