@@ -71,6 +71,60 @@ func populate(db *gorm.DB, allData []data.Schema, tcp [][]string, fields []strin
71
71
72
72
}
73
73
74
+ func generateAverages (tcp [][]string ) [][]string {
75
+ data := map [string ]* [20 ]float64 {}
76
+ //kv of teamnmae; data
77
+ totals := map [string ]float64 {}
78
+ //kv of teanmae: total values
79
+ for _ , val := range tcp {
80
+ if val [1 ] != "TeamName" {
81
+ if _ , ok := data [val [1 ]]; ! ok {
82
+ data [val [1 ]] = & [20 ]float64 {}
83
+ totals [val [1 ]] = 0
84
+ }
85
+ totals [val [1 ]]++
86
+ for i , vala := range val {
87
+
88
+ if i >= 4 && i <= 18 {
89
+ vald , err := strconv .Atoi (vala )
90
+ if err == nil {
91
+ //could use reflection
92
+ data [val [1 ]][i ] += float64 (vald ) //ternaries could help
93
+ } else {
94
+ //boolean
95
+ if vala == "true" {
96
+ data [val [1 ]][i ]++
97
+ }
98
+ }
99
+ } else {
100
+ data [val [1 ]][i ] = 0 //edit memory address
101
+ }
102
+ }
103
+ }
104
+
105
+ }
106
+ totalsa := [][]string {}
107
+ totalsa = append (totalsa , []string {"ID" , "TeamName" , "TeamNumber" , "MatchNumber" , "AutoAmps" , "AutoSpeaker" , "AutoLeave" , "AutoMiddle" , "TeleopAmps" , "TeleopSpeaker" , "Chain" , "Harmony" , "Trap" , "Park" , "Ground" , "Feeder" , "LLVm" , "Defense" , "Notes" })
108
+ for k , v := range data {
109
+ tcpjwt := []string {}
110
+ for i , _ := range v {
111
+ if i >= 4 && i <= 18 {
112
+ v [i ] /= totals [k ]
113
+
114
+ }
115
+ tcpjwt = append (tcpjwt , fmt .Sprintf ("%.2f" , v [i ]))
116
+
117
+ }
118
+ tcpjwt [2 ] = k
119
+ totalsa = append (totalsa , tcpjwt )
120
+ }
121
+ fmt .Println ("--------------------------------------------------------------------" )
122
+ fmt .Println (totals )
123
+ fmt .Println (fmt .Sprintf ("%v" , data ["test" ]))
124
+
125
+ return totalsa
126
+ }
127
+
74
128
func main () {
75
129
db , err := gorm .Open (sqlite .Open ("data.db" ), & gorm.Config {})
76
130
//parse sqldb
@@ -79,7 +133,7 @@ func main() {
79
133
}
80
134
81
135
allData := []data.Schema {}
82
- tcp := [][]string {}
136
+ tcp := [][]string {} //cojtrolled erorr sin average
83
137
84
138
averageLabel := widget .NewLabel ("Average: 0" )
85
139
teamChoose := widget .NewEntry ()
@@ -106,13 +160,27 @@ func main() {
106
160
averageLabel .SetText ("Average: " + fmt .Sprintf ("%v" , total / amnt ))
107
161
})
108
162
tcp , allData = populate (db , allData , tcp , []string {"ID" , "TeamName" , "TeamNumber" , "MatchNumber" , "AutoAmps" , "AutoSpeaker" , "AutoLeave" , "AutoMiddle" , "TeleopAmps" , "TeleopSpeaker" , "Chain" , "Harmony" , "Trap" , "Park" , "Ground" , "Feeder" , "LLVm" , "Defense" , "Notes" })
109
-
163
+ x := generateAverages ( tcp )
110
164
fmt .Println ("llvm" , tcp )
111
165
app := app .New ()
112
166
current := app .NewWindow ("TKO Crescendo Tracker (patented)" )
113
- settings := app .NewWindow ("Settings " )
114
- settings .Resize (fyne .NewSize (600 , 600 ))
167
+ settings := app .NewWindow ("Averages " )
168
+ settings .Resize (fyne .NewSize (1200 , 600 ))
115
169
settings .SetFixedSize (true )
170
+
171
+ averageTable := widget .NewTable (
172
+ func () (int , int ) {
173
+ return len (x ), len (x [0 ])
174
+ },
175
+ func () fyne.CanvasObject {
176
+ return widget .NewLabel ("placeholder" )
177
+
178
+ },
179
+ func (i widget.TableCellID , o fyne.CanvasObject ) {
180
+ o .(* widget.Label ).SetText (x [i.Row ][i.Col ])
181
+ },
182
+ )
183
+
116
184
current .Resize (fyne .NewSize (1200 , 700 ))
117
185
current .SetFixedSize (true )
118
186
settings .SetCloseIntercept (func () {
@@ -147,7 +215,8 @@ func main() {
147
215
cont := container .NewVSplit (llvm , container .NewHSplit (container .NewVBox (widget .NewButtonWithIcon ("Refresh" , theme .ViewRefreshIcon (), func () {
148
216
tcp , allData = populate (db , allData , tcp , []string {"ID" , "TeamName" , "TeamNumber" , "MatchNumber" , "AutoAmps" , "AutoSpeaker" , "AutoLeave" , "AutoMiddle" , "TeleopAmps" , "TeleopSpeaker" , "Chain" , "Harmony" , "Trap" , "Park" , "Ground" , "Feeder" , "LLVm" , "Defense" , "Notes" })
149
217
llvm .Refresh ()
150
- }), widget .NewButtonWithIcon ("Settings" , theme .SettingsIcon (), func () {
218
+ x = generateAverages (tcp )
219
+ }), widget .NewButtonWithIcon ("Display Averages" , theme .GridIcon (), func () {
151
220
settings .Show ()
152
221
}), widget .NewButtonWithIcon ("Export" , theme .FileImageIcon (), func () {
153
222
llvm := dialog .NewFileSave (func (reader fyne.URIWriteCloser , err error ) {
@@ -171,6 +240,8 @@ func main() {
171
240
cont .SetOffset (1 ) //clamps
172
241
mainContainer := cont
173
242
243
+ settings .SetContent (averageTable )
244
+
174
245
//migrate data and term[late
175
246
_ = db .AutoMigrate (& data.Schema {})
176
247
//expressions ast
0 commit comments