-
Notifications
You must be signed in to change notification settings - Fork 0
/
form_div_field.go
95 lines (79 loc) · 3.02 KB
/
form_div_field.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
// generated code - do not edit
package probe
import (
"log"
"time"
form "github.com/fullstack-lang/gongtable/go/models"
"github.com/fullstack-lang/gongfly/go/models"
)
func FormDivBasicFieldToField[TF models.GongtructBasicField](field *TF, formDiv *form.FormDiv) {
switch fieldWithInterferedType := any(field).(type) {
case *string:
newValue := formDiv.FormFields[0].FormFieldString.Value
*fieldWithInterferedType = newValue
case *bool:
value := formDiv.CheckBoxs[0].Value
*fieldWithInterferedType = value
case *int:
value := formDiv.FormFields[0].FormFieldInt.Value
*fieldWithInterferedType = value
case *float64:
value := formDiv.FormFields[0].FormFieldFloat64.Value
*fieldWithInterferedType = value
case *time.Time:
date := formDiv.FormFields[0].FormFieldDate.Value
// in the angular form div, the time.Time is show twice, once for the Date and once for the Time
// construing the date back, one needs to truncate the date, otherwise
// hours, minutes, seconds and nanoseconds would be added twice
date = date.Truncate(24 * time.Hour)
time := formDiv.FormFields[1].FormFieldTime.Value
*fieldWithInterferedType = addTimeComponents(date, time)
case *time.Duration:
isNeg := formDiv.CheckBoxs[0].Value
days := formDiv.FormFields[0].FormFieldInt.Value
hours := formDiv.FormFields[1].FormFieldInt.Value
minutes := formDiv.FormFields[2].FormFieldInt.Value
seconds := formDiv.FormFields[3].FormFieldInt.Value
*fieldWithInterferedType =
time.Duration(days)*time.Hour*24 +
time.Duration(hours)*time.Hour +
time.Duration(minutes)*time.Minute +
time.Duration(seconds)*time.Second
if !isNeg {
*fieldWithInterferedType = -*fieldWithInterferedType
}
}
}
func FormDivEnumStringFieldToField[TF models.PointerToGongstructEnumStringField](field TF, formDiv *form.FormDiv) {
if value := formDiv.FormFields[0].FormFieldSelect.Value; value != nil {
if err := (field).FromCodeString(value.GetName()); err != nil {
log.Println("Unkwnown enum value", value.GetName())
}
}
}
func FormDivEnumIntFieldToField[TF models.PointerToGongstructEnumIntField](field TF, formDiv *form.FormDiv) {
if value := formDiv.FormFields[0].FormFieldSelect.Value; value != nil {
if err := (field).FromCodeString(value.GetName()); err != nil {
log.Println("Unkwnown enum value", value.GetName())
}
}
}
func FormDivSelectFieldToField[TF models.PointerToGongstruct](field *TF, stageOfInterest *models.StageStruct, formDiv *form.FormDiv) {
if formDiv.FormFields[0].FormFieldSelect.Value == nil {
*field = nil
} else {
for _instance := range *models.GetGongstructInstancesSetFromPointerType[TF](stageOfInterest) {
if any(_instance).(TF).GetName() == formDiv.FormFields[0].FormFieldSelect.Value.GetName() {
*field = any(_instance).(TF)
}
}
}
}
func addTimeComponents(x, y time.Time) time.Time {
h, m, s := y.Clock()
x = x.Add(time.Duration(h) * time.Hour)
x = x.Add(time.Duration(m) * time.Minute)
x = x.Add(time.Duration(s) * time.Second)
x = x.Add(time.Duration(y.Nanosecond()) * time.Nanosecond)
return x
}