【開発ログ⑫】有休未消化のアラートを実装
前提について
はじめまして、 プログラミングスクールに通ういりふねと申します。この記事は、スクールの課題である個人アプリの開発の記録を書くことで、自身のアウトプットに利用しています。もし、読んでいただけた方がいましたら、フィードバックをしていただけたら嬉しいです。
開発するのは「有給休暇管理ツール」です。仕様は過去記事をどうぞ。
アプリはデプロイまで行いますが、サービスとして提供するものではありません。あくまでも自学習の一環ですので、ご理解下さい。では本題へどうぞ。
今回実施する内容
前回までで、有休に関する簡単な計算までが終了しましたので、今回は有給休暇の未消化アラートを実装したいと思っています。以下の手順で実施します。今回は軽め。
- 未消化アラートとは?
- 未消化アラートの実装
- ビューに表示
未消化アラートとは?
働き方改革法案により、2019年4月1日より有給休暇を消化させることが、義務化されました。条件は有休を10日以上持つ社員に対して、毎年5日以上は時期を指定して計画的に消化させるというものです。毎年の期間については、就業規則により変わると考えられますが、今回は「直近付与日から次回付与日までの間」に5日未満しか消化していない社員については、有給休暇管理表のアラートカラムに「未消化」を表示させることにします。
未消化アラートの実装
今回も、モデルファイルに未消化アラートを表示させるメソッドを記述しておきます。
class Employee < ApplicationRecord
〜中略〜
def delete_days_alert
a = total_delete_day
b = total_add_day
if b >= 10 && a < 5
"未消化"
else
"-"
end
end
end
IF文の前のメソッド、total_delete_dayとtotal_add_dayは、前回の記事で定義済みです。これは、直近の付与日から現在までの日数を計算するメソッドになります。
そして、IF文の条件は、b(付与日数の合計)が10以上、かつ、a(消化日数の合計)が5未満のとき、ということになります。有休の付与日数が10日未満の方やすでに今年5日以上消化している方は対象外となります。
ビューに表示
branches/index.html.haml
.main
=render 'branches/mainheader'
〜中略〜
%th{id: "short", class: "bgc"}
5日消化
〜中略〜
- @employees.each do |employee|
%tr
〜中略〜
%th{id: "short", class: "bgc"}
= employee.delete_days_alert
〜中略〜
.main
=render 'branches/mainheader'
〜中略〜
%th{id: "short", class: "bgc"}
5日消化
〜中略〜
- @employees.each do |employee|
%tr
〜中略〜
%th{id: "short", class: "bgc"}
= employee.delete_days_alert
〜中略〜
結果は、以下のとおりです。
未消化アラートは、目立ったほうが良いと思ったので、5日消化カラムには、class名bgcを追加し、黄色の背景色を設定しました。
今日の積み上げ
本来であれば、「未消化」と表示されている方だけに黄色を表示させたかったのですが、私の能力では調べても実装できませんでした。一応、hamlでclassを定義する際にIF文で条件を定義し、条件に合う時、classを追加するという方法があるようです。まだまだ未熟であると感じましたが、できる限りで頑張りたいと思います。
参考にさせていただいた記事
「【Haml】条件(if)に応じてClassを変更させる方法」@nishina555様
「Hamlで条件に合わせてclassを追加する方法」@day-1様
「Hamlで条件に合う時だけ特定のクラスを加えたい」@aprikip様
Author And Source
この問題について(【開発ログ⑫】有休未消化のアラートを実装), 我々は、より多くの情報をここで見つけました https://qiita.com/iczo32/items/ed8ea12177dbedb575ff著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .