From 42b4807e070e83f0cd705457105a2a13d337ef05 Mon Sep 17 00:00:00 2001 From: ralphlevan Date: Sat, 16 Jul 2022 15:38:57 -0400 Subject: [PATCH 01/47] PLAN-585 Added human strings for con state values and use them to format the table values --- app/javascript/constants/strings.js | 12 ++++++++++++ app/javascript/people/people.js | 17 ++++++----------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/app/javascript/constants/strings.js b/app/javascript/constants/strings.js index d6585b02c..7aa9bbb75 100644 --- a/app/javascript/constants/strings.js +++ b/app/javascript/constants/strings.js @@ -241,6 +241,18 @@ module.exports = { }, PERSON_SAVE_SUCCESS: "Profile record saved successfully", PERSON_NEVER_LOGGED_IN: "Never logged in", + PERSON_CON_STATE: { + not_set: "Not Set", + applied: "Applied", + vetted: "Vetted", + wait_list: "Wait List", + invite_pending: "Invite Pending", + invited: "Invited", + probable: "Probable", + accepted: "Accepted", + declined: "Declined", + rejected: "Rejected" + }, SURVEY_REDIRECT: "Unfortunately due to the browser refreshing we have lost any answers you filled in. Please fill the survey out again.", SURVEY_PUBLIC_NO_EDIT: "You cannot edit a published survey. Close the survey to enable editing.", diff --git a/app/javascript/people/people.js b/app/javascript/people/people.js index f49414944..3804753c9 100644 --- a/app/javascript/people/people.js +++ b/app/javascript/people/people.js @@ -1,3 +1,5 @@ +import {PERSON_CON_STATE, SESSION_STATUS} from "@/constants/strings"; + export const people_columns = [ { key: 'published_name', @@ -32,19 +34,12 @@ export const people_columns = [ search_key: 'con_state', label: 'Status', type: "select", + formatter: (value) => PERSON_CON_STATE[value] || value, // TODO: needs to be driven by settings enums choices: [ - {label: "not_set", value: "not_set"}, - {label: "applied", value: "applied"}, - {label: "vetted", value: "vetted"}, - {label: "wait_list", value: "wait_list"}, - {label: "invite_pending", value: "invite_pending"}, - {label: "invited", value: "invited"}, - {label: "probable", value: "probable"}, - {label: "accepted", value: "accepted"}, - {label: "declined", value: "declined"}, - {label: "rejected", value: "rejected"} - ], + "not_set", "applied", "vetted", "wait_list", "invite_pending", + "invited", "probable", "accepted", "declined", "rejected" + ].map(value => ({label: PERSON_CON_STATE[value], value})), operators: ["=", "!="], sortable: false }, From 9cb4f696236a951b79dbce134a9788ffc8a9e8db Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 20 Jul 2022 09:59:30 -0400 Subject: [PATCH 02/47] Coclar WIP --- app/controllers/schedule_controller.rb | 42 ++++++++++++++ app/serializers/conclar/session_serializer.rb | 56 +++++++++++++++++++ app/services/reports_service.rb | 35 +++++------- config/routes.rb | 4 +- 4 files changed, 114 insertions(+), 23 deletions(-) create mode 100644 app/controllers/schedule_controller.rb create mode 100644 app/serializers/conclar/session_serializer.rb diff --git a/app/controllers/schedule_controller.rb b/app/controllers/schedule_controller.rb new file mode 100644 index 000000000..a68247632 --- /dev/null +++ b/app/controllers/schedule_controller.rb @@ -0,0 +1,42 @@ +# Produce a schedule suitable for Conclar +class ScheduleController < ApplicationController + skip_before_action :check_up, :authenticate_person!, only: [:index, :participants] + + def index + # TODO: we really need to use published sessions, this is fine for testing for now + sessions = ReportsService.scheduled_sessions + + render plain: "var program = " + ActiveModel::Serializer::CollectionSerializer.new( + sessions, + serializer: Conclar::SessionSerializer + ).to_json + end + + def participants + # All participants on the schedule ... + # var people = [ + # { + # "id": "4567", + # "name": [ "Friend Andhis Jr." ], + # "sortname" : "Andhis Jr., Friend", + # "tags": [], + # "prog": [ "1234", "614", "801" ], + # "links": [], + # "bio": "Prior art for Adams's satirical point – that humans attach such importance to their automobiles that a visiting extraterrestrial might reasonably mistake them for the planet's dominant life form – can be found in a widely reprinted article from The Rockefeller Institute Review titled Life on Earth (by a Martian) by Paul Weiss. The idea was also expounded by Carl Sagan, though this may have postdated Adams's creation of the character of Ford. The 1967 Oscar-nominated animated film What on Earth! from the National Film Board of Canada is also based on this premise." + # }, + # { + # "id": "1234", + # "name": [ "Galahad", "", "Sir" ], + # "sortname": "Sir Galahad", + # "tags": [ "GoH" ], + # "prog": [ "416" ], + # "links": { + # "img": "/images/galahad.jpg", + # "photo": "/images/galahad.jpg", + # "img_256_url": "/images/galahad.jpg", + # "url": "http://en.wikipedia.org/wiki/Galahad" + # }, + # "bio": "Sir Galahad (/ˈɡæləhæd/; Middle Welsh: Gwalchavad, sometimes referred to as Galeas /ɡəˈliːəs/ or Galath /ˈɡæləθ/), in Arthurian legend, is a knight of King Arthur's Round Table and one of the three achievers of the Holy Grail." + # }, + end +end diff --git a/app/serializers/conclar/session_serializer.rb b/app/serializers/conclar/session_serializer.rb new file mode 100644 index 000000000..093a01fd0 --- /dev/null +++ b/app/serializers/conclar/session_serializer.rb @@ -0,0 +1,56 @@ +class Conclar::SessionSerializer < ActiveModel::Serializer + attributes :id, :title, :start_time + + attribute :desc do + object.description + end + + # TODO: change for when we do have tags + attribute :tags do + res = [] + + # TODO: optimize + res.concat object.areas.collect(&:name) + + res.concat [object.age_restriction.name] if object.age_restriction + res.concat [object.environment] if object.environment != 'unknown' + + if object.minors_participation && object.minors_participation.class == Array + res.concat object.minors_participation + end + + res + end + + attribute :mins do + object.duration + end + + attribute :loc do + # [ "Some Room", "Some Area" ], + if object.room + [object.room.name, object.room.venue.name] + else + [] + end + end + + attribute :people do + moderator = SessionAssignmentRoleType.find_by(name: 'Moderator') + invisible = SessionAssignmentRoleType.find_by(name: 'Invisible') + parts = [] + object.participant_assignments.each do |assignment| + next if assignment.session_assignment_role_type_id == invisible.id + + p = { + id: assignment.person.id, + name: assignment.person.published_name + # role: nil + } + p['role'] = 'moderator' if assignment.session_assignment_role_type_id == moderator.id + parts << p + end + + parts + end +end diff --git a/app/services/reports_service.rb b/app/services/reports_service.rb index 36f63b0c7..bc47e54a2 100644 --- a/app/services/reports_service.rb +++ b/app/services/reports_service.rb @@ -1,27 +1,5 @@ module ReportsService - def self.all_sessions - sessions_table = Session.arel_table - subquery = Session.area_list.as('areas_list') - - joins = [ - sessions_table.create_join( - subquery, - sessions_table.create_on( - subquery[:session_id].eq(sessions_table[:id]) - ), - Arel::Nodes::OuterJoin - ) - ] - - Session.select( - ::Session.arel_table[Arel.star], - 'areas_list.area_list' - ) - .joins(joins) - .order('title') - end - def self.all_conflicts(ignored: false) conflicts_table = ::Conflicts::SessionConflict.arel_table subquery = Session.area_list.as('areas_list') @@ -95,6 +73,19 @@ def self.scheduled_session_no_people # .order(:start_time) end + # Get all the schedule sessions + def self.scheduled_sessions + Session.select( + ::Session.arel_table[Arel.star], + 'areas_list.area_list' + ) + .includes(:format, :room, {participant_assignments: :person}) + .joins(self.area_subquery) + .where("start_time is not null and room_id is not null") + .where("status != 'dropped' and status != 'draft'") + .order(:start_time) + end + def self.sessions_with_no_moderator sched_table = PersonSchedule.arel_table diff --git a/config/routes.rb b/config/routes.rb index 86e778f64..e6a3cab4d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -20,6 +20,8 @@ get '/settings', to: 'settings#index' + get '/conclar/schedule', to: 'schedule#index' + # REST based resources get 'person/session/me', to: 'people#me' get 'person/me', to: 'people#me' @@ -62,7 +64,7 @@ get 'report/session_reports/invited_accepted_not_scheduled', to: 'reports/session_reports#invited_accepted_not_scheduled' get 'report/session_reports/session_with_no_moderator', to: 'reports/session_reports#session_with_no_moderator' get 'report/session_reports/assigned_sessions_not_scheduled', to: 'reports/session_reports#assigned_sessions_not_scheduled' - get 'report/session_reports/session_copy_edit_status', to: 'reports/session_reports#session_copy_edit_status' + get 'report/session_reports/session_copy_edit_status', to: 'reports/session_reports#session_copy_edit_status' get 'report/session_reports/scheduled_session_no_people', to: 'reports/session_reports#scheduled_session_no_people' get 'report/session_reports/non_accepted_on_schedule', to: 'reports/session_reports#non_accepted_on_schedule' get 'report/session_reports/participants_over_session_limits', to: 'reports/session_reports#participants_over_session_limits' From c3f9b413b8ef74f062406001adb22e0c8c9bd3b6 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 20 Jul 2022 10:28:19 -0400 Subject: [PATCH 03/47] conclar WIP --- app/controllers/schedule_controller.rb | 31 ++--------- .../conclar/participant_serializer.rb | 55 +++++++++++++++++++ app/services/reports_service.rb | 17 +++++- config/routes.rb | 1 + 4 files changed, 78 insertions(+), 26 deletions(-) create mode 100644 app/serializers/conclar/participant_serializer.rb diff --git a/app/controllers/schedule_controller.rb b/app/controllers/schedule_controller.rb index a68247632..a9da386fc 100644 --- a/app/controllers/schedule_controller.rb +++ b/app/controllers/schedule_controller.rb @@ -13,30 +13,11 @@ def index end def participants - # All participants on the schedule ... - # var people = [ - # { - # "id": "4567", - # "name": [ "Friend Andhis Jr." ], - # "sortname" : "Andhis Jr., Friend", - # "tags": [], - # "prog": [ "1234", "614", "801" ], - # "links": [], - # "bio": "Prior art for Adams's satirical point – that humans attach such importance to their automobiles that a visiting extraterrestrial might reasonably mistake them for the planet's dominant life form – can be found in a widely reprinted article from The Rockefeller Institute Review titled Life on Earth (by a Martian) by Paul Weiss. The idea was also expounded by Carl Sagan, though this may have postdated Adams's creation of the character of Ford. The 1967 Oscar-nominated animated film What on Earth! from the National Film Board of Canada is also based on this premise." - # }, - # { - # "id": "1234", - # "name": [ "Galahad", "", "Sir" ], - # "sortname": "Sir Galahad", - # "tags": [ "GoH" ], - # "prog": [ "416" ], - # "links": { - # "img": "/images/galahad.jpg", - # "photo": "/images/galahad.jpg", - # "img_256_url": "/images/galahad.jpg", - # "url": "http://en.wikipedia.org/wiki/Galahad" - # }, - # "bio": "Sir Galahad (/ˈɡæləhæd/; Middle Welsh: Gwalchavad, sometimes referred to as Galeas /ɡəˈliːəs/ or Galath /ˈɡæləθ/), in Arthurian legend, is a knight of King Arthur's Round Table and one of the three achievers of the Holy Grail." - # }, + participants = ReportsService.scheduled_people + + render json: ActiveModel::Serializer::CollectionSerializer.new( + participants, + serializer: Conclar::ParticipantSerializer + ).to_json end end diff --git a/app/serializers/conclar/participant_serializer.rb b/app/serializers/conclar/participant_serializer.rb new file mode 100644 index 000000000..85492d0bb --- /dev/null +++ b/app/serializers/conclar/participant_serializer.rb @@ -0,0 +1,55 @@ +class Conclar::ParticipantSerializer < ActiveModel::Serializer + attributes :id, :bio + + attribute :name do + object.published_name + end + + attribute :sortname do + object.published_name_sort_by + end + + attribute :prog do + res = [] + moderator = SessionAssignmentRoleType.find_by(name: 'Moderator') + participant = SessionAssignmentRoleType.find_by(name: 'Participant') + + object.session_assignments.each do |assignment| + next if assignment.session_assignment_role_type_id != moderator.id and assignment.session_assignment_role_type_id != participant.id + + res << assignment.session_id + end + + res + end + + # links ???? + # what about social media URLs? + # tags - not supported yet +end + +# All participants on the schedule ... +# var people = [ +# { +# "id": "4567", +# "name": [ "Friend Andhis Jr." ], +# "sortname" : "Andhis Jr., Friend", +# "tags": [], +# "prog": [ "1234", "614", "801" ], +# "links": [], +# "bio": "Prior art for Adams's satirical point – that humans attach such importance to their automobiles that a visiting extraterrestrial might reasonably mistake them for the planet's dominant life form – can be found in a widely reprinted article from The Rockefeller Institute Review titled Life on Earth (by a Martian) by Paul Weiss. The idea was also expounded by Carl Sagan, though this may have postdated Adams's creation of the character of Ford. The 1967 Oscar-nominated animated film What on Earth! from the National Film Board of Canada is also based on this premise." +# }, +# { +# "id": "1234", +# "name": [ "Galahad", "", "Sir" ], +# "sortname": "Sir Galahad", +# "tags": [ "GoH" ], +# "prog": [ "416" ], +# "links": { +# "img": "/images/galahad.jpg", +# "photo": "/images/galahad.jpg", +# "img_256_url": "/images/galahad.jpg", +# "url": "http://en.wikipedia.org/wiki/Galahad" +# }, +# "bio": "Sir Galahad (/ˈɡæləhæd/; Middle Welsh: Gwalchavad, sometimes referred to as Galeas /ɡəˈliːəs/ or Galath /ˈɡæləθ/), in Arthurian legend, is a knight of King Arthur's Round Table and one of the three achievers of the Holy Grail." +# }, diff --git a/app/services/reports_service.rb b/app/services/reports_service.rb index bc47e54a2..5a85ba44b 100644 --- a/app/services/reports_service.rb +++ b/app/services/reports_service.rb @@ -73,7 +73,7 @@ def self.scheduled_session_no_people # .order(:start_time) end - # Get all the schedule sessions + # Get all the schedule sessions def self.scheduled_sessions Session.select( ::Session.arel_table[Arel.star], @@ -86,6 +86,21 @@ def self.scheduled_sessions .order(:start_time) end + def self.scheduled_people + moderator = SessionAssignmentRoleType.find_by(name: 'Moderator') + participant = SessionAssignmentRoleType.find_by(name: 'Participant') + + people = Person.includes( + {session_assignments: [:session, :session_assignment_role_type]} + ).references( + {session_assignments: :session} + ) + .where("session_assignments.session_assignment_role_type_id in (?)", [moderator.id, participant.id]) + .where("sessions.start_time is not null and sessions.room_id is not null") + .where("sessions.status != 'dropped' and sessions.status != 'draft'") + .where("people.con_state not in (?)", ['declined', 'rejected']) #.distinct + .order("people.published_name") + end def self.sessions_with_no_moderator sched_table = PersonSchedule.arel_table diff --git a/config/routes.rb b/config/routes.rb index e6a3cab4d..429f1e3f1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -21,6 +21,7 @@ get '/settings', to: 'settings#index' get '/conclar/schedule', to: 'schedule#index' + get '/conclar/participants', to: 'schedule#participants' # REST based resources get 'person/session/me', to: 'people#me' From 065f0fa60cf13f66acc6440a160be10f474cdd11 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 20 Jul 2022 10:29:46 -0400 Subject: [PATCH 04/47] conclar WIP --- app/controllers/schedule_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/schedule_controller.rb b/app/controllers/schedule_controller.rb index a9da386fc..0f994869c 100644 --- a/app/controllers/schedule_controller.rb +++ b/app/controllers/schedule_controller.rb @@ -15,7 +15,7 @@ def index def participants participants = ReportsService.scheduled_people - render json: ActiveModel::Serializer::CollectionSerializer.new( + render plain: "var people = " + ActiveModel::Serializer::CollectionSerializer.new( participants, serializer: Conclar::ParticipantSerializer ).to_json From a767420bb5842cde146d8cab2a7b7248ede588f5 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 20 Jul 2022 11:20:25 -0400 Subject: [PATCH 05/47] use datetime as attribute name --- app/serializers/conclar/session_serializer.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/serializers/conclar/session_serializer.rb b/app/serializers/conclar/session_serializer.rb index 093a01fd0..5189ff8b9 100644 --- a/app/serializers/conclar/session_serializer.rb +++ b/app/serializers/conclar/session_serializer.rb @@ -1,10 +1,14 @@ class Conclar::SessionSerializer < ActiveModel::Serializer - attributes :id, :title, :start_time + attributes :id, :title attribute :desc do object.description end + attribute :datetime do + object.start_time + end + # TODO: change for when we do have tags attribute :tags do res = [] From 05ebead26ce45d7f3b6eca5cd0fc0803a351c33b Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 20 Jul 2022 14:59:44 -0400 Subject: [PATCH 06/47] changing to just json instead of var = --- app/controllers/schedule_controller.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/controllers/schedule_controller.rb b/app/controllers/schedule_controller.rb index 0f994869c..4a91c4843 100644 --- a/app/controllers/schedule_controller.rb +++ b/app/controllers/schedule_controller.rb @@ -3,21 +3,22 @@ class ScheduleController < ApplicationController skip_before_action :check_up, :authenticate_person!, only: [:index, :participants] def index - # TODO: we really need to use published sessions, this is fine for testing for now sessions = ReportsService.scheduled_sessions - render plain: "var program = " + ActiveModel::Serializer::CollectionSerializer.new( + render json: ActiveModel::Serializer::CollectionSerializer.new( sessions, serializer: Conclar::SessionSerializer - ).to_json + ), + content_type: 'application/json' end def participants participants = ReportsService.scheduled_people - render plain: "var people = " + ActiveModel::Serializer::CollectionSerializer.new( + render ActiveModel::Serializer::CollectionSerializer.new( participants, serializer: Conclar::ParticipantSerializer - ).to_json + ), + content_type: 'application/json' end end From 9b4519e0d60737c7e6ca460410d960b9b6ea3dad Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 20 Jul 2022 16:53:11 -0400 Subject: [PATCH 07/47] if the request is patch then it may not have time and room in the params --- app/controllers/sessions_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index ee162f40f..a586dc93c 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -143,7 +143,8 @@ def before_update # if time or room have changed removed ignored conflicts p = _permitted_params(model: object_name, instance: @object) if (@object.start_time || @object.room_id) - if p[:start_time] != @object.start_time || p[:room_id] != @object.room_id + if (p.has_key?(:start_time) && p[:start_time] != @object.start_time) || + (p.has_key?(:room_id) && p[:room_id] != @object.room_id) # so we remove any ignore conflicts for this session cids = @object.ignored_session_conflicts.pluck(:conflict_id) cids += @object.ignored_conflict_sessions.pluck(:conflict_id) From b2dace8f0c6b12e21b49b286601ff66859953ee4 Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 21 Jul 2022 12:54:23 -0400 Subject: [PATCH 08/47] adjust output --- app/controllers/schedule_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/schedule_controller.rb b/app/controllers/schedule_controller.rb index 4a91c4843..02d7fd031 100644 --- a/app/controllers/schedule_controller.rb +++ b/app/controllers/schedule_controller.rb @@ -15,7 +15,7 @@ def index def participants participants = ReportsService.scheduled_people - render ActiveModel::Serializer::CollectionSerializer.new( + render json: ActiveModel::Serializer::CollectionSerializer.new( participants, serializer: Conclar::ParticipantSerializer ), From 20ec584e5828e48705ef9d7861e0f1eb1951c15c Mon Sep 17 00:00:00 2001 From: Gail Terman Date: Thu, 21 Jul 2022 18:54:54 -0400 Subject: [PATCH 09/47] PLAN-538 PLAN-379 tweaks to report page - make it so staff cannot click on the report they may not run - start description process - make table of contents at top of reports page - adjust styling of titles --- app/javascript/reports/reports_screen.vue | 39 ++++++++++++++++++----- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/app/javascript/reports/reports_screen.vue b/app/javascript/reports/reports_screen.vue index c4311dea3..ce8417928 100644 --- a/app/javascript/reports/reports_screen.vue +++ b/app/javascript/reports/reports_screen.vue @@ -1,13 +1,30 @@ From bbfad9e9e1420d634535bb14c81dab35db057e01 Mon Sep 17 00:00:00 2001 From: dcterman <105614148+dcterman@users.noreply.github.com> Date: Thu, 21 Jul 2022 21:12:27 -0400 Subject: [PATCH 10/47] Update reports_screen.vue --- app/javascript/reports/reports_screen.vue | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/javascript/reports/reports_screen.vue b/app/javascript/reports/reports_screen.vue index ce8417928..c286f2c22 100644 --- a/app/javascript/reports/reports_screen.vue +++ b/app/javascript/reports/reports_screen.vue @@ -28,12 +28,29 @@
  • Assigned Sessions by Participant +

    + Description: People assigned to sessions, one line per person and session
    + Fields: Person name, published name, participant status, session title, person’s role in the session, has session been scheduled (y/n)
    + Session data included: any session with at least one person assigned as moderator, participant, invisible participant, or reserved
    + Person data included: session role of moderator, participant, invisible participant, or reserved +

  • People and Survey Submissions +

    + Description: List of surveys taken, including day/time submitted, one line per person
    + Fields: Person name, published name, primary email, attendance type, participant status, surveys taken
    + Person data included: participant status of applied, probable, vetted, invite_pending, invited, accepted +

  • Participants and Do Not Assign With +

    + Description: People who should not be assigned to the same session, one line per person and session; available only to users with permission to view sensitive data
    + Fields: Person name, published name, session title, area(s) of session, names of other people assigned to the session, names of people not to assign to the same session
    + Session data included: all scheduled sessions
    + Person data included: moderators, participants, invisible participants who listed information about who not to assign with +

    Participants and Do Not Assign With
  • From 41b180a7143e956db9f3aca3ea4719e97078417e Mon Sep 17 00:00:00 2001 From: dcterman <105614148+dcterman@users.noreply.github.com> Date: Thu, 21 Jul 2022 21:20:08 -0400 Subject: [PATCH 11/47] Update reports_screen.vue --- app/javascript/reports/reports_screen.vue | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/javascript/reports/reports_screen.vue b/app/javascript/reports/reports_screen.vue index c286f2c22..7e370c513 100644 --- a/app/javascript/reports/reports_screen.vue +++ b/app/javascript/reports/reports_screen.vue @@ -55,9 +55,21 @@
  • Participants over Daily Limits +

    + Description: People scheduled for more sessions than they specified in their daily and/or con limit, one line per person and daily/con limit exceeded
    + Fields: Person name, published name, participant status, day (including individual days and "All" for con limit), session count (number of assigned sessions), person’s limit (as specified in "Availabilities & Interests")
    + Session data included: all scheduled sessions
    + Person data included: moderators, participants exceeding specified daily or con limit +

  • Participants over Con Limit +

    + Description: People scheduled for more sessions than the con allows, with some session format exceptions, one line per person
    + Fields: Person name, published name, participant status, session count (number of assigned sessions), con limit (maximum number of sessions allowed by con of 6)
    + Session data included: all scheduled sessions except those with format of autographing, meetings, readings, rehearsals, and table talks
    + Person data included: moderators, participants exceeding con limit of 6 sessions, not including the format exceptions +

  • Non-Accepted Participants on Scheduled Sessions From 8044f63cab904733780f62d4c1899dd0aab619fb Mon Sep 17 00:00:00 2001 From: dcterman <105614148+dcterman@users.noreply.github.com> Date: Thu, 21 Jul 2022 21:26:11 -0400 Subject: [PATCH 12/47] Update reports_screen.vue --- app/javascript/reports/reports_screen.vue | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/javascript/reports/reports_screen.vue b/app/javascript/reports/reports_screen.vue index 7e370c513..793f251eb 100644 --- a/app/javascript/reports/reports_screen.vue +++ b/app/javascript/reports/reports_screen.vue @@ -73,10 +73,21 @@
  • Non-Accepted Participants on Scheduled Sessions +

    + Description: People with participant status other than "accepted" or "not_set" assigned to scheduled sessions, one line per person and session
    + Fields: Person name, published name, participant status, session title, area(s) of session
    + Session data included: all scheduled sessions
    + Person data included: moderators, participants, invisible participants with a participant status that is not "accepted" or "not_set" +

  • -
  • Invited and Accepted not on Schedule +

    + Description: People with a participant status of accepted, invited, or invite_pending who are not assigned to any sessions, one line per person
    + Fields: Person name, published name, participant status, attendance type (in-person, virtual, hybrid), person’s bio
    + Session data included: all scheduled sessions
    + Person data included: people with a participant status of accepted, invited, or invite_pending who are assigned to no sessions, or who are assigned as invisible participants or reserved on one or more sessions +

  • From 7b207904d0f25f735d32e237e9aad7e2f1961172 Mon Sep 17 00:00:00 2001 From: dcterman <105614148+dcterman@users.noreply.github.com> Date: Thu, 21 Jul 2022 21:33:57 -0400 Subject: [PATCH 13/47] Update reports_screen.vue --- app/javascript/reports/reports_screen.vue | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/javascript/reports/reports_screen.vue b/app/javascript/reports/reports_screen.vue index 793f251eb..591489d79 100644 --- a/app/javascript/reports/reports_screen.vue +++ b/app/javascript/reports/reports_screen.vue @@ -95,15 +95,38 @@
    • Session Selections +

      + Description: Sessions and rankings selected by people, one line per session and person
      + Fields: Session title, person name, person published name, participant status, ranking, ranking notes, area(s) of session
      + Session data included: all sessions that at least one person selected
      + Person data included: participant status of applied, probable, vetted, invite_pending, invited, accepted +

    • Sessions with Participants +

      + Description: Sessions with people already assigned, one line per session
      + Fields: Session title, session format, area(s) of session, moderators, participants, reserves, has session been scheduled (y/n)
      + Session data included: all sessions with at least one person assigned
      + Person data included: moderators, participants, reserved +

    • Sessions with no Moderator +

      + Description: Scheduled sessions with no moderator assigned, one line per session
      + Fields: Session title, area(s) of session, session start time, session format, people assigned (participants, invisible participants), reserved people
      + Session data included: all scheduled sessions
      + Person data included: participants, invisible participants, reserved +

    • Scheduled Sessions with no Participants +

      + Description: Scheduled sessions with no assigned moderators or participants, one line per session
      + Fields: Session title, area(s) of session, session start time, room
      + Session data included: all scheduled sessions +

    • Sessions with Participants not Scheduled From 4dc86cb5fbcf3680f2a2b635feee13ae10aa3327 Mon Sep 17 00:00:00 2001 From: dcterman <105614148+dcterman@users.noreply.github.com> Date: Thu, 21 Jul 2022 21:39:02 -0400 Subject: [PATCH 14/47] Update reports_screen.vue --- app/javascript/reports/reports_screen.vue | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/javascript/reports/reports_screen.vue b/app/javascript/reports/reports_screen.vue index 591489d79..58d952675 100644 --- a/app/javascript/reports/reports_screen.vue +++ b/app/javascript/reports/reports_screen.vue @@ -130,12 +130,30 @@
    • Sessions with Participants not Scheduled +

      + Description: Sessions that are not scheduled but have assigned people, one line per session
      + Fields: Session title, area(s) of session, moderators, participants, invisible participants
      + Session data included: all unscheduled sessions with at least one person assigned as moderator, participant, and/or invisible participant
      + Person data included: moderators, participants, invisible participants +

    • Panels with too few Participants +

      + Description: Scheduled sessions (panel format only) with 3 or fewer assigned people (moderators, participants), one line per session
      + Fields: Session title, area(s) of session, session start time, participant count, participant count lower bound (3), assigned participants, moderators
      + Session data included: all scheduled sessions
      + Person data included: moderators, participants +

    • Panels with too many Participants +

      + Description: Scheduled sessions (panel format only) with 6 or more assigned people (moderators, participants), one line per session
      + Fields: Session title, area(s) of session, session start time, participant count, participant count upper bound (6), assigned participants, moderators
      + Session data included: all scheduled sessions
      + Person data included: moderators, participants +

    • Session Copy-Edit Status From beb0d5f433a74f54e0423328a85e6bfdb733eae9 Mon Sep 17 00:00:00 2001 From: dcterman <105614148+dcterman@users.noreply.github.com> Date: Thu, 21 Jul 2022 21:47:54 -0400 Subject: [PATCH 15/47] Update reports_screen.vue --- app/javascript/reports/reports_screen.vue | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/javascript/reports/reports_screen.vue b/app/javascript/reports/reports_screen.vue index 58d952675..cb077a9ea 100644 --- a/app/javascript/reports/reports_screen.vue +++ b/app/javascript/reports/reports_screen.vue @@ -157,6 +157,11 @@
    • Session Copy-Edit Status +

      + Description: The copy-edited status of each session, one line per session
      + Fields: Session title, area(s) of session, session status, has session been copy edited (y/n), has session been scheduled (y/n), visibility (visible, not visible)
      + Session data included: all sessions +

    From 96ca06cb757577b0a97ff44e5a356373228e3590 Mon Sep 17 00:00:00 2001 From: dcterman <105614148+dcterman@users.noreply.github.com> Date: Thu, 21 Jul 2022 21:55:29 -0400 Subject: [PATCH 16/47] Update reports_screen.vue --- app/javascript/reports/reports_screen.vue | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/javascript/reports/reports_screen.vue b/app/javascript/reports/reports_screen.vue index cb077a9ea..7d196c613 100644 --- a/app/javascript/reports/reports_screen.vue +++ b/app/javascript/reports/reports_screen.vue @@ -169,15 +169,39 @@
    • People outside of Availability +

      + Description: People scheduled on days/times that they did not mark as available, one line per person and session, except where conflict has been marked ignored
      + Fields: Person name, published name, participant status, session title, area(s) of session, session start time, session duration, participant availability (days/times)
      + Session data included: all scheduled sessions
      + Person data included: moderators, participants, invisible participants +

    • People double booked +

      + Description: People assigned to more than one scheduled session at the same time, one line per person and double booking occurrence, except where conflict has been marked ignored
      + Fields: Person name, published name, participant status, time, session title, area(s) of session, room, conflict session title, conflict session area, conflict room
      + Session data included: all scheduled sessions
      + Person data included: moderators, participants, invisible participants +

    • Person scheduled against a conflict item +

      + Description: People assigned to a session that occurs at the same time as a special event they want to attend, one line per conflict occurrence, except where conflict has been marked ignored
      + Fields: Person name, published name, participant status, session title, area(s) of session, session start time, session duration, conflict session (special event), conflict session (special event) start time
      + Session data included: all scheduled sessions
      + Person data included: moderators, participants, invisible participants +

    • Back to Back +

      + Description: People assigned to two sessions in a row (where the second session begins less than 40 minutes after the first ends), one line per session pair, except where conflict has been marked ignored
      + Fields: Person name, published name, participant status, session 1 title, area(s) of session, session start time, session duration, room, session 2 title, area(s) of session, session start time, session duration, room
      + Session data included: all scheduled sessions
      + Person data included: moderators, participants, invisible participants +

    • Back to Back to Back From 8abccb01b304de8098b978cc0ae32ef50c9d6aba Mon Sep 17 00:00:00 2001 From: dcterman <105614148+dcterman@users.noreply.github.com> Date: Thu, 21 Jul 2022 22:02:18 -0400 Subject: [PATCH 17/47] Update reports_screen.vue --- app/javascript/reports/reports_screen.vue | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/javascript/reports/reports_screen.vue b/app/javascript/reports/reports_screen.vue index 7d196c613..896e9cfb6 100644 --- a/app/javascript/reports/reports_screen.vue +++ b/app/javascript/reports/reports_screen.vue @@ -205,15 +205,36 @@
    • Back to Back to Back +

      + Description: People assigned to three sessions in a row (where one session begins less than 40 minutes after the previous one), one line per set of 3 sessions
      + Fields: Person name, published name, participant status, session 1 title, area(s) of session, session start time, session duration, room, session 2 title, area(s) of session, session start time, session duration, room, session 3 title, area(s) of session, session start time, session duration, room
      + Session data included: all scheduled sessions
      + Person data included: moderators, participants, invisible participants +

    • Multiple Sessions in a Room +

      + Description: Two or more sessions scheduled for the same room at the same day/time, one line per occurrence, except where conflict has been marked ignored
      + Fields: Room, session title, conflict session title, start time
      + Session data included: all scheduled sessions +

    • Ignored Person Conflicts +

      + Description: Ignored conflicts in these categories: people outside of availability, people double booked, person scheduled against a conflict item, back to back), one line per ignored conflict
      + Fields: Session title, area(s) of session, session start time, session duration, room, person name, conflict type
      + Session data included: all scheduled sessions +

    • All Conflicts +

      + Description: All conflicts in these categories: people outside of availability, people double booked, person scheduled against a conflict item, back to back), one line per conflict
      + Fields: Session title, area(s) of session, session start time, session duration, room, person name, conflict type
      + Session data included: all scheduled sessions +

    From 0e1fada3174474375c39ddbde06e9c10050e64c8 Mon Sep 17 00:00:00 2001 From: dcterman <105614148+dcterman@users.noreply.github.com> Date: Thu, 21 Jul 2022 22:06:11 -0400 Subject: [PATCH 18/47] Update reports_screen.vue --- app/javascript/reports/reports_screen.vue | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/javascript/reports/reports_screen.vue b/app/javascript/reports/reports_screen.vue index 896e9cfb6..8ff9eff97 100644 --- a/app/javascript/reports/reports_screen.vue +++ b/app/javascript/reports/reports_screen.vue @@ -242,9 +242,20 @@
    • Schedule by Room then Time +

      + Description: All scheduled sessions, one line per room and day/time
      + Fields: Session title, area(s) of session, session start time, session duration, room, assigned participants, moderators
      + Session data included: all scheduled sessions
      + Person data included: moderators, participants +

    • Schedule by Participant +

      + Description: Schedule for each participant, one line per person and session
      + Fields: Person name, publishes name, participant status, session title, area(s) of session, session start time, room, moderator (y/n), invisible participant (y/n)
      + Person data included: moderators, participants, invisible participants +

    • Welcome to Planorama, {{currentUser.published_name}}!

      You'll be using this site between now and the convention to view and manage your profile, interests and schedule.

      -

      - To get started, click on Profile. -

      -

      - At this point there are 4 tabs in the profile. You will need to visit all of them. -

      -
        -
      • - General Tab -
          -
        • - Update your name(s), pronouns, email address, bio, and social media as needed -
        • -
        • - If you’re not going to be attending the convention in-person, please let us know the timezone that you will be in when you attend virtually. -
        • -
        -
      • -
      -
        -
      • - Availability & Interests -
          -
        • - Fill in the maximum number of program items you would like to be on. -
        • -
        • - Select blocks of time you will be available during the convention on the availability calendar. -
        • -
        • - Select any of the specific cornerstone items you do not want to be scheduled against. -
        • -
        • - Let us know any other scheduling constraints you have in the free text box. -
        • -
        -
      • -
      -
        -
      • - Session Selection -
          -
        • - Use this tab to tell us what program items you are interested in. -
        • -
        • - You can filter the options for one area, look through all options (over 600!) or search based on text in the title and description. (Note: You need to click the search button - hitting enter does not work.) -
        • -
        • - Select sessions by using the slider to the right of the description. Your selections will save automatically. -
        • -
        • - While some items are marked or otherwise described as Virtual, many we’re not sure if they will be taking place in-person or online, so everyone should feel free to sign up for items not marked either way. -
        • -
        -
      • -
      -
        -
      • - Session Rankings -

        - The list of sessions you selected will display here. For each session: +

        +

        + To get started, click on Profile. +

        +

        + At this point there are 4 tabs in the profile. You will need to visit all of them. +

        +
          +
        • + General Tab
          • - Add a ranking 1-3. The ranking system is explained on the tab. You may leave panels unranked. + Update your name(s), pronouns, email address, bio, and social media as needed +
          • +
          • + If you’re not going to be attending the convention in-person, please let us know the timezone that you will be in when you attend virtually. +
          • +
          +
        • +
        +
          +
        • + Availability & Interests +
            +
          • + Fill in the maximum number of program items you would like to be on. +
          • +
          • + Select blocks of time you will be available during the convention on the availability calendar.
          • - Indicate moderation preference for the individual items. + Select any of the specific cornerstone items you do not want to be scheduled against.
          • - Use the text box to tell us why you are a good choice for this panel and what you would contribute. + Let us know any other scheduling constraints you have in the free text box.
          -

          -

          - Please follow the additional prompt, if present. +

        • +
        +
          +
        • + Session Selection
          • - A sentence or two is often sufficient; essays are not required. + Use this tab to tell us what program items you are interested in. +
          • +
          • + You can filter the options for one area, look through all options (over 600!) or search based on text in the title and description. (Note: You need to click the search button - hitting enter does not work.)
          • - We have about 1000 potential panelists and about two dozen staffers engaged in panelist assignments; this step helps us learn more about you in the context of a particular session. + Select sessions by using the slider to the right of the description. Your selections will save automatically. +
          • +
          • + While some items are marked or otherwise described as Virtual, many we’re not sure if they will be taking place in-person or online, so everyone should feel free to sign up for items not marked either way.
          -

          -
        • -
        -
        - - +
      diff --git a/app/javascript/profile/person_schedule_display.vue b/app/javascript/profile/person_schedule_display.vue index 68adca9c7..36749ca91 100644 --- a/app/javascript/profile/person_schedule_display.vue +++ b/app/javascript/profile/person_schedule_display.vue @@ -42,6 +42,7 @@
      +
      From 19e2c0cb9fb4e570768470bf5e0615b5aa1b1c1d Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 27 Jul 2022 07:06:17 -0400 Subject: [PATCH 34/47] fix logged in time display --- app/javascript/people/people_table.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/people/people_table.vue b/app/javascript/people/people_table.vue index e3de1cb8e..ee89793f4 100644 --- a/app/javascript/people/people_table.vue +++ b/app/javascript/people/people_table.vue @@ -98,8 +98,8 @@ From a01ee2c3222b54eb42badd957f7a5443bab5dc3e Mon Sep 17 00:00:00 2001 From: Gail Terman Date: Wed, 27 Jul 2022 19:13:59 -0400 Subject: [PATCH 42/47] PLAN-538 add new report description --- app/javascript/reports/reports_screen.vue | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/javascript/reports/reports_screen.vue b/app/javascript/reports/reports_screen.vue index 67af576de..6aa0dd9bd 100644 --- a/app/javascript/reports/reports_screen.vue +++ b/app/javascript/reports/reports_screen.vue @@ -162,7 +162,7 @@ Fields: Session title, area(s) of session, session status, has session been copy edited (y/n), has session been scheduled (y/n), visibility (visible, not visible)
      Session data included: all sessions

      - +
    Conflicts
    @@ -233,7 +233,8 @@

    Description: All conflicts in these categories: people outside of availability, people double booked, person scheduled against a conflict item, back to back), one line per conflict
    Fields: Session title, area(s) of session, session start time, session duration, room, person name, conflict type
    - Session data included: all scheduled sessions + Session data included: all scheduled sessions
    + Person data included: moderators, participants, invisible participants

    @@ -259,6 +260,11 @@
  • Participants with Approved Draft and Firm Schedules +

    + Description: People with a participant status that is not rejected, declined, or not_set, with indication whether and when they have approved their draft and firm schedules, with comments if not approved, one line per person
    + Fields: Person name, published name, primary email, attendance type (in-person, virtual, hybrid), participant status, draft approval, draft comments, draft edited time, firm approval, firm comments, firm edited time
    + Person data included: people with a participant status that is not rejected, declined, or not_set, including those who are not assigned to any sessions +

  • From 1f647fe3fcc47d42b3578cc50ecf6694605f5d8f Mon Sep 17 00:00:00 2001 From: dcterman <105614148+dcterman@users.noreply.github.com> Date: Wed, 27 Jul 2022 19:17:14 -0400 Subject: [PATCH 43/47] Update version to 1.6.2 --- docs/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index da30c9c73..a20d191d1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,8 +7,8 @@ This software is open source! If you'd like to contribute, please email planoram [Planorama Data Privacy & Protection Policy](/planorama/privacy) -Production version: 1.6.1 +Production version: 1.6.2 -Staging version: 1.6.1 +Staging version: 1.6.2 From 8f4443c52861b5844bfd9c5e171b25ca7b88aefa Mon Sep 17 00:00:00 2001 From: Gail Terman Date: Wed, 27 Jul 2022 19:41:46 -0400 Subject: [PATCH 44/47] PLAN-193 add confirmation on primary email change --- .../components/email_addresses_editor.vue | 43 +++++++++++++++---- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/app/javascript/components/email_addresses_editor.vue b/app/javascript/components/email_addresses_editor.vue index b18f7ba89..ea1cac3cf 100644 --- a/app/javascript/components/email_addresses_editor.vue +++ b/app/javascript/components/email_addresses_editor.vue @@ -13,7 +13,7 @@ @@ -33,6 +33,10 @@ + +

    You are about to change the primary email address associated with this profile. This will change the login email used for this account.

    +

    Are you sure you wish to make this change?

    +
    @@ -42,11 +46,13 @@ import EmailAddressEditor from './email_address_editor.vue' import emailAddressMixin from '../store/email_address.mixin' import {personSessionMixin} from '@/mixins'; import modelUtilsMixin from "@/store/model_utils.mixin"; +import PlanoModal from './plano_modal.vue'; export default { name: 'EmailAddressesEditor', components: { - EmailAddressEditor + EmailAddressEditor, + PlanoModal }, mixins: [ modelUtilsMixin, @@ -68,12 +74,11 @@ export default { default: 'email-addresses-editor' } }, - data() { - return { - emails: [], - additional: [] - } - }, + data: () => ({ + emails: [], + additional: [], + pendingPrimaryChange: null + }), computed: { primary: { get: function() { @@ -102,7 +107,27 @@ export default { ) } }, - onInput(arg) { + onConfirmCancel() { + this.setLists() + this.pendingPrimaryChange = null; + }, + onConfirmOk() { + this.saveEmail(this.pendingPrimaryChange).then( + () => { + this.setLists() + } + ).catch((err) => { + console.log("i caught an error", err) + this.setLists() + }); + this.pendingPrimaryChange = null; + }, + onInput(arg, isPrimary = false) { + if(isPrimary) { + this.$bvModal.show('primaryEmailConfirm') + this.pendingPrimaryChange = arg; + return; + } if (arg.id) { this.saveEmail(arg).then( () => { From 951009b9e87e1fa6952496a491950ecb18aaa717 Mon Sep 17 00:00:00 2001 From: Gail Terman Date: Wed, 27 Jul 2022 19:53:29 -0400 Subject: [PATCH 45/47] PLAN-534 fix last logged in format --- app/javascript/people/people_table.vue | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/javascript/people/people_table.vue b/app/javascript/people/people_table.vue index ee89793f4..4af0e13fa 100644 --- a/app/javascript/people/people_table.vue +++ b/app/javascript/people/people_table.vue @@ -98,9 +98,10 @@