99 lines
3.8 KiB
Go
99 lines
3.8 KiB
Go
package models
|
|
|
|
type SpeakerStatus string
|
|
|
|
const (
|
|
SpeakerStatusPending SpeakerStatus = "pending"
|
|
SpeakerStatusSpeaking SpeakerStatus = "speaking"
|
|
SpeakerStatusDone SpeakerStatus = "done"
|
|
SpeakerStatusSkipped SpeakerStatus = "skipped"
|
|
)
|
|
|
|
type TimerState struct {
|
|
Running bool `json:"running"`
|
|
Paused bool `json:"paused"`
|
|
CurrentSpeakerID uint `json:"currentSpeakerId"`
|
|
CurrentSpeaker string `json:"currentSpeaker"`
|
|
SpeakerElapsed int `json:"speakerElapsed"` // seconds
|
|
SpeakerLimit int `json:"speakerLimit"` // seconds
|
|
MeetingElapsed int `json:"meetingElapsed"` // seconds
|
|
MeetingLimit int `json:"meetingLimit"` // seconds
|
|
SpeakerOvertime bool `json:"speakerOvertime"`
|
|
MeetingOvertime bool `json:"meetingOvertime"`
|
|
Warning bool `json:"warning"`
|
|
WarningSeconds int `json:"warningSeconds"` // seconds before end for warning
|
|
TotalSpeakersTime int `json:"totalSpeakersTime"` // sum of all speaker limits
|
|
SpeakingOrder int `json:"speakingOrder"`
|
|
TotalSpeakers int `json:"totalSpeakers"`
|
|
RemainingQueue []QueuedSpeaker `json:"remainingQueue"`
|
|
AllSpeakers []SpeakerInfo `json:"allSpeakers"`
|
|
}
|
|
|
|
type SpeakerInfo struct {
|
|
ID uint `json:"id"`
|
|
Name string `json:"name"`
|
|
TimeLimit int `json:"timeLimit"`
|
|
Order int `json:"order"`
|
|
Status SpeakerStatus `json:"status"`
|
|
}
|
|
|
|
type QueuedSpeaker struct {
|
|
ID uint `json:"id"`
|
|
Name string `json:"name"`
|
|
TimeLimit int `json:"timeLimit"`
|
|
Order int `json:"order"`
|
|
}
|
|
|
|
type SessionStats struct {
|
|
SessionID uint `json:"sessionId"`
|
|
Date string `json:"date"`
|
|
TotalDuration int `json:"totalDuration"`
|
|
MeetingLimit int `json:"meetingLimit"`
|
|
Overtime bool `json:"overtime"`
|
|
ParticipantCount int `json:"participantCount"`
|
|
PresentCount int `json:"presentCount"`
|
|
AbsentCount int `json:"absentCount"`
|
|
OvertimeCount int `json:"overtimeCount"`
|
|
SkippedCount int `json:"skippedCount"`
|
|
ParticipantStats []ParticipantStats `json:"participantStats"`
|
|
}
|
|
|
|
type ParticipantStats struct {
|
|
ParticipantID uint `json:"participantId"`
|
|
Name string `json:"name"`
|
|
Duration int `json:"duration"`
|
|
TimeLimit int `json:"timeLimit"`
|
|
Overtime bool `json:"overtime"`
|
|
Skipped bool `json:"skipped"`
|
|
Present bool `json:"present"`
|
|
SpeakingOrder int `json:"speakingOrder"`
|
|
}
|
|
|
|
type AggregatedStats struct {
|
|
TotalSessions int `json:"totalSessions"`
|
|
TotalMeetingTime int `json:"totalMeetingTime"`
|
|
AverageMeetingTime float64 `json:"averageMeetingTime"`
|
|
OvertimeSessions int `json:"overtimeSessions"`
|
|
OvertimePercentage float64 `json:"overtimePercentage"`
|
|
AverageAttendance float64 `json:"averageAttendance"`
|
|
ParticipantBreakdown []ParticipantBreakdown `json:"participantBreakdown"`
|
|
}
|
|
|
|
type ParticipantBreakdown struct {
|
|
ParticipantID uint `json:"participantId"`
|
|
Name string `json:"name"`
|
|
SessionsAttended int `json:"sessionsAttended"`
|
|
TotalSpeakingTime int `json:"totalSpeakingTime"`
|
|
AverageSpeakingTime float64 `json:"averageSpeakingTime"`
|
|
OvertimeCount int `json:"overtimeCount"`
|
|
SkipCount int `json:"skipCount"`
|
|
AttendanceRate float64 `json:"attendanceRate"`
|
|
}
|
|
|
|
type ExportData struct {
|
|
ExportedAt string `json:"exportedAt"`
|
|
Participants []Participant `json:"participants"`
|
|
Sessions []SessionStats `json:"sessions"`
|
|
Statistics AggregatedStats `json:"statistics"`
|
|
}
|