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にした #7161

Merged
merged 42 commits into from
Jun 7, 2024

Conversation

ham-cap
Copy link
Contributor

@ham-cap ham-cap commented Dec 20, 2023

Issue

概要

ダッシュボードにあるブックマークの一覧はviewのテンプレートで実装されていましたが、それらをReactコンポーネントに置換しました。

変更確認方法

  1. feature/change-bookmark-list-in-dashboard-to-reactをローカルに取り込む
  2. 受講生、メンター、アドバイザーのアカウントでそれぞれログインし、ダッシュボードにブックマーク一覧が表示されるかを確認する。(表示されていない場合は一度DocsやQ&A等、任意のページをブックマークし、再度トップページにアクセスする。)
  3. 編集ボタンを押下し、表示された削除ボタンで任意のブックマークを削除できるかを確認する。

編集ボタン

image

削除ボタン

image

削除後

image

Screenshot

今回のissueは既存の表示をRailsのViewファイルからReactへ置換するもののため、変更後も見た目上の変化はほとんどありませんが、一点だけ、ブックマークを削除した際に、これまでは「ブックマークを削除しました。」の表示が画面上部にフラッシュで表示されていましたが、React化に伴いトースト表示に変更していますのでご確認ください

変更前

image

変更後

image

@ham-cap ham-cap marked this pull request as ready for review December 24, 2023 08:10
@ham-cap
Copy link
Contributor Author

ham-cap commented Dec 24, 2023

@junohm410
お疲れ様です!
お手隙の際で結構ですのでレビューをお願いできますでしょうか🙏
ご都合が悪い場合はご遠慮なくお知らせください👍

@junohm410
Copy link
Contributor

@ham-cap
お疲れ様です!レビュー承知いたしました。
他のレビュー依頼もいただいているので、1週間くらいお時間を頂戴できるとありがたいです🙇‍♂️すみませんが、どうぞよろしくお願いいたします。

@ham-cap
Copy link
Contributor Author

ham-cap commented Dec 24, 2023

@junohm410
ありがとうございます🙏
急ぎではありませんのでゆっくりで大丈夫です。
よろしくお願いいたします🙇‍♂️

@ham-cap ham-cap self-assigned this Dec 29, 2023
Copy link
Contributor

@junohm410 junohm410 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ham-cap
遅くなりすみませんでした🙇‍♂️確認させていただきました。
FileChanged以外の部分で、気になった点を下にシェアさせていただきます。

受講生のダッシュボードで余白がない

私の手元では、下のようにカード間の余白がなくなっていましたので、念の為ご確認いただけるとありがたいです🙇‍♂️
(下はkimuraでログインしています。なお、アドバイザー・メンターでは問題なく余白がありました)
image

ブックマークを1件の状態から削除して0件にすると、空のカードが出る

現状mainの仕様では1件から削除して0件にすると(リダイレクトされて)ブックマークのカードそのものが非表示になりますが、本PRの変更内容だと空のカードが表示されます。
image

対応策を考えてみたのですが、たとえば下記のようにブックマークが0件の時は関数コンポーネントはnullを返してカード自体を非表示にするなどの方法があるかなと感じました。

  if (data.unpagedBookmarks.length === 0) {
    return null
  }

非表示にした際の余白を持たせられるかどうかは、一つ前にシェアした余白の問題と絡みそうな気がするので、上の対応策のまま行けるかは自信がないのですが、ご確認いただけるとありがたいです🙏

current_user/bookmarks_controllerdestroyアクションは消せそう?

# current_user/bookmarks_controller

  def destroy
    Bookmark.find(params[:id]).destroy
    redirect_to root_path, notice: 'Bookmarkを削除しました。'
  end

今回の変更でダッシュボードからのブックマークの削除はAPIを叩いて行うようになったので、slim版で削除のために使っていた上記のアクションとルーティングは削除できるかもしれないと考えました。
destroyアクションは、slim版のダッシュボードのブックマーク削除機能の追加時に、それ用に追加されたもののようです↓

