Merge branch 'main' of https://gitea.fhgr.ch/stoffelmauro/ConsultancyProject_2_ETL
commit
818d6fb5ec
|
@ -21,14 +21,14 @@ LOG_STACK=single
|
||||||
LOG_DEPRECATIONS_CHANNEL=null
|
LOG_DEPRECATIONS_CHANNEL=null
|
||||||
LOG_LEVEL=debug
|
LOG_LEVEL=debug
|
||||||
|
|
||||||
DB_CONNECTION=sqlite
|
# DB_CONNECTION=sqlite
|
||||||
# DB_HOST=127.0.0.1
|
# DB_HOST=127.0.0.1
|
||||||
# DB_PORT=3306
|
# DB_PORT=3306
|
||||||
# DB_DATABASE=laravel
|
# DB_DATABASE=laravel
|
||||||
# DB_USERNAME=root
|
# DB_USERNAME=root
|
||||||
# DB_PASSWORD=
|
# DB_PASSWORD=
|
||||||
|
|
||||||
SESSION_DRIVER=database
|
SESSION_DRIVER=file
|
||||||
SESSION_LIFETIME=120
|
SESSION_LIFETIME=120
|
||||||
SESSION_ENCRYPT=false
|
SESSION_ENCRYPT=false
|
||||||
SESSION_PATH=/
|
SESSION_PATH=/
|
||||||
|
|
|
@ -1,8 +1,16 @@
|
||||||
# How to run
|
# Install
|
||||||
|
## Prerequisites
|
||||||
|
- In order to run this project please install all required software according to the laravel documentation: https://laravel.com/docs/11.x#installing-php
|
||||||
|
|
||||||
|
## Configuration & installation
|
||||||
|
- Make a copy of the .env.example to .env
|
||||||
|
- Run the following commands:
|
||||||
|
```bash
|
||||||
|
composer install && php artisan key:generate && npm i
|
||||||
|
```
|
||||||
|
|
||||||
|
# Run server
|
||||||
```bash
|
```bash
|
||||||
composer run dev
|
composer run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
|
||||||
npm run build
|
|
||||||
```
|
|
||||||
|
|
|
@ -19,8 +19,88 @@
|
||||||
<article>
|
<article>
|
||||||
<div id="leaflet"></div>
|
<div id="leaflet"></div>
|
||||||
</article>
|
</article>
|
||||||
|
<article class="header">
|
||||||
|
<header>
|
||||||
|
<h2>
|
||||||
|
Gesamtauslastung
|
||||||
|
</h2>
|
||||||
|
</header>
|
||||||
|
<div id="chart-heatmap"></div>
|
||||||
|
</article>
|
||||||
<script type="module">
|
<script type="module">
|
||||||
|
const hours = [
|
||||||
|
'12a', '1a', '2a', '3a', '4a', '5a', '6a',
|
||||||
|
'7a', '8a', '9a', '10a', '11a',
|
||||||
|
'12p', '1p', '2p', '3p', '4p', '5p',
|
||||||
|
'6p', '7p', '8p', '9p', '10p', '11p'
|
||||||
|
];
|
||||||
|
|
||||||
|
const extractionDates = {!! json_encode($growth['dates']) !!};
|
||||||
|
|
||||||
|
|
||||||
|
// prettier-ignore
|
||||||
|
let data = [];
|
||||||
|
|
||||||
|
for(let i = 0; i <= extractionDates.length; i++){
|
||||||
|
for(let j = 0; j <= hours.length; j++){
|
||||||
|
data.push([j,i,Math.random() * 3]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const chartHeatmap = document.getElementById('chart-heatmap');
|
||||||
|
const cHeatmap = echarts.init(chartHeatmap);
|
||||||
|
const cHeatmapOptions = {
|
||||||
|
tooltip: {
|
||||||
|
position: 'top'
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
top: 0,
|
||||||
|
right: 0,
|
||||||
|
bottom: 0,
|
||||||
|
left: 0
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
data: hours,
|
||||||
|
splitArea: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'category',
|
||||||
|
data: extractionDates,
|
||||||
|
splitArea: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
visualMap: {
|
||||||
|
min: 0,
|
||||||
|
max: 10,
|
||||||
|
calculable: true,
|
||||||
|
orient: 'horizontal',
|
||||||
|
left: 'center',
|
||||||
|
bottom: '15%'
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: 'Punch Card',
|
||||||
|
type: 'heatmap',
|
||||||
|
data: data,
|
||||||
|
label: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
emphasis: {
|
||||||
|
itemStyle: {
|
||||||
|
shadowBlur: 10,
|
||||||
|
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
cHeatmap.setOption(cHeatmapOptions);
|
||||||
|
|
||||||
const chartPropsPerRegion = document.getElementById('chart-props-per-region');
|
const chartPropsPerRegion = document.getElementById('chart-props-per-region');
|
||||||
const cPropsPerRegion = echarts.init(chartPropsPerRegion);
|
const cPropsPerRegion = echarts.init(chartPropsPerRegion);
|
||||||
const cPropsPerRegionOptions = {
|
const cPropsPerRegionOptions = {
|
||||||
|
@ -71,7 +151,7 @@ const cExtractionsOptions = {
|
||||||
xAxis: {
|
xAxis: {
|
||||||
type: 'category',
|
type: 'category',
|
||||||
boundaryGap: false,
|
boundaryGap: false,
|
||||||
data: {!! json_encode($growth['dates']) !!}
|
data: extractionDates
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
type: 'value'
|
type: 'value'
|
||||||
|
@ -121,7 +201,6 @@ L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||||||
|
|
||||||
const properties = {!! json_encode($geo) !!}
|
const properties = {!! json_encode($geo) !!}
|
||||||
properties.forEach( prop => {
|
properties.forEach( prop => {
|
||||||
console.log(prop);
|
|
||||||
let coords = prop.coordinates.split(',');
|
let coords = prop.coordinates.split(',');
|
||||||
L.marker(coords).addTo(map).bindPopup('<a href="/prop/'+prop.id+'">'+prop.coordinates+'</a>');
|
L.marker(coords).addTo(map).bindPopup('<a href="/prop/'+prop.id+'">'+prop.coordinates+'</a>');
|
||||||
})
|
})
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:133.0) Gecko/20100101 Firefox/133.0" version="25.0.3">
|
||||||
|
<diagram name="Seite-1" id="5abS_fUiar5VuBZXZINZ">
|
||||||
|
<mxGraphModel dx="1195" dy="1534" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||||
|
<root>
|
||||||
|
<mxCell id="0" />
|
||||||
|
<mxCell id="1" parent="0" />
|
||||||
|
<object placeholders="1" c4Name="REST-API" c4Type="Python (FastAPI)" c4Description="REST Schnittstelle" label="<font style="font-size: 16px"><b>%c4Name%</b></font><div>[%c4Type%]</div><br><div><font style="font-size: 11px"><font color="#cccccc">%c4Description%</font></div>" id="DRD_0cKAZXVdgcTgqyKr-1">
|
||||||
|
<mxCell style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#1061B0;fontColor=#ffffff;align=center;arcSize=10;strokeColor=#0D5091;metaEdit=1;resizable=0;points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="360" y="40" width="240" height="120" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</object>
|
||||||
|
<mxCell id="DRD_0cKAZXVdgcTgqyKr-5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="DRD_0cKAZXVdgcTgqyKr-2" target="DRD_0cKAZXVdgcTgqyKr-1">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<object placeholders="1" c4Name="Data" c4Type="Python (Polars)" c4Description="Eigenes Python Package. Enthält Programmcode für das ETL" label="<font style="font-size: 16px"><b>%c4Name%</b></font><div>[%c4Type%]</div><br><div><font style="font-size: 11px"><font color="#cccccc">%c4Description%</font></div>" id="DRD_0cKAZXVdgcTgqyKr-2">
|
||||||
|
<mxCell style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#1061B0;fontColor=#ffffff;align=center;arcSize=10;strokeColor=#0D5091;metaEdit=1;resizable=0;points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="40" y="40" width="240" height="120" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</object>
|
||||||
|
<object placeholders="1" c4Name="Datenbank" c4Type="Container" c4Technology="DuckDB" c4Description="Datenbank, welches die aggregierten Daten enthält." label="<font style="font-size: 16px"><b>%c4Name%</b></font><div>[%c4Type%:&nbsp;%c4Technology%]</div><br><div><font style="font-size: 11px"><font color="#E6E6E6">%c4Description%</font></div>" id="DRD_0cKAZXVdgcTgqyKr-3">
|
||||||
|
<mxCell style="shape=cylinder3;size=15;whiteSpace=wrap;html=1;boundedLbl=1;rounded=0;labelBackgroundColor=none;fillColor=#23A2D9;fontSize=12;fontColor=#ffffff;align=center;strokeColor=#0E7DAD;metaEdit=1;points=[[0.5,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.5,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];resizable=0;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="40" y="240" width="240" height="120" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</object>
|
||||||
|
<mxCell id="DRD_0cKAZXVdgcTgqyKr-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="DRD_0cKAZXVdgcTgqyKr-2" target="DRD_0cKAZXVdgcTgqyKr-3">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</root>
|
||||||
|
</mxGraphModel>
|
||||||
|
</diagram>
|
||||||
|
</mxfile>
|
Loading…
Reference in New Issue