Merge pull request #1521 from consul/advanced-search

Advanced search
This commit is contained in:
Juanjo Bazán
2017-05-05 10:40:07 +02:00
committed by GitHub
4 changed files with 58 additions and 53 deletions

View File

@@ -1,6 +1,7 @@
module CommentableActions module CommentableActions
extend ActiveSupport::Concern extend ActiveSupport::Concern
include Polymorphic include Polymorphic
include Search
def index def index
@resources = @search_terms.present? ? resource_model.search(@search_terms) : resource_model.all @resources = @search_terms.present? ? resource_model.search(@search_terms) : resource_model.all
@@ -100,53 +101,6 @@ module CommentableActions
end end
end end
def parse_search_terms
@search_terms = params[:search] if params[:search].present?
end
def parse_advanced_search_terms
@advanced_search_terms = params[:advanced_search] if params[:advanced_search].present?
parse_search_date
end
def parse_search_date
return unless search_by_date?
params[:advanced_search][:date_range] = search_date_range
end
def search_by_date?
params[:advanced_search] && params[:advanced_search][:date_min].present?
end
def search_start_date
case params[:advanced_search][:date_min]
when '1'
24.hours.ago
when '2'
1.week.ago
when '3'
1.month.ago
when '4'
1.year.ago
else
Date.parse(params[:advanced_search][:date_min]) rescue 100.years.ago
end
end
def search_finish_date
(params[:advanced_search][:date_max].to_date rescue Date.today) || Date.today
end
def search_date_range
[100.years.ago, search_start_date].max.beginning_of_day..[search_finish_date, Date.today].min.end_of_day
end
def set_search_order
if params[:search].present? && params[:order].blank?
params[:order] = 'relevance'
end
end
def set_resource_votes(instance) def set_resource_votes(instance)
send("set_#{resource_name}_votes", instance) send("set_#{resource_name}_votes", instance)
end end

View File

@@ -0,0 +1,57 @@
module Search
extend ActiveSupport::Concern
included do
before_action :parse_search_terms, only: [:index, :suggest]
before_action :parse_advanced_search_terms, only: :index
before_action :set_search_order, only: :index
end
def parse_search_terms
@search_terms = params[:search] if params[:search].present?
end
def parse_advanced_search_terms
@advanced_search_terms = params[:advanced_search] if params[:advanced_search].present?
parse_search_date
end
def parse_search_date
return unless search_by_date?
params[:advanced_search][:date_range] = search_date_range
end
def search_by_date?
params[:advanced_search] && params[:advanced_search][:date_min].present?
end
def search_start_date
case params[:advanced_search][:date_min]
when '1'
24.hours.ago
when '2'
1.week.ago
when '3'
1.month.ago
when '4'
1.year.ago
else
Date.parse(params[:advanced_search][:date_min]) rescue 100.years.ago
end
end
def search_finish_date
(params[:advanced_search][:date_max].to_date rescue Date.today) || Date.today
end
def search_date_range
[100.years.ago, search_start_date].max.beginning_of_day..[search_finish_date, Date.today].min.end_of_day
end
def set_search_order
if params[:search].present? && params[:order].blank?
params[:order] = 'relevance'
end
end
end

View File

@@ -3,10 +3,7 @@ class DebatesController < ApplicationController
include CommentableActions include CommentableActions
include FlagActions include FlagActions
before_action :parse_search_terms, only: [:index, :suggest]
before_action :parse_advanced_search_terms, only: :index
before_action :parse_tag_filter, only: :index before_action :parse_tag_filter, only: :index
before_action :set_search_order, only: :index
before_action :authenticate_user!, except: [:index, :show, :map] before_action :authenticate_user!, except: [:index, :show, :map]
feature_flag :debates feature_flag :debates

View File

@@ -2,10 +2,7 @@ class ProposalsController < ApplicationController
include CommentableActions include CommentableActions
include FlagActions include FlagActions
before_action :parse_search_terms, only: [:index, :suggest]
before_action :parse_advanced_search_terms, only: :index
before_action :parse_tag_filter, only: :index before_action :parse_tag_filter, only: :index
before_action :set_search_order, only: :index
before_action :load_categories, only: [:index, :new, :edit, :map, :summary] before_action :load_categories, only: [:index, :new, :edit, :map, :summary]
before_action :load_geozones, only: [:edit, :map, :summary] before_action :load_geozones, only: [:edit, :map, :summary]
before_action :authenticate_user!, except: [:index, :show, :map, :summary] before_action :authenticate_user!, except: [:index, :show, :map, :summary]