model

package module
v0.0.29 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 7, 2023 License: MIT Imports: 4 Imported by: 40

README

Estructuras que utilizo con frecuencia en proyectos escritos en Go

ejemplo de uso en un objeto

func MedicalHistory() model.Object {
	return model.Object{
		Name:           "medicalhistory",
		TextFieldNames: []string{"service_name"},
		Fields: []model.Field{
			{Name: "id_medicalhistory", Legend: "id", Input: input.Pk()},
			{Name: "id_patient", Legend: "paciente", Input: input.Pk()},

			{Name: "staff_id", Legend: "Id", Input: input.Pk()},
			{Name: "staff_name", Legend: "Atendido por", Input: input.Text()},
			{Name: "staff_ocupation", Legend: "Especialidad", Input: input.Text()},
			{Name: "staff_area", Legend: "Area", Input: input.Check(Area{})},

			{Name: "service_id", Legend: "Prestación", Input: input.Pk()},

			{Name: "day_attention", Legend: "Dia Atención", Input: input.Date()},
			{Name: "hour_attention", Legend: "Hora", Input: input.Hour(`min="08:15"`, `max="20:15"`)},

			{Name: "reason", Legend: "Motivo Consulta, Servicio o Procedimiento", Input: input.TextArea()},
			{Name: "diagnostic", Legend: "Diagnostico (Descripción)", Input: input.TextArea()},
			{Name: "prescription", Legend: "Prescripción (Conclusion)", Input: input.TextArea()},

			{Name: "last_print_file", Legend: "Ultima Impresión en Archivo", Input: input.Text()},
		},
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Component

type Component struct {
	//ej: search_footer,datalist,form
	Name string
	// CssGlobal() string | Css Global ej: .mi-style{background:black;}
	CssGlobal
	// CssPrivate() string | Css Privado
	CssPrivate
	// JsGlobal() string | Js Global
	JsGlobal
	// JsPrivate() string | Js Privado Modulo ej: MyFunction(e){console.log("hello ",e)};
	JsPrivate
	// JsListeners() string | ej: btn.addEventListener('click', MyFunction);
	JsListeners

	//ej: func (Component) FolderPath() string {
	// _, filename, _, _ := runtime.Caller(0)
	// dir := filepath.Dir(filename)
	// return filepath.ToSlash(dir)
	// }
	Path
}

type CssGlobal added in v0.0.7

type CssGlobal interface {
	CssGlobal() string
}

type CssPrivate added in v0.0.5

type CssPrivate interface {
	CssPrivate() string
}

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 al codificar = {"0:0","1:1","2:2"}
	// ej no mail: {"marcel", "777"}
	// Index al codificar = {"0:0","1:2"}
	Index map[uint8]uint8 `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 {
	//Type,Object,Module,Message
	//ej: ["create","user","ModuleUsers","ok"]
	CutOptions []string  `json:"o"`
	CutData    []CutData `json:"d"`
}

func (*CutResponse) CutResponseDecode added in v0.0.21

func (cr *CutResponse) CutResponseDecode(data []map[string]string) (out Response)

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
	Unique      bool   //campo único en db
	Inalterable bool   //la data en el campo sera inalterable después de la creación (¡no se puede modificar!)
	Legend      string //como se mostrara al usuario el campo en el encabezado ej: "name" por "Nombre Usuario"
	Input
	SkipValidation        bool //sin validar
	SkipCompletionAllowed bool //si el campo es requerido obligatoriamente o no

	NotRenderHtml bool // si no se necesita en formulario html

}

type Icon added in v0.0.28

type Icon struct {
	Id      string   //ej: icon-lupa, icon-btn-save, icon-btn-new
	ViewBox string   //ej: "0 0 16 16", "0 0 448 512"
	Paths   []string //ej: m11.51 11..,m7.051..,m3.267 15...
}

type Input added in v0.0.5

type Input struct {
	Component

	Tag
	Validate

	TestData
}

type JsGlobal added in v0.0.5

type JsGlobal interface {
	JsGlobal() string
}

type JsListeners added in v0.0.5

type JsListeners interface {
	JsListeners() string
}

type JsPrivate added in v0.0.7

type JsPrivate interface {
	JsPrivate() string
}

type Module

type Module struct {
	Theme
	//nombre modulo ej: chat,patient,user
	Name string
	//Titulo que vera el usuario ej: "Modulo Fotografía"
	Title string
	// icono para utilizar en sprite svg
	Icon
	//interfaz usuario modulo
	UI
	//areas soportadas por el modulo ej: 'a','t','x'
	Areas []byte
	// ui/components que usa el modulo ej: form,datalist,search....
	Components []Component
	// objetos que contiene el modulo ej: patient,user
	Objects []Object

	Path
}

func (Module) BuildHtmlModule added in v0.0.29

func (m Module) BuildHtmlModule(required_area byte) (out string)

func (Module) BuildIconModule added in v0.0.29

func (m Module) BuildIconModule() (out string)

func (Module) BuildMenuButton added in v0.0.29

func (m Module) BuildMenuButton(index int) (out string)

func (Module) BuildModuleJS added in v0.0.29

func (m Module) BuildModuleJS(functions, listener_add, listener_rem string) (out string)

type Object

type Object struct {
	Name           string   //nombre del objeto o tabla
	TextFieldNames []string //nombre de campos mas representativos del objeto o tabla ej: nombre, apellido
	Fields         []Field  //campos del objeto
}

func (Object) Columns

func (o Object) Columns() (columns []string)

func (Object) DataDecode added in v0.0.19

func (o Object) DataDecode(cut_data ...CutData) ([]map[string]string, error)

func (Object) DataEncode added in v0.0.19

func (o Object) DataEncode(data map[string]string) CutData

DataEncode quita los nombres de los campos de la data según modelo del objeto

func (Object) FieldExist added in v0.0.16

func (o Object) FieldExist(field_name string) (Field, bool)

func (Object) FilterField

func (o Object) FilterField(nameRequired string) (fielsOut Field)

func (Object) FilterFields

func (o Object) FilterFields(namesRequired ...string) (fielsOut []Field)

func (Object) FilterRemoveFields

func (o Object) FilterRemoveFields(namesToRemove ...string) (fielsOut []Field)

func (Object) GetFieldByName

func (o Object) GetFieldByName(nameRq string) (fielOut Field)

func (Object) GetID

func (o Object) GetID(data_search map[string]string) string

func (Object) GetRepresentativeTextField

func (o Object) GetRepresentativeTextField(data_element map[string]string) (values string)

func (Object) MainName

func (o Object) MainName() string

func (Object) PrimaryKeyName

func (o Object) PrimaryKeyName() string

func (Object) RenderFields

func (o Object) RenderFields() (fielsOut []Field)

func (Object) RequiredFields

func (o Object) RequiredFields() (fielsOut []Field)

func (Object) ValidateData added in v0.0.16

func (o Object) ValidateData(validate_all_fields bool, all_data ...map[string]string) (string, bool)

validar objeto

type Path added in v0.0.27

type Path interface {
	FolderPath() string
}

type Permission

type Permission struct {
	Create bool
	Update bool
	Delete bool
}

type Request

type Request struct {
	//usuario que ejecuta la solicitud
	*User
	// paquetes de solicitud y respuesta
	Packages []Response
}

type Response

type Response struct {
	Type    string              `json:"t,omitempty"` //tipo solicitud respuesta: create, read, update, delete o error
	Object  string              `json:"o,omitempty"` //nombre de la tabla u objeto controlador hacia donde va la solicitud
	Module  string              `json:"m,omitempty"` //nombre del module 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

	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
}

type Tag added in v0.0.26

type Tag interface {
	HtmlTag(id, field_name string, allow_skip_completed bool) string
}

type TestData added in v0.0.10

type TestData interface {
	GoodTestData() (out []string)
	WrongTestData() (out []string)
}

type Theme added in v0.0.29

type Theme interface {
	// index.html ej in Root Folder Path with:
	// {{.StyleSheet}} {{.AppName}} {{.AppVersion}} {{.Menu}}
	// {{.Message}} {{.UserName}} {{.UserArea}} {{.Modules}} {{.Script}}
	FolderPath() string
	// ModuleHtmlTemplate ej: nombre del modulo html y el contenido
	//<div id="` + module_name + `" class="slider_panel">` + content + `</div>
	ModuleHtmlTemplate(module_name, content string) string
	// 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
	//IconModuleTemplate ej: <symbol id="icon-btn-save" viewBox="0 0 16 16"><path fill="currentColor" d="M14 0h-2z" /></symbol>
	IconModuleTemplate(id, view_box string, paths ...string) string
	//ModuleJsTemplate ej: MODULES['` + module_name + `'] = (function () {	let crud = new Object(); const module = document.getElementById('` + module_name + `');
	// crud.ListenerModuleON = function () {` + listener_add + `};
	// crud.ListenerModuleOFF = function () {` + listener_rem + `};
	// return crud;})();
	ModuleJsTemplate(module_name, functions, listener_add, listener_rem string) string
}

type UI added in v0.0.26

type UI interface {
	UserInterface(area_access byte) string
}

type User

type User struct {
	Token          string // token de sesión solicitante
	Ip             string
	Name           string
	Area           byte  //0 sin area.. un que byte y uint8 son lo mismo en go la idea que aca sea un valor de carácter ej: a,s,p...
	AccessLevel    uint8 // aquí valor numérico 0 a 255
	Packages       chan []Response
	LastConnection time.Time
}

type Validate added in v0.0.5

type Validate interface {
	ValidateField(data_in string, skip_validation bool) bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL