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

未アサインの提出物のアラートを変更した #7732

Merged
merged 77 commits into from
Oct 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
af7d625
未アサインの提出物のアラートを変更した
nakamu-kazu222 Apr 25, 2024
d652636
未アサインの提出物がない場合のテキストを変更した
nakamu-kazu222 Apr 25, 2024
1e2fb70
提出物がないときのメッセージを調整した
nakamu-kazu222 Apr 25, 2024
6d15935
リンクの日付を選択後に変更できるようにした
nakamu-kazu222 Apr 25, 2024
6459902
未アサインを4日経過、5日経過、6日以上経過にした
nakamu-kazu222 Apr 30, 2024
4ac9502
デフォルトの経過日数のアラートを変更したので、id名を変更した
nakamu-kazu222 May 1, 2024
dda6cd6
6日以上経過、5日経過、4日経過に変更した
nakamu-kazu222 May 1, 2024
cef791c
/products/unassignedで7日経過した未アサインの提出物を表示しないようにした
nakamu-kazu222 May 2, 2024
0a6ccc4
経過日数を選択する時に、デフォルトの文言を選択できないようにした
nakamu-kazu222 May 2, 2024
5b94ce3
Lintを実行した
nakamu-kazu222 May 2, 2024
08bb9c3
メンター通知のテキストの未アサインの提出物の経過日数を変更した
nakamu-kazu222 May 3, 2024
d5b6152
提出してから4、5、6日を過ぎた提出物の通知内容を変更した
nakamu-kazu222 May 7, 2024
a998054
作成した未アサインの提出物のメッセージを変更した
nakamu-kazu222 May 7, 2024
1e01ea8
テストのアラートを変更した
nakamu-kazu222 May 9, 2024
3ce168d
以上経過している提出物の合計を算出できるようにした
nakamu-kazu222 May 13, 2024
59a4151
変数名を変更した
nakamu-kazu222 May 13, 2024
363a3b8
重複しているコードを省略した
nakamu-kazu222 May 13, 2024
5aa4533
/products/unassignedの6日以上経過している提出物をまとめて表示できるようにした
nakamu-kazu222 May 14, 2024
c807b0d
落ちているテストを修正した
nakamu-kazu222 May 14, 2024
09f2d59
./bin/lintを実行した
nakamu-kazu222 May 14, 2024
fb80a5a
テストが落ちていたので修正した
nakamu-kazu222 May 14, 2024
ab6b5db
未アサインの提出物の件数が異なっていたため修正した
nakamu-kazu222 May 14, 2024
ea1ea18
未アサインの提出物の件数が異なっていたため修正した
nakamu-kazu222 May 14, 2024
5c16a75
unassigned_counts_test.rbに合わせるように変更した
nakamu-kazu222 May 14, 2024
2ea74c6
lintを実行した
nakamu-kazu222 May 14, 2024
198783f
テスト内容を変更した
nakamu-kazu222 May 14, 2024
47676b1
テストの件数を修正した
nakamu-kazu222 May 14, 2024
36bda26
prettierを実行した
nakamu-kazu222 May 14, 2024
f5e580b
テストで変更した箇所を元に戻した
nakamu-kazu222 May 14, 2024
b4e322c
テストの件数を調整した
nakamu-kazu222 May 14, 2024
e50fe7f
unassigned_controllerで7日以上経過している提出物のグループ化を削除したので、テストを削除した
nakamu-kazu222 May 14, 2024
1085e5c
デフォルトを6日以上経過にしたためテスト内容を変更した
nakamu-kazu222 May 15, 2024
55293c6
4日経過のテストデータが消えたので追加した
nakamu-kazu222 May 15, 2024
da7cc55
テストの修正をした
nakamu-kazu222 May 15, 2024
8d4898a
テストの修正をした
nakamu-kazu222 May 15, 2024
b249019
処理が重いため、非同期処理を行うようにした
nakamu-kazu222 May 15, 2024
a518be6
lintを実行した
nakamu-kazu222 May 15, 2024
4a772b2
アラート以外の提出物を表示できるようにした
nakamu-kazu222 May 15, 2024
7c9fb3e
lintを実行した
nakamu-kazu222 May 15, 2024
ae0c7da
提出物チェックの期限を変更にデザインを入れた
machida May 28, 2024
7a8755a
checkが落ちていたので、lintを実行した
nakamu-kazu222 May 28, 2024
31f2b56
rebaseで削除できていなかった
nakamu-kazu222 May 29, 2024
cb2fb04
アラートの期限を変更した際に、メンター全員のダッシュボードの期限を変更できるようにした
nakamu-kazu222 Jun 3, 2024
70b5de6
アラートの期限を変更した時に/products/unassignedで表示するアラート、提出物が変更されるようにした
nakamu-kazu222 Jun 3, 2024
85262fa
lintを実行した
nakamu-kazu222 Jun 3, 2024
6f10452
作成した未アサインの提出物のメッセージをダッシュボードで設定した期限で表示できるように変更した
nakamu-kazu222 Jun 3, 2024
a8bd909
lintを実行した
nakamu-kazu222 Jun 3, 2024
ec2cd9e
表示する期限の日数が誤っていたため変更した
nakamu-kazu222 Jun 3, 2024
7ede993
Discordで送るアラートをダッシュボードで設定した期限で表示できるように変更した
nakamu-kazu222 Jun 4, 2024
161d7ff
文章の日数を表示できるようにした
nakamu-kazu222 Jun 4, 2024
33194d9
未アサインの提出物のアラートを変更するテストを変更した
nakamu-kazu222 Jun 6, 2024
ef84598
キャメルケースの命名規則に基づき変更した
nakamu-kazu222 Jun 18, 2024
64f96c8
複数使用しているコードをまとめた
nakamu-kazu222 Jun 18, 2024
1b9fdc6
複数使用されているコードをまとめた
nakamu-kazu222 Jun 18, 2024
3541ab2
記述を短縮した
nakamu-kazu222 Jun 18, 2024
b58cfb1
使用されていないthis.productsGroupedByElapsedDaysの定義を削除した
nakamu-kazu222 Jun 18, 2024
20ce727
idの命名を変更した
nakamu-kazu222 Jun 19, 2024
55c1802
reduceメソッドを使用して、リファクタリングした
nakamu-kazu222 Jun 19, 2024
46c48d1
strong parametersを使用した
nakamu-kazu222 Jun 19, 2024
bf64c47
リファクタリングをした
nakamu-kazu222 Jun 19, 2024
8b2ef74
命名を変更した
nakamu-kazu222 Jun 19, 2024
bb72d99
dataを書き換えずに新しい変数(dataElapsedDays)を定義するようにした
nakamu-kazu222 Jun 19, 2024
79cdbe0
冗長だったコードをまとめた
nakamu-kazu222 Jun 19, 2024
21c2be6
lintを実行した
nakamu-kazu222 Jun 20, 2024
64358ef
命名が修正されていなかったため修正した
nakamu-kazu222 Jun 20, 2024
5e8815e
pathを修正した
nakamu-kazu222 Jun 24, 2024
0d27001
コードを短縮した
nakamu-kazu222 Jun 24, 2024
ba963b4
someメソッドを使ってコードを短縮した
nakamu-kazu222 Jun 24, 2024
52f1c0a
lintを実行した
nakamu-kazu222 Jun 24, 2024
2639652
テストの変更が必要なかったため戻した
nakamu-kazu222 Jun 24, 2024
94d8cbd
提出期限を定数で管理できるようにした
nakamu-kazu222 Sep 22, 2024
a0c3040
デフォルトの提出期限を4日にした
nakamu-kazu222 Sep 22, 2024
0aeb5ff
仕様変更により、提出期限を変更するGUIを削除した
nakamu-kazu222 Sep 22, 2024
639ecb9
不要なため削除した
nakamu-kazu222 Sep 22, 2024
3059124
ProductDeadlineモデルを削除したためスキーマを削除した
nakamu-kazu222 Sep 22, 2024
d15e93b
コンフリクトを解消した
nakamu-kazu222 Sep 22, 2024
2114394
テストを変更した
nakamu-kazu222 Sep 22, 2024
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
12 changes: 7 additions & 5 deletions app/controllers/api/products/passed_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
class API::Products::PassedController < API::BaseController
def show
products = Product
.list
.ascending_by_date_of_publishing_and_id
@passed5 = products.count { |product| product.elapsed_days == 5 }
@passed6 = products.count { |product| product.elapsed_days == 6 }
@over7 = products.count { |product| product.elapsed_days >= 7 }
.unassigned
.unchecked
.not_wip
@product_deadline_day = Product::PRODUCT_DEADLINE
@first_alert = products.count { |product| product.elapsed_days == @product_deadline_day }
@second_alert = products.count { |product| product.elapsed_days == @product_deadline_day + 1 }
@last_alert = products.count { |product| product.elapsed_days >= @product_deadline_day + 2 }
end
end
9 changes: 5 additions & 4 deletions app/controllers/api/products/unassigned_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,17 @@ def index
.not_wip
.list
.ascending_by_date_of_publishing_and_id
@products_grouped_by_elapsed_days = @products.group_by { |product| product.elapsed_days >= 7 ? 7 : product.elapsed_days }
@products_grouped_by_elapsed_days = @products.group_by(&:elapsed_days)
end

