From 2563398df250a1d49d1864b686fb5e15d6f47864 Mon Sep 17 00:00:00 2001 From: Valentin Lab Date: Mon, 16 Mar 2026 16:35:24 +0100 Subject: [PATCH] new: add colored status badges for tariffs in list and offer form select --- .../Admin/Shop/TariffsDataTable.php | 4 ++-- app/Repositories/Shop/Offers.php | 2 ++ app/Repositories/Shop/Tariffs.php | 14 +++++++++++++ .../views/Admin/Shop/Offers/form.blade.php | 21 +++++++++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/app/Datatables/Admin/Shop/TariffsDataTable.php b/app/Datatables/Admin/Shop/TariffsDataTable.php index 070ef26e..3bc359db 100644 --- a/app/Datatables/Admin/Shop/TariffsDataTable.php +++ b/app/Datatables/Admin/Shop/TariffsDataTable.php @@ -22,7 +22,7 @@ class TariffsDataTable extends DataTable { $datatables ->editColumn('status', function (Tariff $tariff) { - return Tariffs::getStatus($tariff['status_id']); + return Tariffs::getStatusBadge($tariff['status_id']); }) ->editColumn('sale_channels2', function (Tariff $tariff) { $html = ''; @@ -32,7 +32,7 @@ class TariffsDataTable extends DataTable return $html; }) - ->rawColumns(['sale_channels2', 'action']); + ->rawColumns(['status', 'sale_channels2', 'action']); return parent::modifier($datatables); } diff --git a/app/Repositories/Shop/Offers.php b/app/Repositories/Shop/Offers.php index a312f104..2f5fd9e5 100644 --- a/app/Repositories/Shop/Offers.php +++ b/app/Repositories/Shop/Offers.php @@ -17,6 +17,8 @@ class Offers return [ 'articles' => Articles::getOptionsWithNature(), 'tariffs' => Tariffs::getOptions(), + 'tariff_statuses' => Tariffs::getStatusMap(), + 'tariff_status_labels' => Tariffs::getStatuses(), 'variations' => Variations::getOptions(), ]; } diff --git a/app/Repositories/Shop/Tariffs.php b/app/Repositories/Shop/Tariffs.php index b66082bf..1d0ce409 100644 --- a/app/Repositories/Shop/Tariffs.php +++ b/app/Repositories/Shop/Tariffs.php @@ -50,11 +50,25 @@ class Tariffs return self::getStatuses()[$status_id]; } + public static function getStatusBadge($status_id) + { + $colors = ['success', 'warning', 'secondary', 'danger']; + $label = self::getStatus($status_id); + $color = $colors[$status_id] ?? 'secondary'; + + return ''.$label.''; + } + public static function getStatuses() { return ['Actif', 'Suspendu', 'Invisible', 'Obsolete']; } + public static function getStatusMap() + { + return Tariff::pluck('status_id', 'id')->toArray(); + } + public static function getModel() { return Tariff::query(); diff --git a/resources/views/Admin/Shop/Offers/form.blade.php b/resources/views/Admin/Shop/Offers/form.blade.php index 9e3d117e..c25fe4a1 100644 --- a/resources/views/Admin/Shop/Offers/form.blade.php +++ b/resources/views/Admin/Shop/Offers/form.blade.php @@ -154,6 +154,27 @@ initSelect2(); $('#status_id').bootstrapToggle(); + // Tariff status badges in select2 + var tariffStatuses = {!! json_encode($tariff_statuses ?? (object)[]) !!}; + var tariffStatusLabels = {!! json_encode($tariff_status_labels ?? []) !!}; + var tariffStatusColors = {0: '#28a745', 1: '#ffc107', 2: '#6c757d', 3: '#dc3545'}; + + function formatTariff(item) { + if (!item.id) return item.text; + var statusId = tariffStatuses[item.id]; + var color = tariffStatusColors[statusId] || '#6c757d'; + var label = tariffStatusLabels[statusId] || ''; + return $('' + item.text + '' + label + ''); + } + + $('#tariff_id').select2('destroy').select2({ + placeholder: "{{ __('select_a_value') }}", + allowClear: false, + width: { value: '100%' }, + templateResult: formatTariff, + templateSelection: formatTariff + }); + function updateEditLink(selectId, linkId, routeTemplate) { var val = $('#' + selectId).val(); var $link = $('#' + linkId);