components([ TextInput::make('name')->required()->label(__('label.name')), TextInput::make('price')->required()->integer()->label(__('label.price')), TextInput::make('image_large')->required()->label(__('label.medal.image_large')), TextInput::make('image_small')->required()->label(__('label.medal.image_small')), Radio::make('get_type') ->options(Medal::listGetTypes(true)) ->inline() ->label(__('label.medal.get_type')) ->required() , Toggle::make('display_on_medal_page') ->label(__('label.medal.display_on_medal_page')) ->required() , TextInput::make('duration') ->integer() ->label(__('label.medal.duration')) ->helperText(__('label.medal.duration_help')) , TextInput::make('inventory') ->integer() ->label(__('medal.fields.inventory')) ->helperText(__('medal.fields.inventory_help')) , DateTimePicker::make('sale_begin_time') ->label(__('medal.fields.sale_begin_time')) ->helperText(__('medal.fields.sale_begin_time_help')) , DateTimePicker::make('sale_end_time') ->label(__('medal.fields.sale_end_time')) ->helperText(__('medal.fields.sale_end_time_help')) , TextInput::make('bonus_addition_factor') ->label(__('medal.fields.bonus_addition_factor')) ->helperText(__('medal.fields.bonus_addition_factor_help')) ->numeric() ->minValue(0) ->default(0) , TextInput::make('bonus_addition_duration') ->label(__('medal.fields.bonus_addition_duration')) ->helperText(__('medal.fields.bonus_addition_duration_help')) ->numeric() ->minValue(0) ->default(0) , TextInput::make('gift_fee_factor') ->label(__('medal.fields.gift_fee_factor')) ->helperText(__('medal.fields.gift_fee_factor_help')) ->numeric() ->default(0) , TextInput::make('priority') ->label(__('label.priority')) ->helperText(__('label.priority_help')) ->numeric() ->default(0) , Textarea::make('description') ->label(__('label.description')) , ]); } public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('id')->sortable(), TextColumn::make('name')->label(__('label.name'))->searchable(), ImageColumn::make('image_large')->height(60)->label(__('label.medal.image_large')), TextColumn::make('getTypeText')->label('Get type')->label(__('label.medal.get_type')), IconColumn::make('display_on_medal_page')->label(__('label.medal.display_on_medal_page'))->boolean(), TextColumn::make('sale_begin_end_time') ->label(__('medal.fields.sale_begin_end_time')) ->formatStateUsing(fn ($record) => new HtmlString(sprintf('%s ~
%s', $record->sale_begin_time ?? nexus_trans('nexus.no_limit'), $record->sale_end_time ?? nexus_trans('nexus.no_limit')))) , TextColumn::make('bonus_addition_factor')->label(__('medal.fields.bonus_addition_factor')), TextColumn::make('bonus_addition_duration')->label(__('medal.fields.bonus_addition_duration')), TextColumn::make('gift_fee_factor')->label(__('medal.fields.gift_fee_factor')), TextColumn::make('price')->label(__('label.price'))->formatStateUsing(fn ($state) => number_format($state)), TextColumn::make('duration')->label(__('label.medal.duration')), TextColumn::make('inventoryText') ->label(__('medal.fields.inventory')) , TextColumn::make('users_count')->label(__('medal.fields.users_count')), TextColumn::make('priority')->label(__('label.priority')), ]) ->filters([ // ]) ->recordActions([ EditAction::make(), ]) ->toolbarActions([ DeleteBulkAction::make(), ]) ->modifyQueryUsing(fn (Builder $query) => $query->orderBy("priority", 'desc')->orderBy('id', 'desc')) ; } public static function getRelations(): array { return [ // ]; } public static function getPages(): array { return [ 'index' => ListMedals::route('/'), 'create' => CreateMedal::route('/create'), 'edit' => EditMedal::route('/{record}/edit'), ]; } }