new: add colored status badges for tariffs in list and offer form select

This commit is contained in:
Valentin Lab
2026-03-16 16:35:24 +01:00
parent 39572c9ea2
commit 2563398df2
4 changed files with 39 additions and 2 deletions

View File

@@ -22,7 +22,7 @@ class TariffsDataTable extends DataTable
{ {
$datatables $datatables
->editColumn('status', function (Tariff $tariff) { ->editColumn('status', function (Tariff $tariff) {
return Tariffs::getStatus($tariff['status_id']); return Tariffs::getStatusBadge($tariff['status_id']);
}) })
->editColumn('sale_channels2', function (Tariff $tariff) { ->editColumn('sale_channels2', function (Tariff $tariff) {
$html = ''; $html = '';
@@ -32,7 +32,7 @@ class TariffsDataTable extends DataTable
return $html; return $html;
}) })
->rawColumns(['sale_channels2', 'action']); ->rawColumns(['status', 'sale_channels2', 'action']);
return parent::modifier($datatables); return parent::modifier($datatables);
} }

View File

@@ -17,6 +17,8 @@ class Offers
return [ return [
'articles' => Articles::getOptionsWithNature(), 'articles' => Articles::getOptionsWithNature(),
'tariffs' => Tariffs::getOptions(), 'tariffs' => Tariffs::getOptions(),
'tariff_statuses' => Tariffs::getStatusMap(),
'tariff_status_labels' => Tariffs::getStatuses(),
'variations' => Variations::getOptions(), 'variations' => Variations::getOptions(),
]; ];
} }

View File

@@ -50,11 +50,25 @@ class Tariffs
return self::getStatuses()[$status_id]; 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 '<span class="badge badge-'.$color.'">'.$label.'</span>';
}
public static function getStatuses() public static function getStatuses()
{ {
return ['Actif', 'Suspendu', 'Invisible', 'Obsolete']; return ['Actif', 'Suspendu', 'Invisible', 'Obsolete'];
} }
public static function getStatusMap()
{
return Tariff::pluck('status_id', 'id')->toArray();
}
public static function getModel() public static function getModel()
{ {
return Tariff::query(); return Tariff::query();

View File

@@ -154,6 +154,27 @@
initSelect2(); initSelect2();
$('#status_id').bootstrapToggle(); $('#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 $('<span style="display:flex;justify-content:space-between;align-items:center;width:100%;">' + item.text + '<span class="badge" style="background:' + color + ';color:#fff;font-size:0.75em;margin-left:8px;">' + label + '</span></span>');
}
$('#tariff_id').select2('destroy').select2({
placeholder: "{{ __('select_a_value') }}",
allowClear: false,
width: { value: '100%' },
templateResult: formatTariff,
templateSelection: formatTariff
});
function updateEditLink(selectId, linkId, routeTemplate) { function updateEditLink(selectId, linkId, routeTemplate) {
var val = $('#' + selectId).val(); var val = $('#' + selectId).val();
var $link = $('#' + linkId); var $link = $('#' + linkId);