Permette di filtrare il grafico analytics su una singola pagina.
Aggiunge il filtro Pagina (grafico) e il link Grafico in tabella, mantenendo Da/A/Device. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -6,7 +6,8 @@ module Admin
|
|||||||
@filters = {
|
@filters = {
|
||||||
from: parse_date(params[:from]) || 7.days.ago.to_date,
|
from: parse_date(params[:from]) || 7.days.ago.to_date,
|
||||||
to: parse_date(params[:to]) || Time.zone.today,
|
to: parse_date(params[:to]) || Time.zone.today,
|
||||||
device: params[:device].presence
|
device: params[:device].presence,
|
||||||
|
chart_path: params[:chart_path].presence
|
||||||
}
|
}
|
||||||
@analytics_preview_active = analytics_preview_active?
|
@analytics_preview_active = analytics_preview_active?
|
||||||
|
|
||||||
@@ -37,21 +38,22 @@ module Admin
|
|||||||
}
|
}
|
||||||
end.sort_by { |r| [-r[:pageviews], -r[:moves], -r[:clicks], r[:page_path]] }
|
end.sort_by { |r| [-r[:pageviews], -r[:moves], -r[:clicks], r[:page_path]] }
|
||||||
|
|
||||||
pageviews_by_day = scope.group(:day).sum(:pageview_count)
|
@chart_path_options = @pages.map { |row| row[:page_path] }
|
||||||
clicks_by_day = cell_scope.group(:day).sum(:click_count)
|
if @filters[:chart_path].present? && @chart_path_options.exclude?(@filters[:chart_path])
|
||||||
moves_by_day = cell_scope.group(:day).sum(:move_count)
|
@filters[:chart_path] = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
trend_scope = scope
|
||||||
|
trend_scope = trend_scope.where(page_path: @filters[:chart_path]) if @filters[:chart_path].present?
|
||||||
|
pageviews_by_day = trend_scope.group(:day).sum(:pageview_count)
|
||||||
@trend = (@filters[:from]..@filters[:to]).map do |day|
|
@trend = (@filters[:from]..@filters[:to]).map do |day|
|
||||||
{
|
{
|
||||||
day: day.iso8601,
|
day: day.iso8601,
|
||||||
pageviews: pageviews_by_day[day].to_i,
|
pageviews: pageviews_by_day[day].to_i
|
||||||
clicks: clicks_by_day[day].to_i,
|
|
||||||
moves: moves_by_day[day].to_i
|
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
@trend_totals = {
|
@trend_totals = {
|
||||||
pageviews: @trend.sum { |r| r[:pageviews] },
|
pageviews: @trend.sum { |r| r[:pageviews] }
|
||||||
clicks: @trend.sum { |r| r[:clicks] },
|
|
||||||
moves: @trend.sum { |r| r[:moves] }
|
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,14 @@
|
|||||||
@filters[:device]
|
@filters[:device]
|
||||||
) %>
|
) %>
|
||||||
</label>
|
</label>
|
||||||
|
<label class="admin-filter-field">
|
||||||
|
<span><%= t("admin.analytics.filters.chart_path") %></span>
|
||||||
|
<%= select_tag :chart_path,
|
||||||
|
options_for_select(
|
||||||
|
[[t("admin.analytics.filters.chart_path_all"), ""]] + @chart_path_options.map { |p| [p, p] },
|
||||||
|
@filters[:chart_path]
|
||||||
|
) %>
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="admin-filter-actions">
|
<div class="admin-filter-actions">
|
||||||
<%= submit_tag t("admin.analytics.filters.apply"), class: "admin-btn admin-btn--primary admin-btn--sm" %>
|
<%= submit_tag t("admin.analytics.filters.apply"), class: "admin-btn admin-btn--primary admin-btn--sm" %>
|
||||||
@@ -63,7 +71,13 @@
|
|||||||
<div class="admin-analytics-trend__head">
|
<div class="admin-analytics-trend__head">
|
||||||
<div>
|
<div>
|
||||||
<h3><%= t("admin.analytics.index.trend_title") %></h3>
|
<h3><%= t("admin.analytics.index.trend_title") %></h3>
|
||||||
<p class="muted admin-table-sub"><%= t("admin.analytics.index.trend_lead") %></p>
|
<p class="muted admin-table-sub">
|
||||||
|
<% if @filters[:chart_path].present? %>
|
||||||
|
<%= t("admin.analytics.index.trend_lead_path", path: @filters[:chart_path]) %>
|
||||||
|
<% else %>
|
||||||
|
<%= t("admin.analytics.index.trend_lead") %>
|
||||||
|
<% end %>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<button type="button"
|
<button type="button"
|
||||||
id="admin-analytics-trend-toggle"
|
id="admin-analytics-trend-toggle"
|
||||||
@@ -74,9 +88,21 @@
|
|||||||
<div id="admin-analytics-trend-body">
|
<div id="admin-analytics-trend-body">
|
||||||
<div class="kpi-grid admin-analytics-trend__kpi">
|
<div class="kpi-grid admin-analytics-trend__kpi">
|
||||||
<div class="kpi">
|
<div class="kpi">
|
||||||
<div class="kpi-label"><%= t("admin.analytics.index.trend_total_label") %></div>
|
<div class="kpi-label">
|
||||||
|
<% if @filters[:chart_path].present? %>
|
||||||
|
<%= t("admin.analytics.index.trend_total_label_path") %>
|
||||||
|
<% else %>
|
||||||
|
<%= t("admin.analytics.index.trend_total_label") %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
<div class="kpi-value"><%= @trend_totals[:pageviews] %></div>
|
<div class="kpi-value"><%= @trend_totals[:pageviews] %></div>
|
||||||
<div class="kpi-sub muted"><%= t("admin.analytics.index.trend_total_hint", from: l(@filters[:from]), to: l(@filters[:to])) %></div>
|
<div class="kpi-sub muted">
|
||||||
|
<% if @filters[:chart_path].present? %>
|
||||||
|
<code class="admin-mono"><%= @filters[:chart_path] %></code>
|
||||||
|
·
|
||||||
|
<% end %>
|
||||||
|
<%= t("admin.analytics.index.trend_total_hint", from: l(@filters[:from]), to: l(@filters[:to])) %>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="chart-wrap chart-wrap--analytics">
|
<div class="chart-wrap chart-wrap--analytics">
|
||||||
@@ -93,7 +119,7 @@
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js" crossorigin="anonymous"></script>
|
||||||
<script src="/admin-analytics.js?v=2" defer></script>
|
<script src="/admin-analytics.js?v=3" defer></script>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="panel">
|
<div class="panel">
|
||||||
@@ -116,14 +142,18 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
<% @pages.each do |row| %>
|
<% @pages.each do |row| %>
|
||||||
<% avg = row[:scroll_samples].positive? ? (row[:scroll_sum].to_f / row[:scroll_samples]).round : 0 %>
|
<% avg = row[:scroll_samples].positive? ? (row[:scroll_sum].to_f / row[:scroll_samples]).round : 0 %>
|
||||||
<tr>
|
<% chart_params = { from: @filters[:from], to: @filters[:to], chart_path: row[:page_path] } %>
|
||||||
|
<% chart_params[:device] = @filters[:device] if @filters[:device].present? %>
|
||||||
|
<tr class="<%= "is-chart-focus" if @filters[:chart_path] == row[:page_path] %>">
|
||||||
<td><code class="admin-mono"><%= row[:page_path] %></code></td>
|
<td><code class="admin-mono"><%= row[:page_path] %></code></td>
|
||||||
<td><%= row[:pageviews] %></td>
|
<td><%= row[:pageviews] %></td>
|
||||||
<td><%= row[:moves] %></td>
|
<td><%= row[:moves] %></td>
|
||||||
<td><%= row[:clicks] %></td>
|
<td><%= row[:clicks] %></td>
|
||||||
<td class="muted"><%= avg %>%</td>
|
<td class="muted"><%= avg %>%</td>
|
||||||
<td class="muted"><%= row[:max_scroll] %>%</td>
|
<td class="muted"><%= row[:max_scroll] %>%</td>
|
||||||
<td>
|
<td class="admin-analytics-row-actions">
|
||||||
|
<%= link_to t("admin.analytics.index.chart_for_path"), admin_analytics_path(chart_params) %>
|
||||||
|
·
|
||||||
<% heatmap_params = { page_path: row[:page_path], from: @filters[:from], to: @filters[:to] } %>
|
<% heatmap_params = { page_path: row[:page_path], from: @filters[:from], to: @filters[:to] } %>
|
||||||
<% heatmap_params[:device] = @filters[:device] if @filters[:device].present? %>
|
<% heatmap_params[:device] = @filters[:device] if @filters[:device].present? %>
|
||||||
<%= link_to t("admin.analytics.index.heatmap"), admin_analytics_page_path(heatmap_params) %>
|
<%= link_to t("admin.analytics.index.heatmap"), admin_analytics_page_path(heatmap_params) %>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta name="robots" content="noindex, nofollow">
|
<meta name="robots" content="noindex, nofollow">
|
||||||
<%= csrf_meta_tags %>
|
<%= csrf_meta_tags %>
|
||||||
<link rel="stylesheet" href="/admin.css?v=18">
|
<link rel="stylesheet" href="/admin.css?v=19">
|
||||||
<%= yield :head %>
|
<%= yield :head %>
|
||||||
<% if content_for?(:replay_archive_styles) %>
|
<% if content_for?(:replay_archive_styles) %>
|
||||||
<link rel="stylesheet" href="/marketing.css?v=42">
|
<link rel="stylesheet" href="/marketing.css?v=42">
|
||||||
|
|||||||
@@ -415,6 +415,8 @@ de:
|
|||||||
any: Alle
|
any: Alle
|
||||||
apply: Filtern
|
apply: Filtern
|
||||||
reset: Zurücksetzen
|
reset: Zurücksetzen
|
||||||
|
chart_path: Seite (Diagramm)
|
||||||
|
chart_path_all: Alle Seiten
|
||||||
layer: Ebene
|
layer: Ebene
|
||||||
layer_move: Mausbewegungen
|
layer_move: Mausbewegungen
|
||||||
layer_click: Klicks
|
layer_click: Klicks
|
||||||
@@ -427,14 +429,17 @@ de:
|
|||||||
lead: Aggregierte First-Party-Heatmaps (Bewegung/Klick) und Scrolltiefe, nur mit Statistik-Einwilligung. Keine personenbezogenen Daten.
|
lead: Aggregierte First-Party-Heatmaps (Bewegung/Klick) und Scrolltiefe, nur mit Statistik-Einwilligung. Keine personenbezogenen Daten.
|
||||||
none: Keine Daten im gewählten Zeitraum.
|
none: Keine Daten im gewählten Zeitraum.
|
||||||
heatmap: Heatmap
|
heatmap: Heatmap
|
||||||
|
chart_for_path: Diagramm
|
||||||
trend_title: Pageview-Verlauf
|
trend_title: Pageview-Verlauf
|
||||||
trend_lead: Gesamte Pageviews aller Seiten, Tag für Tag. Dieselben Filter Von / Bis / Gerät. Nicht mit einer Tabellenzeile vergleichbar (die nach Pfad trennt).
|
trend_lead: Gesamte Pageviews aller Seiten, Tag für Tag. Dieselben Filter Von / Bis / Gerät. Seite im Filter wählen oder «Diagramm» in der Tabelle.
|
||||||
|
trend_lead_path: "Tägliche Pageviews nur für %{path} (gleiche Filter Von / Bis / Gerät)."
|
||||||
trend_total_label: Pageviews gesamt (alle Seiten)
|
trend_total_label: Pageviews gesamt (alle Seiten)
|
||||||
|
trend_total_label_path: Pageviews der gewählten Seite
|
||||||
trend_total_hint: "%{from} → %{to}"
|
trend_total_hint: "%{from} → %{to}"
|
||||||
hide_chart: Diagramm ausblenden
|
hide_chart: Diagramm ausblenden
|
||||||
show_chart: Diagramm anzeigen
|
show_chart: Diagramm anzeigen
|
||||||
pages_title: Aufschlüsselung nach Seite
|
pages_title: Aufschlüsselung nach Seite
|
||||||
pages_lead: Pageviews und Engagement im gefilterten Zeitraum, nach Pfad. Die Summe der Pageview-Zeilen entspricht dem Diagramm-Total.
|
pages_lead: Pageviews und Engagement im gefilterten Zeitraum, nach Pfad. «Diagramm» zeigt den Verlauf einer Seite.
|
||||||
table:
|
table:
|
||||||
path: Seite
|
path: Seite
|
||||||
pageviews: Pageviews
|
pageviews: Pageviews
|
||||||
|
|||||||
@@ -415,6 +415,8 @@ en:
|
|||||||
any: All
|
any: All
|
||||||
apply: Filter
|
apply: Filter
|
||||||
reset: Reset
|
reset: Reset
|
||||||
|
chart_path: Page (chart)
|
||||||
|
chart_path_all: All pages
|
||||||
layer: Layer
|
layer: Layer
|
||||||
layer_move: Mouse moves
|
layer_move: Mouse moves
|
||||||
layer_click: Clicks
|
layer_click: Clicks
|
||||||
@@ -427,14 +429,17 @@ en:
|
|||||||
lead: Aggregated first-party move/click heatmaps and scroll depth, only with analytics consent. No personal data.
|
lead: Aggregated first-party move/click heatmaps and scroll depth, only with analytics consent. No personal data.
|
||||||
none: No data in the selected period.
|
none: No data in the selected period.
|
||||||
heatmap: Heatmap
|
heatmap: Heatmap
|
||||||
|
chart_for_path: Chart
|
||||||
trend_title: Pageview trend
|
trend_title: Pageview trend
|
||||||
trend_lead: Total pageviews across all pages, day by day. Uses the same From / To / Device filters. Not comparable to a single table row (which splits by path).
|
trend_lead: Total pageviews across all pages, day by day. Uses the same From / To / Device filters. Pick a page in the filter or click «Chart» in the table.
|
||||||
|
trend_lead_path: "Day-by-day pageviews for %{path} only (same From / To / Device filters)."
|
||||||
trend_total_label: Total pageviews (all pages)
|
trend_total_label: Total pageviews (all pages)
|
||||||
|
trend_total_label_path: Pageviews for selected page
|
||||||
trend_total_hint: "%{from} → %{to}"
|
trend_total_hint: "%{from} → %{to}"
|
||||||
hide_chart: Hide chart
|
hide_chart: Hide chart
|
||||||
show_chart: Show chart
|
show_chart: Show chart
|
||||||
pages_title: Breakdown by page
|
pages_title: Breakdown by page
|
||||||
pages_lead: Pageviews and engagement for the filtered period, split by path. The sum of pageview rows matches the chart total.
|
pages_lead: Pageviews and engagement for the filtered period, split by path. Use «Chart» to see one page over time.
|
||||||
table:
|
table:
|
||||||
path: Page
|
path: Page
|
||||||
pageviews: Pageviews
|
pageviews: Pageviews
|
||||||
|
|||||||
@@ -415,6 +415,8 @@ es:
|
|||||||
any: Todos
|
any: Todos
|
||||||
apply: Filtrar
|
apply: Filtrar
|
||||||
reset: Restablecer
|
reset: Restablecer
|
||||||
|
chart_path: Página (gráfico)
|
||||||
|
chart_path_all: Todas las páginas
|
||||||
layer: Capa
|
layer: Capa
|
||||||
layer_move: Movimientos del ratón
|
layer_move: Movimientos del ratón
|
||||||
layer_click: Clics
|
layer_click: Clics
|
||||||
@@ -427,14 +429,17 @@ es:
|
|||||||
lead: Heatmaps de movimientos/clics y scroll agregados (first-party), solo con consentimiento estadístico. Sin datos personales.
|
lead: Heatmaps de movimientos/clics y scroll agregados (first-party), solo con consentimiento estadístico. Sin datos personales.
|
||||||
none: No hay datos en el periodo seleccionado.
|
none: No hay datos en el periodo seleccionado.
|
||||||
heatmap: Heatmap
|
heatmap: Heatmap
|
||||||
|
chart_for_path: Gráfico
|
||||||
trend_title: Evolución de pageviews
|
trend_title: Evolución de pageviews
|
||||||
trend_lead: Total de pageviews de todas las páginas, día a día. Usa los mismos filtros Desde / Hasta / Device. No es comparable con una fila de la tabla (que parte por path).
|
trend_lead: Total de pageviews de todas las páginas, día a día. Usa los mismos filtros Desde / Hasta / Device. Elige una página en el filtro o pulsa «Gráfico» en la tabla.
|
||||||
|
trend_lead_path: "Pageviews día a día solo para %{path} (mismos filtros Desde / Hasta / Device)."
|
||||||
trend_total_label: Pageviews totales (todas las páginas)
|
trend_total_label: Pageviews totales (todas las páginas)
|
||||||
|
trend_total_label_path: Pageviews de la página seleccionada
|
||||||
trend_total_hint: "%{from} → %{to}"
|
trend_total_hint: "%{from} → %{to}"
|
||||||
hide_chart: Ocultar gráfico
|
hide_chart: Ocultar gráfico
|
||||||
show_chart: Mostrar gráfico
|
show_chart: Mostrar gráfico
|
||||||
pages_title: Detalle por página
|
pages_title: Detalle por página
|
||||||
pages_lead: Pageviews y engagement en el periodo filtrado, por path. La suma de las filas coincide con el total del gráfico.
|
pages_lead: Pageviews y engagement en el periodo filtrado, por path. Usa «Gráfico» para ver una sola página en el tiempo.
|
||||||
table:
|
table:
|
||||||
path: Página
|
path: Página
|
||||||
pageviews: Pageviews
|
pageviews: Pageviews
|
||||||
|
|||||||
@@ -415,6 +415,8 @@ fr:
|
|||||||
any: Tous
|
any: Tous
|
||||||
apply: Filtrer
|
apply: Filtrer
|
||||||
reset: Réinitialiser
|
reset: Réinitialiser
|
||||||
|
chart_path: Page (graphique)
|
||||||
|
chart_path_all: Toutes les pages
|
||||||
layer: Couche
|
layer: Couche
|
||||||
layer_move: Mouvements souris
|
layer_move: Mouvements souris
|
||||||
layer_click: Clics
|
layer_click: Clics
|
||||||
@@ -427,14 +429,17 @@ fr:
|
|||||||
lead: Heatmaps mouvements/clics et scroll agrégés (first-party), uniquement avec consentement statistiques. Aucune donnée personnelle.
|
lead: Heatmaps mouvements/clics et scroll agrégés (first-party), uniquement avec consentement statistiques. Aucune donnée personnelle.
|
||||||
none: Aucune donnée sur la période sélectionnée.
|
none: Aucune donnée sur la période sélectionnée.
|
||||||
heatmap: Heatmap
|
heatmap: Heatmap
|
||||||
|
chart_for_path: Graphique
|
||||||
trend_title: Évolution des pages vues
|
trend_title: Évolution des pages vues
|
||||||
trend_lead: Total des pages vues sur toutes les pages, jour par jour. Mêmes filtres De / À / Appareil. Non comparable à une ligne du tableau (découpée par chemin).
|
trend_lead: Total des pages vues sur toutes les pages, jour par jour. Mêmes filtres De / À / Appareil. Choisissez une page dans le filtre ou cliquez « Graphique » dans le tableau.
|
||||||
|
trend_lead_path: "Pages vues jour par jour pour %{path} uniquement (mêmes filtres De / À / Appareil)."
|
||||||
trend_total_label: Pages vues totales (toutes les pages)
|
trend_total_label: Pages vues totales (toutes les pages)
|
||||||
|
trend_total_label_path: Pages vues de la page sélectionnée
|
||||||
trend_total_hint: "%{from} → %{to}"
|
trend_total_hint: "%{from} → %{to}"
|
||||||
hide_chart: Masquer le graphique
|
hide_chart: Masquer le graphique
|
||||||
show_chart: Afficher le graphique
|
show_chart: Afficher le graphique
|
||||||
pages_title: Détail par page
|
pages_title: Détail par page
|
||||||
pages_lead: Pages vues et engagement sur la période filtrée, par chemin. La somme des lignes égale le total du graphique.
|
pages_lead: Pages vues et engagement sur la période filtrée, par chemin. « Graphique » montre l’évolution d’une page.
|
||||||
table:
|
table:
|
||||||
path: Page
|
path: Page
|
||||||
pageviews: Pages vues
|
pageviews: Pages vues
|
||||||
|
|||||||
@@ -436,6 +436,8 @@ it:
|
|||||||
any: Tutti
|
any: Tutti
|
||||||
apply: Filtra
|
apply: Filtra
|
||||||
reset: Azzera
|
reset: Azzera
|
||||||
|
chart_path: Pagina (grafico)
|
||||||
|
chart_path_all: Tutte le pagine
|
||||||
layer: Livello
|
layer: Livello
|
||||||
layer_move: Movimenti mouse
|
layer_move: Movimenti mouse
|
||||||
layer_click: Click
|
layer_click: Click
|
||||||
@@ -448,14 +450,17 @@ it:
|
|||||||
lead: Heatmap movimenti/click e scroll aggregati (first-party), solo con consenso statistico. Nessun dato personale.
|
lead: Heatmap movimenti/click e scroll aggregati (first-party), solo con consenso statistico. Nessun dato personale.
|
||||||
none: Nessun dato nel periodo selezionato.
|
none: Nessun dato nel periodo selezionato.
|
||||||
heatmap: Heatmap
|
heatmap: Heatmap
|
||||||
|
chart_for_path: Grafico
|
||||||
trend_title: Andamento pageview
|
trend_title: Andamento pageview
|
||||||
trend_lead: Totale pageview di tutte le pagine, giorno per giorno. Usa gli stessi filtri Da / A / Device. Non è confrontabile con una singola riga della tabella (che spezza per path).
|
trend_lead: Totale pageview di tutte le pagine, giorno per giorno. Usa gli stessi filtri Da / A / Device. Scegli una pagina nel filtro oppure clicca «Grafico» in tabella.
|
||||||
|
trend_lead_path: "Pageview giorno per giorno solo per %{path} (stessi filtri Da / A / Device)."
|
||||||
trend_total_label: Pageview totali (tutte le pagine)
|
trend_total_label: Pageview totali (tutte le pagine)
|
||||||
|
trend_total_label_path: Pageview della pagina selezionata
|
||||||
trend_total_hint: "%{from} → %{to}"
|
trend_total_hint: "%{from} → %{to}"
|
||||||
hide_chart: Nascondi grafico
|
hide_chart: Nascondi grafico
|
||||||
show_chart: Mostra grafico
|
show_chart: Mostra grafico
|
||||||
pages_title: Dettaglio per pagina
|
pages_title: Dettaglio per pagina
|
||||||
pages_lead: Pageview e engagement nel periodo filtrato, spezzati per path. La somma delle pageview delle righe coincide col totale del grafico.
|
pages_lead: Pageview e engagement nel periodo filtrato, spezzati per path. Usa «Grafico» per vedere l’andamento di una sola pagina.
|
||||||
table:
|
table:
|
||||||
path: Pagina
|
path: Pagina
|
||||||
pageviews: Pageview
|
pageviews: Pageview
|
||||||
|
|||||||
@@ -203,6 +203,14 @@ body.admin-body {
|
|||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.admin-table tr.is-chart-focus td {
|
||||||
|
background: rgba(229, 57, 53, 0.12);
|
||||||
|
}
|
||||||
|
|
||||||
|
.admin-analytics-row-actions {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
.admin-panels {
|
.admin-panels {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1.4fr 1fr;
|
grid-template-columns: 1.4fr 1fr;
|
||||||
|
|||||||
@@ -70,6 +70,26 @@ RSpec.describe "Admin analytics", type: :request do
|
|||||||
expect(response.body).to include("\"pageviews\":19")
|
expect(response.body).to include("\"pageviews\":19")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "filtra il grafico su una sola pagina" do
|
||||||
|
AnalyticsPageStat.create!(
|
||||||
|
day: Time.zone.today,
|
||||||
|
page_path: "/altro",
|
||||||
|
device: "desktop",
|
||||||
|
pageview_count: 7,
|
||||||
|
scroll_samples: 0,
|
||||||
|
scroll_sum_pct: 0,
|
||||||
|
max_scroll_pct: 0
|
||||||
|
)
|
||||||
|
|
||||||
|
get admin_analytics_path, params: { chart_path: "/prezzi" }
|
||||||
|
expect(response).to have_http_status(:ok)
|
||||||
|
expect(response.body).to include(I18n.t("admin.analytics.index.trend_total_label_path"))
|
||||||
|
expect(response.body).to include(">12<")
|
||||||
|
expect(response.body).to include(I18n.t("admin.analytics.index.chart_for_path"))
|
||||||
|
expect(response.body).to include("is-chart-focus")
|
||||||
|
expect(response.body).not_to include(">19<")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
it "mostra la heatmap di una pagina con tab dispositivo" do
|
it "mostra la heatmap di una pagina con tab dispositivo" do
|
||||||
get admin_analytics_page_path, params: { page_path: "/prezzi" }
|
get admin_analytics_page_path, params: { page_path: "/prezzi" }
|
||||||
|
|||||||
Reference in New Issue
Block a user