-
Notifications
You must be signed in to change notification settings - Fork 6
/
toolbar.go
176 lines (157 loc) · 5.79 KB
/
toolbar.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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
package main
import (
"ecohortapp/repository"
"fmt"
"reflect"
"strconv"
"time"
"fyne.io/fyne/v2"
_ "fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
)
func (app *Config) getToolBar(win fyne.Window) *widget.Toolbar {
toolBar := widget.NewToolbar(
widget.NewToolbarSpacer(), //Crearem un espaciador que empenyi els diferents items cap a la dreta
widget.NewToolbarAction(theme.DocumentCreateIcon(), func() {
app.addRegistresDialog()
}), //Crearem una nova acció indicant quina icona i quina funcio estaràn involucrades
widget.NewToolbarAction(theme.ViewRefreshIcon(), func() {
app.actualitzarClimaDadesContent()
}),
widget.NewToolbarAction(theme.SettingsIcon(), func() {
//Realitzem una crida a la funció que conté el dialeg per modificar les preferencies de l'app
w := app.mostrarPreferencies()
//Definim el tamany per aquesta nova finestra
w.Resize(fyne.NewSize(300, 200))
//Mostrem la finestra
w.Show()
}),
)
return toolBar
}
func (app *Config) mostrarPreferencies() dialog.Dialog {
//win := app.App.NewWindow("Ajustos")
//Definim les variables a on guardarem el resultat del mètode d'entrada
dadaMunicipi := widget.NewEntry()
dadaApiKey := widget.NewEntry()
dadaMunicipi.Text = municipi
dadaApiKey.Text = apiKey
esStringValidador := func(s string) error {
_, err := fmt.Print(reflect.TypeOf(s))
if err != nil {
return err
}
return nil
}
dadaMunicipi.Validator = esStringValidador
dadaApiKey.Validator = esStringValidador
fmt.Println(dadaMunicipi.Text)
//Crearem el dialeg creant un formulari
addForm := dialog.NewForm(
"Configurar ajustaments",
"Guardar",
"Cancelar",
//Afegirem les etiquetes en forma de item per el formulari
[]*widget.FormItem{
{Text: "Codi Municipi", Widget: dadaMunicipi},
{Text: "Api Key", Widget: dadaApiKey},
},
//A continuació realitzem la validació de les dades
func(valid bool) {
if valid {
municipi = dadaMunicipi.Text
apiKey = dadaApiKey.Text
fmt.Println(dadaMunicipi.SelectedText())
//Desenvolupar un filtratge, convertint les dades a els formats de la bd
app.App.Preferences().SetString("municipi", dadaMunicipi.Text)
app.App.Preferences().SetString("apiKey", dadaApiKey.Text)
//Invoquem el paremetre del struct Config per permetre que refresqui el widget de la taula amb el nou registre
app.actualitzarClimaDadesContent()
}
},
app.MainWindow)
return addForm
}
// Funció per afegir Registres a on referenciem el struct Config
func (app *Config) addRegistresDialog() dialog.Dialog {
//Definim les variables a on guardarem el resultat del mètode d'entrada
dataRegistreEntrada := widget.NewEntry()
precipitacioEntrada := widget.NewEntry()
tempMaximaEntrada := widget.NewEntry()
tempMinimaEntrada := widget.NewEntry()
humitatEntrada := widget.NewEntry()
app.AfegirRegistresDataRegistreEntrada = dataRegistreEntrada
app.AfegirRegistresPrecipitacioEntrada = precipitacioEntrada
app.AfegirRegistresTempMaximaEntrada = tempMaximaEntrada
app.AfegirRegistresTempMaximaEntrada = tempMinimaEntrada
app.AfegirRegistresHumitatEntrada = humitatEntrada
validacioData := func(s string) error {
//Apliquem el format de la data definit en el primer parametre al string indicat en el segon parametre i que correspon el aportat per l'usuari
//S’ha de referenciar el format amb el layout standard 2006-01-02 i no pas amb cualsevol data
if _, err := time.Parse("2006-01-02", s); err != nil {
//Si es produeix algun error en el procés el retornem
return err
}
return nil
}
dataRegistreEntrada.Validator = validacioData
esIntValidador := func(s string) error {
_, err := strconv.Atoi(s)
if err != nil {
return err
}
return nil
}
precipitacioEntrada.Validator = esIntValidador
tempMaximaEntrada.Validator = esIntValidador
tempMinimaEntrada.Validator = esIntValidador
humitatEntrada.Validator = esIntValidador
//Definim un placeholder i aixi facilitar l'usabilitat en el camp data de compra
dataRegistreEntrada.PlaceHolder = "YYYY-MM-DD"
//Crearem el dialeg creant un formulari
addForm := dialog.NewForm(
"Afegir Registre",
"Afegir",
"Cancelar",
//Afegirem les etiquetes en forma de item per el formulari
[]*widget.FormItem{
{Text: "Data Registre", Widget: dataRegistreEntrada},
{Text: "Probabilitat de precipitació", Widget: precipitacioEntrada},
{Text: "Temperatura màxima", Widget: tempMaximaEntrada},
{Text: "Temperatura minima", Widget: tempMinimaEntrada},
{Text: "Humitat", Widget: humitatEntrada},
},
//A continuació realitzem la validació de les dades
func(valid bool) {
if valid {
//Desenvolupar un filtratge, convertint les dades a els formats de la bd
//S’ha de referenciar el format amb el layout standard 2006-01-02 i no pas amb cualsevol data
dataRegistre, _ := time.Parse("2006-01-02", dataRegistreEntrada.Text)
precipitacio, _ := strconv.Atoi(precipitacioEntrada.Text)
tempMaxima, _ := strconv.Atoi(tempMaximaEntrada.Text)
tempMinima, _ := strconv.Atoi(tempMinimaEntrada.Text)
humitat, _ := strconv.Atoi(humitatEntrada.Text)
//Invoquem el mètode de la base de dades per insertar registres i que poblarem amb les dades formatejades
_, err := app.DB.InsertRegistre(repository.Registres{
Data: dataRegistre,
Precipitacio: precipitacio,
TempMaxima: tempMaxima,
TempMinima: tempMinima,
Humitat: humitat,
})
//Controlem si és produeix algun error
if err != nil {
app.ErrorLog.Println(err)
}
//Invoquem el paremetre del struct Config per permetre que refresqui el widget de la taula amb el nou registre
app.actualitzarRegistresTable()
}
},
app.MainWindow)
//Establim el tamany de la finestra i mostrem el dialeg
addForm.Resize(fyne.Size{Width: 400})
addForm.Show()
return addForm
}