ただ、他の場所で使っている可能性を考えると触るのは怖い気もするので、別Issueで調査の上消すなどの進め方もあるのかな?とも考えたのですが、こちらも念の為ご確認いただけると幸いです🙏
(すでに他の場所で使われていることを確認されているのであれば、大変申し訳ないです🙇‍♂️)

app/javascript/components/BookmarksInDashboard.jsx Outdated Show resolved Hide resolved
@ham-cap
Copy link
Contributor Author

ham-cap commented Feb 4, 2024

@junohm410
お疲れ様です!
こちらの件、大変お待たせしてしまい申し訳ありません🙏
本業が繁忙期のため対応に時間がかかってしまいました💧
ご指摘いただいた点を修正いたしましたので再度ご確認いただけますでしょうか🙇‍♂️
よろしくお願いいたします。

Copy link
Contributor

@junohm410 junohm410 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

お疲れ様です!ご対応・ご連絡ありがとうございました🙏

0件のときにカードを表示しないようにする件、ジャストアイデアで関数コンポーネントでnullを返す方法を書きましたが、日報や分報を拝読するとそんな簡単な問題ではなかったようで、お恥ずかしい限りです🙇‍♂️

今回はreact_componentのヘルパーを使わないことにされていますが、それについても任意のクラス名をつける方法など知らないことばかりで、コミットの流れから大変勉強させていただきました🙏ありがとうございます!

FileChangedで気になった点(ほぼ質問です)をレビューで残しました。
また別件で、コンフリクトが起きているようです。

image

念の為サーバを立ち上げて動きを見ようとしたところ、以下のように出て起動することができませんでした。

You have already activated stringio 3.1.0, but your Gemfile requires stringio 3.0.1. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)

stringioのアップデート(7189での変更)など最新のorigin/mainの変更が取り込まれていないと思うので、こちらのご対応の必要がありそうかなと思いました。

以上、ご確認いただけますと幸いです🙏よろしくお願いいたします。

app/javascript/bookmarks-in-dashboard.js Outdated Show resolved Hide resolved
@ham-cap ham-cap force-pushed the feature/change-bookmark-list-in-dashboard-to-react branch 2 times, most recently from 678a908 to 6d9cd2f Compare February 11, 2024 01:39
@ham-cap
Copy link
Contributor Author

ham-cap commented Feb 11, 2024

@junohm410
お疲れ様です!

また、こちらはすごく小さなことなのですが、document.getElementById('bookmarks-in-dashboard')が重複しているので、DRYにできそうかな?と思いました🙏

こちら、ご指摘いただいておりました点について重複をなくして書いてみましたのでご確認ください🙏
また、コンフリクトについても解消済みです。

よろしくお願いいたします🙇‍♂️

Copy link
Contributor

@junohm410 junohm410 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

お疲れ様です!ご対応ありがとうございました🙇‍♂️
手元で動作確認しました。0件の場合はカードが消え、余白があることを確認しました!
本当に勉強になりました〜ありがとうございます🙏

些細なことですが一件だけ気になったことがありコメントしました。
こちらのご対応はおまかせしますので、私からはApproveとさせていただきます🙏

)
}

const Bookmark = ({ bookmark, editable, bookmarksUrl, _setEditable }) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_setEditable はこのコンポーネントでは使っていない感じですよね?👀であれば、そもそもpropsとして渡さないようにすればよりわかりやすいのではないかなと考えました(気づいていない理由があれば申し訳ないです🙏)。

@ham-cap
Copy link
Contributor Author

ham-cap commented Feb 11, 2024

@junohm410
コメントいただいた点、おっしゃるとおりですね💦
修正しておきました!
こちらこそ丁寧にレビューしていただき大変勉強になりました!
ありがとうございました💪

@komagata
お疲れ様です!
メンバーのレビューがApproveになりましたのでレビューをお願いできますでしょうか🙇‍♂️
よろしくお願いいたします🙏

Copy link
Contributor

@junohm410 junohm410 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

すみません、対応はお任せしますと申し上げたのですが、最後に積まれたコミットでおそらく不要な変更が混じっているかなと思いましたので、追加でコメントさせていただきます🙇‍♂️ご確認いただいた方がよそさうかなと思います。

