ConsultancyProject_2_ETL/dashboard/resources/views/property.blade.php

195 lines
4.4 KiB
PHP
Raw Normal View History

2024-12-18 15:14:13 +01:00
@extends('base')
@section('main')
<article class="header">
<header>
<h2>
2024-12-18 19:52:06 +01:00
Angaben zur Property
2024-12-18 15:14:13 +01:00
</h2>
</header>
2024-12-18 19:52:06 +01:00
<dl>
@foreach ($base as $dt => $dd)
<dt>{{ $dt }}</dt>
<dd>
@if ($dt === 'property_platform_id')
<a href="https://www.e-domizil.ch/rental/{{ $dd }}" rel="noopener noreferrer" target="_blank">
{{ $dd }}
</a>
@else
{{ $dd }}
@endif
</dd>
@endforeach
</dl>
2024-12-18 15:14:13 +01:00
</article>
<article class="header" style="grid-row-start: 1; grid-row-end: 3;">
2024-12-18 15:14:13 +01:00
<header>
<h2 id="belegung-title">
Belegung am {{ json_decode($extractiondates)[0] }}
</h2>
</header>
<div id="chart-calendar"></div>
</article>
<article class="header">
<header>
<h2>
Entwicklung der Verfügbarkeit
</h2>
</header>
<div id="chart-capacity"></div>
</article>
2024-12-18 15:14:13 +01:00
<script type="module">
const chartCapacity = document.getElementById('chart-capacity');
const cCapacity = echarts.init(chartCapacity);
const cCapacityOptions = {
tooltip: {
trigger: 'axis'
},
grid: {
left: '0',
right: 10,
bottom: '0',
containLabel: true
},
xAxis: {
type: 'category',
boundaryGap: false,
data: {!! json_encode($capacities['dates']) !!}
},
yAxis: {
type: 'value',
min: 0,
max: 100
},
2024-12-20 12:20:49 +01:00
series: {
name: 'Alle',
type: 'line',
stack: 'Total',
symbolSize: 7,
data: {!! json_encode($capacities['capacities']) !!}
}
};
cCapacity.setOption(cCapacityOptions);
2024-12-18 15:14:13 +01:00
const chartCalendar = document.getElementById('chart-calendar');
const cCalendar = echarts.init(chartCalendar);
const h2Belegung = document.getElementById('belegung-title');
const cCalendarOptions = {
timeline: {
data: {!! $extractiondates !!},
2024-12-20 12:20:49 +01:00
playInterval: 2000,
2024-12-18 19:52:06 +01:00
axisType: 'time',
2024-12-18 15:14:13 +01:00
left: 0,
right: 0,
label: {
show: false
}
},
visualMap: {
categories: [0,1,2],
inRange: {
color: ['red', 'purple', 'green']
},
formatter: (cat) => {
switch (cat) {
case 0:
return 'Ausgebucht';
case 1:
return 'Verfügbar (kein Anreisetag)';
case 2:
return 'Verfügbar';
}
},
type: 'piecewise',
orient: 'horizontal',
left: 'center',
top: 0
},
calendar:[
{
orient: 'horizontal',
range: '2024',
2024-12-20 12:20:49 +01:00
top: '6.25%',
right: 10,
2024-12-20 12:20:49 +01:00
bottom: '68.75%',
2024-12-18 15:14:13 +01:00
left: 50,
},
{
orient: 'horizontal',
range: '2025',
2024-12-20 12:20:49 +01:00
top: '37.5%',
right: 10,
2024-12-20 12:20:49 +01:00
bottom: '37.25%',
2024-12-18 15:14:13 +01:00
left: 50,
},
{
orient: 'horizontal',
range: '2026',
2024-12-20 12:20:49 +01:00
top: '68.75%',
right: 10,
2024-12-20 12:20:49 +01:00
bottom: '6.25%',
left: 50,
}
2024-12-18 15:14:13 +01:00
],
options: [
@foreach ($calendar as $c)
{
series: [{
type: 'heatmap',
coordinateSystem: 'calendar',
calendarIndex: 0,
data: {!! json_encode($c) !!}
},
{
type: 'heatmap',
coordinateSystem: 'calendar',
calendarIndex: 1,
data: {!! json_encode($c) !!}
},
{
type: 'heatmap',
coordinateSystem: 'calendar',
calendarIndex: 2,
data: {!! json_encode($c) !!}
2024-12-18 15:14:13 +01:00
}]
},
@endforeach
]
};
cCalendar.setOption(cCalendarOptions);
cCalendar.on('timelinechanged', (e) => {
2024-12-20 12:20:49 +01:00
// Change header text according to datapoint
2024-12-18 15:14:13 +01:00
h2Belegung.innerText = "Belegung am "+cCalendarOptions.timeline.data[e.currentIndex];
2024-12-20 12:20:49 +01:00
// Set markpoint on linechart
let x = cCapacityOptions.xAxis.data[e.currentIndex];
let y = cCapacityOptions.series.data[e.currentIndex];
cCapacity.setOption({
series: {
markPoint: {
data: [{
coord: [x, y]
}]
}
}
});
2024-12-18 15:14:13 +01:00
})
cCapacity.on('click', 'series', (e) => {
2024-12-20 12:20:49 +01:00
// Switch to correct calendar in the timeline
cCalendar.dispatchAction({
type: 'timelineChange',
currentIndex: e.dataIndex
});
});
2024-12-18 15:14:13 +01:00
</script>
@endsection