Skip to content

Commit 560f3e9

Browse files
committed
Improve position layout for moderation
1 parent b17871c commit 560f3e9

File tree

3 files changed

+50
-33
lines changed

3 files changed

+50
-33
lines changed

app/Orchid/Screens/PlatformScreen.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use App\Models\CodeSnippet;
88
use App\Models\Comment;
9+
use App\Models\Document;
910
use App\Models\IdeaKey;
1011
use App\Models\IdeaRequest;
1112
use App\Models\Meet;
@@ -15,7 +16,9 @@
1516
use App\Models\User;
1617
use App\Orchid\Layouts\BasicIndicators;
1718
use Carbon\Carbon;
19+
use Illuminate\Support\Str;
1820
use Orchid\Screen\Screen;
21+
use Orchid\Support\Facades\Layout;
1922

2023
class PlatformScreen extends Screen
2124
{
@@ -30,21 +33,25 @@ public function query(): iterable
3033
$end = Carbon::now();
3134

3235
return [
33-
'basicIndicators' => [
36+
'basicIndicators' => [
3437
User::countByDays($start, $end)->toChart('Пользователи'),
3538
Comment::countByDays($start, $end)->toChart('Комментарии'),
3639
CodeSnippet::countByDays($start, $end)->toChart('Pastebin'),
3740
],
38-
'content' => [
41+
'content' => [
3942
Post::countByDays($start, $end)->toChart('Посты'),
4043
Meet::countByDays($start, $end)->toChart('Мероприятия'),
4144
Package::countByDays($start, $end)->toChart('Пакеты'),
4245
Position::countByDays($start, $end)->toChart('Вакансии'),
4346
],
44-
'idea' => [
47+
'idea' => [
4548
IdeaRequest::countByDays($start, $end)->toChart('Запросы ключей'),
4649
IdeaKey::where('activated', 1)->countByDays($start, $end, 'updated_at')->toChart('Выданные ключи'),
4750
],
51+
'docs' => Document::selectRaw('version, SUM(behind) as behind')
52+
->groupBy('version')
53+
->pluck('behind', 'version')
54+
->mapWithKeys(fn ($value, $key) => [Str::of($key)->replace('.', '')->toString() => $value.' изменений']),
4855
];
4956
}
5057

@@ -82,9 +89,14 @@ public function commandBar(): iterable
8289
public function layout(): iterable
8390
{
8491
return [
92+
Layout::metrics([
93+
'Документация 10.x отстаёт' => 'docs.10x',
94+
'Документация 11.x отстаёт' => 'docs.11x',
95+
]),
96+
8597
BasicIndicators::make('basicIndicators')
8698
->description('График отображает количество зарегистрированных пользователей и оставленных комментариев по дням')
87-
->title('Пользователи'),
99+
->title('Вовлеченность пользователей'),
88100

89101
BasicIndicators::make('content')
90102
->title('Контент')
@@ -93,7 +105,6 @@ public function layout(): iterable
93105
BasicIndicators::make('idea')
94106
->description('Количество запросов и выданных ключей Laravel Idea по дням')
95107
->title('Idea'),
96-
97108
];
98109
}
99110
}

app/Orchid/Screens/Position/EditScreen.php

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Orchid\Screen\Action;
1414
use Orchid\Screen\Actions\Button;
1515
use Orchid\Screen\Actions\Link;
16+
use Orchid\Screen\Fields\Group;
1617
use Orchid\Screen\Fields\Input;
1718
use Orchid\Screen\Fields\Select;
1819
use Orchid\Screen\Fields\SimpleMDE;
@@ -74,14 +75,19 @@ public function permission(): ?iterable
7475
public function commandBar(): iterable
7576
{
7677
return [
77-
Link::make('Посмотреть')
78-
->href(route('position.show', $this->position))
79-
->target('_blank')
80-
->icon('bs.eye'),
8178
Button::make(__('Remove'))
8279
->icon('bs.trash3')
8380
->confirm('Удаление вакансии будет окончательным и необратимым действием.')
8481
->method('remove'),
82+
83+
Link::make('Посмотреть')
84+
->href(route('position.show', $this->position))
85+
->target('_blank')
86+
->icon('bs.eye'),
87+
88+
Button::make(__('Сохранить изменения'))
89+
->icon('bs.check-circle')
90+
->method('update')
8591
];
8692
}
8793

@@ -91,15 +97,19 @@ public function commandBar(): iterable
9197
public function layout(): iterable
9298
{
9399
return [
94-
Layout::block(
100+
101+
Layout::split([
95102
Layout::rows([
96103
Input::make('position.title')
104+
->required()
97105
->title('Заголовок'),
98106

99107
SimpleMDE::make('position.description')
100108
->title('Текст')
101-
->placeholder('Содержимое статьи'),
102-
109+
->required()
110+
->placeholder('Содержимое вакансии'),
111+
]),
112+
Layout::rows([
103113
Input::make('position.organization')
104114
->title('Организация'),
105115

@@ -111,35 +121,30 @@ public function layout(): iterable
111121
->title('Формат'),
112122

113123
Input::make('position.contact')
124+
->required()
114125
->title('Контакты'),
115126

116-
Input::make('position.salary_min')
117-
->type('number')
118-
->min(0)
119-
->step(1000)
120-
->title('От'),
127+
Group::make([
128+
Input::make('position.salary_min')
129+
->type('number')
130+
->min(0)
131+
->step(1000)
132+
->title('Зарплата. От'),
121133

122-
Input::make('position.salary_max')
123-
->type('number')
124-
->min(0)
125-
->step(1000)
126-
->title('До'),
134+
Input::make('position.salary_max')
135+
->type('number')
136+
->min(0)
137+
->step(1000)
138+
->title('До'),
139+
]),
127140

128141
Switcher::make('position.approved')
129142
->sendTrueOrFalse()
130143
->title('Статус')
131144
->placeholder('Одобренный')
132145
->help('Одобренные вакансии будут видны на сайте'),
133-
134-
]))
135-
->title(__('Вакансия'))
136-
->description('')
137-
->commands(
138-
Button::make(__('Сохранить изменения'))
139-
->type(Color::SUCCESS)
140-
->icon('bs.check-circle')
141-
->method('update')
142-
),
146+
])
147+
])->ratio('60/40'),
143148
];
144149
}
145150

app/Orchid/Screens/Position/ListScreen.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ public function query(): iterable
2929
return [
3030
'positions' => Position::with('author')
3131
->filters()
32-
->defaultSort('approved')
32+
->orderBy('approved')
33+
->defaultSort('created_at', 'desc')
3334
->paginate(),
3435
];
3536
}

0 commit comments

Comments
 (0)