ふわ

2021年04月04日に参加

学習履歴詳細

体調グラフ機能, 期間とカラムの遷移に必要な機能を再度洗い出し、実現方法を検討する。

route.rb でConstraint::PeriodConstraintを使って, /statistics/activity/period/thisWeekの"thisWeek"の部分をこちらが指定した単語のみになるよう制限を加えている。しかしno route matchedエラーが出てしまい、うまく作動していない。原因がわからない。

アプリ制作

体調グラフ機能で週間のグラフ描画は実装することができた。しかし、週・月単位の期間の遷移と異なるカラムの遷移を実装できていない。
コントローラとHelperのみにそれらの機能を実装すると、肥大化してしまう。
そこで、Reportクラスをlib配下に作成して、必要な機能をすべてそこに実装することに決めた。

  • 必要な機能の洗い出し

体調グラフ機能の洗い出し

  • 期間の指定
    • リンクから期間を指定する
    • thisWeek, thisMonth, prevWeek, prevMonth
    • 表示している期間の前後の期間へのリンクを生成する
    • thisWeekなら、前後1週間へのリンク
    • 期間をSep 15-22のような形で表示
  • カラムの指定
    • グラフは1カラムのみ描画する
    • 表示しているカラム以外の2カラムへの同期間のリンクを生成する

期間の指定

  • リンクから期間を指定する
    • routing
    • /statistics/:column/period/:period
    • コントローラ
    • StrongParameterの実行
    • params のセット
      • params[:column]がない場合は@column = :activity, あれば @columnに代入
      • params[:period]がない場合は@period = thisWeek, あれば@periodにセット
      • params[:period]を解析してReport.new
    • lib
    • Reportクラス
    • Report::WeeklyReportクラス
      • attribute
      • column
      • date_begin
      • date_end
      • initialize
      • column: paramsをそのまま
      • date_begin: params[:period]を整形してセット
      • date_end: date_begin.end_of_week
      • publicメソッド
      • date_range: labelを生成
      • url_for_next_period
        • date_begin + 1.week.beginning_of_week
        • date_end, date_beginのendofweek
        • column, date_begin, date_endを合わせてurl文字列を返す
      • url_for_previous_period
        • 上と一緒
    • Report::MonthlyReport クラス
    • View

わからないこと

  • 表示する期間がweeklyからmonthlyかで生成するReportクラスを分けたい。
    • ルーティングのcustome constraintで条件分岐をしてアクションを分ける
    • アクションは1つにして、そのアクションの中でprams[:period]を解析して条件分岐
Ruby
Rails

2019年10月10日(木)

3.0時間