def counts
products = Product
.unassigned
.unchecked
.not_wip
@passed5 = products.count { |product| product.elapsed_days == 5 }
@passed6 = products.count { |product| product.elapsed_days == 6 }
@over7 = products.count { |product| product.elapsed_days >= 7 }
@product_deadline_day = Product::PRODUCT_DEADLINE
@first_alert = products.count { |product| product.elapsed_days == @product_deadline_day }
@second_alert = products.count { |product| product.elapsed_days == @product_deadline_day + 1 }
@last_alert = products.count { |product| product.elapsed_days >= @product_deadline_day + 2 }
end
end
2 changes: 1 addition & 1 deletion app/controllers/api/products/unchecked_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def index
.page(params[:page])
end
@products = @products.where(checker_id:) if checker_id.present?
@products_grouped_by_elapsed_days = @products.group_by { |product| product.elapsed_days >= 7 ? 7 : product.elapsed_days }
@products_grouped_by_elapsed_days = @products.group_by(&:elapsed_days)
end

private
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/api/products_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def index
.order_for_all_list
.page(params[:page])
.per(per)
@products_grouped_by_elapsed_days = @products.group_by { |product| product.elapsed_days >= 7 ? 7 : product.elapsed_days }
@products_grouped_by_elapsed_days = @products.group_by(&:elapsed_days)
@products = @products.joins(:user).where(users: { company_id: params[:company_id] }) if params[:company_id]
@products = @products.where(user_id: params[:user_id]) if params[:user_id].present?
end
Expand Down
1 change: 1 addition & 0 deletions app/controllers/home_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ def display_dashboard
collegue_trainees_reports = Report.with_avatar.where(wip: false).where(user: current_user.collegue_trainees.with_attached_avatar)
@collegue_trainees_recent_reports = collegue_trainees_reports.order(reported_on: :desc).limit(10)
@recent_reports = Report.with_avatar.where(wip: false).order(reported_on: :desc, created_at: :desc).limit(10)
@product_deadline_day = Product::PRODUCT_DEADLINE
@collegues = current_user.collegues_other_than_self
end

