diff --git a/app/assets/stylesheets/includes/elements.scss b/app/assets/stylesheets/includes/elements.scss index 7a57af6f..e2bf8bd3 100644 --- a/app/assets/stylesheets/includes/elements.scss +++ b/app/assets/stylesheets/includes/elements.scss @@ -89,6 +89,65 @@ span.bubble { border-radius: 5px; } +//**************************************************************************** + +.blockgraph +{ + margin: 0.5rem 0; + display: flex; + flex-flow: row wrap; + align-content: flex-start; +} + +.blockgraph .block +{ + width: 1.5rem; + height: 1rem; + margin-bottom: 0.4rem; + line-height:0.9; + text-align:center; + color:white; + cursor: pointer; +} + +.blockgraph.small .block +{ + width: 0.5rem; +} + + +.block + .weekend +{ +// margin-left: 0.1rem; +} + +.weekend + .weekend +{ + margin-left: 0rem; + margin-right: 0.4rem; +} + + +.strength-0 { background-color: #EFEFEF;} +.strength-1 { background-color: #DFDFDF;} +.strength-2 { background-color: #CFCFCF;} +.strength-3 { background-color: #c0c0c0;} +.strength-4 { background-color: #B1B1B1;} +.strength-5 { background-color: #A3A3A3;} +.strength-6 { background-color: #949494;} +.strength-7 { background-color: #878787;} +.strength-8 { background-color: #797979;} + +.interesting.strength-0 { background-color: #EF7700;} +.interesting.strength-1 { background-color: #DD6E00;} +.interesting.strength-2 { background-color: #CE6700;} +.interesting.strength-3 { background-color: #bf5f00;} +.interesting.strength-4 { background-color: #AF5700;} +.interesting.strength-5 { background-color: #A35100;} +.interesting.strength-6 { background-color: #934900;} +.interesting.strength-7 { background-color: #874300;} +.interesting.strength-8 { background-color: #773b00;} + #files { padding-top:0.35rem; diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index fd3335cf..d7a8115f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -9,7 +9,7 @@ def html_tag_with_language(&block) end def date_span_with_title(date) - "#{time_ago_in_words(date)} #{t(:ago)}".html_safe + "#{l date, format: :short}".html_safe end def markdown(text, page_context) diff --git a/app/helpers/navigation_helper.rb b/app/helpers/navigation_helper.rb index a2a19e27..184a835b 100644 --- a/app/helpers/navigation_helper.rb +++ b/app/helpers/navigation_helper.rb @@ -34,7 +34,7 @@ def next_module end def user_designation - @user_designation ||= current_user.group_name || current_user.schedule_name if Schedule.count > 1 + @user_designation ||= current_user.group_name || current_user.schedule_name end def alerts_for_current_schedule diff --git a/app/helpers/progress_helper.rb b/app/helpers/progress_helper.rb new file mode 100644 index 00000000..3b055f23 --- /dev/null +++ b/app/helpers/progress_helper.rb @@ -0,0 +1,36 @@ +module ProgressHelper + + def course_dates + if Settings.course_start_date.present? and Settings.course_end_date.present? + return Settings.course_start_date..Settings.course_end_date + else + return AttendanceRecord.order(:cutoff).first.cutoff.to_date..AttendanceRecord.order(:cutoff).last.cutoff.to_date + end + end + + def progress_bar(user, items, **args) + @grouped_items = items.group_by_day{ |i| i.class==Submit && i.submitted_at || i.updated_at } + @xtra = user.submits.where("submitted_at is not null").to_a.group_by_day{|i| i.created_at} + # @xtra.each { |k,v| puts k; puts v } + # puts "---" + + + @grouped_items.merge!(@xtra) { |k,v1,v2| puts k; puts v1; puts v2; v1 + v2 } + # puts @grouped_items + # @grouped_items.each { |k,v| puts k; puts v } + + tag.div class: "blockgraph #{args} #{args[:class]}" do + @attendance = user.attendance_by_day + @attendance.default = 0 + course_dates.each do |date| + @day_items = @grouped_items.select{|k,v| k==date}.collect{|k,v| v.collect{|ai| ai.short_description}}.flatten + concat tag.div((@day_items.join =~ /submit/ && 's' || ''), class: "block strength-#{[@attendance[date],8].min} #{@day_items.any? && 'interesting' || ''} #{!(1..5).include?(date.wday) && 'weekend' || ''}", data: { toggle: 'tooltip', placement: 'top' }, title: "#{date} (#{@attendance[date]}) #{@day_items}") + end + end + end + + # def submits(user_submits) + # + # end + +end diff --git a/app/models/grade.rb b/app/models/grade.rb index 3ded846d..7526b3b7 100644 --- a/app/models/grade.rb +++ b/app/models/grade.rb @@ -4,7 +4,7 @@ class Grade < ApplicationRecord belongs_to :submit, touch: true - has_one :user, through: :submit + has_one :user, through: :submit, touch: true delegate :name, to: :user, prefix: true, allow_nil: true has_one :pset, through: :submit @@ -133,7 +133,11 @@ def grade=(new_grade) end end end - + + def short_description + "#{pset_name} graded" + end + def config grading_config = Settings['grading'] return grading_config && grading_config['grades'] && grading_config['grades'][self.pset_name] diff --git a/app/models/hand.rb b/app/models/hand.rb index fd09ec85..6a750448 100644 --- a/app/models/hand.rb +++ b/app/models/hand.rb @@ -26,6 +26,10 @@ def user_last_seen nil end end + + def short_description + "1 question asked and answered" + end def sortable_date updated_at diff --git a/app/models/note.rb b/app/models/note.rb index c885632b..99c6b368 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -1,6 +1,6 @@ class Note < ApplicationRecord - belongs_to :student, class_name: "User" + belongs_to :student, class_name: "User", touch: true belongs_to :author, class_name: "User" delegate :name, to: :author, prefix: true, allow_nil: true @@ -8,6 +8,10 @@ class Note < ApplicationRecord note.student.increment! :notes_count if !note.log end + def short_description + "1 note written" + end + def sortable_date updated_at end diff --git a/app/models/submit.rb b/app/models/submit.rb index 64086be4..076016b6 100644 --- a/app/models/submit.rb +++ b/app/models/submit.rb @@ -121,6 +121,10 @@ def recheck(host) self.update(check_token: token) end + def short_description + "#{pset_name} submitted" + end + def may_be_resubmitted? grade.blank? || (grade.public? && grade.any_final_grade.present? && grade.any_final_grade == 0) end diff --git a/app/models/user.rb b/app/models/user.rb index b2a945fa..0719dec0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -140,5 +140,26 @@ def take_attendance graph = user_attendance.map { |v| symbols[[v,7].min] }.join("") self.update_attribute(:attendance, graph) end + + def attendance_by_day + records = attendance_records.group_by_day(:cutoff).count#.to_a + + # if records.any? + # first_day = records.first.first + # last_day = records.last.first + # + # first_day_of_week = first_day.beginning_of_week + # (first_day_of_week...first_day).each do |day| + # records << [day,0] + # end + # + # today = Date.today + # (last_day+1..today).each do |day| + # records << [day,0] + # end + # end + # + # records.sort + end end diff --git a/app/views/overviews/_table.html.erb b/app/views/overviews/_table.html.erb index d24006e1..65105850 100644 --- a/app/views/overviews/_table.html.erb +++ b/app/views/overviews/_table.html.erb @@ -3,6 +3,8 @@