Added new typ Literature and updated filters

This commit is contained in:
Anna-Sara Sélea 2025-07-07 18:55:28 +02:00
parent 537441fa8b
commit 581a1fbf74
5 changed files with 162 additions and 51 deletions

View file

@ -49,7 +49,9 @@ class Reserve extends BasePage implements HasTable
public static function table(Table $table): Table
{
return $table
->query( Item::where('can_be_loaned', true)->where('type', "game"))
->query( Item::where('can_be_loaned', true)->whereIn('type', ["game", "literature"]))
->emptyStateHeading('Inga resultat')
->searchable(true)
->columns([
Grid::make()
->columns(1)
@ -93,7 +95,9 @@ class Reserve extends BasePage implements HasTable
->default('Ingen uppgift')
->prefix('Ålder: ')
//->suffix(' år'),
])->extraAttributes(['class' => 'space-y-3 h-full'])
])
->extraAttributes(['class' => 'space-y-3 h-full'])
->hidden(fn ($record) => $record->type === 'literature'),
])->extraAttributes(['class' => 'space-y-3 h-full'])
])
@ -113,11 +117,43 @@ class Reserve extends BasePage implements HasTable
'xl' => 4,
])
->filters([
SelectFilter::make('category_id')
->multiple()
->preload()
->label('Kategori')
->options(Category::all()->where('type', 'game')->pluck('name', 'id')),
Filter::make('filters')
->form([
Select::make('type')
->label('Typ')
->live()
->options([
'game' => __('Game'),
'literature' => __('Literature')
]),
Select::make('category_id')
->multiple()
->label('Kategorier Litteratur')
->options(Category::all()->whereIn('type', 'literature')->pluck('name', 'id'))
->hidden(fn ($get): string => $get('type') == 'game' || $get('type') == ''),
Select::make('category_id')
->multiple()
->label('Kategorier Spel')
->options(Category::all()->whereIn('type', 'game')->pluck('name', 'id'))
->hidden(fn ($get): string => $get('type') == 'literature' || $get('type') == ''),
])
->query(function (Builder $query, array $data): Builder {
return $query
->when(
$data['type'],
fn (Builder $query, $type): Builder => $query->where('type', $type),
)
->when(
$data['category_id'],
fn (Builder $query, $category_id): Builder => $query->whereIn('category_id', $category_id),
);
})
->columns([
'deafult' => 1,
'md' => 2,
])
->columnSpan(2),
Filter::make('reserved')
->label('Tillgänglig')
->query(fn (Builder $query): Builder => $query->where('reserved', false))
@ -166,34 +202,54 @@ class Reserve extends BasePage implements HasTable
->send();
})
->hidden(fn ($record) => $record->reserved),
Action::make('Mer info')
->modalSubmitAction(false)
->button()
->color('primary')
Action::make('More info')
->translateLabel()
->modalSubmitAction(false)
->infolist([
Section::make('Spel')
Section::make('')
->schema([
ImageEntry::make('image')
->label('Bild')
ImageEntry::make('image')
->translateLabel()
->width(300)
->height('auto'),
//->disk('local')
//->visibility('private'),
TextEntry::make('desc')
->label('Beskrivning'),
->label('Description')
->translateLabel(),
TextEntry::make('acquisition_date')
->label('Inköpsdatum'),
->translateLabel(),
TextEntry::make('category.name')
->label('Kategori'),
->translateLabel(),
TextEntry::make('players')
->label('Antal spelare'),
->translateLabel(),
TextEntry::make('play_time')
->label('Speltid'),
->translateLabel(),
TextEntry::make('age')
->label('Ålder'),
->translateLabel(),
TextEntry::make('cost')
->translateLabel(),
])
->columns(),
]),
->columns()
->hidden(fn ($record) => $record->type === 'literature'),
Section::make('')
->translateLabel()
->schema([
ImageEntry::make('image')
->translateLabel(),
TextEntry::make('desc')
->label('Description')
->translateLabel(),
TextEntry::make('acquisition_date')
->translateLabel(),
TextEntry::make('category.name')
->translateLabel(),
TextEntry::make('cost')
->translateLabel(),
])
->columns()
->hidden(fn ($record) => $record->type === "game"),
]),
])
->bulkActions([
]);

View file

@ -50,8 +50,9 @@ class CategoryResource extends Resource
->translateLabel()
->required()
->options([
'game' => 'Game',
'item' => 'Item',
'game' => __('Game'),
'literature' => __('Literature'),
'item' => __('Item')
]),
]);
}

View file

