From 95b62f638c3b21d93ead6f48a3a8a004dd1a45ef Mon Sep 17 00:00:00 2001 From: Niklaus Giger Date: Wed, 20 Sep 2017 16:26:25 +0200 Subject: [PATCH] Fix search preferences with drug_shortage. 4 --- src/model/search_result.rb | 8 ++++---- src/state/drugs/result.rb | 32 +++++++++++++++++++------------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/model/search_result.rb b/src/model/search_result.rb index f8e8fbe..549edae 100644 --- a/src/model/search_result.rb +++ b/src/model/search_result.rb @@ -151,6 +151,7 @@ module ODDB @atc_classes.nil? || @atc_classes.empty? end def sequence_filter(session=nil) + @session = session @packages = [] @atc_facades = nil @atc_facades = atc_facades(session) @@ -172,6 +173,7 @@ module ODDB @atc_facades end def apply_filters(session=nil) + @session = session sequence_filter(session) filtered = [] @atc_facades.each do |facade| @@ -206,10 +208,8 @@ module ODDB (@atc_classes.size > 1) && (package_count >= @display_limit) end def package_count - if @packages - return @packages.size - end - @package_count ||= atc_facades(@session).inject(0) { |count, atc| + puts "package_count @session #{@session.class}" + @package_count = atc_facades(@session).inject(0) { |count, atc| count + atc.packages.size } end def set_relevance(odba_id, relevance) diff --git a/src/state/drugs/result.rb b/src/state/drugs/result.rb index 1b8a460..36655cc 100644 --- a/src/state/drugs/result.rb +++ b/src/state/drugs/result.rb @@ -27,18 +27,24 @@ class Result < State::Drugs::Global include ResultStateSort def init @pages = [] - @model.session = @session - @model.atc_classes.delete_if { |atc| atc.package_count == 0 } - if /drug(_?)shortage/i.match(@session.persistent_user_input(:search_query)) && !@session.user_input(:sortvalue) - @sortby = [:name_base] - sort - end - if(@model.atc_classes.nil? || @model.atc_classes.empty?) - @default_view = ODDB::View::Drugs::EmptyResult + @model.session = @session + @model.atc_classes.delete_if { |atc| atc.package_count == 0 } + puts "#{@session.persistent_user_input(:search_query)} pf #{@model.respond_to?(:package_filters)} count #{@model.package_count}" + if /drug(_?)shortage/i.match(@session.persistent_user_input(:search_query)) && !@session.user_input(:sortvalue) + @sortby = [:name_base] + sort + end + if @model.respond_to?(:package_filters) + @model.package_filters = get_search_filters + @model.apply_filters(@session) + end + puts "#{@session.persistent_user_input(:search_query)} pf #{@model.respond_to?(:package_filters)} count #{@model.package_count}" + if(@model.atc_classes.nil? || @model.atc_classes.empty?) + @default_view = ODDB::View::Drugs::EmptyResult elsif(@model.overflow?) - query = @session.persistent_user_input(:search_query).to_s.downcase - page = 0 - count = 0 + query = @session.persistent_user_input(:search_query).to_s.downcase + page = 0 + count = 0 @code2page = {} @model.each { |atc| @code2page.store(atc.code, page) @@ -55,8 +61,8 @@ class Result < State::Drugs::Global @session.set_cookie_input(:resultview, 'pages') page() } - end - end + end + end def export_csv if(creditable?('org.oddb.download')) PaymentMethod.new(@session, @model) -- 2.10.2