-
Notifications
You must be signed in to change notification settings - Fork 71
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
提出物一覧をVue.jsで非同期にした #2280
提出物一覧をVue.jsで非同期にした #2280
Conversation
2f96b4b
to
be0de02
Compare
@Chi-rr |
@Chi-rr こちらできれば今週の水曜日までにレビューいただけると助かります💦難しい場合もご連絡いただけるとありがたいです🙏 |
@hogucc |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
遅くなってしまい申し訳ありません🙇♀️レビューいたしました!
全体的に良さそうで、少し気になった点にコメントさせていただきました🤲
またご確認いただけると幸いです!
app/javascript/products.vue
Outdated
:break-view-text="null" | ||
) | ||
.thread-list.a-card(v-if="products.length > 0") | ||
product(v-for="(product, index) in products" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
index利用されていなさそうなので、削除できますかね??
product(v-for="(product, index) in products" | |
product(v-for="product in products" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
削除しました!
fb44480
app/javascript/products.vue
Outdated
json.products.forEach(c => { | ||
this.products.push(c); | ||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
c
はどういう変数でしたでしょうか?
product
やp
でもわかりやすいかなと思いました!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
product
に修正しました!
1b04a9f
window.onpopstate = function(){ | ||
location.href = location.href | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
こちらのlocation.href = location.href
は、vuejs-paginateの実装上必要なんでしたっけ?👀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
はい、そうです!ページャーの2ページ目以降がクリックされたときはpushState
ではURLの履歴を追加しているのですが、pushStateはページの読み込みまでは行いません。なので、ブラウザの戻る・進むボタンを押したときにURLは切り替わるけど、ページが遷移しない状態になります。そこで戻る・進むが押されたことをwindow.onpopstate
イベントで検知して、現在のページへ画面遷移する(location.href = location.href
)ようにしています。
もっと他に良い書き方あるのかもと悩んだのですが、bootcampの他のファイルでもlocation.href = location.href
を使っているところがあったので、この書き方を選択しました。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pushStateはページの読み込みまでは行いません。なので、ブラウザの戻る・進むボタンを押したときにURLは切り替わるけど、ページが遷移しない状態になります。
戻る・進むが押されたことをwindow.onpopstateイベントで検知して、現在のページへ画面遷移する(location.href = location.href)ようにしています。
なるほどです〜👀 勉強になります🙏
# frozen_string_literal: true | ||
|
||
require 'application_system_test_case' | ||
require 'minitest/mock' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
こちらってなぜrequireしているんでしょうか??👀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
元々products_test.rbにあったテストを別ファイルに分けたときに、そのままコピーしていたのを消し忘れてました💦
削除しました!
f24dcb6
b129b7b
to
5118755
Compare
@Chi-rr またご指摘以外で以下の点を修正しました。こちらも合わせてご確認お願いいたします🙏
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@hogucc
修正ありがとうございます!
追加分合わせて確認いたしました!LGTMです🙆♀️
@machida @hogucc 2つ目は、products.vue(もしくはnotifications.vue, reports.vue)です。 また私とuniversatoさんのPRでは、 bootcamp/app/javascript/notifications.vue Lines 2 to 6 in 6e0df0f
雑談部屋で指示を受けながらファイルを修正した際に、 is-top , is-bottom は共通化させたいので、外しておいてくださいと言われた記憶があります。(PRの説明にすぐに書いておくべきでした...)以上補足になりますー お手隙の際に確認していただけると助かります! |
@MashioSano |
5118755
to
beba624
Compare
@machida |
@hogucc ご連絡ありがとうございますー!確認します🙋♂️ |
beba624
to
403f3ad
Compare
e394b36
to
c19b20c
Compare
@@ -0,0 +1,8 @@ | |||
# frozen_string_literal: true | |||
|
|||
class API::Products::NotRespondedController < ApplicationController |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://github.com/fjordllc/bootcamp/blob/master/test/integration/api/practices_test.rb
こういう感じのAPIのテストがあるといいかもです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
また、テストを追加した際に、APIのコントローラーがAPI::BaseControllerを継承していないことに気づいて修正しました。
ありがとうございます!
Co-authored-by: Chi-rr <52053239+Chi-rr@users.noreply.github.com>
a618959
to
227c93f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
確認しました、OKですー🙆♂️
APIのテストいい感じです、ありがとうございます〜
class API::Products::NotRespondedController < API::BaseController | ||
before_action :require_staff_login | ||
def index | ||
@products = Product.not_responded_products.list.page(params[:page]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@hogucc @komagata
#2398 の調査をしていて気づいたんですが、今の実装だとたぶん提出日順ではなくcreated_at順に並びますね。(詳しく見てませんがVue.js側でソートとかしてないですよね?)
https://github.com/fjordllc/bootcamp/blob/master/app/models/product.rb#L69
https://github.com/fjordllc/bootcamp/blob/master/app/models/product.rb#L38
そもそも論になりますが、データを絞り込むscope(つまりwhere)と並び順を指定するscope(つまりorder)は別々にしておかないと、ユースケースが限定されて再利用性が低くなります。
なので、今のscopeの設計から見直した方がいいように思いました。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@JunichiIto
cc: @komagata
Vue.js側でのソートは特に行っていないので、created_at順に並びますね💦
scopeも再検討するのがよさそうです。
そもそも「自分の担当」タブができたいまタブの構成自体が運用と合っていない気がするので、そこから考え直したほうが良さそうと思いました。
メンターが割り振られてない提出物をわかりやすくしてほしい · Issue #2005
ref #2178
概要
提出物一覧(全て、未チェック、未返信、自分の担当)をVue.jsで非同期に読み込むようにした
やったこと
提出物一覧の読み込みの非同期化
既存のテストコードの修正
products_test.rb
から別ファイルに切り出し