Comment on lines 1 to 18
import React from 'react'

export default function AdminCompanies({
companyId,
dataTitle,
dataMentorLogin,
dataCurrentUserId
}) {
console.log(dataMentorLogin)
return (
<div>
<p>カンパニーID: {companyId}</p>
<p>データタイトル: {dataTitle}</p>
<p>メンターログイン: {dataMentorLogin}</p>
<p>カレントユーザーID: {dataCurrentUserId}</p>
</div>
)
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

すみません、komagataさんにご連絡後に申し訳ないのですが、こちらに不要に変更が含まれてないでしょうか?🙏

const Bookmark = ({ bookmark, editable, bookmarksUrl, _setEditable }) => {
const Bookmark = ({ bookmark, editable, bookmarksUrl }) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

38行目でsetEditableを渡しているところも削除できると思います👀

@ham-cap ham-cap force-pushed the feature/change-bookmark-list-in-dashboard-to-react branch 2 times, most recently from f7d7d25 to 63f035e Compare March 18, 2024 05:55
@ham-cap
Copy link
Contributor Author

ham-cap commented Mar 18, 2024

@junohm410
お疲れ様です🙏
長らく仕事がバタバタしており全く時間が取れておりませんでした。申し訳ありません🙇‍♂️
ご指摘のとおり不要な変更が含まれていたため除外いたしました!
すでにApproveをいただいておりますが、念のためご確認いただければ幸いです🙏

Copy link
Contributor

@junohm410 junohm410 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

お疲れ様です。不要なsetEditableがpropsで渡されていないことを確認しました👍またその他に不要な変更が入っていないことも確認しました。
あたらめて、Approveさせていただきます🙏

@ham-cap
Copy link
Contributor Author

ham-cap commented Mar 19, 2024

@junohm410
早速ご確認いただきありがとうございます🙏
また、長々とお付き合いいただきありがとうございました🙇‍♂️

@komagata
改めまして、こちらのレビューをお願いいたします🙇‍♂️

@@ -17,8 +17,7 @@
.a-panels__item
= render 'job_seeking_users', users: @job_seeking_users
- if current_user.bookmarks.present?
.a-panels__item
= render 'bookmarks', user: current_user
div id='bookmarks-in-dashboard'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ほかの部分と同じようにreact_componentヘルパーを使うのがいいと思います~

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

react_componentを使う場合に生じる問題として、ブックマークの数が0になってブックマーク一覧そのものを非表示にしたくてもコンポーネント自体のdiv要素が残ってしまい、次にページ全体が更新されるまで余計な空白が残ってしまうというものがあったため現在の実装にしているのですがまずいでしょうか?💦
react_componentヘルパーを使用する場合でもこの問題をクリアできる方法にお心当たりがありますでしょうか?👀

Copy link
Member

@komagata komagata Mar 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ham-cap コードをコミットしてみました。
僕の手元では下記でdiv自体消えてるようなのですがいかがでしょうか。

84342e0

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@komagata
ご確認いただきありがとうございます🙏
こちらでも手元でもう一度確認してみましたが、やはりコンポーネントのdivは残ってしまっているようです👀
コミットしていただいたアドバイザーのダッシュボードの場合は各項目が縦に並んでいるため分かりにくいのですが、例えばブックマークとWIPを一つずつ登録して縦に並んだ状態からブックマークを全て削除した場合、一見divごと消えているように見えてしまいますが、ブックマークの一覧がそもそも存在しない場合と比べると微妙に不必要なスペースが空いてしまいます。(以下のスクショをご参照ください。ページ全体をリロードするとdivが無くなるため不必要なスペースは解消します。)
デベロッパーツールでも確認しましたが、ダッシュボードのページが再読み込みされるまではやはりコンポーネントのdiv(data-react-class="BookmarksInDashboard")が残っております。

こちらの状態から、

_development__ダッシュボード___FBC

ブックマークを全て削除すると以下のようになります。

_development__ダッシュボード___FBC-2

以下が通常の場合です。

_development__ダッシュボード___FBC-3

なお、メンターのダッシュボードの場合ですと、各項目が横並びのため不必要なスペースが顕著に見られます。

_development__ダッシュボード___FBC-4 _development__ダッシュボード___FBC-6

また、受講生のダッシュボードでは、アドバイザーと同様に項目が縦並びのため分かりにくいですが、やはりreact_componentでコンポーネントの呼び出しを行うとdivが残り、レイアウトが崩れます。
受講生はHTMLの階層構造が異なるためSassのあたり方が異なり、項目間のスペースが極端に狭くなります。

_development__ダッシュボード___FBC-5

当初は私も公式のドキュメントを参照しながらreact_cpmponentを使用しての実装を試みたのですが、このヘルパーはコンポーネントをマウントするためのdivでラップしてしまうため、コンポーネントのアンマウントをしても一番外側のdivが残ってしまう問題を解決できず、現状の実装にしております。
私が解決策を見逃してしまっているだけの可能性もありますので、他に良さそうな手段があればご教示いただければ嬉しいです🙏

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ham-cap う~ん、やっぱり僕の環境(新しいPCでも確認)だとDIVが残らないみたいです。
ユーザーはkomagataとhajimeで確認しました。

スクリーンショット 2024-04-08 060321

もうしわけないのですが、他の生徒の方にも確認してもらってもよいでしょうか。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@komagata
なるほどです👀
承知いたしました!

@junohm410
お疲れ様です!
先日レビューしていただいたこちらのPRにつきまして、何度もお手数をおかけしてしまい申し訳ないのですが、検証にご協力いただけないでしょうか。
レビューの際と同様にこちらのブランチを取り込んでいただき、app/views/home/_adviser_dashboard.html.slimの20行目、コンポーネントを読み込んでいる部分を= react_component 'BookmarksInDashboard'にしたうえで、ブックマークを0件にしたときにコンポーネントのdiv要素が残って余計な余白が表示されていないかご確認いただけると大変助かります🙇‍♂️
ご不明な点がありましたらお知らせください。
よろしくお願いいたします🙏

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ham-cap
お疲れ様です!確認しました。
上でのやり取りである通り、WIPのカードがある方が見た目的にも検証しやすそうだったので、下記の条件で検証しました。

  • Chromeのバージョン: 123.0.6312.59(Official Build) (arm64)
  • 本ブランチを取り込み、advijirouでログイン
  • WIPのドキュメントを作成(ダッシュボードにWIPのカードが表示されるようにする)
  • ブックマークを1件新規追加
  • ダッシュボードのブックマークカードの編集機能を使い、ブックマークを0件にする
  • 更新しない状態で要素を確認

image

私の手元では、data-react-class='BookmarksInDashboard'を持つdivが残っていました😥
ご確認のほど、よろしくお願いいたします。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@junohm410
早速ご確認いただきありがとうございます!
お手数をおかけいたしました🙏
大変助かりました🙏

@komagata
こちら、@junohm410 さんにも確認していただきましたが、やはりdivは残るようです💦
いただいたコメントを読み返してみて一点気になったのですが、「ユーザーはkomagataとhajime」でご確認いただいたとのことだったのですが、advijirouでもお試しいただいておりますでしょうか?👀
というのも、いま触っているのはapp/views/home/_adviser_dashboard.html.slimなので、アドバイザーのダッシュボードでの表示になります。komagataとhajimeはアドバイザーではないと思いますので、app/views/home/_mentor_dashboard.html.slimapp/views/home/index.html.slimが表示されることになります。
この二つに関しては現状、私が実装したとおりreact_componentヘルパーを使用しないパターンになっており、divが消えるようになっておりますので、komagataとhajimeでログインしてもapp/views/home/_adviser_dashboard.html.slimの検証にはなっていないような気がします👀
この点、念のためご確認いただければと思います🙏(advijirouでも確認した上でのコメントということであれば申し訳ありません🙇‍♂️)

Copy link
Member

@komagata komagata May 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ham-cap advijirouでやってみたらdivが残っていました~。

スクリーンショット 2024-05-08 153254

なるほどですね。僕が変えたのはアドバイザー用のページだけだったんですね。

ただ、ここだけ特別にreact_componentを`使わないのは良くない(というか方法がありそうに思う)のでもう少し実装方法を調べてみます。

Copy link
Member

@machida machida May 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ham-cap ( cc @komagata @junohm410 )
div は残したままで大丈夫です。
残った div に、hidden という class を付与できますでしょうか?
可能でしたら、ブックマークが0になったら、残った中身のない div に hidden という class を付けていただきたいです。

hidden を付けると display: none になるので、そこに div があっても余計なマージンは発生しなくなります。

@komagata komagata force-pushed the feature/change-bookmark-list-in-dashboard-to-react branch from 84342e0 to 63f035e Compare May 8, 2024 12:44
@ham-cap ham-cap force-pushed the feature/change-bookmark-list-in-dashboard-to-react branch from 63f035e to 46acf15 Compare May 24, 2024 03:58
@ham-cap
Copy link
Contributor Author

ham-cap commented May 24, 2024

@machida @komagata @junohm410
こちら町田さんからお知らせいただいた内容に従い、ブックマークの件数が0になった際、残ったdivhiddenクラスを付与する形にいたしましたのでご確認いただけますでしょうか👀
不必要なマージンは発生せず、意図したとおりの挙動になっているかと思います🙌
町田さん教えていただきありがとうございました!
こんなやり方があったとは。勉強になりました👀

@junohm410
Copy link
Contributor

@ham-cap
お疲れ様です!確認しました。
divは残りつつ、hiddenクラスの付与のおかげで余分なマージンがなくなっていることを手元で確認できました!
image
私も大変勉強になりました🙏ありがとうございます。

@ham-cap
Copy link
Contributor Author

ham-cap commented May 27, 2024

@junohm410
ご確認いただきありがとうございます🙏

@komagata
Copy link
Member

@ham-cap 僕も確認しました~
マージするにはあとは @machida さんにデザインしてもらう必要がある感じですかね?

@ham-cap
Copy link
Contributor Author

ham-cap commented May 29, 2024

@komagata
ご確認ありがとうございます🙏
今回は新しいページや要素の追加はしておらず、divのclass等もHTMLで実装されていた時と同じ構造にしているため新たにデザインをしてもらう必要はないかなと考えていたのですがいかがでしょうか👀
デザインを入れてもらう必要のあるissueを担当したことがないため思い違いをしておりましたらすみません🙏

@komagata
Copy link
Member

komagata commented Jun 7, 2024

@komagata ご確認ありがとうございます🙏 今回は新しいページや要素の追加はしておらず、divのclass等もHTMLで実装されていた時と同じ構造にしているため新たにデザインをしてもらう必要はないかなと考えていたのですがいかがでしょうか👀 デザインを入れてもらう必要のあるissueを担当したことがないため思い違いをしておりましたらすみません🙏

@ham-cap では、OKです~!

Copy link
Member

@komagata komagata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確認させていただきました。OKです~👌

@komagata komagata merged commit d567790 into main Jun 7, 2024
2 checks passed
@komagata komagata deleted the feature/change-bookmark-list-in-dashboard-to-react branch June 7, 2024 01:18
@github-actions github-actions bot mentioned this pull request Jun 7, 2024
7 tasks
@ham-cap
Copy link
Contributor Author

ham-cap commented Jun 13, 2024

@komagata @machida
お疲れ様です!
こちらのPRにつきまして、生徒・メンター・アドバイザーそれぞれの権限にて本番環境での動作確認が必要となりますので、お手数ですがメンター及びアドバイザーの確認をお願いできますでしょうか🙇‍♂️
生徒については私のアカウントで動作確認済みです🙆‍♂️

よろしくお願いいたします🙇‍♂️

@machida
Copy link
Member

machida commented Jun 13, 2024

@ham-cap メンターはOKでしたー👍

@machida
Copy link
Member

machida commented Jun 13, 2024

@ham-cap アドバイザーもOKでした!!🙆

@ham-cap
Copy link
Contributor Author

ham-cap commented Jun 13, 2024

@machida
ありがとうございます😄
issueクローズしておきますー🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants