mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-11 17:51:39 -05:00
Update stats page
This commit is contained in:
parent
fc068ec79d
commit
e8c5b3dfdc
6 changed files with 28 additions and 18 deletions
File diff suppressed because one or more lines are too long
|
|
@ -21,7 +21,7 @@ class StatsController < ApplicationController
|
|||
@month = params[:month].to_i
|
||||
@stat = current_user.stats.find_by(year: @year, month: @month)
|
||||
@previous_stat = current_user.stats.find_by(year: @year, month: @month - 1) if @month > 1
|
||||
@average_distance = current_user.stats.average(:distance) / 1000
|
||||
@average_distance_this_year = current_user.stats.where(year: @year).average(:distance) / 1000
|
||||
end
|
||||
|
||||
def update
|
||||
|
|
|
|||
|
|
@ -14,14 +14,14 @@ module StatsHelper
|
|||
"#{number_with_delimiter(value)} #{distance_unit}"
|
||||
end
|
||||
|
||||
def x_than_average_distance(stat, average_distance)
|
||||
return '' if average_distance.zero?
|
||||
def x_than_average_distance(stat, average_distance_this_year)
|
||||
return '' if average_distance_this_year.zero?
|
||||
|
||||
difference = stat.distance / 1000 - average_distance
|
||||
percentage = ((difference / average_distance) * 100).round
|
||||
difference = stat.distance / 1000 - average_distance_this_year
|
||||
percentage = ((difference / average_distance_this_year) * 100).round
|
||||
|
||||
sign = difference.positive? ? '+' : '-'
|
||||
"#{sign} #{difference.abs.round} (#{percentage.abs}% of your average (#{average_distance.round} km))"
|
||||
more_or_less = difference.positive? ? 'more' : 'less'
|
||||
"#{percentage.abs}% #{more_or_less} than your average this year"
|
||||
end
|
||||
|
||||
def x_than_previous_active_days(stat, previous_stat)
|
||||
|
|
@ -118,4 +118,13 @@ module StatsHelper
|
|||
|
||||
"#{start_str} - #{end_str}"
|
||||
end
|
||||
|
||||
def month_icon(stat)
|
||||
case stat.month
|
||||
when 1..2, 12 then 'snowflake'
|
||||
when 3..5 then 'flower'
|
||||
when 6..8 then 'tree-palm'
|
||||
when 9..11 then 'leaf'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -128,5 +128,4 @@ export default class extends Controller {
|
|||
toast.remove()
|
||||
}, 3000)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -37,9 +37,9 @@ export default class extends Controller {
|
|||
try {
|
||||
// Initialize Leaflet map
|
||||
this.map = L.map(this.mapTarget, {
|
||||
zoomControl: false,
|
||||
zoomControl: true,
|
||||
scrollWheelZoom: true,
|
||||
doubleClickZoom: false,
|
||||
doubleClickZoom: true,
|
||||
boxZoom: false,
|
||||
keyboard: false,
|
||||
dragging: true,
|
||||
|
|
@ -54,7 +54,7 @@ export default class extends Controller {
|
|||
|
||||
// Add small scale control
|
||||
L.control.scale({
|
||||
position: 'bottomleft',
|
||||
position: 'bottomright',
|
||||
maxWidth: 100,
|
||||
imperial: true,
|
||||
metric: true
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@
|
|||
<div class="hero bg-gradient-to-r from-primary to-secondary text-primary-content rounded-lg shadow-lg mb-8">
|
||||
<div class="hero-content text-center relative w-full">
|
||||
<div class="max-w-md mt-5">
|
||||
<h1 class="text-4xl font-bold">📍 <%= Date::MONTHNAMES[month] %> <%= year %></h1>
|
||||
<h1 class="text-4xl font-bold flex items-center justify-center gap-2">
|
||||
<%= "#{icon month_icon(stat)} #{Date::MONTHNAMES[month]} #{year}".html_safe %>
|
||||
</h1>
|
||||
<p class="py-4">Monthly Digest</p>
|
||||
<button class="btn btn-outline btn-sm text-neutral border-neutral hover:bg-white hover:text-primary"
|
||||
onclick="sharing_modal.showModal()">
|
||||
|
|
@ -17,8 +19,8 @@
|
|||
<div class="stat-title flex items-center justify-center gap-1">
|
||||
<%= icon 'map-plus' %> Distance traveled
|
||||
</div>
|
||||
<div class="stat-value text-success"><%= distance_traveled(current_user, stat) %></div>
|
||||
<div class="stat-desc"><%= x_than_average_distance(stat, @average_distance) %></div>
|
||||
<div class="stat-value text-success">~<%= distance_traveled(current_user, stat) %></div>
|
||||
<div class="stat-desc"><%= x_than_average_distance(stat, @average_distance_this_year) %></div>
|
||||
</div>
|
||||
|
||||
<div class="stat place-items-center text-center">
|
||||
|
|
@ -79,7 +81,7 @@
|
|||
</div>
|
||||
|
||||
<!-- Map Stats -->
|
||||
<div class="stats grid grid-cols-2 md:grid-cols-4 gap-4 mt-4">
|
||||
<!--div class="stats grid grid-cols-2 md:grid-cols-4 gap-4 mt-4">
|
||||
<div class="stat">
|
||||
<div class="stat-title text-xs">Most visited</div>
|
||||
<div class="stat-value text-sm">Downtown Area</div>
|
||||
|
|
@ -100,7 +102,7 @@
|
|||
<div class="stat-value text-sm">45km²</div>
|
||||
<div class="stat-desc text-xs">explored</div>
|
||||
</div>
|
||||
</div>
|
||||
</div-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue