From b0d134fabdb79701d96a175c0dc28c3d81c729f5 Mon Sep 17 00:00:00 2001 From: Joshua Coles Date: Thu, 26 Oct 2023 14:21:07 +0100 Subject: [PATCH] Add started text to table --- .../attendance_tracker_controller.rb | 25 ++++++++++++++++++- app/lib/toggl.rb | 7 ++++++ .../attendance_tracker/_course_table.erb | 7 ++++-- ...course_focus.erb => course_focus.html.erb} | 2 +- app/views/attendance_tracker/today.html.erb | 7 ++++-- 5 files changed, 42 insertions(+), 6 deletions(-) rename app/views/attendance_tracker/{course_focus.erb => course_focus.html.erb} (90%) diff --git a/app/controllers/attendance_tracker_controller.rb b/app/controllers/attendance_tracker_controller.rb index eff509d..95f4e5e 100644 --- a/app/controllers/attendance_tracker_controller.rb +++ b/app/controllers/attendance_tracker_controller.rb @@ -1,16 +1,39 @@ class AttendanceTrackerController < ApplicationController def index @courses = Course.all.sort_by(&:title) + @current_lecture = get_current_lecture end def today @courses = Course.all.sort_by(&:title) @date = Date.today - + @current_lecture = get_current_lecture @lectures = @courses.flat_map { |course| course.lectures.filter { |a| a.start_time.today? } }.sort_by { |l| l.start_time } end def course_focus @course = Course.find(params[:id]) + @current_lecture = get_current_lecture + end + + private + + def get_current_lecture + current_time_entry = Toggl.current_time_entry + return nil if current_time_entry.nil? + + lecture = Lecture + .joins(:course) + .find_by(title: current_time_entry['description'], course: { toggl_project: current_time_entry['project_id'] }) + + return lecture if lecture.present? + + start_time = Time.new(current_time_entry['start']) + lecture = Lecture.joins(:course) + .find_by(start_time: (start_time - 10.minutes)..(start_time + 10.minutes), course: { toggl_project: current_time_entry['project_id'] }) + + return lecture if lecture.present? + + nil end end diff --git a/app/lib/toggl.rb b/app/lib/toggl.rb index dc92f0f..27ce5f7 100644 --- a/app/lib/toggl.rb +++ b/app/lib/toggl.rb @@ -1,4 +1,11 @@ module Toggl + def self.current_time_entry + JSON.parse(HTTParty.get( + "#{TOGGL_PORTAL_URL}/current", + headers: { 'Accept' => 'application/json' } + ).body) + end + def self.entries_for_project(toggl_project_id, start_time:, end_time:) JSON.parse(HTTParty.post( "#{TOGGL_PORTAL_URL}/report", diff --git a/app/views/attendance_tracker/_course_table.erb b/app/views/attendance_tracker/_course_table.erb index ee716f1..fb7d8e6 100644 --- a/app/views/attendance_tracker/_course_table.erb +++ b/app/views/attendance_tracker/_course_table.erb @@ -14,10 +14,11 @@ <% lectures.each do |lecture| %> <% status_classes = class_names({ 'lecture-future': lecture.start_time.future?, + 'bg-purple-100': lecture == @current_lecture, 'bg-green-100': lecture.attended?, }) %> -
+
<%= lecture.title %>
@@ -29,7 +30,9 @@
<% joinable_time = lecture.start_time - 5.minutes %> - <% if joinable_time.future? %> + <% if lecture == @current_lecture %> + Started + <% elsif joinable_time.future? %> <%= button_to "Prepare", lecture_start_preparation_path(id: lecture.id), class: 'action-button' diff --git a/app/views/attendance_tracker/course_focus.erb b/app/views/attendance_tracker/course_focus.html.erb similarity index 90% rename from app/views/attendance_tracker/course_focus.erb rename to app/views/attendance_tracker/course_focus.html.erb index 31d18eb..43dc73a 100644 --- a/app/views/attendance_tracker/course_focus.erb +++ b/app/views/attendance_tracker/course_focus.html.erb @@ -5,7 +5,7 @@
- <%= render partial: 'course_table', locals: { course: @course } %> + <%= render partial: 'course_table', locals: { course: @course, current_lecture: @current_lecture } %>
diff --git a/app/views/attendance_tracker/today.html.erb b/app/views/attendance_tracker/today.html.erb index 58e9f31..6d2833a 100644 --- a/app/views/attendance_tracker/today.html.erb +++ b/app/views/attendance_tracker/today.html.erb @@ -16,10 +16,11 @@ <% @lectures.each do |lecture| %> <% status_classes = class_names({ 'lecture-future': lecture.start_time.future?, + 'bg-purple-100': lecture == @current_lecture, 'bg-green-100': lecture.attended?, }) %> -
+
<%= lecture.course.title %>
@@ -34,7 +35,9 @@
<% joinable_time = lecture.start_time - 5.minutes %> - <% if joinable_time.future? %> + <% if lecture == @current_lecture %> + Started + <% elsif joinable_time.future? %> <%= button_to "Prepare", lecture_start_preparation_path(id: lecture.id), class: 'action-button'