137 lines
6.3 KiB
PHP
137 lines
6.3 KiB
PHP
@extends('layouts.app')
|
|
|
|
@section('title', __('integrationhub::lang.dashboard'))
|
|
|
|
@section('css')
|
|
@include('integrationhub::layouts.styles')
|
|
@endsection
|
|
|
|
@section('content')
|
|
@include('integrationhub::layouts.nav')
|
|
|
|
<section class="content no-print mt-page">
|
|
<div class="mt-page-header">
|
|
<h1><i class="fas fa-plug" style="color:#8b5cf6;margin-left:8px;"></i> @lang('integrationhub::lang.dashboard')</h1>
|
|
</div>
|
|
|
|
<div class="mt-kpi-grid">
|
|
<div class="mt-kpi-card">
|
|
<i class="fas fa-broadcast-tower kpi-icon"></i>
|
|
<div class="kpi-label">@lang('integrationhub::lang.webhook_endpoints')</div>
|
|
<div class="kpi-value">{{ $stats['webhook_endpoints'] ?? 0 }}</div>
|
|
</div>
|
|
<div class="mt-kpi-card">
|
|
<i class="fas fa-check-circle kpi-icon"></i>
|
|
<div class="kpi-label">@lang('integrationhub::lang.active_webhooks')</div>
|
|
<div class="kpi-value">{{ $stats['active_webhooks'] ?? 0 }}</div>
|
|
</div>
|
|
<div class="mt-kpi-card">
|
|
<i class="fas fa-key kpi-icon"></i>
|
|
<div class="kpi-label">@lang('integrationhub::lang.odata_token_count')</div>
|
|
<div class="kpi-value">{{ $stats['odata_tokens'] ?? 0 }}</div>
|
|
</div>
|
|
<div class="mt-kpi-card">
|
|
<i class="fas fa-file-export kpi-icon"></i>
|
|
<div class="kpi-label">@lang('integrationhub::lang.recent_exports')</div>
|
|
<div class="kpi-value">{{ $stats['recent_exports'] ?? 0 }}</div>
|
|
</div>
|
|
<div class="mt-kpi-card">
|
|
<i class="fas fa-exclamation-triangle kpi-icon" style="color:#dc3545;"></i>
|
|
<div class="kpi-label">@lang('integrationhub::lang.failed_deliveries')</div>
|
|
<div class="kpi-value text-danger">{{ $stats['failed_deliveries'] ?? 0 }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<div class="mt-card">
|
|
<div class="mt-card-header">
|
|
<h3 class="mt-card-title">@lang('integrationhub::lang.datasets_available')</h3>
|
|
</div>
|
|
<div class="mt-card-body">
|
|
<table class="table table-condensed">
|
|
<thead>
|
|
<tr>
|
|
<th>@lang('integrationhub::lang.dataset')</th>
|
|
<th>@lang('integrationhub::lang.api_usage')</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach($odataDatasets as $dataset)
|
|
<tr>
|
|
<td>@lang('integrationhub::lang.'.$dataset)</td>
|
|
<td><code>/integrationhub/api/odata/{{ $dataset }}</code></td>
|
|
</tr>
|
|
@endforeach
|
|
</tbody>
|
|
</table>
|
|
<p class="text-muted small">@lang('integrationhub::lang.api_usage_hint')</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="mt-card">
|
|
<div class="mt-card-header">
|
|
<h3 class="mt-card-title">@lang('integrationhub::lang.recent_deliveries')</h3>
|
|
</div>
|
|
<div class="mt-card-body">
|
|
@forelse($recentDeliveries as $delivery)
|
|
<div class="clearfix" style="margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid #eef2f7;">
|
|
<strong>{{ \Modules\IntegrationHub\Utils\IntegrationHubUtil::eventLabel($delivery->event_name) }}</strong>
|
|
<span class="pull-left label label-{{ $delivery->status === 'delivered' ? 'success' : ($delivery->status === 'failed' ? 'danger' : 'default') }}">
|
|
{{ \Modules\IntegrationHub\Utils\IntegrationHubUtil::statusLabel($delivery->status) }}
|
|
</span>
|
|
<br>
|
|
<small class="text-muted">
|
|
{{ optional($delivery->endpoint)->name }} —
|
|
{{ $delivery->response_code ?? '—' }}
|
|
@if($delivery->delivered_at)
|
|
· @format_datetime($delivery->delivered_at)
|
|
@endif
|
|
</small>
|
|
</div>
|
|
@empty
|
|
<p class="text-muted">@lang('integrationhub::lang.no_records')</p>
|
|
@endforelse
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@if($recentExports->isNotEmpty())
|
|
<div class="mt-card">
|
|
<div class="mt-card-header">
|
|
<h3 class="mt-card-title">@lang('integrationhub::lang.exports')</h3>
|
|
@can('integrationhub.export')
|
|
<a href="{{ action([\Modules\IntegrationHub\Http\Controllers\ExportController::class, 'index']) }}" class="btn btn-xs btn-primary">
|
|
@lang('integrationhub::lang.new_export')
|
|
</a>
|
|
@endcan
|
|
</div>
|
|
<div class="mt-card-body">
|
|
<table class="table table-bordered table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>@lang('integrationhub::lang.dataset')</th>
|
|
<th>@lang('integrationhub::lang.format')</th>
|
|
<th>@lang('integrationhub::lang.status')</th>
|
|
<th>@lang('integrationhub::lang.created_at')</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach($recentExports as $job)
|
|
<tr>
|
|
<td>@lang('integrationhub::lang.'.$job->dataset)</td>
|
|
<td>{{ strtoupper($job->format) }}</td>
|
|
<td><span class="label label-{{ $job->status === 'completed' ? 'success' : ($job->status === 'failed' ? 'danger' : 'warning') }}">{{ \Modules\IntegrationHub\Utils\IntegrationHubUtil::statusLabel($job->status) }}</span></td>
|
|
<td>@format_datetime($job->created_at)</td>
|
|
</tr>
|
|
@endforeach
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
</section>
|
|
@endsection
|