mirror of
https://github.com/anna-sara/filament_inventory
synced 2025-10-26 20:17:14 +01:00
Added new typ Literature and updated filters
This commit is contained in:
parent
537441fa8b
commit
581a1fbf74
5 changed files with 162 additions and 51 deletions
|
|
@ -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')
|
||||
Filter::make('filters')
|
||||
->form([
|
||||
Select::make('type')
|
||||
->label('Typ')
|
||||
->live()
|
||||
->options([
|
||||
'game' => __('Game'),
|
||||
'literature' => __('Literature')
|
||||
]),
|
||||
Select::make('category_id')
|
||||
->multiple()
|
||||
->preload()
|
||||
->label('Kategori')
|
||||
->options(Category::all()->where('type', 'game')->pluck('name', 'id')),
|
||||
->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,33 +202,53 @@ class Reserve extends BasePage implements HasTable
|
|||
->send();
|
||||
})
|
||||
->hidden(fn ($record) => $record->reserved),
|
||||
Action::make('Mer info')
|
||||
Action::make('More info')
|
||||
->translateLabel()
|
||||
->modalSubmitAction(false)
|
||||
->button()
|
||||
->color('primary')
|
||||
->infolist([
|
||||
Section::make('Spel')
|
||||
Section::make('')
|
||||
->schema([
|
||||
ImageEntry::make('image')
|
||||
->label('Bild')
|
||||
->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([
|
||||
|
|
|
|||
|
|
@ -50,8 +50,9 @@ class CategoryResource extends Resource
|
|||
->translateLabel()
|
||||
->required()
|
||||
->options([
|
||||
'game' => 'Game',
|
||||
'item' => 'Item',
|
||||
'game' => __('Game'),
|
||||
'literature' => __('Literature'),
|
||||
'item' => __('Item')
|
||||
]),
|
||||
]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
Filter::make('filters')
|
||||
->form([
|
||||
Select::make('type')
|
||||
->label('Type')
|
||||
->live()
|
||||
->translateLabel()
|
||||
->multiple()
|
||||
->options([
|
||||
'game' => __('Game'),
|
||||
'item' => __('Item'),
|
||||
'literature' => __('Literature'),
|
||||
'item' => __('Item')
|
||||
]),
|
||||
SelectFilter::make('category_id')
|
||||
->label('Category')
|
||||
->translateLabel()
|
||||
Select::make('category_id')
|
||||
->multiple()
|
||||
->options(
|
||||
Category::all()->pluck('name', 'id'),
|
||||
),
|
||||
->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,7 +279,24 @@ 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()
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
6
lang/vendor/filament-panels/sv.json
vendored
6
lang/vendor/filament-panels/sv.json
vendored
|
|
@ -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"
|
||||
}
|
||||
Loading…
Reference in a new issue