Expand Down
4 changes: 3 additions & 1 deletion app/controllers/products/unassigned_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@

class Products::UnassignedController < ApplicationController
before_action :require_staff_login
def index; end
def index
@product_deadline_day = Product::PRODUCT_DEADLINE
end
end
74 changes: 39 additions & 35 deletions app/javascript/components/ElapsedDays.jsx
Original file line number Diff line number Diff line change
@@ -1,46 +1,51 @@
import React from 'react'

export default function ElapsedDays({ countProductsGroupedBy }) {
export default function ElapsedDays({
countProductsGroupedBy,
productDeadlineDay
}) {
const activeClass = (quantity) => {
return quantity ? 'is-active' : 'is-inactive'
}

const renderElapsedDay = (elapsedDays, linkHref, linkText, alertText) => {
return (
<li
className={`page-nav__item is-reply-${linkText} border-b-0 ${activeClass(
countProductsGroupedBy(productDeadlineDay + elapsedDays)
)}`}>
<a className="page-nav__item-link" href={`#${linkHref}`}>
<span className="page-nav__item-link-inner">
{productDeadlineDay + elapsedDays}日{alertText}経過
{` (${countProductsGroupedBy(productDeadlineDay + elapsedDays)})`}
</span>
</a>
</li>
)
}

return (
<nav className="page-body__column is-sub">
<div className="page-nav a-card">
<ol className="page-nav__items elapsed-days">
<li
className={`page-nav__item is-reply-deadline border-b-0 ${activeClass(
countProductsGroupedBy(7)
)}`}>
<a className="page-nav__item-link" href="#7days-elapsed">
<span className="page-nav__item-link-inner">
7日以上経過{` (${countProductsGroupedBy(7)})`}
</span>
</a>
</li>
<li
className={`page-nav__item is-reply-alert border-b-0 ${activeClass(
countProductsGroupedBy(6)
)}`}>
<a className="page-nav__item-link" href="#6days-elapsed">
<span className="page-nav__item-link-inner">
6日経過{` (${countProductsGroupedBy(6)})`}
</span>
</a>
</li>
<li
className={`page-nav__item is-reply-warning border-b-0 ${activeClass(
countProductsGroupedBy(5)
)}`}>
<a className="page-nav__item-link" href="#5days-elapsed">
<span className="page-nav__item-link-inner">
5日経過{` (${countProductsGroupedBy(5)})`}
</span>
</a>
</li>
{[4, 3, 2, 1].map((passedDay) => {
return (
{renderElapsedDay(
2,
`${productDeadlineDay + 2}days-elapsed`,
'deadline',
'以上'
)}
{renderElapsedDay(
1,
`${productDeadlineDay + 1}days-elapsed`,
'alert'
)}
{renderElapsedDay(0, `${productDeadlineDay}days-elapsed`, 'warning')}
{Array.from(
{ length: productDeadlineDay - 1 },
(_, index) => index + 1
)
.reverse()
.map((passedDay) => (
<li
key={passedDay}
className={`page-nav__item ${activeClass(
Expand All @@ -55,8 +60,7 @@ export default function ElapsedDays({ countProductsGroupedBy }) {
</span>
</a>
</li>
)
})}
))}
<li
className={`page-nav__item ${activeClass(
countProductsGroupedBy(0)
Expand Down
78 changes: 55 additions & 23 deletions app/javascript/components/Products.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ export default function Products({
selectedTab,
isMentor,
isAdmin,
currentUserId
currentUserId,
productDeadlineDay
}) {
const { page, setPage } = usePage()

Expand Down Expand Up @@ -49,21 +50,45 @@ export default function Products({
return element
}

const countProductsGroupedBy = (elapsedDays) => {
const element = getElementNdaysPassed(
elapsedDays,
data.products_grouped_by_elapsed_days
const isNotProductDeadlineDaysElapsed = () => {
if (!data || !data.products_grouped_by_elapsed_days) return true

return !data.products_grouped_by_elapsed_days.some(
(group) => group.elapsed_days >= productDeadlineDay
)
return element === undefined ? 0 : element.products.length
}

const isNotProduct5daysElapsed = () => {
const elapsedDays = []
data.productsGroupedByElapsedDays.forEach((group) => {
elapsedDays.push(group.elapsed_days)
const updateElapsedDays = (productsGroupedByElapsedDays) => {
const updateElapsedDays = []
productsGroupedByElapsedDays.forEach((group) => {
const elapsedDays =
group.elapsed_days >= productDeadlineDay + 2
? productDeadlineDay + 2
: group.elapsed_days
let existingGroup = updateElapsedDays.find(
(g) => g.elapsed_days === elapsedDays
)
if (!existingGroup) {
existingGroup = {
elapsed_days: elapsedDays,
products: []
}
updateElapsedDays.push(existingGroup)
}
existingGroup.products = existingGroup.products.concat(group.products)
})
return elapsedDays.every((day) => day < 5)
return updateElapsedDays
}

const dataElapsedDays = updateElapsedDays(
data?.products_grouped_by_elapsed_days || []
)

const countProductsGroupedBy = (elapsedDays) => {
const element = getElementNdaysPassed(elapsedDays, dataElapsedDays)
return element ? element.products.length : 0
}

const elapsedDaysId = (elapsedDays) => {
return `${elapsedDays}days-elapsed`
}
Expand Down Expand Up @@ -97,13 +122,15 @@ export default function Products({
</div>
</>
)
} else if (isDashboard() && isNotProduct5daysElapsed()) {
} else if (isDashboard() && isNotProductDeadlineDaysElapsed()) {
return (
<div className="o-empty-message loaded">
<div className="o-empty-message__icon">
<i className="fa-regular fa-smile" />
</div>
<p className="o-empty-message__text">5日経過した提出物はありません</p>
<p className="o-empty-message__text">
{productDeadlineDay}日経過した提出物はありません
</p>
</div>
)
} else if (selectedTab !== 'unassigned') {
Expand Down Expand Up @@ -163,8 +190,9 @@ export default function Products({
<div className="page-content is-products loaded">
<div className="page-body__columns">
<div className="page-body__column is-main">
{data.products_grouped_by_elapsed_days.map(
(productsNDaysPassed) => {
{dataElapsedDays
.filter((group) => group.elapsed_days !== 8)
.map((productsNDaysPassed) => {
return (
<div
className="a-card"
Expand All @@ -173,6 +201,7 @@ export default function Products({
productsNDaysPassed={productsNDaysPassed}
elapsedDaysId={elapsedDaysId}
countProductsGroupedBy={countProductsGroupedBy}
productDeadlineDay={productDeadlineDay}
/>
<div className="card-list">
<div className="card-list__items">
Expand All @@ -192,12 +221,14 @@ export default function Products({
</div>
</div>
)
}
)}
})}
<UnconfirmedLink label={unconfirmedLinksName()} />
</div>

<ElapsedDays countProductsGroupedBy={countProductsGroupedBy} />
<ElapsedDays
countProductsGroupedBy={countProductsGroupedBy}
productDeadlineDay={productDeadlineDay}
/>
</div>
</div>
)
Expand All @@ -207,21 +238,22 @@ export default function Products({
function ProductHeader({
productsNDaysPassed,
elapsedDaysId,
countProductsGroupedBy
countProductsGroupedBy,
productDeadlineDay
}) {
let headerClass = 'card-header a-elapsed-days'
if (productsNDaysPassed.elapsed_days === 5) {
if (productsNDaysPassed.elapsed_days === productDeadlineDay) {
headerClass += ' is-reply-warning'
} else if (productsNDaysPassed.elapsed_days === 6) {
} else if (productsNDaysPassed.elapsed_days === productDeadlineDay + 1) {
headerClass += ' is-reply-alert'
} else if (productsNDaysPassed.elapsed_days >= 7) {
} else if (productsNDaysPassed.elapsed_days >= productDeadlineDay + 2) {
headerClass += ' is-reply-deadline'
}

const headerLabel = () => {
if (productsNDaysPassed.elapsed_days === 0) {
return '今日提出'
} else if (productsNDaysPassed.elapsed_days === 7) {
} else if (productsNDaysPassed.elapsed_days === productDeadlineDay + 2) {
return `${productsNDaysPassed.elapsed_days}日以上経過`
} else {
return `${productsNDaysPassed.elapsed_days}日経過`
Expand Down
6 changes: 5 additions & 1 deletion app/javascript/products.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,18 @@ document.addEventListener('DOMContentLoaded', () => {
const title = products.getAttribute('data-title')
const isMentor = products.getAttribute('data-mentor-login')
const currentUserId = Number(products.getAttribute('data-current-user-id'))
const productDeadlineDays = Number(
products.getAttribute('data-product-deadline-days')
)
new Vue({
store,
render: (h) =>
h(Products, {
props: {
title: title,
isMentor: isMentor === 'true',
currentUserId: currentUserId
currentUserId: currentUserId,
productDeadlineDays: productDeadlineDays
}
})
}).$mount(selector)
Expand Down
Loading