Rework admin panel and other

This commit is contained in:
F4ilji
2025-04-02 18:37:20 +05:00
parent 49072e50c7
commit 5cd6ff11b5
198 changed files with 9715 additions and 6664 deletions
@@ -15,14 +15,22 @@ use Illuminate\Database\Eloquent\SoftDeletingScope;
class ProgramsRelationManager extends RelationManager
{
protected static string $relationship = 'programs';
protected static ?string $title = 'Образовательные программы кафедры';
public function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('name')
->required()
->maxLength(255),
Forms\Components\Section::make('Основная информация')
->description('Связь образовательной программы с кафедрой')
->schema([
Forms\Components\TextInput::make('name')
->label('Название программы')
->required()
->maxLength(255)
->placeholder('Например: Информатика и вычислительная техника')
->helperText('Полное название образовательной программы'),
])
]);
}
@@ -31,24 +39,65 @@ class ProgramsRelationManager extends RelationManager
return $table
->recordTitleAttribute('name')
->columns([
Tables\Columns\TextColumn::make('name'),
Tables\Columns\TextColumn::make('name')
->label('Название программы')
->searchable()
->sortable()
->wrap(),
Tables\Columns\TextColumn::make('status')
->label('Статус')
->badge()
->formatStateUsing(fn($state): string => EducationalProgramStatus::tryFrom($state)->getLabel())
->color(fn($state): string => EducationalProgramStatus::tryFrom($state)->getColor())
->sortable(),
])
->filters([
//
Tables\Filters\SelectFilter::make('status')
->label('Статус программы')
->options(EducationalProgramStatus::class)
->default(EducationalProgramStatus::PUBLISHED->value),
])
->headerActions([
AttachAction::make()
->recordSelectOptionsQuery(fn (Builder $query) => $query->where('status', EducationalProgramStatus::PUBLISHED)),
->label('Добавить программу')
->modalHeading('Добавление программы к кафедре')
->modalSubmitActionLabel('Добавить')
->preloadRecordSelect()
->recordSelectOptionsQuery(fn(Builder $query) => $query->where('status', EducationalProgramStatus::PUBLISHED))
->recordSelect(
fn(Forms\Components\Select $select) => $select
->placeholder('Выберите программу')
->label('Образовательная программа')
->helperText('Только опубликованные программы')
->searchable()
->columnSpanFull()
)
])
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\DetachAction::make(),
Tables\Actions\DetachAction::make()
->iconButton()
->tooltip('Открепить программу')
->modalHeading('Открепление программы')
->modalSubmitActionLabel('Открепить')
->modalDescription('Вы уверены, что хотите открепить эту программу от кафедры?'),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DetachBulkAction::make(),
Tables\Actions\DetachBulkAction::make()
->label('Открепить выбранные')
->modalHeading('Открепление программ')
->modalSubmitActionLabel('Открепить')
->modalDescription('Вы уверены, что хотите открепить выбранные программы от кафедры?'),
]),
]);
])
->emptyStateActions([
AttachAction::make()
->label('Добавить программу'),
])
->defaultSort('name')
->deferLoading()
->persistFiltersInSession();
}
}
}