new: add visibility badge for articles in offer form select

This commit is contained in:
Valentin Lab
2026-03-16 16:44:48 +01:00
parent d8f95c667c
commit 493743307a
3 changed files with 26 additions and 0 deletions

View File

@@ -67,6 +67,11 @@ class Articles
return $data; return $data;
} }
public static function getVisibilityMap()
{
return Article::pluck('visible', 'id')->toArray();
}
public static function getAll() public static function getAll()
{ {
return Article::orderBy('name', 'asc')->get(); return Article::orderBy('name', 'asc')->get();

View File

@@ -16,6 +16,7 @@ class Offers
{ {
return [ return [
'articles' => Articles::getOptionsWithNature(), 'articles' => Articles::getOptionsWithNature(),
'article_visibilities' => Articles::getVisibilityMap(),
'tariffs' => Tariffs::getOptions(), 'tariffs' => Tariffs::getOptions(),
'tariff_statuses' => Tariffs::getStatusMap(), 'tariff_statuses' => Tariffs::getStatusMap(),
'tariff_status_labels' => Tariffs::getStatuses(), 'tariff_status_labels' => Tariffs::getStatuses(),

View File

@@ -154,6 +154,26 @@
initSelect2(); initSelect2();
$('#status_id').bootstrapToggle(); $('#status_id').bootstrapToggle();
// Article visibility badges in select2
var articleVisibilities = {!! json_encode($article_visibilities ?? (object)[]) !!};
function formatArticle(item) {
if (!item.id) return item.text;
var visible = articleVisibilities[item.id];
var badge = (visible == 1)
? '<span class="badge badge-success" style="font-size:0.75em;margin-left:4px;">Visible</span>'
: '<span class="badge badge-warning" style="font-size:0.75em;margin-left:4px;">Invisible</span>';
return $('<span style="display:flex;justify-content:space-between;align-items:center;width:100%;">' + item.text + badge + '</span>');
}
$('#article_id').select2('destroy').select2({
placeholder: "{{ __('select_a_value') }}",
allowClear: false,
width: { value: '100%' },
templateResult: formatArticle,
templateSelection: formatArticle
});
// Tariff status badges in select2 // Tariff status badges in select2
var tariffStatuses = {!! json_encode($tariff_statuses ?? (object)[]) !!}; var tariffStatuses = {!! json_encode($tariff_statuses ?? (object)[]) !!};
var tariffStatusLabels = {!! json_encode($tariff_status_labels ?? []) !!}; var tariffStatusLabels = {!! json_encode($tariff_status_labels ?? []) !!};