Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

検索結果一覧を非React化した #8203

Draft
wants to merge 61 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
b9d94cc
Reactを削除して、以下の検索結果一覧を表示した
nakamu-kazu222 Nov 18, 2024
1d02452
更新時間をreactと同じclassにした
nakamu-kazu222 Nov 18, 2024
55da712
bodyのHTMLをReactと同じにした
nakamu-kazu222 Nov 18, 2024
cf582aa
ユーザーの時のタイトルはユーザー名にした
nakamu-kazu222 Nov 19, 2024
8032876
ユーザーとコメントの時は、wipと同様にタイトルの横にラベルが表示されるようにした
nakamu-kazu222 Nov 19, 2024
1e99ce6
コメントの投稿のラベルは、コメントした種類(日報など)をラベル名にした
nakamu-kazu222 Nov 19, 2024
302591b
不要になったので削除した
nakamu-kazu222 Nov 19, 2024
b10e2d7
表示する文字列を調整した
nakamu-kazu222 Nov 19, 2024
7bd1e2a
絞り込む時に、コメントも表示するようにする
nakamu-kazu222 Nov 19, 2024
f416286
コメントの場合に、(投稿の作成者 投稿の種類)を表示するようにした
nakamu-kazu222 Nov 19, 2024
a9073c3
ユーザーのアイコンのCSSを調整した
nakamu-kazu222 Nov 21, 2024
3fdce65
アドバイザーのアイコンの色を表示できるようにした
nakamu-kazu222 Nov 22, 2024
887d0b5
元のレイアウトと同じにした
nakamu-kazu222 Nov 22, 2024
8dcb089
ユーザー表示の時は、ラベルをユーザーのアイコンを表示するようにした
nakamu-kazu222 Nov 25, 2024
3196df2
Q&Aの回答とベストアンサーのpathを変更した
nakamu-kazu222 Nov 25, 2024
102ac4f
Q&Aのコメントのtitleとラベル表記を修正した
nakamu-kazu222 Nov 25, 2024
698e1fb
Q&Aの回答にもコメント表示をした
nakamu-kazu222 Nov 25, 2024
20676d0
ユーザーの欄に更新時間を追加した
nakamu-kazu222 Nov 25, 2024
c908124
Q&Aの回答の場合は、更新時間のよこにQ&Aの投稿者を表示するようにした
nakamu-kazu222 Nov 25, 2024
206eb21
コメントのURLを変更した
nakamu-kazu222 Nov 25, 2024
353a043
ログインしているのがadminユーザーの場合は、ユーザーの欄に相談部屋を追加した
nakamu-kazu222 Nov 25, 2024
599f5fc
相談部屋がないユーザーのshowページに遷移するとエラーがでたので修正した
nakamu-kazu222 Nov 25, 2024
4fcf297
重複するコメントの検索結果があるのでユニークにした
nakamu-kazu222 Nov 25, 2024
bf49d9d
使用しないメソッドを削除した
nakamu-kazu222 Nov 25, 2024
efe6e8d
rubocopを実行した
nakamu-kazu222 Nov 25, 2024
b2029a9
キーワード検索ができなかったため修正した
nakamu-kazu222 Nov 27, 2024
10435b5
複数のモデルの処理をまとめた
nakamu-kazu222 Nov 27, 2024
515769d
複数ワードによる検索時に、複数ワードにハイライトをつけられるようにした
nakamu-kazu222 Nov 27, 2024
60b6253
検索結果の返り値をオブジェクト形式にした
nakamu-kazu222 Nov 27, 2024
34427b2
複数ワードで検索した際に、どちらかのワードがあれば絞り込みがされるように変更した
nakamu-kazu222 Nov 27, 2024
de6df11
コメントが重複して表示されていたため修正した
nakamu-kazu222 Nov 27, 2024
41e2058
存在しないワードでもコメントが表示されていたため修正した
nakamu-kazu222 Nov 27, 2024
52bf7cf
searchableのlogin_nameにユーザー名を格納できるようにした
nakamu-kazu222 Nov 28, 2024
0930229
複数のキーワードがすべて含まれる投稿のみを表示するようにした
nakamu-kazu222 Nov 28, 2024
8420768
ログインユーザーが管理者であれば全ての相談部屋が表示され、管理者でない場合は自分の相談部屋のみ表示するようにした
nakamu-kazu222 Nov 28, 2024
dd2580c
user:ユーザー名を検索ワードで入力すると、作成者を絞り込みできるようにした
nakamu-kazu222 Nov 28, 2024
924d34f
ユーザーネーム(最終更新者)で検索できるよ user:komagataのような検索ワードでも絞り込めるようにした
nakamu-kazu222 Nov 28, 2024
19dc010
検索のテストを修正した
nakamu-kazu222 Nov 28, 2024
accdc0d
search_helperのメソッドを元に戻す実装にした
nakamu-kazu222 Jan 15, 2025
b4fcbef
コメントのときの本文が表示されていなかった
nakamu-kazu222 Jan 26, 2025
b931dcd
全ての検索でエラー(undefined local variable or method current_user)だったため、引数に入れた
nakamu-kazu222 Jan 26, 2025
0e29305
キーワードが空欄の時に、検索できるようにした
nakamu-kazu222 Jan 29, 2025
2d3db73
プラクティスが終了していないときにコメントを見れないようにした
nakamu-kazu222 Feb 1, 2025
0598afd
テストを修正した
nakamu-kazu222 Feb 1, 2025
822e9c7
undefined method `matched_document'エラーを解消した
nakamu-kazu222 Feb 1, 2025
ae34347
テストで期待されるclass名に変更した
nakamu-kazu222 Feb 1, 2025
6ddbf75
退会、休会ユーザーも表示できるようにした
nakamu-kazu222 Feb 2, 2025
cb01f6b
キーワード検索でUserのdescriptionも範囲内にした
nakamu-kazu222 Feb 5, 2025
4138e2b
Userが重複していたため削除した
nakamu-kazu222 Feb 5, 2025
4d4589c
非Reactにして不要なので削除した
nakamu-kazu222 Feb 9, 2025
5994489
大文字小文字どちらでも検索できるようにした
nakamu-kazu222 Feb 9, 2025
9a3d9d0
全ての検索でユーザー名をキーワードにしたときに、ユーザーを検索結果に表示するようにした
nakamu-kazu222 Feb 9, 2025
d7496d5
テストを実行できるようにした
nakamu-kazu222 Feb 9, 2025
a26c059
すべて検索でキーワードをユーザー名にしたときに、2重で表示されないようにした
nakamu-kazu222 Feb 9, 2025
6b8cb19
rubocopを実行した
nakamu-kazu222 Feb 10, 2025
5e05bba
description が求められる場合は body を返すようにした
nakamu-kazu222 Feb 10, 2025
b761c3b
User#indexでユーザーのキーワード検索をできるようにした
nakamu-kazu222 Feb 11, 2025
f97a617
rubocop -Aを実行した
nakamu-kazu222 Feb 11, 2025
d2ad7db
productの本文のカラムをschemaと同じにした
nakamu-kazu222 Feb 15, 2025
9938ba8
二語以上のキーワードでも検索できるようにした
nakamu-kazu222 Feb 24, 2025
ebf6147
User#indexで2文字の英文字ではすべてのユーザを検索できるようにした
nakamu-kazu222 Feb 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 0 additions & 16 deletions app/controllers/api/searchables_controller.rb

This file was deleted.

10 changes: 9 additions & 1 deletion app/controllers/searchables_controller.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# frozen_string_literal: true

class SearchablesController < ApplicationController
def index; end
PER_PAGE = 50

def index
@word = params[:word].to_s
@document_type = params[:document_type]&.to_sym || :all

result = Searcher.search(@word, document_type: @document_type, current_user:)
@searchables = Kaminari.paginate_array(result.uniq).page(params[:page]).per(PER_PAGE)
end
end
2 changes: 1 addition & 1 deletion app/helpers/page_tabs/users_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def user_page_tabs(user, active_tab:)
link: "#{user_micro_reports_path(user, page: user.latest_micro_report_page)}#latest-micro-report",
count: user.micro_reports.length }
end
tabs << { name: '相談部屋', link: talk_path(user.talk) } if current_user.admin? && !user.admin?
tabs << { name: '相談部屋', link: talk_path(user.talk) } if current_user.admin? && !user.admin? && user.talk.present?
render PageTabsComponent.new(tabs:, active_tab:)
end

Expand Down
61 changes: 43 additions & 18 deletions app/helpers/search_helper.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
# frozen_string_literal: true

module SearchHelper
def matched_document(searchable)
include PolicyHelper

def self.matched_document(searchable)
if searchable.instance_of?(Comment)
searchable.commentable_type.constantize.find(searchable.commentable_id)
elsif searchable.instance_of?(Answer) || searchable.instance_of?(CorrectAnswer)
Expand All @@ -12,43 +14,66 @@ def matched_document(searchable)
end

def searchable_url(searchable)
if searchable.instance_of?(Comment)
document = searchable.commentable_type.constantize.find(searchable.commentable_id)
"#{polymorphic_url(document)}#comment_#{searchable.id}"
elsif searchable.instance_of?(Answer) || searchable.instance_of?(CorrectAnswer)
document = Question.find(searchable.question.id)
"#{polymorphic_url(document)}#answer_#{searchable.id}"
case searchable
when Comment
"#{Rails.application.routes.url_helpers.polymorphic_path(searchable.commentable)}#comment_#{searchable.id}"
when CorrectAnswer, Answer
Rails.application.routes.url_helpers.question_path(searchable.question, anchor: "answer_#{searchable.id}")
else
polymorphic_url(searchable)
helper_method = "#{searchable.class.name.underscore}_path"
Rails.application.routes.url_helpers.send(helper_method, searchable)
end
end

def filtered_message(searchable)
if searchable.instance_of?(Comment) && searchable.commentable_type == 'Product'
commentable = Product.find(searchable.commentable_id)
if policy(commentable).show? || commentable.practice.open_product?
searchable.description
case searchable
when SearchResult
searchable.summary
when Comment
if searchable.instance_of?(Comment) && searchable.commentable_type == 'Product'
commentable = searchable.commentable_type.constantize.find(searchable.commentable_id)
if policy(commentable).show? || (commentable.is_a?(Practice) && commentable.open_product?)
searchable.body
else
'該当プラクティスを修了するまで他の人の提出物へのコメントは見れません。'
end
else
'該当プラクティスを修了するまで他の人の提出物へのコメントは見れません。'
searchable.description
end
else
searchable.description
searchable.try(:description) || searchable.try(:body)
end
end

def comment_or_answer?(searchable)
searchable.is_a?(Comment) || searchable.is_a?(Answer)
if searchable.is_a?(SearchResult)
%w[comment answer correct_answer].include?(searchable.model_name)
else
searchable.is_a?(Comment) || searchable.is_a?(Answer)
end
end

def talk?(searchable)
searchable.instance_of?(User) && searchable.talk.present?
if searchable.is_a?(SearchResult)
searchable.model_name == 'user' && searchable.talk.present?
else
searchable.instance_of?(User) && searchable.talk.present?
end
end

def user?(searchable)
searchable.instance_of?(User)
if searchable.is_a?(SearchResult)
searchable.model_name == 'user'
else
searchable.instance_of?(User)
end
end

def created_user(searchable)
searchable.respond_to?(:user) ? searchable.user : nil
if searchable.is_a?(SearchResult)
User.find_by(id: searchable.user_id)
else
searchable.respond_to?(:user) ? searchable.user : nil
end
end
end
171 changes: 0 additions & 171 deletions app/javascript/components/Searchable.jsx

This file was deleted.

79 changes: 0 additions & 79 deletions app/javascript/components/Searchables.jsx

This file was deleted.

1 change: 1 addition & 0 deletions app/models/announcement.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ class Announcement < ApplicationRecord
include Reactionable
include WithAvatar
include Watchable
include SearchHelper

enum target: {
all: 0,
Expand Down
Loading