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>
|
2024-12-19 19:22:09 +01:00
|
|
|
<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>
|
2024-12-19 19:22:09 +01:00
|
|
|
<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">
|
2024-12-19 19:22:09 +01:00
|
|
|
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: {
|
2024-12-19 19:22:09 +01:00
|
|
|
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%',
|
2024-12-19 19:22:09 +01:00
|
|
|
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%',
|
2024-12-19 19:22:09 +01:00
|
|
|
right: 10,
|
2024-12-20 12:20:49 +01:00
|
|
|
bottom: '37.25%',
|
2024-12-18 15:14:13 +01:00
|
|
|
left: 50,
|
|
|
|
},
|
2024-12-19 19:22:09 +01:00
|
|
|
{
|
|
|
|
orient: 'horizontal',
|
|
|
|
range: '2026',
|
2024-12-20 12:20:49 +01:00
|
|
|
top: '68.75%',
|
2024-12-19 19:22:09 +01:00
|
|
|
right: 10,
|
2024-12-20 12:20:49 +01:00
|
|
|
bottom: '6.25%',
|
2024-12-19 19:22:09 +01:00
|
|
|
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) !!}
|
2024-12-19 19:22:09 +01:00
|
|
|
},
|
|
|
|
{
|
|
|
|
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-19 19:22:09 +01:00
|
|
|
|
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
|
|
|
})
|
|
|
|
|
2024-12-19 19:22:09 +01:00
|
|
|
cCapacity.on('click', 'series', (e) => {
|
|
|
|
|
2024-12-20 12:20:49 +01:00
|
|
|
// Switch to correct calendar in the timeline
|
2024-12-19 19:22:09 +01:00
|
|
|
cCalendar.dispatchAction({
|
|
|
|
type: 'timelineChange',
|
|
|
|
currentIndex: e.dataIndex
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
2024-12-18 15:14:13 +01:00
|
|
|
</script>
|
|
|
|
@endsection
|