Documentation
¶
Index ¶
- Constants
- func GetFieldNamesFrom(struct_in interface{}) (field_names []string)
- type AfterClicked
- type AfterCreate
- type AfterDelete
- type AfterRead
- type AfterUpdate
- type AlternativeValidateAdapter
- type AppInfo
- type AuthBackendAdapter
- type AuthFrontendAdapter
- type AuthHandlerAdapter
- type BackendBootDataUser
- type BackendHandler
- type BeforeAction
- type BootPageData
- type BootResponse
- type CipherAdapter
- type ContainerViewAdapter
- type CookieExpiration
- type CreateApi
- type CutData
- type CutResponse
- type DataBaseAdapter
- type DataConverter
- type DeleteApi
- type DomAdapter
- type FetchAdapter
- type Field
- type FileApi
- type FileDiskRW
- type FormAdapter
- type FrontendBootDataUser
- type FrontendHandler
- type Handlers
- func (h *Handlers) AddModules(new_modules ...*Module)
- func (h *Handlers) AddObjects(new_objects ...*Object)
- func (h Handlers) CheckInterfaces(pkg_name string, struct_in interface{}) (err string)
- func (h Handlers) GetModuleByName(module_name string) (m *Module, err string)
- func (h Handlers) GetModules() []*Module
- func (h Handlers) GetObjectByName(object_name string) (o *Object, err string)
- func (h Handlers) GetObjects() []*Object
- type Header
- type HeaderAuthenticationAdapter
- type HtmlAdapter
- type Icon
- type IdHandler
- type Input
- type ItemViewAdapter
- type Logger
- type MessageAdapter
- type Module
- type ModuleHandler
- type NotifyBootData
- type NotifyFormComplete
- type Object
- func (o Object) CallJsFunctionObject(func_name string, enable bool, params ...map[string]interface{}) (err string)
- func (o Object) ClickMenuModule() (err string)
- func (o Object) ClickObjectElement(query_element string) (err string)
- func (o Object) ClickingID(id string) (err string)
- func (o Object) Columns() (columns []string)
- func (o Object) DataDecode(cut_data ...CutData) (decoded_data []map[string]string, err string)
- func (o Object) DataEncode(all_data ...map[string]string) (out []CutData, err string)
- func (o Object) FieldExist(field_name string) (Field, bool)
- func (o Object) FieldsToFormValidate() (fiels_out []Field)
- func (o Object) FilterRemoveFields(namesToRemove ...string) (fiels_out []Field)
- func (o Object) GetFieldsByNames(required_names ...string) (fiels_out []Field, err string)
- func (o Object) GetID(data_search map[string]string) string
- func (o Object) GetRepresentativeTextField(data_element map[string]string) (values string)
- func (o Object) GetTablesNames() (out []string)
- func (o Object) JoinFieldNames(add_prefix_table_name bool) (out string)
- func (o Object) MainName() string
- func (o Object) OnlyRequiredDbFieldsThisObject() (db_field []Field)
- func (o Object) PrimaryKeyName(options ...string) string
- func (o Object) RenderFields() (fiels_out []Field)
- func (o Object) RequiredFields() (fiels_out []Field)
- func (o *Object) ResetFormValues(reset_input_view bool) (err string)
- func (o Object) Response(data []map[string]string, options ...string) Response
- func (o Object) TestData(required_objects int, skip_id, wrong_data bool) (out []map[string]string, err string)
- func (o Object) ValidateData(its_new, its_update_or_delete bool, all_data ...map[string]string) (err string)
- func (o Object) Where(data map[string]string) (out string)
- type ObjectsHandler
- type Package
- type Page
- type Permission
- type PrinterHandler
- type ReadApi
- type ReadData
- type ReadParams
- type ReadResult
- type Request
- type ResetViewAdapter
- type ResetViewObjectAdapter
- type Response
- type Responses
- type SourceData
- type Tag
- type TemplateModuleConfig
- type TestData
- type ThemeAdapter
- type TimeAdapter
- type TimeNow
- type TimeWeek
- type UI
- type UnixTimeHandler
- type UpdateApi
- type User
- type UserAuthNumber
- type Validate
- type ViewAdapter
Constants ¶
const INPUT_PATTERN = `input\.(\w+)\([^)]*\)`
const PREFIX_ID_NAME = "id_"
Variables ¶
This section is empty.
Functions ¶
func GetFieldNamesFrom ¶ added in v0.0.68
func GetFieldNamesFrom(struct_in interface{}) (field_names []string)
Types ¶
type AfterClicked ¶ added in v0.0.52
type AfterCreate ¶ added in v0.0.46
type AfterDelete ¶ added in v0.0.46
type AfterUpdate ¶ added in v0.0.46
type AlternativeValidateAdapter ¶ added in v0.0.69
type AppInfo ¶ added in v0.0.67
type AppInfo struct { App_name string Business_name string Business_address string Business_phone string }
func (AppInfo) AppVersion ¶ added in v0.0.78
func (AppInfo) TinyGoVersion ¶ added in v0.0.78
type AuthBackendAdapter ¶ added in v0.0.77
type AuthBackendAdapter interface { // params ej: r *http BackendCheckUser(r_http any) (u *User, err string) AuthHandlerAdapter }
type AuthFrontendAdapter ¶ added in v0.0.77
type AuthFrontendAdapter interface { FrontendCheckUser(result func(u *User, err string)) AuthHandlerAdapter }
type AuthHandlerAdapter ¶ added in v0.0.77
type AuthHandlerAdapter interface { NameOfAuthHandler() string UserAuthNumber }
type BackendBootDataUser ¶ added in v0.0.76
type BackendHandler ¶ added in v0.0.46
type BackendHandler struct { BootResponse CreateApi ReadApi UpdateApi DeleteApi }
type BeforeAction ¶ added in v0.0.78
type BeforeAction interface {
ExecuteBeforeAction(h *Handlers)
}
type BootPageData ¶ added in v0.0.74
type BootPageData struct {
JsonBootActions string
}
type BootResponse ¶ added in v0.0.45
type CipherAdapter ¶ added in v0.0.76
type ContainerViewAdapter ¶ added in v0.0.70
type ContainerViewAdapter interface {
BuildContainerView(id, field_name string, allow_skip_completed bool) string
}
todo el contenido html por defecto del objeto
type CookieExpiration ¶ added in v0.0.78
default 2 minutes
type CutData ¶ added in v0.0.19
type CutData struct { // ej Modelo Objeto: usuario := Object{Name: "Usuario",Fields: []Field{ // {Name: "name"}, //0 // {Name: "email"},//1 // {Name: "phone"},//2 // },} // ej data normal con todos los campos: {"name":"John Doe","email":"johndoe@example.com","phone":"555"} // version recortada Data: {"John Doe","johndoe@example.com","555"} // Index Objeto al codificar = {"0:0","1:1","2:2"} // ej no mail: {"marcel", "777"} // Index al codificar = {"0:0","1:2"} Index map[int8]int8 `json:"i"` //Data ej en mapa: "Data":[{"id":"222","name":"manzana","valor":"1200"}] // ahora: "Data":["222","manzana","1200"] Data []string `json:"d"` }
type CutResponse ¶ added in v0.0.19
type CutResponse struct { //Action,Object,Module,Message //ej: ["create","user","ModuleUsers","ok"] CutOptions []string `json:"o,omitempty"` CutData []CutData `json:"d,omitempty"` }
func (*CutResponse) CutResponseDecode ¶ added in v0.0.21
func (cr *CutResponse) CutResponseDecode(data []map[string]string) (out Response)
type DataBaseAdapter ¶ added in v0.0.35
type DataBaseAdapter interface { IdHandler RunOnClientDB() bool //verdadero corren en el cliente ej browser. por defecto falso corre en el servidor // items support in server db: []map[string]string, map[string]string CreateObjectsInDB(table_name string, backup_required bool, items any) (err string) // from_tables ej: "users,products" or: public.reservation, public.patient" // params: map[string]string ej:{ // LIMIT: 10, 5, 100. note: Postgres y MySQL: "LIMIT 10", SQLite: "LIMIT 10 OFFSET 0" OR "" no limit // ORDER_BY: name,phone,address // SELECT: "name, phone, address" default * // WHERE: "patient.id_patient = reservation.id_patient AND reservation.id_staff = '2'" // ARGS: "1,4,33" // } ReadSyncDataDB(from_tables string, params ...map[string]string) (result []map[string]string, err string) //params: callback fun ej: fun([]map[string]string,error) // "ORDER_BY": "patient_name", "SORT":"DESC" DEFAULT "ASC" ReadAsyncDataDB(p ReadParams, callback func(r ReadResult)) UpdateObjectsInDB(table_name string, data ...map[string]string) (err string) DeleteObjectsInDB(table_name string, data ...map[string]string) (err string) CreateTablesInDB(objects []*Object, result func(err string)) BackupDataBase(callback func(err string)) ClearAllTableDataInDB(tables ...string) (err string) }
type DataConverter ¶ added in v0.0.68
type DataConverter interface { EncodeStruct(in any) (result []byte, err string) // &out is a pointer DecodeStruct(in []byte, out any) (err string) //map_in ej []map[string]string or map[string]string EncodeMaps(map_in any, object_name ...string) (out []byte, err string) DecodeMaps(in []byte, object_name ...string) (out []map[string]string, err string) EncodeResponses(requests ...Response) (out []byte, err string) DecodeResponses(data []byte) (out []Response, err string) }
si nombre del objeto no se ingresa se codifica a json de forma normal
type DomAdapter ¶ added in v0.0.47
type DomAdapter interface { BuildFrontendUI() (err string) InnerHTML(querySelector, html_content string) (err string) InsertAfterBegin(querySelector, html_content string) (err string) InsertBeforeEnd(querySelector, html_content string) (err string) // querySelector ej: "a[name='xxx']" ElementClicking(querySelector string) (err string) //ej: querySelector "meta[name='JsonBootTests']" // get_content: "content" SelectContent(querySelector, get_content string) (content, err string) CallFunction(functionName string, args ...any) (err string) }
type FetchAdapter ¶ added in v0.0.68
type FetchAdapter interface { //method ej: GET,POST // endpoint ej: http://localhost/upload // object ej: imagen // body_rq any ej: []map[string]string, map[string]string SendOneRequest(method, endpoint, object string, body_rq any, response func(result []map[string]string, err string)) // only POST method SendAllRequests(endpoint string, body_rq []Response, response func(result []Response, err string)) }
type Field ¶
type Field struct { // si el campo comienza com id_ se considera como único y perteneciente a una tabla específica ej: id_user su tabla es user // otros ej: id_usuario, apellido, address, city etc Name string Legend string //como se mostrara al usuario el campo en el encabezado ej: "name" por "Nombre Usuario" SourceTable string // tabla origen ej: patient,user,product NotRenderHtml bool // si no se necesita en formulario html *Input SkipCompletionAllowed bool //se permite que el campo no este completado. por defecto siempre sera requerido Unique bool //campo único e inalterable en db NotRequiredInDB bool // campo no requerido en base de datos al crear tabla Encrypted bool // si estará encriptado su almacenamiento o no NotClearValueOnFormReset bool // no borrar el valor del campo al resetear el formulario }
func (Field) IsPrimaryKey ¶ added in v0.0.35
type FileApi ¶ added in v0.0.33
type FileApi interface { // FileAddUploadApi(h *Handlers, source *Object, file_settings any) error //backend file_request ej: r *http.Request, w http.ResponseWriter //frontend file_request ej: blob file js.Value FileUpload(object_name, area_file string, file_request ...any) (out []map[string]string, err string) //params ej: id:123 FilePath(params map[string]string) (file_path, area string, err string) }
type FileDiskRW ¶ added in v0.0.68
type FormAdapter ¶ added in v0.0.66
type FormAdapter interface { FormReset(object_name string) (err string) FormAutoFill(object_name string) (err string) //validate valida después de completar,auto_grow hacer crecer los campos según el contenido FormComplete(object_name string, data map[string]string, validate, auto_grow bool) (err string) }
type FrontendBootDataUser ¶ added in v0.0.76
type FrontendHandler ¶ added in v0.0.46
type FrontendHandler struct { AfterCreate AfterRead AfterUpdate AfterDelete AfterClicked NotifyBootData ViewAdapter ResetViewObjectAdapter NotifyFormComplete }
type Handlers ¶ added in v0.0.60
type Handlers struct { ProductionMode bool FrontendExecution bool FileRootFolder string // default "app_files" AppInfo AuthFrontendAdapter AuthBackendAdapter BackendBootDataUser FrontendBootDataUser ThemeAdapter DataBaseAdapter TimeAdapter DomAdapter FormAdapter HtmlAdapter CipherAdapter DataConverter FetchAdapter FileApi FileDiskRW MessageAdapter Logger // contains filtered or unexported fields }
func (*Handlers) AddModules ¶ added in v0.0.68
func (*Handlers) AddObjects ¶ added in v0.0.68
func (Handlers) CheckInterfaces ¶ added in v0.0.68
func (Handlers) GetModuleByName ¶ added in v0.0.68
func (Handlers) GetModules ¶ added in v0.0.68
func (Handlers) GetObjectByName ¶ added in v0.0.68
func (Handlers) GetObjects ¶ added in v0.0.68
type HeaderAuthenticationAdapter ¶ added in v0.0.80
type HeaderAuthenticationAdapter interface {
AddHeaderAuthentication() Header
}
type HtmlAdapter ¶ added in v0.0.70
type Input ¶ added in v0.0.5
type Input struct { InputName string Minimum int Maximum int Tag ItemViewAdapter ResetViewAdapter Validate TestData }
type ItemViewAdapter ¶ added in v0.0.70
type Logger ¶ added in v0.0.60
type Logger interface { // retorno una interfaz solo para simplificar funciones de tipo syscall/js Log(message ...any) interface{} }
type MessageAdapter ¶ added in v0.0.69
type MessageAdapter interface {
UserMessage(message ...any) interface{}
}
type Module ¶
type Module struct { //nombre modulo ej: chat,patient,user ModuleName string //Titulo que vera el usuario ej: "Modulo Fotografía" Title string // id icono para utilizar en sprite svg ej: icon-info IconID string //interfaz usuario modulo UI //areas soportadas por el modulo ej: 'a','t','x' Areas map[string]string // objetos o componentes que contiene el modulo ej: patient,user,datalist,search.... Objects []*Object // tipo de entradas usadas en el modulo Inputs []*Input *Handlers }
func (Module) ModuleSupports ¶ added in v0.0.74
type ModuleHandler ¶ added in v0.0.68
type NotifyBootData ¶ added in v0.0.50
type NotifyBootData interface {
NotifyBootDataIsLoaded()
}
type NotifyFormComplete ¶ added in v0.0.74
type NotifyFormComplete interface {
NotifyFormIsOK()
}
type Object ¶
type Object struct { // ej: module.client, client.search_footer,user.datalist ObjectName string Table string //tabla origen db ej: users PrincipalFieldsName []string //campos mas representativos ej: name, address, phone NoAddObjectInDB bool Fields []Field //campos *Module // módulo origen BackHandler BackendHandler FrontHandler FrontendHandler PrinterHandler FormData map[string]string // data temporal formulario AlternativeValidateAdapter }
func (Object) CallJsFunctionObject ¶ added in v0.0.70
func (Object) ClickMenuModule ¶ added in v0.0.71
func (Object) ClickObjectElement ¶ added in v0.0.71
func (Object) ClickingID ¶ added in v0.0.70
func (Object) DataDecode ¶ added in v0.0.19
func (Object) DataEncode ¶ added in v0.0.19
DataEncode quita los nombres de los campos de la data según modelo del objeto
func (Object) FieldExist ¶ added in v0.0.16
func (Object) FieldsToFormValidate ¶ added in v0.0.66
func (Object) FilterRemoveFields ¶
func (Object) GetFieldsByNames ¶ added in v0.0.50
func (Object) GetRepresentativeTextField ¶
func (Object) GetTablesNames ¶ added in v0.0.50
func (Object) JoinFieldNames ¶ added in v0.0.48
ej: id_patient,patient_name,patient_run - add_prefix_table_name: true = patient.id_patient,patient.patient_name,patient.patient_run
func (Object) OnlyRequiredDbFieldsThisObject ¶ added in v0.0.63
solo campos requeridos en la base de datos. NOTA: puntero []*Field no funciona con slice
func (Object) PrimaryKeyName ¶
ej: "id_client", options: "add_prefix_table_name" = "client.id_client"
func (Object) RenderFields ¶
func (Object) RequiredFields ¶
func (*Object) ResetFormValues ¶ added in v0.0.74
setear valores del formulario
func (Object) Response ¶ added in v0.0.35
options ej: update,delete,"mensaje a enviar" default action: create
type ObjectsHandler ¶ added in v0.0.68
type Package ¶ added in v0.0.35
type Package struct { SkipMeInResponse bool `json:"-"` // saltarme al difundir Recipients []string `json:"-"` // lista de ip, token o ids según app para el reenvió al finalizar solicitud TargetArea bool `json:"-"` // si es falso el destino por defecto es publico de lo contrario sera para todos quines tengan la misma area del usuario solicitante Response }
type Page ¶ added in v0.0.33
type Page struct { StyleSheet string // url ej style.css AppName string AppVersion string SpriteIcons string Menu string UserName string UserArea string Message string Modules string Script string // ej main.js // JsonBootActions string //index ej <meta name="JsonBootActions" content="{{.JsonBootActions}}"> // JsonBootTests string BootPageData }
index.html ej: {{.StyleSheet}} {{.AppName}} {{.AppVersion}} {{.SpriteIcons}} {{.Menu}} {{.Message}} {{.UserName}} {{.UserArea}} {{.Modules}} {{.Script}} {{.Data}}
type Permission ¶
type PrinterHandler ¶ added in v0.0.66
type PrinterHandler interface {
PrintFormObject()
}
type ReadParams ¶ added in v0.0.77
type ReadResult ¶ added in v0.0.77
type ResetViewAdapter ¶ added in v0.0.70
type ResetViewAdapter interface {
ResetAdapterView() (err string)
}
type ResetViewObjectAdapter ¶ added in v0.0.70
type ResetViewObjectAdapter interface {
ResetObjectView() (err string)
}
type Response ¶
type Response struct { Action string `json:"a,omitempty"` //acción a realizar con la solicitud: create, read, update, delete o error Object string `json:"o,omitempty"` //nombre de la tabla u objeto controlador hacia donde va la solicitud Message string `json:"g,omitempty"` //mensaje para el usuario de la solicitud Data []map[string]string `json:"d,omitempty"` //data entrada y respuesta json }
type Responses ¶ added in v0.0.72
type Responses struct { NoCut []Response `json:"n,omitempty"` // normal Cut []CutResponse `json:"c,omitempty"` //re cortada }
type SourceData ¶ added in v0.0.44
type Tag ¶ added in v0.0.26
type Tag interface { HtmlName() string ContainerViewAdapter }
type TemplateModuleConfig ¶ added in v0.0.74
type TemplateModuleConfig struct { Module *Module // ej: `<div class="target-module"> // <select name="select"> // <option value="value1">Value 1</option> // <option value="value2" selected>Value 2</option> // </select> // </div>` HeaderInputTarget string Form *Object AsideList ContainerViewAdapter ButtonLogin bool ButtonPrint bool }
type ThemeAdapter ¶ added in v0.0.47
type ThemeAdapter interface { // MenuButtonTemplate ej: <li class="navbar-item"><a href="#` + module_name + `" tabindex="` + index + `" class="navbar-link" name="` + module_name + `"> // <svg aria-hidden="true" focusable="false" class="fa-primary"><use xlink:href="#` + icon_id + `" /></svg> // <span class="link-text">` + title + `</span></a></li> MenuButtonTemplate(module_name, index, icon_id, title string) string MenuClassName() string // ej: .menu-container MenuItemClass() string // ej: navbar-item ModuleClassName() string //ej: slider_panel ModuleTemplate(*TemplateModuleConfig) string FunctionMessageName() string // ej: ShowMessageToUser // ej query: "div#"+o.ModuleName+" [data-id='"+o.ObjectName+"']" QuerySelectorMenuModule(module_name string) string QuerySelectorModule(module_name string) string QuerySelectorObject(module_name, object_name string) string QuerySelectorUserName() string QuerySelectorUserArea() string }
type TimeAdapter ¶ added in v0.0.47
type TimeAdapter interface { TimeNow TimeWeek UnixTimeHandler //esperar en milliseconds ej: 500, 2000 .. WaitFor(milliseconds int, callback func()) // new_date ej: 2003-11-22 o "" para volver al estado normal SetDate(new_date string) }
type UnixTimeHandler ¶ added in v0.0.56
type UnixTimeHandler interface {
UnixNano() int64
}
ej: time.Now()
type UserAuthNumber ¶ added in v0.0.51
type ViewAdapter ¶ added in v0.0.70
type ViewAdapter interface { NameViewAdapter() string ContainerViewAdapter ItemViewAdapter ResetViewAdapter }
Source Files
¶
- adapter-action.go
- adapter-api.go
- adapter-app.go
- adapter-auth.go
- adapter-boot-data.go
- adapter-cipher.go
- adapter-data.go
- adapter-db.go
- adapter-dom.go
- adapter-file.go
- adapter-form.go
- adapter-html.go
- adapter-http.go
- adapter-logger.go
- adapter-message.go
- adapter-printer.go
- adapter-reset.go
- adapter-theme.go
- adapter-time.go
- adapter-ui.go
- field.go
- handlers-check.go
- handlers-modules.go
- handlers-objects.go
- handlers.go
- icon.go
- input.go
- module-methods.go
- module.go
- object-cut-decode.go
- object-cut-encode.go
- object-form.go
- object-javascript.go
- object-message.go
- object-sql-string.go
- object-test-data.go
- object-validate.go
- object.go
- object_methods.go
- page.go
- permission.go
- request.go
- response.go
- string.go