| Version 10 (modified by raphael.costa, 9 years ago) (diff) |
|---|
Format
As semanticas do TerraMA² estão definidas no arquivo semantics.json. O TerraMA² faz uso da biblioteca Angular Schema Form para geração dinâmicas de formularios. A documentação pode ser encontrada em Link
Tipos de campos (modelo - schema)
Esta seção descreve todos os tipos de campos que serão apresentados na interface na Aplicação Web do TerraMA². Alguns tipos de dados podem ser usados somente no desenho do campo, ou seja, no form. A tabela abaixo descreve todos os tipos suportados e onde podem ser utilizados:
| Tipos | Descrição |
| string | Define um campo do tipo texto. |
| number | Define um campo do tipo numerico. Será aceito tanto numeros inteiros e numeros com ponto flutuante |
| integer | Define um campo do tipo inteiro. |
| boolean | Define um campo do tipo checkbox. |
| array | Define uma cadeia de conjunto de valores especificos. (TODO) |
Tipos dos campos (renderizador - form)
Esta seção descreve todos os tipos de campos que serão desenhados na interface na Aplicação Web do TerraMA². A tabela abaixo descreve todas os possiveis formatos suportados:
| Tipos | Descrição |
| string | Define um campo do tipo texto. |
| number | Define um campo do tipo numerico. Será aceito tanto numeros inteiros e numeros com ponto flutuante |
| integer | Define um campo do tipo inteiro. |
| boolean | Define um campo do tipo checkbox. |
| textarea | Define um campo do tipo texto de multiplas linhas. |
| submit | Define um botão que tem a propriedade de submeter o formulario |
| help | Define um bloco que delimitará um helper. Você deve especificar a formatação manual utilizando a tag: helpvalue |
| select | Define uma campo combobox. Você deve especificar os elementos através do atributo titleMap |
Metadados
Interface e modelo de dados
A seção gui define a estrutura geral de dados conforme é apresentado abaixo:
"gui": {
"schema": {
"properties": {
"table_name": {
"type": "string",
"title": "Table Name"
}
},
"required": ["table_name"]
},
"form": ["*"]
}
Neste bloco, contém os seguintes elementos:
- schema Define as regras gerais dos componentes. Basicamente, define-se a regra de negocio da semantica. Este bloco é composto dos seguintes elementos:
- properties Define quais são os campos utilizados dessa semantica. Um exemplo pode ser visto abaixo:
.. "properties": { "table_name": { "key": "string", "title": "Table Name" } }Dentro de cada campo (table_name) deve-se descrever obrigatoriamente o campo key que define o Tipo do Dado. Podemos inclusive adicionar outros elementos."table_name": { "key": "string", "title": "Table Name", "placeholder": "It represents a description of field", "default": "It defines a default value to field. It must follow type value. If string, put it inside quotes. If boolean type true or false, etc." }Outras chaves permitidas:- pattern Permite especificar uma regex para qual o campo deve atender. Caso o valor informado pelo usuário não confere com a expressão, o campo ficará inválido até que o usuário preencha corretamente.
"alias": { "key": "string", "title": "Alias", "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$" # Somente caracteres alfa-numericos e _ e não pode começar com numero; }
- pattern Permite especificar uma regex para qual o campo deve atender. Caso o valor informado pelo usuário não confere com a expressão, o campo ficará inválido até que o usuário preencha corretamente.
- required Define quais campos serão obrigatórios na interface
- properties Define quais são os campos utilizados dessa semantica. Um exemplo pode ser visto abaixo:
- form Define como os elementos serão desenhados na interface, bem como a ordem deles. Este bloco deve ser obrigatoriamente uma cadeia (array) de elementos. Podemos definir das seguintes maneiras:
- Desenhe todos os campos na ordem definida pelo schema usando os mecanismos default. Não é muito recomendável, visto que os campos não terão uma formatação, resultando na ocupação inteira da linha.
"form": ["*"]
- Desenhe campos especificos com a formatação default:
"form": ["field1", "field2"]
- Desenha os campos com formatações customizadas. O examplo abaixo irá formatar dois campos table_name e column para se encaixarem na mesma linha:
"form": [ { "key": "table_name", "htmlClasses": "col-md-6" }, { "key": "column", "htmlClasses": "col-md-6" } ]
- Desenhe todos os campos na ordem definida pelo schema usando os mecanismos default. Não é muito recomendável, visto que os campos não terão uma formatação, resultando na ocupação inteira da linha.
Cada objeto refere-se a um campo. Podemos também acrescentar novas chaves:
- onChange Define que toda iteração com o campo na interface será disparado uma função. Por padrão, o framework injeta dois parâmetros: form e modelValue que define a chave do campo e o valor respectivamente. Lembre-se que o TerraMA² disponibilizará funções disponíveis em [TODO]. Use o seguinte prefixo: "onChange": "SemanticsHelpers.methodo(parametros)"
"form": [ ... campos, { "key": "alias", "htmlClasses": "col-md-6", "onChange": "SemanticsHelpers.only(form.key, modelValue)" # Esse metodo pega o regex definido no campo e limita para somente permitir os valores que condizem com a regex. Qualquer outro valor será removido: "meuAlia's" => "meuAlias" }, ]
- notitle Define se deve esconder o titulo do campo na interface. Default: false
- validationMessage Define mensagens de erros customizadas. Por exemplo, utilizando o pattern coloca código 202. Logo se desejar alterar a mensagem padrão, faça o seguinte:
"form": [ ... campos, { "key": "alias", "htmlClasses": "col-md-6", "validationMessage": { "202": "Invalid alias value. Only alpha-numeric chars and _ are allowed." } }, ]
Criando uma nova semantica
TODO:
