Add option to enable advanced stats

This commit is contained in:
Javi Martín
2019-04-29 17:45:01 +02:00
parent a34b97e843
commit 45a3d8daf0
11 changed files with 49 additions and 9 deletions

View File

@@ -93,6 +93,10 @@ module Statisticable
"v#{resource.find_or_create_stats_version.updated_at.to_i}"
end
def advanced?
resource.advanced_stats_enabled?
end
private
def base_stats_methods

View File

@@ -1,5 +1,5 @@
class Report < ApplicationRecord
KINDS = %i[results stats]
KINDS = %i[results stats advanced_stats]
belongs_to :process, polymorphic: true
end

View File

@@ -2,5 +2,6 @@
<legend><%= t("admin.shared.show_results_and_stats") %></legend>
<%= form.check_box :results_enabled %>
<%= form.check_box :stats_enabled %>
<%= form.check_box :advanced_stats_enabled %>
<p class="small"><%= t("admin.shared.results_and_stats_reminder") %></p>
</fieldset>

View File

@@ -41,12 +41,12 @@
<div class="row margin">
<div class="small-12 medium-3 column sidebar">
<%= render "shared/stats/links", stats: @stats %>
<%= render "advanced_stats_links" %>
<%= render "advanced_stats_links" if @stats.advanced? %>
</div>
<div class="small-12 medium-9 column stats-content">
<%= render "shared/stats/participation", stats: @stats %>
<%= render "advanced_stats", stats: @stats %>
<%= render "advanced_stats", stats: @stats if @stats.advanced? %>
<div class="row margin">
<div class="small-12 column">

View File

@@ -8,12 +8,12 @@
<div class="row margin">
<div class="small-12 medium-3 column sidebar">
<%= render "shared/stats/links", stats: @stats %>
<%= render "advanced_stats_links" %>
<%= render "advanced_stats_links" if @stats.advanced? %>
</div>
<div class="small-12 medium-9 column stats-content">
<%= render "shared/stats/participation", stats: @stats %>
<%= render "advanced_stats", stats: @stats %>
<%= render "advanced_stats", stats: @stats if @stats.advanced? %>
<div id="total_no_demographic_data">
<p class="help-text">

View File

@@ -2,6 +2,7 @@ en:
attributes:
results_enabled: "Show results"
stats_enabled: "Show stats"
advanced_stats_enabled: "Show advanced stats"
activerecord:
models:
activity:

View File

@@ -2,6 +2,7 @@ es:
attributes:
results_enabled: "Mostrar resultados"
stats_enabled: "Mostrar estadísticas"
advanced_stats_enabled: "Mostrar estadísticas avanzadas"
activerecord:
models:
activity:

View File

@@ -0,0 +1,5 @@
class AddAdvancedStatsToReports < ActiveRecord::Migration[5.0]
def change
add_column :reports, :advanced_stats, :boolean
end
end

View File

@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20190424114803) do
ActiveRecord::Schema.define(version: 20190429125842) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -1239,8 +1239,9 @@ ActiveRecord::Schema.define(version: 20190424114803) do
t.boolean "results"
t.string "process_type"
t.integer "process_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "advanced_stats"
t.index ["process_type", "process_id"], name: "index_reports_on_process_type_and_process_id", using: :btree
end

View File

@@ -7,6 +7,22 @@ feature "Stats" do
let(:heading) { create(:budget_heading, group: group, price: 1000) }
describe "Show" do
end
describe "advanced stats" do
let(:budget) { create(:budget, :finished) }
scenario "advanced stats enabled" do
budget.update(advanced_stats_enabled: true)
visit budget_stats_path(budget)
expect(page).to have_content "Advanced statistics"
end
scenario "advanced stats disabled" do
visit budget_stats_path(budget)
expect(page).not_to have_content "Advanced statistics"
end
end
end
end

View File

@@ -432,7 +432,18 @@ feature "Polls" do
expect(page).to have_content("Questions")
visit stats_poll_path(poll)
expect(page).to have_content("Participation data")
expect(page).not_to have_content "Advanced statistics"
end
scenario "Advanced stats enabled" do
poll = create(:poll, :expired, stats_enabled: true, advanced_stats_enabled: true)
visit stats_poll_path(poll)
expect(page).to have_content "Participation data"
expect(page).to have_content "Advanced statistics"
end
scenario "Don't show poll results and stats if not enabled" do