2021-10-26 12:19:55 +00:00
|
|
|
@extends('layouts.app')
|
|
|
|
@section('htmlheader_title')
|
|
|
|
Dashboard
|
|
|
|
@endsection
|
|
|
|
|
2024-05-24 01:04:25 +00:00
|
|
|
@php
|
|
|
|
use App\Classes\Protocol\Binkp;
|
|
|
|
$user->load(['systems.akas.zone.domain.echoareas','systems.akas.echoareas']);
|
|
|
|
@endphp
|
2024-04-13 14:47:08 +00:00
|
|
|
|
2021-10-26 12:19:55 +00:00
|
|
|
@section('content')
|
|
|
|
<h1>{{ $user->name }}</h1>
|
|
|
|
|
2024-04-13 14:47:08 +00:00
|
|
|
@if($user->systems->count())
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-7">
|
2024-05-24 01:04:25 +00:00
|
|
|
<div class="row">
|
|
|
|
<div class="col-12">
|
|
|
|
<div id="network_messages"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="row pt-2">
|
|
|
|
<div class="col-12">
|
|
|
|
<h2>Hub Details for your nets</h2>
|
|
|
|
|
|
|
|
<div class="accordion" id="accordion_details">
|
|
|
|
@foreach($user
|
|
|
|
->addresses()
|
|
|
|
->diff(our_address())
|
|
|
|
->filter(fn($item)=>($item->point_id === 0))
|
|
|
|
->filter(function($item) { return $item->zone->domain->active && $item->zone->domain->public && $item->zone->domain->isManaged(); })
|
|
|
|
->sortBy('zone.domain.name')
|
|
|
|
->groupBy('zone.domain.name') as $list)
|
|
|
|
<!-- {{ $x=$list->first()->domain->name }} -->
|
|
|
|
<div class="accordion-item">
|
|
|
|
<h3 class="accordion-header">
|
|
|
|
<span class="accordion-button" id="hd_{{ $x }}" data-bs-toggle="collapse" data-bs-target="#collapse_{{ $x }}" aria-expanded="true" aria-controls="collapse_{{ $x }}">{{ $x }}</span>
|
|
|
|
</h3>
|
|
|
|
|
|
|
|
<div id="collapse_{{ $x }}" class="accordion-collapse {{ ($loop->index) ? 'collapse' : 'show' }}" aria-labelledby="{{ $x }}" data-bs-parent="#accordion_details">
|
|
|
|
<div class="accordion-body">
|
|
|
|
<p>For your addresses in this domain: <strong class="highlight">{!! $list->pluck('ftn')->join('</strong>, <strong class="highlight">') !!}</strong>, you'll need to use the following details:</p>
|
|
|
|
<br>
|
|
|
|
<table class="table monotable">
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td>
|
|
|
|
Hub FTN Address
|
|
|
|
</td>
|
|
|
|
<th>
|
|
|
|
<span style="color: cyan;">{{ our_address($list->first())->ftn4d }}</span>
|
|
|
|
</th>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>
|
|
|
|
Hub FTN Domain
|
|
|
|
</td>
|
|
|
|
<th>
|
|
|
|
<span style="color: cyan;">{{ $x }}</span>
|
|
|
|
</th>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>
|
|
|
|
Hub Internet Address
|
|
|
|
</td>
|
|
|
|
<th>
|
|
|
|
<span style="color: cyan;">{{ our_hostname($list->first()) }}</span>
|
|
|
|
</th>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>
|
|
|
|
Hub Internet Ports
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
BINKP: <span style="color: cyan;">{{ $setup->binkp_port }}</span> MD5 Mode: <span style="color: cyan;">{{$setup->optionGet(Binkp::F_MD,'binkp_options') ? 'YES' : 'NO' }}</span><br>
|
|
|
|
EMSI: <span style="color: cyan;">{{ $setup->emsi_port }}</span> Protocol: <span style="color: cyan;">Zmodem</span><br>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
@endforeach
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2021-10-26 12:19:55 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- System Addresses -->
|
2024-04-13 14:47:08 +00:00
|
|
|
<div class="col-5">
|
|
|
|
<table class="table monotable">
|
|
|
|
<thead>
|
|
|
|
<tr><th colspan="2">System Addresses</th></tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
2021-10-26 12:19:55 +00:00
|
|
|
|
2024-04-13 14:47:08 +00:00
|
|
|
@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>
|
2021-10-26 12:19:55 +00:00
|
|
|
</div>
|
2024-04-13 14:47:08 +00:00
|
|
|
</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">
|
2024-04-14 11:16:33 +00:00
|
|
|
<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>
|
2024-04-13 14:47:08 +00:00
|
|
|
{{ ($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)
|
2024-04-14 11:16:33 +00:00
|
|
|
<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>
|
2024-04-13 14:47:08 +00:00
|
|
|
@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
|
2021-10-26 12:19:55 +00:00
|
|
|
@endsection
|
|
|
|
|
2021-11-13 06:00:08 +00:00
|
|
|
@section('page-css')
|
2021-10-26 12:19:55 +00:00
|
|
|
<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>
|
2021-11-13 06:00:08 +00:00
|
|
|
@append
|
2024-04-14 11:16:33 +00:00
|
|
|
|
2021-11-13 06:00:08 +00:00
|
|
|
@section('page-scripts')
|
|
|
|
@js('highcharts')
|
2021-10-26 12:19:55 +00:00
|
|
|
|
|
|
|
<script>
|
|
|
|
@if($user->systems->count())
|
|
|
|
// Create the chart
|
|
|
|
Highcharts.chart('network_messages',{
|
|
|
|
chart: {
|
2023-06-13 10:22:40 +00:00
|
|
|
type: 'column',
|
2023-09-22 11:17:00 +00:00
|
|
|
backgroundColor: '#000000',
|
2021-10-26 12:19:55 +00:00
|
|
|
},
|
|
|
|
credits: {
|
|
|
|
enabled: false
|
|
|
|
},
|
2021-11-20 06:58:46 +00:00
|
|
|
exporting: {
|
|
|
|
buttons: false
|
|
|
|
},
|
2021-10-26 12:19:55 +00:00
|
|
|
title: {
|
|
|
|
text: 'Echomail Statistics'
|
|
|
|
},
|
|
|
|
subtitle: {
|
2021-12-29 02:44:27 +00:00
|
|
|
text: '{{ sprintf('%s - %s',\Carbon\Carbon::now()->subMonths(6)->startOfMonth()->format('Y-m-d'),\Carbon\Carbon::now()->format('Y-m-d')) }}'
|
2021-10-26 12:19:55 +00:00
|
|
|
},
|
|
|
|
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: [
|
2024-04-13 14:47:08 +00:00
|
|
|
@foreach($dl as $do)
|
2021-10-26 12:19:55 +00:00
|
|
|
{
|
2022-01-05 13:19:57 +00:00
|
|
|
name: '{{ $do->name }}',
|
2024-04-20 12:03:47 +00:00
|
|
|
y: {{ $do->echoarea_total_daily()->sum('count') }},
|
2022-01-05 13:19:57 +00:00
|
|
|
drilldown: 'n-{{ $do->name }}',
|
2021-10-26 12:19:55 +00:00
|
|
|
},
|
|
|
|
@endforeach
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'Yours',
|
|
|
|
colorByPoint: true,
|
|
|
|
pointPlacement: 0.1,
|
|
|
|
data: [
|
2024-04-13 14:47:08 +00:00
|
|
|
@foreach($dl as $do)
|
2021-10-26 12:19:55 +00:00
|
|
|
{
|
2022-01-05 13:19:57 +00:00
|
|
|
name: '{{ $do->name }}',
|
2024-04-20 12:03:47 +00:00
|
|
|
y: {{ $do->echoarea_total_daily($user->systems)->sum('count') }},
|
2022-01-05 13:19:57 +00:00
|
|
|
drilldown: 'ny-{{ $do->name }}',
|
2021-10-26 12:19:55 +00:00
|
|
|
color: Highcharts.color(Highcharts.getOptions().colors[{{$loop->index}}]).brighten(-0.2).get()
|
|
|
|
},
|
|
|
|
@endforeach
|
|
|
|
]
|
|
|
|
},
|
|
|
|
],
|
|
|
|
drilldown: {
|
2021-11-20 06:58:46 +00:00
|
|
|
drillUpButton: {
|
|
|
|
position: {
|
|
|
|
x: 0,
|
|
|
|
y: -50,
|
|
|
|
}
|
|
|
|
},
|
2021-10-26 12:19:55 +00:00
|
|
|
series: [
|
2024-04-13 14:47:08 +00:00
|
|
|
@foreach($dl as $do)
|
2021-10-26 12:19:55 +00:00
|
|
|
{
|
2022-01-05 13:19:57 +00:00
|
|
|
name: '{{ $do->name }}',
|
|
|
|
id: 'n-{{ $do->name }}',
|
2024-04-20 12:03:47 +00:00
|
|
|
data: {!! $do->echoarea_total_daily()
|
|
|
|
->groupBy('name')
|
|
|
|
->map(function($item,$key) { return ['name'=>$key,'y'=>$item->sum('count'),'drilldown'=>'e-'.$key]; })
|
|
|
|
->values() !!}
|
2021-10-26 12:19:55 +00:00
|
|
|
},
|
|
|
|
@endforeach
|
|
|
|
|
2024-04-13 14:47:08 +00:00
|
|
|
@foreach($dl as $do)
|
2021-10-26 12:19:55 +00:00
|
|
|
{
|
2022-01-05 13:19:57 +00:00
|
|
|
name: '{{ $do->name }}',
|
|
|
|
id: 'ny-{{ $do->name }}',
|
2024-04-20 12:03:47 +00:00
|
|
|
data: {!! $do->echoarea_total_daily($user->systems)
|
|
|
|
->groupBy('name')
|
|
|
|
->map(function($item,$key) { return ['name'=>$key,'y'=>$item->sum('count'),'drilldown'=>'e-'.$key]; })
|
|
|
|
->values() !!}
|
2021-10-26 12:19:55 +00:00
|
|
|
},
|
|
|
|
@endforeach
|
|
|
|
]
|
|
|
|
},
|
|
|
|
});
|
|
|
|
@endif
|
|
|
|
</script>
|
|
|
|
@append
|