diff --git a/modules/backend/widgets/Filter.php b/modules/backend/widgets/Filter.php
index 3f01ae2f3..e108caf90 100644
--- a/modules/backend/widgets/Filter.php
+++ b/modules/backend/widgets/Filter.php
@@ -1,5 +1,6 @@
$scope];
+ $loadDatePicker = false;
+
switch ($scope->type) {
case 'date':
+ $loadDatePicker = true;
+
+ if ($scope->value && $scope->value instanceof Carbon) {
+ $params['dateStr'] = Backend::dateTime($scope->value, ['formatAlias' => 'dateMin']);
+ $params['date'] = $scope->value->format('Y-m-d H:i:s');
+ }
+
+ break;
case 'daterange':
- // Load datepicker assets
- new DatePicker($this->controller, new FormField('dummy', 'dummy'));
+ $loadDatePicker = true;
+
+ if ($scope->value && is_array($scope->value) && count($scope->value) === 2 &&
+ $scope->value[0] && $scope->value[0] instanceof Carbon &&
+ $scope->value[1] && $scope->value[1] instanceof Carbon
+ ) {
+ $params['afterStr'] = Backend::dateTime($scope->value[0], ['formatAlias' => 'dateMin']);
+ $params['beforeStr'] = Backend::dateTime($scope->value[1], ['formatAlias' => 'dateMin']);
+ $params['after'] = $scope->value[0]->format('Y-m-d H:i:s');
+ $params['before'] = $scope->value[1]->format('Y-m-d H:i:s');
+ }
+
break;
}
- return $this->makePartial('scope_'.$scope->type, ['scope' => $scope]);
+ if($loadDatePicker) {
+ // Load datepicker assets
+ new DatePicker($this->controller, new FormField('dummy', 'dummy'));
+ }
+
+ return $this->makePartial('scope_'.$scope->type, $params);
}
//
@@ -501,7 +528,7 @@ class Filter extends WidgetBase
switch ($scope->type) {
case 'date':
if ($scope->value instanceof Carbon) {
- $value = $scope->value->setTime(0, 0, 0);
+ $value = $scope->value;
/*
* Condition
@@ -510,7 +537,7 @@ class Filter extends WidgetBase
$query->whereRaw(DbDongle::parse(strtr($scopeConditions, [
':filtered' => $value->format('Y-m-d'),
':after' => $value->format('Y-m-d H:i:s'),
- ':before' => $value->copy()->setTime(23, 59, 59)->format('Y-m-d H:i:s')
+ ':before' => $value->copy()->addDay()->addMinutes(-1)->format('Y-m-d H:i:s')
])));
}
@@ -528,8 +555,6 @@ class Filter extends WidgetBase
list($after, $before) = array_values($scope->value);
if($after && $after instanceof Carbon && $before && $before instanceof Carbon) {
- $after->setTime(0, 0, 0);
- $before->setTime(23, 59, 59);
/*
* Condition
@@ -728,8 +753,8 @@ class Filter extends WidgetBase
}
foreach ($ajaxDates as $date) {
- if(preg_match('/\d{4}-\d{2}-\d{2}/', $date)) {
- $dates[] = Carbon::createFromFormat('Y-m-d', $date);
+ if(preg_match('/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/', $date)) {
+ $dates[] = Carbon::createFromFormat('Y-m-d H:i:s', $date);
} else {
$dates = [];
break;
diff --git a/modules/backend/widgets/filter/partials/_scope_date.htm b/modules/backend/widgets/filter/partials/_scope_date.htm
index 79ec5ffd4..6b3286d23 100644
--- a/modules/backend/widgets/filter/partials/_scope_date.htm
+++ b/modules/backend/widgets/filter/partials/_scope_date.htm
@@ -1,14 +1,14 @@
= e(trans($scope->label)) ?>:
- = $scope->value && $scope->value instanceof \Carbon\Carbon ? $scope->value->format('Y-m-d') : e(trans('backend::lang.filter.date_all')) ?>
+ = isset($dateStr) ? $dateStr : e(trans('backend::lang.filter.date_all')) ?>
diff --git a/modules/backend/widgets/filter/partials/_scope_daterange.htm b/modules/backend/widgets/filter/partials/_scope_daterange.htm
index 46e20d2ab..40d78fa63 100644
--- a/modules/backend/widgets/filter/partials/_scope_daterange.htm
+++ b/modules/backend/widgets/filter/partials/_scope_daterange.htm
@@ -1,14 +1,14 @@
= e(trans($scope->label)) ?>:
- = $scope->value && is_array($scope->value) ? join(' → ', array_map(function($value) { return $value && $value instanceof \Carbon\Carbon ? $value->format('Y-m-d') : null; }, $scope->value)) : e(trans('backend::lang.filter.date_all')) ?>
+ = isset($afterStr) && isset($beforeStr) ? ($afterStr . ' → ' . $beforeStr) : e(trans('backend::lang.filter.date_all')) ?>
diff --git a/modules/system/assets/ui/js/filter.dates.js b/modules/system/assets/ui/js/filter.dates.js
index 2e02ca76a..073035388 100644
--- a/modules/system/assets/ui/js/filter.dates.js
+++ b/modules/system/assets/ui/js/filter.dates.js
@@ -165,7 +165,7 @@
\
\
\
-