From b3bb0758a9d2b5c4148eecdd547d2032427d7a8f Mon Sep 17 00:00:00 2001 From: Stephen Cameron Date: Tue, 27 Sep 2022 19:26:36 +0200 Subject: [PATCH] Select period segmentation from date picker + other improvements. WIP #5316 @8 --- .../FluidbookPublication/StatsOperation.php | 29 ++++++--- .../daterangepicker/daterangepicker.css | 25 ++++---- .../views/fluidbook_stats/loader.blade.php | 59 ++++++++++++++++++- .../views/fluidbook_stats/summary.blade.php | 57 ++++++++++++------ 4 files changed, 126 insertions(+), 44 deletions(-) diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/StatsOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/StatsOperation.php index 930a005e5..f900f03bd 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/StatsOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/StatsOperation.php @@ -178,10 +178,22 @@ trait StatsOperation // Translatable list of labels for the available periods $period_map = [ - 'day' => __('Day'), - 'week' => __('Week'), - 'month' => __('Month'), - 'year' => __('Year'), + 'day' => [ + 'singular' => __('Day'), + 'periodic' => __('Daily'), + ], + 'week' => [ + 'singular' => __('Week'), + 'periodic' => __('Weekly'), + ], + 'month' => [ + 'singular' => __('Month'), + 'periodic' => __('Monthly'), + ], + 'year' => [ + 'singular' => __('Year'), + 'periodic' => __('Annual'), + ], ]; $dates = $date ? $this->parseDate($date) : false; @@ -190,6 +202,7 @@ trait StatsOperation $period_override = in_array($period_override, array_keys($period_map)) ? $period_override : null; $period = $period_override ?? $this->determinePeriod($dates, $fluidbook); + $chart_heading = sprintf(__('%s Details'), $period_map[$period]['periodic']); $report_timespan = ''; // Which mode are we in? @@ -200,7 +213,6 @@ trait StatsOperation $date_range = "{$start_date},{$end_date}"; $formatted_date_range = Carbon::parse($start_date)->isoFormat('MMMM Do, YYYY') . ' — ' . Carbon::parse($end_date)->isoFormat('MMMM Do, YYYY'); - $chart_heading = __('Daily Details'); // Human-friendly representation of the time span // Since our start and end dates are only in the format YYYY-MM-DD, the time defaults to midnight @@ -222,8 +234,7 @@ trait StatsOperation $start_date = "{$year}-{$month}-01"; $date_range = "{$start_date},{$year}-{$month}-{$last_day_of_month}"; $end_date = ($month == date('m') && $year == date('Y')) ? date('Y-m-d') : "{$year}-{$month}-{$last_day_of_month}"; - $chart_heading = __('Daily Details') . - '' . Carbon::parse($start_date)->isoFormat('MMMM YYYY') . ''; + $chart_heading .= '' . Carbon::parse($start_date)->isoFormat('MMMM YYYY') . ''; $formatted_date_range = Carbon::parse($start_date)->isoFormat('Do') . ' — ' . Carbon::parse($end_date)->isoFormat('Do MMMM, YYYY'); @@ -235,7 +246,7 @@ trait StatsOperation $end_date = $year == date('Y') ? date('Y-m-d') : "{$year}-12-31"; // If it's the current year, don't count future dates $formatted_date_range = Carbon::parse($start_date)->isoFormat('MMMM Do, YYYY') . ' — ' . Carbon::parse($end_date)->isoFormat('MMMM Do, YYYY'); - $chart_heading = __('Annual Details') . "$year"; + $chart_heading .= "$year"; } else { // No valid dates specified, display the full data set $mode = 'overview'; @@ -550,7 +561,7 @@ trait StatsOperation $table_map = [ // Main summary table 'summary' => [ - 'formatted_date' => $period_map[$period], + 'formatted_date' => $period_map[$period]['singular'], 'nb_uniq_visitors' => __('Unique Visitors'), 'nb_visits' => __('Visits'), 'nb_hits' => __('Pages Viewed'), diff --git a/public/packages/daterangepicker/daterangepicker.css b/public/packages/daterangepicker/daterangepicker.css index 3ca56fc5f..6e4d8745b 100755 --- a/public/packages/daterangepicker/daterangepicker.css +++ b/public/packages/daterangepicker/daterangepicker.css @@ -13,7 +13,7 @@ -ms-flex-pack: start; justify-content: flex-start; border-radius: 4px; - padding: 4px; + padding: 0.5em 0.25em; font-size: 13px; font-family: sans-serif; line-height: 1.5em; @@ -74,23 +74,22 @@ .daterangepicker .ranges li { border-radius: 4px; - margin-bottom: 8px; text-align: left; } +.daterangepicker .ranges li + li { + margin-top: 0.5em; +} .daterangepicker .custom-range-inputs { - display: -ms-flexbox; display: flex; - margin: -3px; - margin-bottom: 5px; + align-items: center; + gap: 0.5em; + margin-top: 0.5em; } .daterangepicker .custom-range-inputs input { - min-width: 50px; - width: 50px; - -ms-flex: 1; - flex: 1; - margin: 3px; + min-width: 11ch; + flex: 1; border-radius: 4px; border: 1px solid #ccc; height: auto; @@ -100,15 +99,13 @@ } .daterangepicker .custom-range-buttons { - display: -ms-flexbox; display: flex; - margin: -3px; + gap: 0.5em; + margin-top: 1em; } .daterangepicker .custom-range-buttons button { - margin: 0; padding: 4px 9px; - margin: 3px; border-radius: 4px; background: #f5f5f5; color: #08c; diff --git a/resources/views/fluidbook_stats/loader.blade.php b/resources/views/fluidbook_stats/loader.blade.php index f90ee6386..d60607e9b 100644 --- a/resources/views/fluidbook_stats/loader.blade.php +++ b/resources/views/fluidbook_stats/loader.blade.php @@ -3,6 +3,11 @@ @section('after_styles')