informar cuando no hay datos

This commit is contained in:
f 2021-10-08 18:35:40 -03:00
parent 38090d7de7
commit d2b1220df6
3 changed files with 28 additions and 0 deletions

View file

@ -3,6 +3,8 @@
# Estadísticas del sitio # Estadísticas del sitio
class StatsController < ApplicationController class StatsController < ApplicationController
include Pundit include Pundit
include ActionView::Helpers::DateHelper
before_action :authenticate_usuarie! before_action :authenticate_usuarie!
before_action :authorize_stats before_action :authorize_stats
@ -18,6 +20,7 @@ class StatsController < ApplicationController
@chart_params = { interval: interval } @chart_params = { interval: interval }
hostnames hostnames
last_stat last_stat
chart_options
end end
# Genera un gráfico de visitas por dominio asociado a este sitio # Genera un gráfico de visitas por dominio asociado a este sitio
@ -51,6 +54,27 @@ class StatsController < ApplicationController
@hostnames ||= [@site.hostname, @site.alternative_hostnames].flatten @hostnames ||= [@site.hostname, @site.alternative_hostnames].flatten
end end
# Opciones por defecto para los gráficos.
#
# La invitación a volver dentro de X tiempo es para dar un estimado de
# cuándo habrá información disponible, porque Rollup genera intervalos
# completos (¿aunque dice que no?)
#
# La diferencia se calcula sumando el intervalo a la hora de última
# toma de estadísticas y restando el tiempo que pasó desde ese
# momento.
def chart_options
time = last_stat.created_at + (1.send(interval))
please_return_at = { please_return_at: distance_of_time_in_words(Time.now, time) }
@chart_options ||= {
locale: I18n.locale,
empty: I18n.t('stats.index.empty', **please_return_at),
loading: I18n.t('stats.index.loading'),
html: %(<div id="%{id}" class="d-flex align-items-center justify-content-center" style="height: %{height}; width: %{width};">%{loading}</div>)
}
end
# Obtiene y valida los intervalos # Obtiene y valida los intervalos
# #
# @return [Symbol] # @return [Symbol]

View file

@ -253,6 +253,8 @@ en:
These statistics show information about how your site is generated and These statistics show information about how your site is generated and
how many resources it uses. how many resources it uses.
last_update: 'Updated every hour. Last update on ' last_update: 'Updated every hour. Last update on '
empty: 'There is no enough information yet. We invite you to come back in %{please_return_at}!'
loading: 'Loading...'
hour: 'Hourly' hour: 'Hourly'
day: 'Daily' day: 'Daily'
week: 'Weekly' week: 'Weekly'

View file

@ -258,6 +258,8 @@ es:
Las estadísticas visibilizan información sobre cómo se genera y Las estadísticas visibilizan información sobre cómo se genera y
cuántos recursos utiliza tu sitio. cuántos recursos utiliza tu sitio.
last_update: 'Actualizadas cada hora. Última actualización hace ' last_update: 'Actualizadas cada hora. Última actualización hace '
empty: 'Todavía no hay información suficiente. Te invitamos a volver en %{please_return_at} :)'
loading: 'Cargando...'
hour: 'Por hora' hour: 'Por hora'
day: 'Diarias' day: 'Diarias'
week: 'Semanales' week: 'Semanales'