-
Notifications
You must be signed in to change notification settings - Fork 0
/
overview.go
93 lines (85 loc) · 3.28 KB
/
overview.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package yaac_frontend_pages
import (
"image/color"
"time"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/widget"
yaac_shared "github.com/DHBW-SE-2023/YAAC/internal/shared"
"gorm.io/gorm"
)
var overviewGrid *fyne.Container
func OverviewScreen(w fyne.Window) fyne.CanvasObject {
title := ReturnHeader("Anwesenheitsliste der Kurse - Heute")
buttonImageContainer := ReturnVerifyImageContainer(w)
buttonRefreshContainer := ReturnMailRefreshContainer(w)
overviewGrid = container.NewGridWrap(fyne.NewSize(250, 250))
LoadOverviewWidgets(w, overviewGrid)
header := container.NewVBox(container.NewBorder(nil, nil, nil, container.NewPadded(container.NewPadded(container.NewPadded(container.NewGridWithRows(1, container.NewPadded(buttonImageContainer), buttonRefreshContainer)))), container.NewCenter(container.NewGridWithRows(1, layout.NewSpacer(), container.NewGridWrap(fyne.NewSize(200, 200), title), layout.NewSpacer()))), widget.NewSeparator())
return container.NewBorder(header, nil, nil, nil, container.NewVScroll(overviewGrid))
}
/*
ReturnVerifyImageContainer returns the buttonImageContaier containing the image for insertList Button.
*/
func ReturnVerifyImageContainer(w fyne.Window) *tappableImage {
image := canvas.NewImageFromResource(yaac_shared.ResourceImageUploadPng)
buttonImageContainer := newTappableImage(image, func() {
OpenImageUpload(w)
})
return buttonImageContainer
}
/*
ReturnVerifyImageContainer returns the buttonImageContaier containing the image for insertList Button.
*/
func ReturnMailRefreshContainer(w fyne.Window) *tappableImage {
image := canvas.NewImageFromResource(yaac_shared.ResourceRefreshPng)
buttonRefreshContainer := newTappableImage(image, func() {
myMVVM.SingleDemonRunthrough()
dialog.ShowInformation("Der Prozess wurde gestartet", "Sobald neue Listen gefunden wurden erhalten sie eine Benachrichtigung!", w)
})
return buttonRefreshContainer
}
/*
LoadOverviewWidgets loads all OverviewWidgets for each course and adds them to the overviewGrid
*/
func LoadOverviewWidgets(w fyne.Window, grid *fyne.Container) {
grid.RemoveAll()
var frameColor color.NRGBA
var hidden bool
courses, _ := myMVVM.Courses()
for _, element := range courses {
var students []string
var totalStudents int
lists, _ := myMVVM.AllAttendanceListInRangeByCourse(yaac_shared.Course{Model: gorm.Model{ID: element.ID}}, time.Now().AddDate(0, 0, -30), time.Now())
if len(lists) > 0 {
if len(lists[0].Attendancies) > 0 {
students = ReturnNonAttending(lists[0].Attendancies)
totalStudents = len(lists[0].Attendancies)
if len(students) > 0 {
frameColor = color.NRGBA{227, 0, 27, 255}
hidden = false
} else {
hidden = false
frameColor = color.NRGBA{R: 209, G: 209, B: 209, A: 255}
}
} else {
students = append(students, "Keine Anwesenheiten")
totalStudents = 0
frameColor = color.NRGBA{227, 0, 27, 255}
hidden = false
}
} else {
students = append(students, "Kein Listeingang")
totalStudents = 0
frameColor = color.NRGBA{241, 230, 60, 200}
hidden = true
}
widget := NewOverviewWidget(w, element.Name, int(element.ID), students, totalStudents)
widget.frame.FillColor = frameColor
widget.button.Hidden = hidden
grid.Add(widget)
}
}