diff --git a/app/controllers/measurements_controller.rb b/app/controllers/measurements_controller.rb
index 4f83655..eb00545 100644
--- a/app/controllers/measurements_controller.rb
+++ b/app/controllers/measurements_controller.rb
@@ -2,7 +2,7 @@ class MeasurementsController < ApplicationController
menu_item :body_trackers
before_action :init_session_filters
- before_action :find_project_by_project_id, only: [:index, :new, :create]
+ before_action :find_project_by_project_id, only: [:index, :new, :create, :filter]
before_action :find_quantity_by_quantity_id, only: [:toggle_column]
before_action :find_measurement,
only: [:edit, :update, :destroy, :retake, :readouts, :toggle_column]
@@ -68,6 +68,13 @@ class MeasurementsController < ApplicationController
render :index
end
+ def filter
+ session[:m_filters][:name] = params[:filters][:name]
+ session[:m_filters][:formula] = params[:filters][:formula]
+ readouts_view? ? prepare_readouts : prepare_measurements
+ render :index
+ end
+
private
def init_session_filters
@@ -105,10 +112,14 @@ class MeasurementsController < ApplicationController
end
def prepare_readouts
- @quantities = @measurement.column_view.quantities
+ @scoping_measurement = @project.measurements.where(session[:m_filters][:scope]).first!
+ @quantities = @scoping_measurement.column_view.quantities
@measurements, @requested_r, @extra_r, @formula_q = @project.measurements
.includes(:source)
.filter(session[:m_filters], @quantities)
+ rescue ActiveRecord::RecordNotFound
+ session[:m_filters][:scope] = {}
+ render_404
end
def readouts_view?
diff --git a/app/helpers/measurements_helper.rb b/app/helpers/measurements_helper.rb
index f509984..484b873 100644
--- a/app/helpers/measurements_helper.rb
+++ b/app/helpers/measurements_helper.rb
@@ -16,7 +16,7 @@ module MeasurementsHelper
def toggle_column_options
disabled = []
- enabled_columns = @measurement.column_view.quantities
+ enabled_columns = @scoping_measurement.column_view.quantities
options = nested_set_options(@project.quantities.measurement) do |q|
disabled << q.id if enabled_columns.include?(q)
raw("#{' ' * q.level}#{q.name}")
diff --git a/app/views/measurements/_filters.html.erb b/app/views/measurements/_filters.html.erb
new file mode 100644
index 0000000..5d53a83
--- /dev/null
+++ b/app/views/measurements/_filters.html.erb
@@ -0,0 +1,34 @@
+
diff --git a/app/views/measurements/_index.html.erb b/app/views/measurements/_index.html.erb
index 365a7a7..dc4d5bc 100644
--- a/app/views/measurements/_index.html.erb
+++ b/app/views/measurements/_index.html.erb
@@ -1,3 +1,6 @@
+<%= render partial: 'measurements/filters',
+ locals: {url: filter_project_measurements_path(@project)} %>
+
<% if @measurements.any? { |m| m.persisted? } %>
diff --git a/app/views/measurements/_options.html.erb b/app/views/measurements/_options.html.erb
index e9c8b89..723656a 100644
--- a/app/views/measurements/_options.html.erb
+++ b/app/views/measurements/_options.html.erb
@@ -1,7 +1,7 @@