proton

package
v0.0.0-...-84d0589 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 23, 2023 License: AGPL-3.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const DayObjectType = "Day"
View Source
const HourObjectType = "Hour"
View Source
const PROTON_ALLOWED_FAIL_RATE = 500
View Source
const PROTON_ALLOWED_FAIL_RESET_RATE = 200
View Source
const PROTON_ALLOWED_WHILE_DEPTH = 1000
View Source
const PROTON_MAX_AFTER_CLASS_HOUR = 12
View Source
const PROTON_MAX_NORMAL_HOUR = 7
View Source
const PROTON_MIN_AFTER_CLASS_HOUR = 9
View Source
const PROTON_MIN_NORMAL_HOUR = 1
View Source
const PROTON_REPEAT_POST_PROCESSING = 3 // Večja je številka, večja je možnost, da nastane boljši urnik, a bo več časa trajalo, da se urnik post-procesira
View Source
const ProtonConfigVersion = "1.0"
View Source
const SubjectObjectType = "Subject"
View Source
const TeacherObjectType = "Teacher"

Variables

This section is empty.

Functions

func OrderMeetingsByDay

func OrderMeetingsByDay(timetable []ProtonMeeting) [][][]ProtonMeeting

func OrderMeetingsByWeek

func OrderMeetingsByWeek(timetable []ProtonMeeting) [][]ProtonMeeting

func SaveConfig

func SaveConfig(protonConfig ProtonConfig) error

Types

type Proton

type Proton interface {
	ManageAbsences(meetingId string) ([]TeacherTier, error)

	NewProtonRule(rule ProtonRule) error
	GetProtonConfig() ProtonConfig

	GetAllRulesForTeacher(teacherId string) []ProtonRule
	GetSubjectGroups() []ProtonRule
	SubjectHasDoubleHours(subjectId string) bool
	CheckIfProtonConfigIsOk(timetable []ProtonMeeting) (bool, error)

	TimetablePostProcessing(stableTimetable []ProtonMeeting, class sql.Class, cancelPostProcessingBeforeDone bool) ([]ProtonMeeting, error)

	PatchTheHoles(timetable []ProtonMeeting, fullTimetable []ProtonMeeting) ([]ProtonMeeting, []ProtonMeeting)
	GetSubjectsOfClass(timetable []ProtonMeeting, classStudents []string, class sql.Class) ([]ProtonMeeting, error)
	GetSubjectsBeforeOrAfterClass() []string
	GetSubjectsWithStackedHours() []string
	FindNonNormalHours(timetable []ProtonMeeting) []ProtonMeeting
	PostProcessHolesAndNonNormalHours(classTimetable []ProtonMeeting, stableTimetable []ProtonMeeting) ([]ProtonMeeting, []ProtonMeeting)
	FindHoles(timetable []ProtonMeeting) [][]ProtonMeeting
	FindRelationalHoles(timetable []ProtonMeeting) []ProtonMeeting
	SwapMeetings(timetable []ProtonMeeting, fullTimetable []ProtonMeeting) ([]ProtonMeeting, []ProtonMeeting)
	PatchMistakes(timetable []ProtonMeeting, fullTimetable []ProtonMeeting) ([]ProtonMeeting, []ProtonMeeting)

	AssembleMeetingsFromProtonMeetings(timetable []ProtonMeeting, systemConfig sql.Config) ([]sql.Meeting, error)

	FindIfHolesExist(timetable []ProtonMeeting) bool

	SaveConfig(config ProtonConfig)
	DeleteRule(ruleId string)
}

func NewProton

func NewProton(db sql.SQL, logger *zap.SugaredLogger) (Proton, error)

type ProtonConfig

type ProtonConfig struct {
	Version string       `json:"version"`
	Rules   []ProtonRule `json:"rules"`
}

func AddNewRule

func AddNewRule(protonConfig ProtonConfig, rule ProtonRule) (ProtonConfig, error)

func LoadConfig

func LoadConfig() (config ProtonConfig, err error)

type ProtonMeeting

type ProtonMeeting struct {
	Hour         int
	DayOfTheWeek int
	SubjectName  string
	SubjectID    string
	ID           string
	TeacherID    string
	Week         int
	ClassID      []string
	IsHalfHour   bool
}

type ProtonObject

type ProtonObject struct {
	ObjectID string `json:"object_id"`
	Type     string `json:"type"`
}

type ProtonRule

type ProtonRule struct {
	Objects  []ProtonObject `json:"objects"`
	RuleName string         `json:"rule_name"`
	RuleType int            `json:"rule_type"`
	ID       string         `json:"id"`
}

type TeacherTier

type TeacherTier struct {
	TeacherID   string
	Tier        int
	Name        string
	GradingList TierGradingList
}

type TierGradingList

type TierGradingList struct {
	TeacherID          string
	HasMeetingBefore   bool
	HasMeetingLater    bool
	HasMeeting2HBefore bool
	HasMeeting2HLater  bool
	TeachesSameSubject bool
	Name               string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL