clrghouz/resources/views/dashboard.blade.php
Deon George 3f5668292f
All checks were successful
Create Docker Image / Build Docker Image (x86_64) (push) Successful in 36s
Create Docker Image / Build Docker Image (arm64) (push) Successful in 1m34s
Create Docker Image / Final Docker Image Manifest (push) Successful in 10s
More optimisations for users dashboard
2024-04-21 00:28:50 +10:00

245 lines
6.2 KiB
PHP

@extends('layouts.app')
@section('htmlheader_title')
Dashboard
@endsection
@php($user->load(['systems.akas.zone.domain.echoareas','systems.akas.echoareas']))
@section('content')
<h1>{{ $user->name }}</h1>
@if($user->systems->count())
<div class="row">
<div class="col-7">
<div id="network_messages"></div>
</div>
<!-- System Addresses -->
<div class="col-5">
<table class="table monotable">
<thead>
<tr><th colspan="2">System Addresses</th></tr>
</thead>
<tbody>
@foreach ($user->systems->sortBy('name') as $o)
<tr>
<th><a href="{{ url('system/addedit',[$o->id]) }}">{{ $o->name }}</a></th>
<th class="text-end">
<small><small><strong>{{ $o->akas->count() }}</strong> AKAs configured</small></small><br><br>
@if ($o->akas->count())
@foreach ($o->akas as $ao)
{{ $ao->ftn }} <small>({{ $ao->security ?: '-' }})</small><br>
@endforeach
@else
-
@endif
</th>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<div class="row">
<div class="col-12">
<h3>Active and Available Echos</h3>
<table class="table monotable">
<tbody>
@foreach (($dl=$user
->systems
->pluck('akas')->flatten()
->pluck('zone.domain')
->unique()
->filter(function($item) { return $item->active && $item->public && $item->isManaged(); })
->sortBy('name')) as $o)
<tr>
<th class="nowrap">
<a href="{{ url('domain/view',[$o->id]) }}">{{ $o->name }}</a> <small>({{ ($sec=$user->systems->pluck('akas')->flatten()->filter(function($item) use ($o) { return $item->zone->domain_id === $o->id; })->max('security') ?: 0) ?? '-' }})</small><br><br>
{{ ($sub=$user->systems->pluck('akas')->flatten()->pluck('echoareas')->flatten()->filter(function($item) use ($o) { return $item->domain_id === $o->id; }))->count() }} <small>Subscribed</small>
</th>
<td>
@foreach ($o->echoareas->sortBy('name') as $eo)
<span style="@if(! $eo->active) color: gray; @elseif(! $eo->can_access($sec)) color: red; @elseif($sub->where('name',$eo->name)->count()) color: green; @endif">{{ $eo->name }}</span>
@endforeach
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@else
<p>You are not linked to any BBS systems. Start <a href="{{ url('user/system/register') }}">here</a> to link to your first.</p>
@endif
@endsection
@section('page-css')
<style>
.highcharts-data-table table {
min-width: 310px;
max-width: 800px;
margin: 1em auto;
}
.highcharts-data-table table {
border-collapse: collapse;
border: 1px solid #EBEBEB;
margin: 10px auto;
text-align: center;
width: 100%;
max-width: 500px;
}
.highcharts-data-table caption {
padding: 1em 0;
font-size: 1.2em;
color: #555;
}
.highcharts-data-table th {
font-weight: 600;
padding: 0.5em;
}
.highcharts-data-table td, .highcharts-data-table th, .highcharts-data-table caption {
padding: 0.5em;
}
{{--
.highcharts-data-table thead tr, .highcharts-data-table tr:nth-child(even) {
background: #f8f8f8;
}
.highcharts-data-table tr:hover {
background: #f1f7ff;
}
--}}
</style>
@append
@section('page-scripts')
@js('highcharts')
<script>
@if($user->systems->count())
// Create the chart
Highcharts.chart('network_messages',{
chart: {
type: 'column',
backgroundColor: '#000000',
},
credits: {
enabled: false
},
exporting: {
buttons: false
},
title: {
text: 'Echomail Statistics'
},
subtitle: {
text: '{{ sprintf('%s - %s',\Carbon\Carbon::now()->subMonths(6)->startOfMonth()->format('Y-m-d'),\Carbon\Carbon::now()->format('Y-m-d')) }}'
},
xAxis: {
type: 'category'
},
yAxis: {
title: {
text: '# Msgs'
},
stackLabels: {
enabled: true,
style: {
fontWeight: 'bold',
color: (Highcharts.defaultOptions.title.style && Highcharts.defaultOptions.title.style.color) || 'gray'
}
}
},
legend: {
align: 'right',
//x: -30,
verticalAlign: 'top',
y: 40,
floating: true,
backgroundColor: Highcharts.defaultOptions.legend.backgroundColor || 'white',
borderColor: '#e0e0e0',
borderWidth: 1,
shadow: false
},
plotOptions: {
column: {
dataLabels: {
enabled: true
}
},
series: {
borderWidth: 0,
grouping: false,
}
},
tooltip: {
headerFormat: '<span style="font-size:11px">{series.name}</span><br>',
pointFormat: '<span style="color:{point.color}">{point.name}</span>: <b>{point.y:.0f}</b>'
},
series: [
{
name: 'Networks',
colorByPoint: true,
data: [
@foreach($dl as $do)
{
name: '{{ $do->name }}',
y: {{ $do->echoarea_total_daily()->sum('count') }},
drilldown: 'n-{{ $do->name }}',
},
@endforeach
]
},
{
name: 'Yours',
colorByPoint: true,
pointPlacement: 0.1,
data: [
@foreach($dl as $do)
{
name: '{{ $do->name }}',
y: {{ $do->echoarea_total_daily($user->systems)->sum('count') }},
drilldown: 'ny-{{ $do->name }}',
color: Highcharts.color(Highcharts.getOptions().colors[{{$loop->index}}]).brighten(-0.2).get()
},
@endforeach
]
},
],
drilldown: {
drillUpButton: {
position: {
x: 0,
y: -50,
}
},
series: [
@foreach($dl as $do)
{
name: '{{ $do->name }}',
id: 'n-{{ $do->name }}',
data: {!! $do->echoarea_total_daily()
->groupBy('name')
->map(function($item,$key) { return ['name'=>$key,'y'=>$item->sum('count'),'drilldown'=>'e-'.$key]; })
->values() !!}
},
@endforeach
@foreach($dl as $do)
{
name: '{{ $do->name }}',
id: 'ny-{{ $do->name }}',
data: {!! $do->echoarea_total_daily($user->systems)
->groupBy('name')
->map(function($item,$key) { return ['name'=>$key,'y'=>$item->sum('count'),'drilldown'=>'e-'.$key]; })
->values() !!}
},
@endforeach
]
},
});
@endif
</script>
@append