From 640d9de6818903b262de773801170f809525d686 Mon Sep 17 00:00:00 2001 From: Rushi _ MUFC <rushikesh.padsala@hft-stuttgart.de> Date: Thu, 1 Jun 2023 12:54:48 +0200 Subject: [PATCH] Updated Stoekack energy dashboard example --- .../CSS/EnergyDashboard.css | 140 ------- public/StoeckachEnergyDashboard/CSS/index.css | 168 +++++++-- public/StoeckachEnergyDashboard/Source/App.js | 27 +- .../Source/AppSkeleton.js | 342 ------------------ public/StoeckachEnergyDashboard/index.html | 6 +- 5 files changed, 145 insertions(+), 538 deletions(-) delete mode 100644 public/StoeckachEnergyDashboard/CSS/EnergyDashboard.css delete mode 100644 public/StoeckachEnergyDashboard/Source/AppSkeleton.js diff --git a/public/StoeckachEnergyDashboard/CSS/EnergyDashboard.css b/public/StoeckachEnergyDashboard/CSS/EnergyDashboard.css deleted file mode 100644 index 394e13b..0000000 --- a/public/StoeckachEnergyDashboard/CSS/EnergyDashboard.css +++ /dev/null @@ -1,140 +0,0 @@ -/* -html, -body, -*/ - -#Navbar { - overflow: hidden; -} - -html, -body { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - font-family: sans-serif; -} - -.container { - display: grid; - grid-template-columns: 1fr 1fr; - height: 100vh; - background-color: #ffffff; -} - -.cesium-container { - grid-column: 1; - background: #000; -} - -.chart-container { - max-width: 800px; - margin: 20px auto; - background-color: #ffffff; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); - padding: 20px; - display: flex; - justify-content: center; - align-items: center; -} - -#myChart2 { - max-width: 400px; - max-height: 400px; - width: 100%; - height: 100%; -} - -.backdrop { - display: inline-block; - background: rgba(42, 42, 42, 0.7); - border-radius: 5px; - border: 1px solid #444; - color: #fff; - line-height: 150%; - font-size: small; - box-shadow: 0 0 10px 1px #000; -} - -button.cesium-infoBox-camera { - display: none; -} - -.cesium-infoBox { - - width: 80%; - height: auto; - right: 5px; - background: rgba(0, 0, 0, 0.65); - border-radius: 10px; - border: 1px solid #444; - padding: 5px 10px; - color: #fff; - font: 1em "Fira Sans", sans-serif; - float: right; -} - -.cesium-infoBox-title { - background: rgba(0, 0, 0, 0); - font: 1em "Fira Sans", sans-serif; -} - -.cesium-infoBox-close { - z-index: 99999; -} - -#legend { - position: relative; - left: 5px; - top: 5px; -} - -.my-legend .legend-title { - text-align: left; - margin-bottom: 5px; - font-weight: bold; - font-size: 90%; -} - -.my-legend .legend-scale ul { - margin: 0; - margin-bottom: 5px; - padding: 0; - float: left; - list-style: none; -} - -.my-legend .legend-scale ul li { - list-style: none; - margin-left: 0; - line-height: 18px; - margin-bottom: 2px; -} - -.my-legend ul.legend-labels li span { - display: block; - float: left; - height: 16px; - width: 30px; - margin-right: 5px; - margin-left: 0; - border: 1px solid #999; -} - -.my-legend a { - color: #777; -} - -.credit { - width: 100px; - height: 100px; - overflow: hidden; - position: fixed; - z-index: 99999; - background: url(Images/hft.jpg) no-repeat; - background-size: 100px; - bottom: 40px; - left: 10px; - box-shadow: 0 0 10px 1px #000; -} diff --git a/public/StoeckachEnergyDashboard/CSS/index.css b/public/StoeckachEnergyDashboard/CSS/index.css index 9b640f8..aacea85 100644 --- a/public/StoeckachEnergyDashboard/CSS/index.css +++ b/public/StoeckachEnergyDashboard/CSS/index.css @@ -1,42 +1,51 @@ -.backdrop { - display: inline-block; - background: rgba(42, 42, 42, 0.7); - border-radius: 5px; - border: 1px solid #444; - padding: 5px 10px; - color: #fff; - line-height: 150%; - font-size: small; +html, +body { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + font-family: sans-serif; } -#heightSliderLabel, #heightValue { - vertical-align: top; +button.cesium-infoBox-camera { + display: none; } -.backdrop a:link, .backdrop a:visited, .backdrop a:hover { - color: #fff +#Navbar { + overflow: hidden; } -.loadingIndicator { - display: none; - position: absolute; - top: 50%; - left: 50%; - margin-top: -33px; - margin-left: -33px; - width: 66px; - height: 66px; - background: url(Source/Images/ajax-loader.gif) center no-repeat; +.container { + display: grid; + grid-template-columns: 1fr 1fr; + height: 100vh; + background-color: #ffffff; } -.cover { - display: none; - position: absolute; - background-color: rgba(0, 0, 0, 0.75); - top: 0; - left: 0; - right: 0; - bottom: 0; +.cesium-container { + grid-column: 1; + background: #000; +} + +#cesiumContainer { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + overflow: hidden; + font-family: sans-serif; + background: #000; +} + +.chart-container { + max-width: 800px; + margin: 20px auto; + background-color: #ffffff; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + padding: 20px; + display: flex; + justify-content: center; + align-items: center; } #menu { @@ -48,21 +57,100 @@ .nowrap { white-space: nowrap; } - -html, body, #cesiumContainer { + +#myChart2 { + max-width: 400px; + max-height: 400px; width: 100%; height: 100%; +} + +.backdrop { + display: inline-block; + background: rgba(42, 42, 42, 0.7); + border-radius: 5px; + border: 1px solid #444; + color: #fff; + line-height: 150%; + font-size: small; + box-shadow: 0 0 10px 1px #000; +} + +.cesium-infoBox { + + width: 80%; + height: auto; + right: 5px; + background: rgba(0, 0, 0, 0.65); + border-radius: 10px; + border: 1px solid #444; + padding: 5px 10px; + color: #fff; + font: 1em "Fira Sans", sans-serif; + float: right; +} + +.cesium-infoBox-title { + background: rgba(0, 0, 0, 0); + font: 1em "Fira Sans", sans-serif; +} + +.cesium-infoBox-close { + z-index: 99999; +} + +#legend { + position: relative; + left: 5px; + top: 5px; +} + +.my-legend .legend-title { + text-align: left; + margin-bottom: 5px; + font-weight: bold; + font-size: 90%; +} + +.my-legend .legend-scale ul { margin: 0; + margin-bottom: 5px; padding: 0; - overflow: hidden; - font-family: sans-serif; - background: #000; + float: left; + list-style: none; } -button.cesium-infoBox-camera { - display: none; +.my-legend .legend-scale ul li { + list-style: none; + margin-left: 0; + line-height: 18px; + margin-bottom: 2px; } -#3DTiles { - padding-top: 10px; +.my-legend ul.legend-labels li span { + display: block; + float: left; + height: 16px; + width: 30px; + margin-right: 5px; + margin-left: 0; + border: 1px solid #999; } + +.my-legend a { + color: #777; +} + +.credit { + width: 100px; + height: 100px; + overflow: hidden; + position: fixed; + z-index: 99999; + background: url(Images/hft.jpg) no-repeat; + background-size: 100px; + bottom: 40px; + left: 10px; + box-shadow: 0 0 10px 1px #000; +} + diff --git a/public/StoeckachEnergyDashboard/Source/App.js b/public/StoeckachEnergyDashboard/Source/App.js index 823b342..d8ac7d0 100644 --- a/public/StoeckachEnergyDashboard/Source/App.js +++ b/public/StoeckachEnergyDashboard/Source/App.js @@ -164,22 +164,23 @@ // Chart.js code - // Fetch GeoJSON data + // Fetch GeoJSON data - please install CORS plugin otherwise this will not work fetch('https://ugl.hft-stuttgart.de/leaflet-stoeckach-heatdemand/building_data.json') .then(response => response.json()) .then(data => { - // Extract the "Year_of_co" and "BuildingTy" values - - var buildingYoc = data.features.map(function(feature) { + // Define array, extract and store the "Year_of_co" and "BuildingTy" values + // Array is a special variable which can store valies. It is a common practice to store array using "const" keyword but donot understant it as a constant value. + // Here const means array buildingYoc cannot be re-declared elsewhere + const buildingYoc = data.features.map(function(feature) { return feature.properties.Year_of_co; }); - var buildingType = data.features.map(function(feature) { + const buildingType = data.features.map(function(feature) { return feature.properties.BuildingTy; }); - // Count the occurrences of each year of construction - var yocCounts = {}; + // Count the occurrences of each year of construction and store it in array yocCounts + const yocCounts = {}; buildingYoc.forEach(function(Year_of_co) { if (yocCounts[Year_of_co]) { yocCounts[Year_of_co]++; @@ -188,8 +189,8 @@ } }); - // Count the occurrences of each building type - var bldgtypeCounts = {}; + // Count the occurrences of each building type and store it in array bldgtypeCounts + const bldgtypeCounts = {}; buildingType.forEach(function(BuildingTy) { if (bldgtypeCounts[BuildingTy]) { bldgtypeCounts[BuildingTy]++; @@ -199,11 +200,11 @@ }); // Prepare the chart for year of construction and building type data - var yocLabels = Object.keys(yocCounts); - var yocData = Object.values(yocCounts); + const yocLabels = Object.keys(yocCounts); + const yocData = Object.values(yocCounts); - var bldgTypeLabels = Object.keys(bldgtypeCounts); - var bldgTypeData = Object.values(bldgtypeCounts); + const bldgTypeLabels = Object.keys(bldgtypeCounts); + const bldgTypeData = Object.values(bldgtypeCounts); // Create the building year of construction distribution chart using Chart.js var ctx1 = document.getElementById('myChart1').getContext('2d'); diff --git a/public/StoeckachEnergyDashboard/Source/AppSkeleton.js b/public/StoeckachEnergyDashboard/Source/AppSkeleton.js deleted file mode 100644 index 1d01f2d..0000000 --- a/public/StoeckachEnergyDashboard/Source/AppSkeleton.js +++ /dev/null @@ -1,342 +0,0 @@ -(function () { - "use strict"; - - // TODO: Add your ion access token from cesium.com/ion/ - // Cesium.Ion.defaultAccessToken = '<YOUR ACCESS TOKEN HERE>'; - - ////////////////////////////////////////////////////////////////////////// - // Creating the Viewer - ////////////////////////////////////////////////////////////////////////// - - // var viewer = new Cesium.Viewer('cesiumContainer', { - // scene3DOnly: true, - // selectionIndicator: false, - // baseLayerPicker: false - // }); - - ////////////////////////////////////////////////////////////////////////// - // Loading Imagery - ////////////////////////////////////////////////////////////////////////// - - // // Remove default base layer - // viewer.imageryLayers.remove(viewer.imageryLayers.get(0)); - - // // Add Sentinel-2 imagery - // viewer.imageryLayers.addImageryProvider(new Cesium.IonImageryProvider({ assetId: 3954 })); - - ////////////////////////////////////////////////////////////////////////// - // Loading Terrain - ////////////////////////////////////////////////////////////////////////// - - // // Load Cesium World Terrain - // viewer.terrainProvider = Cesium.createWorldTerrain({ - // requestWaterMask : true, // required for water effects - // requestVertexNormals : true // required for terrain lighting - // }); - // // Enable depth testing so things behind the terrain disappear. - // viewer.scene.globe.depthTestAgainstTerrain = true; - - ////////////////////////////////////////////////////////////////////////// - // Configuring the Scene - ////////////////////////////////////////////////////////////////////////// - - // // Enable lighting based on sun/moon positions - // viewer.scene.globe.enableLighting = true; - - // // Create an initial camera view - // var initialPosition = new Cesium.Cartesian3.fromDegrees(-73.998114468289017509, 40.674512895646692812, 2631.082799425431); - // var initialOrientation = new Cesium.HeadingPitchRoll.fromDegrees(7.1077496389876024807, -31.987223091598949054, 0.025883251314954971306); - // var homeCameraView = { - // destination : initialPosition, - // orientation : { - // heading : initialOrientation.heading, - // pitch : initialOrientation.pitch, - // roll : initialOrientation.roll - // } - // }; - // // Set the initial view - // viewer.scene.camera.setView(homeCameraView); - - // // Add some camera flight animation options - // homeCameraView.duration = 2.0; - // homeCameraView.maximumHeight = 2000; - // homeCameraView.pitchAdjustHeight = 2000; - // homeCameraView.endTransform = Cesium.Matrix4.IDENTITY; - // // Override the default home button - // viewer.homeButton.viewModel.command.beforeExecute.addEventListener(function (e) { - // e.cancel = true; - // viewer.scene.camera.flyTo(homeCameraView); - // }); - - // // Set up clock and timeline. - // viewer.clock.shouldAnimate = true; // default - // viewer.clock.startTime = Cesium.JulianDate.fromIso8601("2017-07-11T16:00:00Z"); - // viewer.clock.stopTime = Cesium.JulianDate.fromIso8601("2017-07-11T16:20:00Z"); - // viewer.clock.currentTime = Cesium.JulianDate.fromIso8601("2017-07-11T16:00:00Z"); - // viewer.clock.multiplier = 2; // sets a speedup - // viewer.clock.clockStep = Cesium.ClockStep.SYSTEM_CLOCK_MULTIPLIER; // tick computation mode - // viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP; // loop at the end - // viewer.timeline.zoomTo(viewer.clock.startTime, viewer.clock.stopTime); // set visible range - - ////////////////////////////////////////////////////////////////////////// - // Loading and Styling Entity Data - ////////////////////////////////////////////////////////////////////////// - - // var kmlOptions = { - // camera : viewer.scene.camera, - // canvas : viewer.scene.canvas, - // clampToGround : true - // }; - // // Load geocache points of interest from a KML file - // // Data from : http://catalog.opendata.city/dataset/pediacities-nyc-neighborhoods/resource/91778048-3c58-449c-a3f9-365ed203e914 - // var geocachePromise = Cesium.KmlDataSource.load('./Source/SampleData/sampleGeocacheLocations.kml', kmlOptions); - - // // Add geocache billboard entities to scene and style them - // geocachePromise.then(function(dataSource) { - // // Add the new data as entities to the viewer - // viewer.dataSources.add(dataSource); - - // // Get the array of entities - // var geocacheEntities = dataSource.entities.values; - - // for (var i = 0; i < geocacheEntities.length; i++) { - // var entity = geocacheEntities[i]; - // if (Cesium.defined(entity.billboard)) { - // // Adjust the vertical origin so pins sit on terrain - // entity.billboard.verticalOrigin = Cesium.VerticalOrigin.BOTTOM; - // // Disable the labels to reduce clutter - // entity.label = undefined; - // // Add distance display condition - // entity.billboard.distanceDisplayCondition = new Cesium.DistanceDisplayCondition(10.0, 20000.0); - // // Compute latitude and longitude in degrees - // var cartographicPosition = Cesium.Cartographic.fromCartesian(entity.position.getValue(Cesium.JulianDate.now())); - // var latitude = Cesium.Math.toDegrees(cartographicPosition.latitude); - // var longitude = Cesium.Math.toDegrees(cartographicPosition.longitude); - // // Modify description - // var description = '<table class="cesium-infoBox-defaultTable cesium-infoBox-defaultTable-lighter"><tbody>' + - // '<tr><th>' + "Longitude" + '</th><td>' + longitude.toFixed(5) + '</td></tr>' + - // '<tr><th>' + "Latitude" + '</th><td>' + latitude.toFixed(5) + '</td></tr>' + - // '</tbody></table>'; - // entity.description = description; - // } - // } - // }); - - // var geojsonOptions = { - // clampToGround : true - // }; - // // Load neighborhood boundaries from a GeoJson file - // // Data from : https://data.cityofnewyork.us/City-Government/Neighborhood-Tabulation-Areas/cpf4-rkhq - // var neighborhoodsPromise = Cesium.GeoJsonDataSource.load('./Source/SampleData/sampleNeighborhoods.geojson', geojsonOptions); - - // // Save an new entity collection of neighborhood data - // var neighborhoods; - // neighborhoodsPromise.then(function(dataSource) { - // // Add the new data as entities to the viewer - // viewer.dataSources.add(dataSource); - // neighborhoods = dataSource.entities; - - // // Get the array of entities - // var neighborhoodEntities = dataSource.entities.values; - // for (var i = 0; i < neighborhoodEntities.length; i++) { - // var entity = neighborhoodEntities[i]; - - // if (Cesium.defined(entity.polygon)) { - // // Use kml neighborhood value as entity name - // entity.name = entity.properties.neighborhood; - // // Set the polygon material to a random, translucent color - // entity.polygon.material = Cesium.Color.fromRandom({ - // red : 0.1, - // maximumGreen : 0.5, - // minimumBlue : 0.5, - // alpha : 0.6 - // }); - // // Tells the polygon to color the terrain. ClassificationType.CESIUM_3D_TILE will color the 3D tileset, and ClassificationType.BOTH will color both the 3d tiles and terrain (BOTH is the default) - // entity.polygon.classificationType = Cesium.ClassificationType.TERRAIN; - // // Generate Polygon center - // var polyPositions = entity.polygon.hierarchy.getValue(Cesium.JulianDate.now()).positions; - // var polyCenter = Cesium.BoundingSphere.fromPoints(polyPositions).center; - // polyCenter = Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(polyCenter); - // entity.position = polyCenter; - // // Generate labels - // entity.label = { - // text : entity.name, - // showBackground : true, - // scale : 0.6, - // horizontalOrigin : Cesium.HorizontalOrigin.CENTER, - // verticalOrigin : Cesium.VerticalOrigin.BOTTOM, - // distanceDisplayCondition : new Cesium.DistanceDisplayCondition(10.0, 8000.0), - // disableDepthTestDistance : 100.0 - // }; - // } - // } - // }); - - // // Load a drone flight path from a CZML file - // var dronePromise = Cesium.CzmlDataSource.load('./Source/SampleData/SampleFlight.czml'); - - // // Save a new drone model entity - // var drone; - // dronePromise.then(function(dataSource) { - // viewer.dataSources.add(dataSource); - // // Get the entity using the id defined in the CZML data - // drone = dataSource.entities.getById('Aircraft/Aircraft1'); - // // Attach a 3D model - // drone.model = { - // uri : './Source/SampleData/Models/CesiumDrone.gltf', - // minimumPixelSize : 128, - // maximumScale : 1000, - // silhouetteColor : Cesium.Color.WHITE, - // silhouetteSize : 2 - // }; - // // Add computed orientation based on sampled positions - // drone.orientation = new Cesium.VelocityOrientationProperty(drone.position); - - // // Smooth path interpolation - // drone.position.setInterpolationOptions({ - // interpolationAlgorithm : Cesium.HermitePolynomialApproximation, - // interpolationDegree : 2 - // }); - // drone.viewFrom = new Cesium.Cartesian3(-30, 0, 0); - // }); - - ////////////////////////////////////////////////////////////////////////// - // Load 3D Tileset - ////////////////////////////////////////////////////////////////////////// - - // // Load the NYC buildings tileset - // var city = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({ url: Cesium.IonResource.fromAssetId(3839) })); - - // // Adjust the tileset height so it's not floating above terrain - // var heightOffset = -32; - // city.readyPromise.then(function(tileset) { - // // Position tileset - // var boundingSphere = tileset.boundingSphere; - // var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center); - // var surfacePosition = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0); - // var offsetPosition = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset); - // var translation = Cesium.Cartesian3.subtract(offsetPosition, surfacePosition, new Cesium.Cartesian3()); - // tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); - // }); - - ////////////////////////////////////////////////////////////////////////// - // Style 3D Tileset - ////////////////////////////////////////////////////////////////////////// - - // // Define a white, opaque building style - // var defaultStyle = new Cesium.Cesium3DTileStyle({ - // color : "color('white')", - // show : true - // }); - - // // Set the tileset style to default - // city.style = defaultStyle; - - // // Define a white, transparent building style - // var transparentStyle = new Cesium.Cesium3DTileStyle({ - // color : "color('white', 0.3)", - // show : true - // }); - - // // Define a style in which buildings are colored by height - // var heightStyle = new Cesium.Cesium3DTileStyle({ - // color : { - // conditions : [ - // ["${height} >= 300", "rgba(45, 0, 75, 0.5)"], - // ["${height} >= 200", "rgb(102, 71, 151)"], - // ["${height} >= 100", "rgb(170, 162, 204)"], - // ["${height} >= 50", "rgb(224, 226, 238)"], - // ["${height} >= 25", "rgb(252, 230, 200)"], - // ["${height} >= 10", "rgb(248, 176, 87)"], - // ["${height} >= 5", "rgb(198, 106, 11)"], - // ["true", "rgb(127, 59, 8)"] - // ] - // } - // }); - - // var tileStyle = document.getElementById('tileStyle'); - // function set3DTileStyle() { - // var selectedStyle = tileStyle.options[tileStyle.selectedIndex].value; - // if (selectedStyle === 'none') { - // city.style = defaultStyle; - // } else if (selectedStyle === 'height') { - // city.style = heightStyle; - // } else if (selectedStyle === 'transparent') { - // city.style = transparentStyle; - // } - // } - // tileStyle.addEventListener('change', set3DTileStyle); - - ////////////////////////////////////////////////////////////////////////// - // Custom mouse interaction for highlighting and selecting - ////////////////////////////////////////////////////////////////////////// - - // // If the mouse is over a point of interest, change the entity billboard scale and color - // var previousPickedEntity; - // var handler = viewer.screenSpaceEventHandler; - // handler.setInputAction(function (movement) { - // var pickedPrimitive = viewer.scene.pick(movement.endPosition); - // var pickedEntity = Cesium.defined(pickedPrimitive) ? pickedPrimitive.id : undefined; - // // Unhighlight the previously picked entity - // if (Cesium.defined(previousPickedEntity)) { - // previousPickedEntity.billboard.scale = 1.0; - // previousPickedEntity.billboard.color = Cesium.Color.WHITE; - // } - // // Highlight the currently picked entity - // if (Cesium.defined(pickedEntity) && Cesium.defined(pickedEntity.billboard)) { - // pickedEntity.billboard.scale = 2.0; - // pickedEntity.billboard.color = Cesium.Color.ORANGERED; - // previousPickedEntity = pickedEntity; - // } - // }, Cesium.ScreenSpaceEventType.MOUSE_MOVE); - - ////////////////////////////////////////////////////////////////////////// - // Setup Camera Modes - ////////////////////////////////////////////////////////////////////////// - - // var freeModeElement = document.getElementById('freeMode'); - // var droneModeElement = document.getElementById('droneMode'); - - // // Create a follow camera by tracking the drone entity - // function setViewMode() { - // if (droneModeElement.checked) { - // viewer.trackedEntity = drone; - // } else { - // viewer.trackedEntity = undefined; - // viewer.scene.camera.flyTo(homeCameraView); - // } - // } - - // freeModeElement.addEventListener('change', setViewMode); - // droneModeElement.addEventListener('change', setViewMode); - - // viewer.trackedEntityChanged.addEventListener(function() { - // if (viewer.trackedEntity === drone) { - // freeModeElement.checked = false; - // droneModeElement.checked = true; - // } - // }); - - ////////////////////////////////////////////////////////////////////////// - // Setup Display Options - ////////////////////////////////////////////////////////////////////////// - - // var shadowsElement = document.getElementById('shadows'); - // var neighborhoodsElement = document.getElementById('neighborhoods'); - - // shadowsElement.addEventListener('change', function (e) { - // viewer.shadows = e.target.checked; - // }); - - // neighborhoodsElement.addEventListener('change', function (e) { - // neighborhoods.show = e.target.checked; - // }); - - // // Finally, wait for the initial city to be ready before removing the loading indicator. - // var loadingIndicator = document.getElementById('loadingIndicator'); - // loadingIndicator.style.display = 'block'; - // city.readyPromise.then(function () { - // loadingIndicator.style.display = 'none'; - // }); - -}()); diff --git a/public/StoeckachEnergyDashboard/index.html b/public/StoeckachEnergyDashboard/index.html index 040b354..dc273e0 100644 --- a/public/StoeckachEnergyDashboard/index.html +++ b/public/StoeckachEnergyDashboard/index.html @@ -7,15 +7,15 @@ <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <!-- Make the app on mobile take up the full browser screen and disable user scaling. --> <meta name="viewport" - content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> + content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> <title>Stoeckach Energy Dashboard</title> <!-- The Cesium library. --> <script src="https://cesium.com/downloads/cesiumjs/releases/1.81/Build/Cesium/Cesium.js"></script> <link href="https://cesium.com/downloads/cesiumjs/releases/1.81/Build/Cesium/Widgets/widgets.css" rel="stylesheet"> + <!-- The Chart.js library. --> + <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <!-- stylesheets --> <link rel="stylesheet" href="./CSS/index.css" media="screen"> - <link rel="stylesheet" type="text/css" href="./CSS/EnergyDashboard.css"> - <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> </head> <body> <!-- defining container to keep cesium viewer and chart --> -- GitLab