@ -70,6 +70,7 @@ class ItemResource extends Resource
->options([
'game' => __('Game'),
'item' => __('Item'),
'literature' => __('Literature')
])
->default('game')
->live(),
@ -96,7 +97,7 @@ class ItemResource extends Resource
->minValue(0)
->maxValue(1000)
->default(0)
->hidden(fn ($get): string => $get('type') == 'game'),
->hidden(fn ($get): string => $get('type') == 'game' || $get('type') == 'literature' ),
Select::make('category_id')
->label('Category')
->translateLabel()
@ -110,23 +111,23 @@ class ItemResource extends Resource
->translateLabel()
->maxLength(255)
->default(null)
->hidden(fn ($get): string => $get('type') == 'item'),
->hidden(fn ($get): string => $get('type') == 'item' || $get('type') == 'literature' ),
TextInput::make('players')
->label('Players')
->translateLabel()
->maxLength(255)
->default(null)
->hidden(fn ($get): string => $get('type') == 'item'),
->hidden(fn ($get): string => $get('type') == 'item' || $get('type') == 'literature' ),
TextInput::make('play_time')
->label('Play time')
->translateLabel()
->maxLength(255)
->default(null)
->hidden(fn ($get): string => $get('type') == 'item'),
->hidden(fn ($get): string => $get('type') == 'item'|| $get('type') == 'literature' ),
Toggle::make('can_be_loaned')
->label('Loanable')
->translateLabel()
->hidden(fn ($get): string => $get('type') == 'game'),
->hidden(fn ($get): string => $get('type') == 'game' || $get('type') == 'literature' ),
]);
}
@ -170,20 +171,52 @@ class ItemResource extends Resource
->default(false),
])
->filters([
SelectFilter::make('type')
->translateLabel()
->multiple()
->options([
'game' => __('Game'),
'item' => __('Item'),
]),
SelectFilter::make('category_id')
->label('Category')
->translateLabel()
->multiple()
->options(
Category::all()->pluck('name', 'id'),
),
Filter::make('filters')
->form([
Select::make('type')
->label('Type')
->live()
->translateLabel()
->options([
'game' => __('Game'),
'literature' => __('Literature'),
'item' => __('Item')
]),
Select::make('category_id')
->multiple()
->translateLabel()
->label('Category literature')
->options(Category::all()->whereIn('type', 'literature')->pluck('name', 'id'))
->hidden(fn ($get): string => $get('type') == 'game' || $get('type') == 'item'|| $get('type') == ''),
Select::make('category_id')
->multiple()
->translateLabel()
->label('Category games')
->options(Category::all()->whereIn('type', 'game')->pluck('name', 'id'))
->hidden(fn ($get): string => $get('type') == 'literature' || $get('type') == 'item'|| $get('type') == ''),
Select::make('category_id')
->multiple()
->translateLabel()
->label('Category items')
->options(Category::all()->whereIn('type', 'item')->pluck('name', 'id'))
->hidden(fn ($get): string => $get('type') == 'literature' || $get('type') == 'game'|| $get('type') == ''),
])
->query(function (Builder $query, array $data): Builder {
return $query
->when(
$data['type'],
fn (Builder $query, $type): Builder => $query->where('type', $type),
)
->when(
$data['category_id'],
fn (Builder $query, $category_id): Builder => $query->whereIn('category_id', $category_id),
);
})
->columns([
'deafult' => 1,
'md' => 2,
])
->columnSpan(2),
Filter::make('reserved')
->label('Available')
->translateLabel()
@ -207,9 +240,9 @@ class ItemResource extends Resource
ImageEntry::make('image')
->translateLabel()
->width(300)
->height('auto')
->disk('local')
->visibility('private'),
->height('auto'),
//->disk('local')
//->visibility('private'),
TextEntry::make('desc')
->label('Description')
->translateLabel(),
@ -227,7 +260,7 @@ class ItemResource extends Resource
->translateLabel(),
])
->columns()
->hidden(fn ($record) => $record->type === "item"),
->hidden(fn ($record) => $record->type === "item" || $record->type === 'literature'),
Section::make('')
->translateLabel()
->schema([
@ -246,8 +279,25 @@ class ItemResource extends Resource
->translateLabel(),
])
->columns()
->hidden(fn ($record) => $record->type === "game"),
]),
->hidden(fn ($record) => $record->type === "game" || $record->type === 'literature'),
Section::make('')
->translateLabel()
->schema([
ImageEntry::make('image')
->translateLabel(),
TextEntry::make('desc')
->label('Description')
->translateLabel(),
TextEntry::make('acquisition_date')
->translateLabel(),
TextEntry::make('category.name')
->translateLabel(),
TextEntry::make('cost')
->translateLabel(),
])
->columns()
->hidden(fn ($record) => $record->type === "game" || $record->type === 'item'),
]),
Tables\Actions\EditAction::make()
->button()

View file

@ -19,7 +19,7 @@ class CreateItem extends CreateRecord
protected function handleRecordCreation(array $data): Model
{
if ($data['type'] == "game")
if ($data['type'] == "game" || $data['type'] == "literature")
{
$data['can_be_loaned'] = true;
}

View file

@ -36,5 +36,9 @@
"Total number of games": "Totalt antal spel i lager",
"Total number of items": "Totalt antal saker i lager",
"Reserved games and items": "Reserverade spel och saker",
"Phone": "Telefonnummer"
"Phone": "Telefonnummer",
"Literature": "Litteratur",
"Category literature": "Kategori litteratur",
"Category games": "Kategori spel",
"Category items": "Kategori saker"
}