Documentation
¶
Index ¶
- Constants
- Variables
- func CodeGeneratorFillUpForm(modelPkg *models.ModelPkg, pkgName string, pkgPath string, pkgGoPath string)
- func CodeGeneratorModelFormCallback(modelPkg *models.ModelPkg, pkgName string, pkgPath string, pkgGoPath string)
- type ButtonImplSubTemplateId
- type CellDeleteIconImplInsertionId
- type FillUpFormFromGongstructInsertionId
- type FillUpFormFromGongstructNameInsertionId
- type FillUpFormInsertionId
- type FillUpTableInsertionId
- type FillUpTreeInsertionId
- type FormCallbackGongstructInsertionId
- type FormCallbackSubTemplateId
- type NodeImplGongstructInsertionId
Constants ¶
View Source
const AssociationFieldToFormTemplate = `` /* 2941-byte string literal not displayed */
View Source
const AssociationSliceToFormTemplate = `` /* 6167-byte string literal not displayed */
View Source
const BasicFieldtoFormTemplate = `` /* 6231-byte string literal not displayed */
View Source
const ButtonImplGongstructFileTemplate = `` /* 1021-byte string literal not displayed */
View Source
const ButtonImplRefreshFileTemplate = `` /* 580-byte string literal not displayed */
View Source
const CellDeleteIconImplTemplate = `// generated code - do not edit package probe import ( "log" gongtable "github.com/fullstack-lang/gongtable/go/models" "{{PkgPathRoot}}/models" ) func NewCellDeleteIconImpl[T models.Gongstruct]( Instance *T, probe *Probe, ) (cellDeleteIconImpl *CellDeleteIconImpl[T]) { cellDeleteIconImpl = new(CellDeleteIconImpl[T]) cellDeleteIconImpl.Instance = Instance cellDeleteIconImpl.probe = probe return } type CellDeleteIconImpl[T models.Gongstruct] struct { Instance *T probe *Probe } func (cellDeleteIconImpl *CellDeleteIconImpl[T]) CellIconUpdated(stage *gongtable.StageStruct, row, updatedCellIcon *gongtable.CellIcon) { log.Println("CellIconUpdate: CellIconUpdated", updatedCellIcon.Name) switch instancesTyped := any(cellDeleteIconImpl.Instance).(type) { // insertion point{{` + string(rune(CellDeleteIconImplSwitchCase)) + `}} default: _ = instancesTyped } cellDeleteIconImpl.probe.stageOfInterest.Commit() fillUpTable[T](cellDeleteIconImpl.probe) fillUpTree(cellDeleteIconImpl.probe) cellDeleteIconImpl.probe.tableStage.Commit() } `
View Source
const EnumTypeStringToForm = `` /* 2182-byte string literal not displayed */
View Source
const FillUpFormFromGongstructNameTemplate = `// generated code - do not edit package probe import ( form "github.com/fullstack-lang/gongtable/go/models" "{{PkgPathRoot}}/models" ) func FillUpFormFromGongstructName( probe *Probe, gongstructName string, isNewInstance bool, ) { formStage := probe.formStage formStage.Reset() formStage.Commit() var prefix string if isNewInstance { prefix = "" } else { prefix = "" } switch gongstructName { // insertion point{{` + string(rune(FillUpFormFromGongstructNameSwitchCase)) + `}} } formStage.Commit() } `
View Source
const FillUpFormFromGongstructTemplate = `// generated code - do not edit package probe import ( gongtable "github.com/fullstack-lang/gongtable/go/models" "{{PkgPathRoot}}/models" ) func FillUpFormFromGongstruct(instance any, probe *Probe) { formStage := probe.formStage formStage.Reset() formStage.Commit() FillUpNamedFormFromGongstruct(instance, probe, formStage, gongtable.FormGroupDefaultName.ToString()) } func FillUpNamedFormFromGongstruct(instance any, probe *Probe, formStage *gongtable.StageStruct, formName string) { switch instancesTyped := any(instance).(type) { // insertion point{{` + string(rune(FillUpFormFromGongstructSwitchCase)) + `}} default: _ = instancesTyped } formStage.Commit() } `
View Source
const FillUpFormTemplate = `// generated code - do not edit package probe import ( form "github.com/fullstack-lang/gongtable/go/models" "{{PkgPathRoot}}/models" "{{PkgPathRoot}}/orm" ) var __dummy_orm_fillup_form = orm.BackRepoStruct{} func FillUpForm( instance any, formGroup *form.FormGroup, probe *Probe, ) { switch instanceWithInferedType := any(instance).(type) { // insertion point{{` + string(rune(ButtonImplPerGongstructCallToFormGenerator)) + `}} default: _ = instanceWithInferedType } } `
View Source
const FillUpTableTemplate = `// generated code - do not edit package probe import ( "fmt" "log" "sort" gongtable "github.com/fullstack-lang/gongtable/go/models" "github.com/fullstack-lang/maticons/maticons" "{{PkgPathRoot}}/models" "{{PkgPathRoot}}/orm" ) func fillUpTablePointerToGongstruct[T models.PointerToGongstruct]( probe *Probe, ) { var typedInstance T switch any(typedInstance).(type) { // insertion point{{` + string(rune(FillUpTableCaseForCastingDown)) + `}} default: log.Println("unknow type") } } func fillUpTable[T models.Gongstruct]( probe *Probe, ) { probe.tableStage.Reset() probe.tableStage.Commit() table := new(gongtable.Table).Stage(probe.tableStage) table.Name = "Table" table.HasColumnSorting = true table.HasFiltering = true table.HasPaginator = true table.HasCheckableRows = false table.HasSaveButton = false fields := models.GetFields[T]() reverseFields := models.GetReverseFields[T]() table.NbOfStickyColumns = 3 // refresh the stage of interest probe.stageOfInterest.Checkout() setOfStructs := (*models.GetGongstructInstancesSet[T](probe.stageOfInterest)) sliceOfGongStructsSorted := make([]*T, len(setOfStructs)) i := 0 for k := range setOfStructs { sliceOfGongStructsSorted[i] = k i++ } sort.Slice(sliceOfGongStructsSorted, func(i, j int) bool { return orm.GetID( probe.stageOfInterest, probe.backRepoOfInterest, sliceOfGongStructsSorted[i], ) < orm.GetID( probe.stageOfInterest, probe.backRepoOfInterest, sliceOfGongStructsSorted[j], ) }) column := new(gongtable.DisplayedColumn).Stage(probe.tableStage) column.Name = "ID" table.DisplayedColumns = append(table.DisplayedColumns, column) column = new(gongtable.DisplayedColumn).Stage(probe.tableStage) column.Name = "Delete" table.DisplayedColumns = append(table.DisplayedColumns, column) for _, fieldName := range fields { column := new(gongtable.DisplayedColumn).Stage(probe.tableStage) column.Name = fieldName table.DisplayedColumns = append(table.DisplayedColumns, column) } for _, reverseField := range reverseFields { column := new(gongtable.DisplayedColumn).Stage(probe.tableStage) column.Name = "(" + reverseField.GongstructName + ") -> " + reverseField.Fieldname table.DisplayedColumns = append(table.DisplayedColumns, column) } fieldIndex := 0 for _, structInstance := range sliceOfGongStructsSorted { row := new(gongtable.Row).Stage(probe.tableStage) value := models.GetFieldStringValue(*structInstance, "Name") row.Name = value.GetValueString() updater := NewRowUpdate[T](structInstance, probe) updater.Instance = structInstance row.Impl = updater table.Rows = append(table.Rows, row) cell := (&gongtable.Cell{ Name: "ID", }).Stage(probe.tableStage) row.Cells = append(row.Cells, cell) cellInt := (&gongtable.CellInt{ Name: "ID", Value: orm.GetID( probe.stageOfInterest, probe.backRepoOfInterest, structInstance, ), }).Stage(probe.tableStage) cell.CellInt = cellInt cell = (&gongtable.Cell{ Name: "Delete Icon", }).Stage(probe.tableStage) row.Cells = append(row.Cells, cell) cellIcon := (&gongtable.CellIcon{ Name: fmt.Sprintf("Delete Icon %d", orm.GetID( probe.stageOfInterest, probe.backRepoOfInterest, structInstance, )), Icon: string(maticons.BUTTON_delete), }).Stage(probe.tableStage) cellIcon.Impl = NewCellDeleteIconImpl[T](structInstance, probe) cell.CellIcon = cellIcon for _, fieldName := range fields { value := models.GetFieldStringValue(*structInstance, fieldName) name := fmt.Sprintf("%d", fieldIndex) + " " + value.GetValueString() fieldIndex++ // log.Println(fieldName, value) cell := (&gongtable.Cell{ Name: name, }).Stage(probe.tableStage) row.Cells = append(row.Cells, cell) switch value.GongFieldValueType { case models.GongFieldValueTypeInt: cellInt := (&gongtable.CellInt{ Name: name, Value: value.GetValueInt(), }).Stage(probe.tableStage) cell.CellInt = cellInt case models.GongFieldValueTypeFloat: cellFloat := (&gongtable.CellFloat64{ Name: name, Value: value.GetValueFloat(), }).Stage(probe.tableStage) cell.CellFloat64 = cellFloat case models.GongFieldValueTypeBool: cellBool := (&gongtable.CellBoolean{ Name: name, Value: value.GetValueBool(), }).Stage(probe.tableStage) cell.CellBool = cellBool default: cellString := (&gongtable.CellString{ Name: name, Value: value.GetValueString(), }).Stage(probe.tableStage) cell.CellString = cellString } } for _, reverseField := range reverseFields { value := orm.GetReverseFieldOwnerName( probe.stageOfInterest, probe.backRepoOfInterest, structInstance, &reverseField) name := fmt.Sprintf("%d", fieldIndex) + " " + value fieldIndex++ // log.Println(fieldName, value) cell := (&gongtable.Cell{ Name: name, }).Stage(probe.tableStage) row.Cells = append(row.Cells, cell) cellString := (&gongtable.CellString{ Name: name, Value: value, }).Stage(probe.tableStage) cell.CellString = cellString } } } func NewRowUpdate[T models.Gongstruct]( Instance *T, probe *Probe, ) (rowUpdate *RowUpdate[T]) { rowUpdate = new(RowUpdate[T]) rowUpdate.Instance = Instance rowUpdate.probe = probe return } type RowUpdate[T models.Gongstruct] struct { Instance *T probe *Probe } func (rowUpdate *RowUpdate[T]) RowUpdated(stage *gongtable.StageStruct, row, updatedRow *gongtable.Row) { log.Println("RowUpdate: RowUpdated", updatedRow.Name) FillUpFormFromGongstruct(rowUpdate.Instance, rowUpdate.probe) } `
View Source
const FillUpTree = `package probe import ( "fmt" "sort" "strings" gongtree_buttons "github.com/fullstack-lang/gongtree/go/buttons" tree "github.com/fullstack-lang/gongtree/go/models" gong_models "github.com/fullstack-lang/gong/go/models" "{{PkgPathRoot}}/models" ) func fillUpTree( probe *Probe, ) { // keep in memory which nodes have been unfolded / folded expandedNodesSet := make(map[string]any, 0) var _sidebar *tree.Tree for __sidebar := range probe.treeStage.Trees { _sidebar = __sidebar } if _sidebar != nil { for _, node := range _sidebar.RootNodes { if node.IsExpanded { expandedNodesSet[strings.Fields(node.Name)[0]] = true } } } probe.treeStage.Reset() // create tree sidebar := (&tree.Tree{Name: "gong"}).Stage(probe.treeStage) // collect all gong struct to construe the true setOfGongStructs := *gong_models.GetGongstructInstancesSet[gong_models.GongStruct](probe.gongStage) sliceOfGongStructsSorted := make([]*gong_models.GongStruct, len(setOfGongStructs)) i := 0 for k := range setOfGongStructs { sliceOfGongStructsSorted[i] = k i++ } sort.Slice(sliceOfGongStructsSorted, func(i, j int) bool { return sliceOfGongStructsSorted[i].Name < sliceOfGongStructsSorted[j].Name }) for _, gongStruct := range sliceOfGongStructsSorted { name := gongStruct.Name + " (" + fmt.Sprintf("%d", probe.stageOfInterest.Map_GongStructName_InstancesNb[gongStruct.Name]) + ")" nodeGongstruct := (&tree.Node{Name: name}).Stage(probe.treeStage) nodeGongstruct.IsExpanded = false if _, ok := expandedNodesSet[strings.Fields(name)[0]]; ok { nodeGongstruct.IsExpanded = true } switch gongStruct.Name { // insertion point{{` + string(rune(FillUpTreeStructCase)) + `}} } nodeGongstruct.IsNodeClickable = true nodeGongstruct.Impl = NewTreeNodeImplGongstruct(gongStruct, probe) // add add button addButton := (&tree.Button{ Name: gongStruct.Name + " " + string(gongtree_buttons.BUTTON_add), Icon: string(gongtree_buttons.BUTTON_add)}).Stage(probe.treeStage) nodeGongstruct.Buttons = append(nodeGongstruct.Buttons, addButton) addButton.Impl = NewButtonImplGongstruct( gongStruct, gongtree_buttons.BUTTON_add, probe, ) sidebar.RootNodes = append(sidebar.RootNodes, nodeGongstruct) } // Add a refresh button nodeRefreshButton := (&tree.Node{Name: ""}).Stage(probe.treeStage) sidebar.RootNodes = append(sidebar.RootNodes, nodeRefreshButton) refreshButton := (&tree.Button{ Name: "RefreshButton" + " " + string(gongtree_buttons.BUTTON_refresh), Icon: string(gongtree_buttons.BUTTON_refresh)}).Stage(probe.treeStage) nodeRefreshButton.Buttons = append(nodeRefreshButton.Buttons, refreshButton) refreshButton.Impl = NewButtonImplRefresh(probe) probe.treeStage.Commit() } type InstanceNodeCallback[T models.Gongstruct] struct { Instance *T gongstructName string probe *Probe } func NewInstanceNodeCallback[T models.Gongstruct]( instance *T, gongstructName string, probe *Probe) ( instanceNodeCallback *InstanceNodeCallback[T], ) { instanceNodeCallback = new(InstanceNodeCallback[T]) instanceNodeCallback.probe = probe instanceNodeCallback.gongstructName = gongstructName instanceNodeCallback.Instance = instance return } func (instanceNodeCallback *InstanceNodeCallback[T]) OnAfterUpdate( gongtreeStage *tree.StageStruct, stagedNode, frontNode *tree.Node) { FillUpFormFromGongstruct( instanceNodeCallback.Instance, instanceNodeCallback.probe, ) } `
View Source
const FormCallbackGongstructFileTemplate = `// generated code - do not edit package probe import ( "log" "slices" "time" table "github.com/fullstack-lang/gongtable/go/models" "{{PkgPathRoot}}/models" "{{PkgPathRoot}}/orm" ) const __dummmy__time = time.Nanosecond var __dummmy__letters = slices.Delete([]string{"a"}, 0, 1) var __dummy_orm = orm.BackRepoStruct{} // insertion point{{` + string(rune(FillUpTreeStructCase)) + `}} `
View Source
const FormDivToFieldTemplate = `` /* 3117-byte string literal not displayed */
View Source
const NewOnSortingEditonTemplate = `` /* 4281-byte string literal not displayed */
View Source
const ProbeTemplate = `` /* 2157-byte string literal not displayed */
View Source
const TreeNodeImplGongstructFileTemplate = `// generated code - do not edit package probe import ( "log" gong_models "github.com/fullstack-lang/gong/go/models" gongtree_models "github.com/fullstack-lang/gongtree/go/models" "{{PkgPathRoot}}/models" ) type TreeNodeImplGongstruct struct { gongStruct *gong_models.GongStruct probe *Probe } func NewTreeNodeImplGongstruct( gongStruct *gong_models.GongStruct, probe *Probe, ) (nodeImplGongstruct *TreeNodeImplGongstruct) { nodeImplGongstruct = new(TreeNodeImplGongstruct) nodeImplGongstruct.gongStruct = gongStruct nodeImplGongstruct.probe = probe return } func (nodeImplGongstruct *TreeNodeImplGongstruct) OnAfterUpdate( gongtreeStage *gongtree_models.StageStruct, stagedNode, frontNode *gongtree_models.Node) { // setting the value of the staged node to the new value // otherwise, the expansion memory is lost if stagedNode.IsExpanded != frontNode.IsExpanded { stagedNode.IsExpanded = frontNode.IsExpanded return } // if node is unchecked if stagedNode.IsChecked && !frontNode.IsChecked { } // if node is checked, add gongstructshape if !stagedNode.IsChecked && frontNode.IsChecked { } // the node was selected. Therefore, one request the // table to route to the table log.Println("NodeImplGongstruct:OnAfterUpdate with: ", nodeImplGongstruct.gongStruct.GetName()) // insertion point{{` + string(rune(NodeImplGongstruct)) + `}} // set color for node and reset all other nodes color for node := range *gongtree_models.GetGongstructInstancesSet[gongtree_models.Node](gongtreeStage) { node.BackgroundColor = "" } stagedNode.BackgroundColor = "lightgrey" gongtreeStage.Commit() nodeImplGongstruct.probe.tableStage.Commit() } `
Variables ¶
View Source
var ButtonImplFileFieldFieldSubTemplateCode map[ButtonImplSubTemplateId]string = map[ButtonImplSubTemplateId]string{ ButtonImplSubTmplBasicField: ` BasicFieldtoForm("{{FieldName}}", instanceWithInferedType.{{FieldName}}, instanceWithInferedType, probe.formStage, formGroup, {{isTextArea}}, {{isBespokeWidth}}, {{bespokeWidth}}, {{isBespokeHeight}}, {{bespokeHeight}})`, ButtonImplSubTmplBasicFieldEnumString: ` EnumTypeStringToForm("{{FieldName}}", instanceWithInferedType.{{FieldName}}, instanceWithInferedType, probe.formStage, formGroup)`, ButtonImplSubTmplBasicFieldEnumInt: ` EnumTypeIntToForm("{{FieldName}}", instanceWithInferedType.{{FieldName}}, instanceWithInferedType, probe.formStage, formGroup)`, ButtonImplSubTmplPointerField: ` AssociationFieldToForm("{{FieldName}}", instanceWithInferedType.{{FieldName}}, formGroup, probe)`, ButtonImplSubTmplSliceOfPointersField: ` AssociationSliceToForm("{{FieldName}}", instanceWithInferedType, &instanceWithInferedType.{{FieldName}}, formGroup, probe)`, ButtonImplSubTmplSliceOfPointersReversePointer: ` { var rf models.ReverseField _ = rf rf.GongstructName = "{{AssocStructName}}" rf.Fieldname = "{{FieldName}}" reverseFieldOwner := orm.GetReverseFieldOwner(probe.stageOfInterest, probe.backRepoOfInterest, instanceWithInferedType, &rf) if reverseFieldOwner != nil { AssociationReverseFieldToForm( reverseFieldOwner.(*models.{{AssocStructName}}), "{{FieldName}}", instanceWithInferedType, formGroup, probe) } else { AssociationReverseFieldToForm[*models.{{AssocStructName}}, *models.{{Structname}}]( nil, "{{FieldName}}", instanceWithInferedType, formGroup, probe) } }`, }
View Source
var CellDeleteIconImplSubTemplateCode map[string]string = map[string]string{ string(rune(CellDeleteIconImplSwitchCase)): ` case *models.{{Structname}}: instancesTyped.Unstage(cellDeleteIconImpl.probe.stageOfInterest)`, }
View Source
var FillUpFormFromGongstructNameSubTemplateCode map[string]string = map[string]string{ string(rune(FillUpTreeStructCase)): ` case "{{Structname}}": formGroup := (&form.FormGroup{ Name: form.FormGroupDefaultName.ToString(), Label: prefix + "{{Structname}} Form", }).Stage(formStage) formGroup.OnSave = __gong__New__{{Structname}}FormCallback( nil, probe, formGroup, ) {{structname}} := new(models.{{Structname}}) formGroup.HasSuppressButton = !isNewInstance FillUpForm({{structname}}, formGroup, probe)`, }
View Source
var FillUpFormFromGongstructSubTemplateCode map[string]string = map[string]string{ string(rune(FillUpTreeStructCase)): ` case *models.{{Structname}}: formGroup := (&gongtable.FormGroup{ Name: formName, Label: "{{Structname}} Form", }).Stage(formStage) formGroup.OnSave = __gong__New__{{Structname}}FormCallback( instancesTyped, probe, formGroup, ) formGroup.HasSuppressButton = true FillUpForm(instancesTyped, formGroup, probe)`, }
View Source
var FillUpFormSubTemplateCode map[FillUpFormInsertionId]string = map[FillUpFormInsertionId]string{ ButtonImplPerGongstructCallToFormGenerator: ` case *models.{{Structname}}: // insertion point{{fieldToFormCode}} `, }
View Source
var FillUpTableSubTemplateCode map[string]string = map[string]string{ string(rune(FillUpTableCaseForCastingDown)): ` case *models.{{Structname}}: fillUpTable[models.{{Structname}}](probe)`, string(rune(FillUpTableCase)): ` case *models.{{Structname}}: formGroup := (&gongtable.FormGroup{ Name: gongtable.FormGroupDefaultName.ToString(), Label: "Update {{Structname}} Form", OnSave: __gong__New__{{Structname}}FormCallback( instancesTyped, rowUpdate.probe, ), }).Stage(formStage) FillUpForm(instancesTyped, formGroup, rowUpdate.probe)`, string(rune(FillUpTableCaseForDeleteIcon)): ` case *models.{{Structname}}: instancesTyped.Unstage(cellDeleteIconImpl.probe.stageOfInterest)`, }
View Source
var FillUpTreeSubTemplateCode map[string]string = map[string]string{ string(rune(FillUpTreeStructCase)): ` case "{{Structname}}": nodeGongstruct.Name = name set := *models.GetGongstructInstancesSet[models.{{Structname}}](probe.stageOfInterest) for _{{structname}} := range set { nodeInstance := (&tree.Node{Name: _{{structname}}.GetName()}).Stage(probe.treeStage) nodeInstance.IsNodeClickable = true nodeInstance.Impl = NewInstanceNodeCallback(_{{structname}}, "{{Structname}}", probe) nodeGongstruct.Children = append(nodeGongstruct.Children, nodeInstance) }`, }
View Source
var FormCallbackFileFieldFieldSubTemplateCode map[FormCallbackSubTemplateId]string = map[FormCallbackSubTemplateId]string{ FormCallbackSubTmplBasicField: ` case "{{FieldName}}": FormDivBasicFieldToField(&({{structname}}_.{{FieldName}}), formDiv)`, FormCallbackSubTmplBasicFieldEnumString: ` case "{{FieldName}}": FormDivEnumStringFieldToField(&({{structname}}_.{{FieldName}}), formDiv)`, FormCallbackSubTmplBasicFieldEnumInt: ` case "{{FieldName}}": FormDivEnumIntFieldToField(&({{structname}}_.{{FieldName}}), formDiv)`, FormCallbackSubTmplPointerToStruct: ` case "{{FieldName}}": FormDivSelectFieldToField(&({{structname}}_.{{FieldName}}), {{structname}}FormCallback.probe.stageOfInterest, formDiv)`, FormCallbackSubTmplSliceOfPointersReversePointer: ` case "{{AssocStructName}}:{{FieldName}}": // we need to retrieve the field owner before the change var past{{AssocStructName}}Owner *models.{{AssocStructName}} var rf models.ReverseField _ = rf rf.GongstructName = "{{AssocStructName}}" rf.Fieldname = "{{FieldName}}" reverseFieldOwner := orm.GetReverseFieldOwner( {{structname}}FormCallback.probe.stageOfInterest, {{structname}}FormCallback.probe.backRepoOfInterest, {{structname}}_, &rf) if reverseFieldOwner != nil { past{{AssocStructName}}Owner = reverseFieldOwner.(*models.{{AssocStructName}}) } if formDiv.FormFields[0].FormFieldSelect.Value == nil { if past{{AssocStructName}}Owner != nil { idx := slices.Index(past{{AssocStructName}}Owner.{{FieldName}}, {{structname}}_) past{{AssocStructName}}Owner.{{FieldName}} = slices.Delete(past{{AssocStructName}}Owner.{{FieldName}}, idx, idx+1) } } else { // we need to retrieve the field owner after the change // parse all astrcut and get the one with the name in the // div for _{{assocStructName}} := range *models.GetGongstructInstancesSet[models.{{AssocStructName}}]({{structname}}FormCallback.probe.stageOfInterest) { // the match is base on the name if _{{assocStructName}}.GetName() == formDiv.FormFields[0].FormFieldSelect.Value.GetName() { new{{AssocStructName}}Owner := _{{assocStructName}} // we have a match if past{{AssocStructName}}Owner != nil { if new{{AssocStructName}}Owner != past{{AssocStructName}}Owner { idx := slices.Index(past{{AssocStructName}}Owner.{{FieldName}}, {{structname}}_) past{{AssocStructName}}Owner.{{FieldName}} = slices.Delete(past{{AssocStructName}}Owner.{{FieldName}}, idx, idx+1) new{{AssocStructName}}Owner.{{FieldName}} = append(new{{AssocStructName}}Owner.{{FieldName}}, {{structname}}_) } } else { new{{AssocStructName}}Owner.{{FieldName}} = append(new{{AssocStructName}}Owner.{{FieldName}}, {{structname}}_) } } } }`, }
View Source
var FormCallbackGongstructSubTemplateCode map[FormCallbackGongstructInsertionId]string = map[FormCallbackGongstructInsertionId]string{ FormCallbackPerGongstructCode: ` func __gong__New__{{Structname}}FormCallback( {{structname}} *models.{{Structname}}, probe *Probe, formGroup *table.FormGroup, ) ({{structname}}FormCallback *{{Structname}}FormCallback) { {{structname}}FormCallback = new({{Structname}}FormCallback) {{structname}}FormCallback.probe = probe {{structname}}FormCallback.{{structname}} = {{structname}} {{structname}}FormCallback.formGroup = formGroup {{structname}}FormCallback.CreationMode = ({{structname}} == nil) return } type {{Structname}}FormCallback struct { {{structname}} *models.{{Structname}} // If the form call is called on the creation of a new instnace CreationMode bool probe *Probe formGroup *table.FormGroup } func ({{structname}}FormCallback *{{Structname}}FormCallback) OnSave() { log.Println("{{Structname}}FormCallback, OnSave") // checkout formStage to have the form group on the stage synchronized with the // back repo (and front repo) {{structname}}FormCallback.probe.formStage.Checkout() if {{structname}}FormCallback.{{structname}} == nil { {{structname}}FormCallback.{{structname}} = new(models.{{Structname}}).Stage({{structname}}FormCallback.probe.stageOfInterest) } {{structname}}_ := {{structname}}FormCallback.{{structname}} _ = {{structname}}_ for _, formDiv := range {{structname}}FormCallback.formGroup.FormDivs { switch formDiv.Name { // insertion point per field{{fieldToFormCode}} } } // manage the suppress operation if {{structname}}FormCallback.formGroup.HasSuppressButtonBeenPressed { {{structname}}_.Unstage({{structname}}FormCallback.probe.stageOfInterest) } {{structname}}FormCallback.probe.stageOfInterest.Commit() fillUpTable[models.{{Structname}}]( {{structname}}FormCallback.probe, ) {{structname}}FormCallback.probe.tableStage.Commit() // display a new form by reset the form stage if {{structname}}FormCallback.CreationMode || {{structname}}FormCallback.formGroup.HasSuppressButtonBeenPressed { {{structname}}FormCallback.probe.formStage.Reset() newFormGroup := (&table.FormGroup{ Name: table.FormGroupDefaultName.ToString(), }).Stage({{structname}}FormCallback.probe.formStage) newFormGroup.OnSave = __gong__New__{{Structname}}FormCallback( nil, {{structname}}FormCallback.probe, newFormGroup, ) {{structname}} := new(models.{{Structname}}) FillUpForm({{structname}}, newFormGroup, {{structname}}FormCallback.probe) {{structname}}FormCallback.probe.formStage.Commit() } fillUpTree({{structname}}FormCallback.probe) }`, }
View Source
var TreeNodeImplGongstructSubTemplateCode map[string]string = map[string]string{ string(rune(NodeImplGongstruct)): ` if nodeImplGongstruct.gongStruct.GetName() == "{{Structname}}" { fillUpTable[models.{{Structname}}](nodeImplGongstruct.probe) }`, }
Functions ¶
func CodeGeneratorFillUpForm ¶
Types ¶
type ButtonImplSubTemplateId ¶
type ButtonImplSubTemplateId int
const ( ButtonImplSubTmplBasicField ButtonImplSubTemplateId = iota // ButtonImplFileFieldSubTmplSetBasicFieldInt ButtonImplSubTmplBasicFieldEnumString ButtonImplSubTmplBasicFieldEnumInt // ButtonImplFileFieldSubTmplSetBasicFieldFloat64 // ButtonImplFileFieldSubTmplSetBasicFieldString // ButtonImplFileFieldSubTmplSetBasicFieldStringDocLink // ButtonImplFileFieldSubTmplSetTimeField ButtonImplSubTmplPointerField ButtonImplSubTmplSliceOfPointersField ButtonImplSubTmplSliceOfPointersReversePointer )
type CellDeleteIconImplInsertionId ¶
type CellDeleteIconImplInsertionId int
const ( CellDeleteIconImplSwitchCase CellDeleteIconImplInsertionId = iota CellDeleteIconImplInsertionNb )
type FillUpFormFromGongstructInsertionId ¶
type FillUpFormFromGongstructInsertionId int
const ( FillUpFormFromGongstructSwitchCase FillUpFormFromGongstructInsertionId = iota FillUpFormFromGongstructInsertionNb )
type FillUpFormFromGongstructNameInsertionId ¶
type FillUpFormFromGongstructNameInsertionId int
const ( FillUpFormFromGongstructNameSwitchCase FillUpFormFromGongstructNameInsertionId = iota FillUpFormFromGongstructNameInsertionNb )
type FillUpFormInsertionId ¶
type FillUpFormInsertionId int
const ( ButtonImplPerGongstructCallToFormGenerator FillUpFormInsertionId = iota FillUpFormInsertionNb )
type FillUpTableInsertionId ¶
type FillUpTableInsertionId int
const ( FillUpTableCase FillUpTableInsertionId = iota FillUpTableCaseForCastingDown FillUpTableCaseForDeleteIcon )
type FillUpTreeInsertionId ¶
type FillUpTreeInsertionId int
const ( FillUpTreeStructCase FillUpTreeInsertionId = iota FillUpTreeInsertionNb )
type FormCallbackGongstructInsertionId ¶
type FormCallbackGongstructInsertionId int
const ( FormCallbackPerGongstructCode FormCallbackGongstructInsertionId = iota FormCallbackGongstructInsertionNb )
type FormCallbackSubTemplateId ¶
type FormCallbackSubTemplateId int
const ( FormCallbackSubTmplBasicField FormCallbackSubTemplateId = iota FormCallbackSubTmplBasicFieldEnumString FormCallbackSubTmplBasicFieldEnumInt FormCallbackSubTmplPointerToStruct FormCallbackSubTmplSliceOfPointersReversePointer )
type NodeImplGongstructInsertionId ¶
type NodeImplGongstructInsertionId int
const (
NodeImplGongstruct NodeImplGongstructInsertionId = iota
)
Source Files
¶
- assoc_sorting_button_impl.go
- association_slice_to_form.go
- association_to_form.go
- basic_field_to_form.go
- button_impl_gongstruct.go
- button_impl_refresh.go
- cell_delete_icon_impl.go
- enum_type_to_form.go
- fill_up_form.go
- fill_up_form_from_gongstruct.go
- fill_up_form_from_gongstruct_name.go
- fill_up_table.go
- fill_up_tree.go
- form_callback.go
- form_div_to_field.go
- probe.go
- tree_node_impl_gongstruct.go
Click to show internal directories.
Click to hide internal directories.