// @table-updated-index.window="asyncRequest"
@@defineEvent('table-updated', 'index', 'asyncRequest')
>
@@ -36,7 +37,7 @@
-
// @table-updated-index.window="asyncRequest"
@@defineEventWhen(true, 'table-updated', 'index', 'asyncRequest')
>
@@ -63,13 +65,13 @@
-AlpineJs::event(string|JsEvent $event, ?string $name = null, ?string $call = null)
+AlpineJs::event(string|JsEvent $event, ?string $name = null, array $params = [])
$event
- событие,
$name
- название компонента,
- $call
- callback функция.
+ $params
- параметры события
@@ -79,19 +81,20 @@
FormBuilder::make('/crud/update', 'PUT')
->name('main-form')
- ->async(asyncEvents: [AlpineJs::event(JsEvent::TABLE_UPDATED, 'index', 'asyncRequest')]) // [tl! focus]
+ ->async(asyncEvents: [AlpineJs::event(JsEvent::TABLE_UPDATED, 'index', ['var' => 'foo])]) // [tl! focus]
-AlpineJs::eventBlade(string|JsEvent $event, ?string $name = null, ?string $call = null)
+AlpineJs::eventBlade(string|JsEvent $event, ?string $name = null, ?string $call = null, array $params = [])
$event
- событие,
$name
- название компонента,
$call
- callback функция.
+ $params
- параметры события
diff --git a/resources/views/pages/ru/recipes.blade.php b/resources/views/pages/ru/recipes.blade.php
index 3e0c0562..bdc419a9 100644
--- a/resources/views/pages/ru/recipes.blade.php
+++ b/resources/views/pages/ru/recipes.blade.php
@@ -16,6 +16,7 @@
['url' => '#change-field-logic', 'label' => 'Изменение логики поля'],
['url' => '#images-in-linked-table', 'label' => 'Сохранение изображений в связанной таблице'],
['url' => '#custom-select-filter', 'label' => 'Кастомный фильтр с селектом'],
+ ['url' => '#async-metrics', 'label' => 'Async метрики'],
]
]"
>
@@ -36,5 +37,6 @@
])
@include('pages.ru.recipes.images-in-linked-table', ['title' => 'Сохранение изображений в связанной таблице'])
@include('pages.ru.recipes.custom-select-filter', ['title' => 'Кастомный фильтр с селектом'])
+@include('pages.ru.recipes.async-metrics', ['title' => 'Async метрики'])
diff --git a/resources/views/pages/ru/recipes/async-metrics.blade.php b/resources/views/pages/ru/recipes/async-metrics.blade.php
new file mode 100644
index 00000000..1fd19526
--- /dev/null
+++ b/resources/views/pages/ru/recipes/async-metrics.blade.php
@@ -0,0 +1,42 @@
+
+
+
+ Метрики с параметрами формы
+
+
+
+$startDate = request()->date('_form.start_date');
+$endDate = request()->date('_form.end_date');
+
+FormBuilder::make()
+ ->dispatchEvent(AlpineJs::event(JsEvent::FRAGMENT_UPDATED, 'metrics'))
+ ->fields([
+ Flex::make([
+ Date::make('Start date'),
+ Date::make('End date'),
+ ]),
+ ]),
+
+Fragment::make([
+ FlexibleRender::make("$startDate - $endDate"),
+
+ LineChartMetric::make('Orders')
+ ->line([
+ 'Profit' => Order::query()
+ ->selectRaw('SUM(price) as sum, DATE_FORMAT(created_at, "%d.%m.%Y") as date')
+ ->whereBetween('created_at', [$startDate, $endDate])
+ ->groupBy('date')
+ ->pluck('sum', 'date')
+ ->toArray(),
+ ])
+ ->line([
+ 'Avg' => Order::query()
+ ->selectRaw('AVG(price) as avg, DATE_FORMAT(created_at, "%d.%m.%Y") as date')
+ ->whereBetween('created_at', [$startDate, $endDate])
+ ->groupBy('date')
+ ->pluck('avg', 'date')
+ ->toArray(),
+ ], '#EC4176'),
+])->name('metrics'),
+
+