mivita/resources/views/admin/business_optimized/structure.blade.php
2025-10-20 17:42:08 +02:00

191 lines
No EOL
8.5 KiB
PHP

@extends('layouts.layout-2')
@section('content')
<div class="card">
<h5 class="card-header">
{{__('team.business')}} {{__('team.structure')}}
<span class="badge badge-default ml-2">v2</span>
</h5>
<div class="card-body">
{!! Form::open(['action' => route('admin_business_optimized_structure'), 'class' => 'form-horizontal', 'id'=>'form_filter_business_user']) !!}
<div class="form-row align-items-center px-0 pb-2 pt-0">
<div class="col-6 col-sm-4 col-md-4 col-lg-4 mb-1">
<select class="custom-select on_change_select_filter" name="business_user_filter_month">
@foreach($filter_months as $key=>$value)
<option value="{{$key}}" @if(session('business_user_filter_month') == $key) selected @endif>{{$value}}</option>
@endforeach
</select>
</div>
<div class="col-6 col-sm-4 col-md-4 col-lg-4 mb-1">
<select class="custom-select on_change_select_filter" name="business_user_filter_year">
@foreach($filter_years as $key=>$value)
<option value="{{$value}}" @if(session('business_user_filter_year') == $value) selected @endif>{{$value}}</option>
@endforeach
</select>
</div>
</div>
{!! Form::close() !!}
<!-- Performance Metrics Display -->
@if(config('app.debug') && isset($performance))
<div class="alert alert-success">
<div class="row">
<div class="col-md-3">
<i class="fa fa-clock mr-1"></i>
<strong>Ladezeit:</strong> {{ $performance['execution_time'] }}ms
</div>
<div class="col-md-3">
<i class="fa fa-memory mr-1"></i>
<strong>Memory:</strong> {{ $performance['memory_used'] }}
</div>
<div class="col-md-3">
<i class="fa fa-users mr-1"></i>
<strong>Users:</strong> {{ $performance['user_count'] }}
</div>
<div class="col-md-3">
<i class="fa fa-user-times mr-1"></i>
<strong>Ohne Sponsor:</strong> {{ $performance['parentless_count'] }}
</div>
</div>
</div>
@endif
<hr class="container-m-nx border-light mt-0">
<div>
<div id="nestable-menu" class="mb-4">
<button type="button" class="btn btn-default btn-sm" data-action="expand-all">{{ __('team.expand_all') }}</button>
<button type="button" class="btn btn-default btn-sm" data-action="collapse-all">{{ __('team.collapse_all') }}</button>
<!-- Zusätzliche Optimierungs-Controls -->
@if(config('app.debug'))
<div class="btn-group ml-3" role="group">
<button type="button" class="btn btn-info btn-sm" onclick="showPerformanceDetails()">
<i class="fa fa-chart-line"></i> Performance Details
</button>
<a href="{{ route('admin_business_structure') }}" class="btn btn-outline-secondary btn-sm">
<i class="fa fa-arrow-left"></i> Original Version
</a>
@if(isset($forceLiveCalculation) && $forceLiveCalculation === true)
<a href="{{ route('admin_business_optimized_structure') }}" class="btn btn-outline-warning btn-sm" title="Live-Berechnung aus">
<i class="fa fa-refresh"></i> Live berechnen aus
</a>
@else
<a href="{{ route('admin_business_optimized_structure') }}?force_live_calculation=1" class="btn btn-outline-success btn-sm" title="Live-Berechnung erzwingen">
<i class="fa fa-refresh"></i> Live berechnen
</a>
@endif
</div>
@endif
</div>
<div class="row">
<div class="col-md-12">
<div class="dd" id="nestable2">
{!! $TreeCalcBot->makeHtmlTree() !!}
</div>
</div>
</div>
@if($TreeCalcBot->isParentless())
<div class="row">
<div class="col-md-12">
<hr>
<h6 class="">
Berater mit abgelaufenem Account
<span class="badge badge-warning">{{ count($TreeCalcBot->__get('parentless')) }}</span>
</h6>
<div class="dd" id="">
{!! $TreeCalcBot->makeParentlessHtml() !!}
</div>
</div>
</div>
@endif
</div>
</div>
</div>
<!-- Performance Details Modal -->
<div class="modal fade" id="performanceModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Performance Metrics</h5>
<button type="button" class="close" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body">
@if(isset($performance))
<table class="table table-sm">
<tr>
<td><strong>Ausführungszeit:</strong></td>
<td>{{ $performance['execution_time'] }}ms</td>
</tr>
<tr>
<td><strong>Memory-Verbrauch:</strong></td>
<td>{{ $performance['memory_used'] }}</td>
</tr>
<tr>
<td><strong>Anzahl Users:</strong></td>
<td>{{ $performance['user_count'] }}</td>
</tr>
<tr>
<td><strong>Parentlose Users:</strong></td>
<td>{{ $performance['parentless_count'] }}</td>
</tr>
<tr>
<td><strong>Optimierungen:</strong></td>
<td>
<span class="badge badge-success">Repository Pattern</span>
<span class="badge badge-success">Eager Loading</span>
<span class="badge badge-success">Memory Monitoring</span>
</td>
</tr>
</table>
@endif
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Schließen</button>
</div>
</div>
</div>
</div>
<link rel="stylesheet" href="/vendor/libs/nestable/nestable.css">
<script src="/vendor/libs/nestable/jquery-nestable.js?v=1"></script>
<script>
$( document ).ready(function() {
function updateOutput(e) {
//var list = e.length ? e : $(e.target);
//var output = list.data('output');
};
$('#nestable2').nestable().on('change', updateOutput);
// output initial serialised data
//updateOutput($('#nestable2').data('output', $('#nestable2-output')));
$('#nestable-menu').on('click', function(e) {
var target = $(e.target);
var action = target.data('action');
if (action === 'expand-all') {
$('.dd').nestable('expandAll');
}
if (action === 'collapse-all') {
$('.dd').nestable('collapseAll');
}
});
});
$('.on_change_select_filter').on('change', function(){
$('#form_filter_business_user').submit();
});
function showPerformanceDetails() {
$('#performanceModal').modal('show');
}
</script>
@endsection