Class: Field

@nginstack/engine/lib/classdef/Field~ Field


new Field(name, type [, opt_size])

Classe Field Utilizada para criar campos, determinar seus tipos e setar seus valores.
utilizada tanto no x-class como na grade.

Parameters:
Name Type Argument Description
name string

Nome único que identificará o campo.

type string

Tipo do campo, observe a propriedade #type para mais detalhes .

opt_size number <optional>

Tamanho do campo, requerido apenas para campos do tipo "string" e "password".

Extends

  • Emitter

Members


autoTrim :boolean

Determina se o campo excluirá automaticamente os espaços encontrados no início e no fim do valor atribuído a ele.

Type:
  • boolean

caseType :string

Indica como será tratado o texto digitado no campo com relação à caixa das letras (Maiúsculas/minúsculas).
Válido para campos do tipo "string" ou "memo".
Verifique abaixo os valores possíveis e como será tratado o texto:

Type:
  • string
Example
VALOR     - TRATAMENTO:

"upper": O texto digitado no campo será convertido para letras maiúsculas;
"lower": O texto digitado no campo será convertido para letras minúsculas;
"mixed": A primeira letra de cada palavra do texto digitado no campo será
 convertida para letra maiúscula;
"statement": Somente a primeira letra do texto digitado será convertida para
 letra maiúscula;

classKey :Number

Define que o campo será um lookup para a classe informada.

  • Se o campo for do tipo "integer" será um lookup simples, permitindo selecionar apenas um registro da classe informada. O valor deste campo será a chave do registro selecionado.
  • Se o campo for do tipo "memo", "string" ou "file" será um lookup múltiplo, permitindo selecionar vários registros da classe informada. O valor deste campo será uma lista separada por "," dos registros selecionados.
    A tabela utilizada para realizar o lookup dependerá da propriedade lookupType. Valores possíveis:
  • LookupType.RECORD: será utilizada a tabela configurada na propriedade tableName do x-class da classe informada.
  • LookupType.CLASS: será utilizada a tabela CLASSE. Serão exibidas apenas as classes filhas da classe informada.
  • LookupType.FILE: será utilizada a tabela iVfs. Serão exibidos apenas os arquivos filhos da classe informada ou uma de suas filhas.
Type:
  • Number
See:

dataDictionary :Object

Ajuda para o dicionário de dados, quando se aplicar.
Este tipo de ajuda serve de base para o conhecimento técnico sobre a modelagem das tabelas no banco de dados. Deve indicar, entre outras coisas, o relacionamento entre o campo na tabela em que se está documentando e o campo de referência na outra tabela.

Type:
  • Object
See:

dataSize :number|null

Tamanho do dado utilizado para armazenar este campo no banco de dados. A diferença desta propriedade para #size é que tipos que representam máscaras de valores são normalizados para o tipo real utilizado para guardar o dado. Exemplo: um campo com tipo 'hour' possui o dataSize igual a 8.
Campos do tipo combo, terão o seu tamanho calculado a partir dos valores do combo. Tipos que não tem representação de tamanho, como number, integer, masterdetail, têm o dataSize igual a null.

Type:
  • number | null

dataType :DataType

Tipo do dado utilizado para armazenar este campo no banco de dados. A diferença desta propriedade para #type é que tipos que representam máscaras de valores são normalizados para o tipo real utilizado para guardar o dado. Exemplo: um campo com tipo 'hour' possui o dataType 'string'.
Campos do tipo combo, terão o seu tipo de dado calculado a partir dos valores do combo. Tipos que não tem representação direta na tabela, como masterdetail, têm o dataType igual a null.

Type:
  • DataType

dateFormat :DateFormat

Formato de exibição de campos do tipo "date". Valores possíveis:

Type:
  • DateFormat
Deprecated:
  • Utilize a propriedade displayFormat.
Example
- DateFormat.DDMMYYYY: dia/mês/ano(4 dígitos)<br>
 - DateFormat.DDMMYY:   dia/mês/ano(2 dígitos)<br>
 - DateFormat.MMYYYY:   mês/ano(4 dígitos)<br>
 - DateFormat.WWYYYY:   semana/ano(4 dígitos)<br>

dbConstraints :String

Indica quais restrições devem ser configuradas no banco de dados para este campo. A validação das restrições será feita apenas pelo banco de dados, portanto, serão executadas no momento da gravação do registro. No exemplo, o campo não poderá ser null:

Type:
  • String
Example
fld.dbConstraints = "NOT NULL"

decimalPrecision :Number

Determina a quantidade de casas decimais que devem ser exibidas quando o campo for do tipo "number".

Type:
  • Number
Default Value:
  • 2

defaultValue :Object

Sugestão de preenchimento do campo.
Será ignorada caso a propriedade saveInputAsDefault seja true e o usuário já tenha informado um valor para este campo.
Recurso disponível apenas em grades de variáveis.

Type:
  • Object
See:
  • Field#saveInputAsDefault

detailFieldNames :string

Lista de campos da grade detalhes que devem ser pesquisados com os valores dos campos da mãe definidos em masterFieldNames com o objetivo de criar um relacionamento masterDetail. Recurso disponível apenas para campos do tipo "grid".

Type:
  • string

detailFilter :string

Filtro que será aplicado ao DataSet da grade detalhe.
Recurso disponível apenas para campos do tipo "grid" e "masterdetail".

Type:
  • string

displayFormat :DateFormat|LatitudeFormat|LongitudeFormat|AngleFormat.DDD

Formato de exibição dos tipos "date", "longitude", "latitude", "angle". Valores possíveis:

  • DateFormat.DDMMYYYY: dia/mês/ano(4 dígitos)
  • DateFormat.DDMMYY: dia/mês/ano(2 dígitos)
  • DateFormat.MMYYYY: mês/ano(4 dígitos)
  • DateFormat.WWYYYY: semana/ano(4 dígitos)
  • LatitudeFormat.DDD_DDDDD: graus decimais°
  • LatitudeFormat.DDD_MM_MMM_DIR: graus° minutos' {N|S}
  • LatitudeFormat.DDD_MM_SS_S_DIR: graus° minutos' segundos" {N|S}
  • LongitudeFormat.DDD_DDDDD: graus°
  • LongitudeFormat.DDD_MM_MMM_DIR: graus° minutos' {E|W}
  • LongitudeFormat.DDD_MM_SS_S_DIR: graus° minutos' segundos" {E|W}
  • AngleFormat.DDD: graus°
  • AngleFormat.DDD_DD: graus decimais°
Type:
  • DateFormat | LatitudeFormat | LongitudeFormat | AngleFormat.DDD

group :FieldGroup

Nome ou instância da classe FieldGroup, que irá ser utilizado para agrupar visualmente os campos na grade. É importante que os campos a serem agrupados sejam vizinhos na ordem de exibição (configuração realizada através da propriedade order).

Type:
  • FieldGroup
See:
  • Field#order

help :String

Ajuda para o campo a ser utilizada pelas interfaces. Recomenda-se que a ajuda seja a mais intuitiva possível.
Pode-se utilizar alguns caracteres para melhorar a apresentação da ajuda como, por exemplo, "n" para quebrar a linha.

Type:
  • String
See:
Example
var fld = grid.field("ajuda", number)
fld.help = "isto é uma ajuda e tanto"

integrityCheck :boolean

Determina se a exclusão de um registro na tabela associada à propriedade classKey deve checar neste campo se existe referência à chave excluída.
Propriedade válida apenas para campos que possuam a propriedade classKey preenchida.
ATENÇÃO: Definir esta propriedade como false poderá permitir que este campo tenha referência a chaves que foram excluídas, o que consiste em uma falha de integridade. Deve haver uma validação manual que garanta a integridade do modelo de dados.

Type:
  • boolean

isClassLookup :boolean

API desaconselhada, equivalente a definir LookupType.CLASS na propriedade lookupType.

Type:
  • boolean
Deprecated:
  • Yes
See:

isDataBaseField :boolean

Informa se este campo possui uma representação no banco de dados. Caso não possua, o valor do campo em uma grade de DataSet não persistirá após o post do registro, precisando ser calculado por eventos ou processos.

Type:
  • boolean
Deprecated:
  • Utilize #isDatabaseField.

isDatabaseField :boolean

Informa se este campo possui uma representação no banco de dados. Caso não possua, o valor do campo em uma grade de DataSet não persistirá após o post do registro, precisando ser calculado por eventos ou processos.

Type:
  • boolean

label :String

Título atribuído ao campo. Por padrão a propriedade "name" do campo é atribuída automaticamente ao título do campo.
Em uma grade de variáveis, os nomes serão atribuídos obedecendo ao critério da primeira letra em caixa baixa e, quando mudar a palavra, a primeira letra da palavra deve ser digitada em caixa alta (mesmo padrão utilizado na nomenclatura das variáveis).

Type:
  • String
See:
Example
Se a propriedade "name" estiver preenchido com "dataInicial", a propriedade "label"
receberá automaticamente: "Data Inicial".

lookupType :Number

Define o tipo de "lookup" do campo. O tipo será interpretado somente se a propriedade "classKey" estiver preenchida.
O "lookup" é um tipo especial de "combo", que aponta para uma tabela de dados.
Observe na tabela abaixo os valores possíveis e a sua aplicação:

Type:
  • Number
See:
Example
TIPO              - APLICAÇÃO

LookupType.NONE   - Sem "lookup". Este é o valor padrão, se a propriedade
                    "classKey" não estiver preenchida.<br>
LookupType.RECORD - "Lookup" para "Registros de Tabelas". Este é o valor padrão,
                    quando a propriedade "classKey" é preenchida.<br>
LookupType.CLASS  - "Lookup" para "Classe de Tabelas", de acordo com a propriedade
                    "classKey".<br>
LookupType.FILE   - "Lookup" para arquivos do Sistema Virtual de Arquivos (VFS)
                    a partir da classe definida na propriedade "classKey".<br>

lowerName :string

Nome do campo em caixa baixa.

Type:
  • string

masterDeleteAction :MasterDeleteAction

Para campos do tipo "masterDetail", indica como os registros detalhes devem ser tratados quando ocorrer a exclusão do registro mestre.
Valores possíveis: MasterDeleteAction.ERROR, MasterDeleteAction.DELETE e MasterDeleteAction.UNLINK.

Type:
  • MasterDeleteAction

masterFieldNames :string

Lista de campos da grade mãe que devem ser utilizados para pesquisar nos campos detailFieldNames da grade detalhe, criando um relacionamento masterDetail.
Recurso disponível apenas para campos do tipo "grid".

Type:
  • string

max :number|Date

Valor máximo permitido de digitação no campo. Válido para todos os caracteres (letras, número e caracteres especiais).

Type:
  • number | Date
See:
  • Field#min
Example
var gr = this.grid('vars');
gr.title = 'Variáveis';
gr.onDefineFields.set(function(grid) {
   var fld = grid.field('fator', 'integer');
   fld.max = 10;
})

// Neste exemplo, caso o usuário digite um valor superior a 10, será apresentada a mensagem:
// 'O valor digitado deve ser menor ou igual a 10.'

maxDecimalPrecision :Number

Determina a quantidade máxima de casas decimais que devem ser exibidas quando o campo for do tipo "number".

Type:
  • Number

min :number|Date

Valor mínimo permitido de digitação no campo. Válido para todos os caracteres (letras, número e caracteres especiais).

Type:
  • number | Date
See:
  • Field#max
Example
var gr = this.grid('vars');
gr.title = 'Variáveis';
gr.onDefineFields.set(function(grid) {
   var fld = grid.field('fator', 'integer');
   fld.min = 10;
})

// Neste Exemplo, caso o usuário digite um valor inferior a 10, será apresentada a mensagem:
// 'O valor digitado deve ser maior ou igual a 10.'

minDecimalPrecision :Number

Determina a quantidade mínima de casas decimais que devem ser exibidas quando o campo for do tipo "number". Caso a quantidade mínima não seja atingida então o restante dos valores será preenchido com zero.

Type:
  • Number
Default Value:
  • 2

multiple :boolean

Determina, para campos de texto ("string" e "memo") com lookup ou combo, se o campo aceita valores múltiplos.
Esta propriedade somente pode ser setada se o campo possuir uma classKey ou for combo.
Caso esta propriedade não seja setada explicitamente, será utilizado o comportamento padrão, que é a aceitação de valores múltiplos para lookup e um único valor para combo.

Type:
  • boolean

name :string

Nome único que identifica o campo na base de dados.

Type:
  • string

onAfterChange :Event

Corresponde ao evento que será executado após ser alterado o valor do campo.
O exemplo abaixo escreve no log a mudança de valores que ocorreu no campo:

Type:
  • Event
Deprecated:
  • Utilize on('afterChange', listener).
Example
field.onAfterChange.set(function (field, beforeValue) {
   log.write('Valor alterado de ' + beforeValue + ' para ' + field.value);
})

onAfterLookupAddResult :Event

Evento emitido após o filtro dos resultados de uma pesquisa de um campo lookup. Esse evento será emitido uma vez, independente da quantidade de registros filtrados pelo evento lookupAddResult. Seu uso é recomendado quando há necessidade de limpar eventuais recursos que foram alocados em listeners do evento beforeLookupAddResult.

Type:
  • Event
Deprecated:
  • Utilize on('afterLookupAddResult', listener).
Example
field.onAfterLookupAddResult.set(function (field) {
   var process = field.parent.process;
   // Por exemplo, saldo é um DataSet que foi utilizado dentro do
   // onLookupAddResult
   process.saldo.empty()
 });

onBeforeChange :Event

Evento que será emitido antes de um campo ser alterado. O exemplo abaixo verifica o valor que se quer atribuir ao campo e caso ele seja maior que 10, então é disparado um erro.

Type:
  • Event
Deprecated:
  • Utilize on('beforeChange', listener).
Example
field.onBeforeChange.set(function (field, value) {
   if (value > 10)
     throw new Error('Valor não pode ser maior que 10');
 });

onBeforeLookupAddResult :Event

Evento emitido antes do filtro dos resultados de uma pesquisa de um campo lookup. Esse evento será emitido uma vez, independente da quantidade de registros filtrados pelo evento lookupAddResult. É recomendado o seu uso para alocar recursos que serão utilizados pelos listeners do evento lookupAddResult, evitando alocar esses recursos a cada avaliação do filtro.

Type:
  • Event
Deprecated:
  • Utilize on('beforeLookupAddResult', listener).
Example
field.onBeforeLookupAddResult.set(function (field) {
   var process = field.parent.process;
   // Por exemplo, saldo é um DataSet utilizado dentro do onLookupAddResult
   process.saldo = objetoSaldo.consulta();
   process.saldo.indexFieldNames = 'LOTE';
 });

onGetOptions :Event

Evento emitido quando for necessário obter as opções de um campo do tipo "combo". Necessário apenas se as opções não forem informadas diretamente por meio da propriedade options do campo.

Type:
  • Event
Deprecated:
  • Utilize on('getOptions', listener).

onLookupAddResult :Event

Evento emitido durante a pesquisa de um campo lookup, permitindo que o desenvolvedor filtre as opções possíveis de serem informadas neste campo.

Type:
  • Event
Deprecated:
  • Utilize on('lookupAddResult', listener).
Example
field.onLookupAddResult.set(function(field, findResult) {
   return !field.parent.ds.uf || findResult.key.uf == field.parent.ds.uf;
 })

onLookupDisplay :Event

Evento emitido quando o sistema precisa obter o valor de exibição de uma chave desta classe de dados.
No exemplo abaixo quando o campo perder o foco será exibido o valor do nome e do codigo da UF:

Type:
  • Event
Deprecated:
  • Utilize on('lookupDisplay').
Example
field.onLookupDisplay.set(function (field, value) {
   return value.nome + ' - ' + value.uf.codigo
})

onValidate :Event

Corresponde ao evento que será executado para validar o conteúdo informado para o campo. Neste evento não deve existir nenhuma dependência com o process, pois poderá ser disparado de dentro de qualquer ambiente.
O exemplo abaixo verifica se o campo do dataset é null se for, seta valor 0 para o campo da grade.

Type:
  • Event
Deprecated:
  • Utilize on('validate', listener).
Example
var f = grid.field('valor', 'integer')
 f.onValidate.set(function (field, ds) {
   if (ds.valor === null) {
     field.setValue(0);
   }
 });

options :Array

Lista que contém as opções de um campo do tipo "combo".
Deve ser informado um array de arrays de 2 itens:

  • nome da opção;
  • valor atribuído à opção;
Type:
  • Array
Example
var fld = this.field("weekDay", "combo")
fld.label = "Dia da Semana"
fld.options = [ ["Domingo", 0], ["Segunda-feira", 1], ["Terça-feira", 2],
                ["Quarta-feira", 3], ["Quinta-feira", 4], ["Sexta-feira", 5],
                ["Sábado", 6], ["Domingo", 7] ]
fld.help = "Informe um dia da semana."

order :Number

Ordem na qual o campo deverá ser exibido.

Type:
  • Number

permissionFilterFieldName :string

Determina se este campo deve ser utilizado como filtro extra para validar o poder de inserção, alteração e exclusão de um registro.
O nome do campo informado será o do campo da iPermission, que deve ser filtrado com o valor deste campo.
O uso deste recurso em uma inserção gera uma expressão equivalente a:

Type:
  • string
See:
  • module:@nginstack/engine/lib/classdef/ModelDef#getExtraFilterFields
  • module:@nginstack/engine/lib/classdef/ModelDef#getExtraFilterExpression
Example
connection.getPermission(
   Grid.classKey, 'iInsert', Grid.userKeyToValidatePermissions,
   'withoutInheritance', [ Field.permissionFilterFieldName, Field.value ]
)

rangeLimit :Limit

Indica se o campo representa início ou fim de um intervalo, atualmente rangeLimit só é suportado para campos do tipo data.

Type:
  • Limit

readOnly :ReadOnlyMode|boolean

Determina quando o campo deve ser somente para leitura. Valores possíveis:

  • ReadOnlyMode.NEVER ou false: o campo pode ser alterado;
  • ReadOnlyMode.ALWAYS ou true: o campo é somente leitura;
  • ReadOnlyMode.AFTER_INSERT: o campo pode ser modificado apenas durante a inserção. Após a inserção, o campo não poderá ser mais modificado.
  • ReadOnlyMode.FILLED: campo é somente leitura apenas se estiver preenchido, impedindo a modificação do primeiro valor informado.
Type:
  • ReadOnlyMode | boolean

required :boolean

Indica se o campo é de preenchimento obrigatório.

Type:
  • boolean

size :number

Tamanho do campo em caracteres. Utilizado apenas para campos do tipo "string" ou do tipo "password".

Type:
  • number

stringIfTrue :String

Texto que representará o campo do tipo "boolean" quando o mesmo estiver marcado ("true").

Type:
  • String
Default Value:
  • "T"

type :string

Tipo do campo. Observe na tabela abaixo os valores permitidos e sua utilização:
"string" - Tipo utilizado para campos que conterão texto;
"password" - Tipo utilizado para campos que conterão senhas;
"masterDetail" - Tipo utilizado para criar uma relação de 1 para N entre duas classes. Para utilizar esse tipo de campo é obrigatório o preenchimento das seguintes propriedades:

  • classKey: indica a classe de dados que contém os registros detalhes da relação. A classe de dados que definiu o campo do tipo "masterDetail" é a classe considerada mestre da relação;
  • masterFieldNames: indica os campos da classe de dados mestre que devem ser utilizados para filtrar os registros da classe de dados detalhe.
  • detailFieldNames: indica os campos da classe de dados detalhe que serão filtrados com os valores dos campos masterFieldNames da classe mestre.
    Pseudo-código para obtenção dos registros detalhes:

   var tabelaDetalhe = classes.getCachedDataSet(field.classKey);
   var camposMestre = getFieldValues(field.masterFieldNames);
   tabelaDetalhe.indexFieldNames = field.detailFieldNames;
   detail.setRange(camposMestre, camposMestre);



"grid" - Tipo utilizado para indicar que o campo deve ser visualizado como uma grade detalhe da classe de dados que o definiu. O seu propósito é similar ao tipo "masterdetail", no entanto, ele permite a exibição de dados detalhes cuja relação não pode ser estabelecida apenas pelas propriedades classKey, masterFieldNames e detailFieldNames. Sempre que for possível, é recomendado o uso do tipo "masterdetail". Campos do tipo "grid" não podem ser utilizados em definição de modelo de dados (x-model), sendo o seu uso restrito em definições de visão (x-view) e em processos.
"integer" - Tipo utilizado para campos que conterão números inteiros;
"number" - Tipo utilizado para campos que conterão números decimais;
(por padrão terão duas casas decimais)
"latitude" - Tipo utilizado para campos que conterão números decimais
para representar latitudes;
(por padrão terão até cinco casas decimais e a parte
inteira conterá até três casas)
"longitude" - Tipo utilizado para campos que conterão números decimais
para representar longitudes;
(por padrão terão até cinco casas decimais e a parte
inteira conterá até três casas)
"angle" - Tipo utilizado para campos que conterão números decimais
para representar ângulos;
(por padrão terão duas casas decimais e a parte
inteira conterá até três casas.)
"memo" - Tipo utilizado para campos que conterão textos longos;
(mais de 256 caracteres)
"date" - Tipo utilizado para campos que conterão datas;
"combo" - Tipo utilizado para campos que conterão listas de opções
ou combinação de outros tipos;
"time" - Tipo utilizado para campos do que conterão horas. Utilizado
para trabalhar com tempo;
"boolean" - Tipo utilizado para campos que conterão valores lógicos ou booleanos;
"file" - Tipo utilizado para campos que conterão arquivos;
"tree" - Tipo utilizado para campos que conterão grades do tipo treeGrid (árvore);


Para testar se o campo é de um determinado tipo, utilize as funções de teste de tipo: isString, isNumber, isMasterDetail, isGrid, etc.

Type:
  • string

upperName :string

Nome do campo em caixa alta.

Type:
  • string

userCanChangeNegativeKey :boolean

Indica se o usuário pode ou não alterar o conteúdo do campo, caso o registro seja de chave negativa (licenciado para o produto).

Type:
  • boolean

Methods


assign(field)

Copia as propriedades de um campo informado.

Parameters:
Name Type Description
field Field

Campo de onde as propriedades devem ser copiadas


assignObjectsTo(field)

Copia as propriedades que são objetos para um campo

Parameters:
Name Type Description
field

Objeto campo para onde as propriedades devem ser copiadas


assignTo(field)

Copia as propriedades de um campo para outro.

Parameters:
Name Type Description
field Field

Campo para onde as propriedades devem ser copiadas


clone(NewClass)

Cria uma cópia do campo.

Parameters:
Name Type Description
NewClass function

Classe em que o campo que será criado. Este parâmetro é opcional e deve ser utilizado apenas quando se deseja alterar a classe do campo que será clonado.

Returns:

Cópia do campo na classe informada.

Type
Field

isBoolean()

Indica se o campo é do tipo boolean.

Returns:

True se o campo é do tipo boolean, false caso contrário.

Type
boolean

isCombo()

Indica se o campo é um combo.

Returns:

True se o campo é do tipo combo, false caso contrário.

Type
boolean

isDate()

Indica se o campo é do tipo date.

Returns:

True se o campo é do tipo date, false caso contrário.

Type
boolean

isFile()

Indica se o conteúdo do campo são arquivos armazenados na VFS.

Returns:

True se o campo é do tipo file, false caso contrário.

Type
boolean

isInteger()

Indica se o campo é do tipo integer.

Returns:

True se o campo é do tipo integer, false caso contrário.

Type
boolean

isMasterDetail()

Indica se o campo é do tipo masterdetail.

Returns:

True se o campo for do tipo masterdetail.

Type
boolean

isMemo()

Indica se o campo é do tipo memo.

Returns:

True se o campo é do tipo memo, false caso contrário.

Type
boolean

isNumber()

Indica se o campo é do tipo number.

Returns:

True se o campo é do tipo number, false caso contrário.

Type
boolean

isPassword()

Indica se o campo armazena uma senha.

Returns:

True se o campo é do tipo password, false caso contrário.

Type
boolean

isString()

Indica se o campo é do tipo string.

Returns:

True se o campo é do tipo string, false caso contrário.

Type
boolean

isTime()

Indica se o conteúdo do campo é do tipo 'time'.

Para fins de compatibilidade, campos do tipo 'string' de tamanho 5 ou 8 com as palavras 'Hour' e 'Hora' no seu nome, ou com o sufixo H, são considerados do tipo 'time'. Esse comportamento tem o objetivo de suportar códigos legados de uma época onde não existia o tipo específico 'time'. Essa lógica é falha, pois pode considerar campos do tipo 'string' como do tipo 'time' indevidamente. Novas definições de campo sempre devem definir o tipo 'time' de forma explícita, pois em algum momento esse suporte aos códigos legados poderá ser removido.

Returns:

True se o campo é do tipo 'time', false caso contrário.

Type
boolean

validateValue(value)

Valida o valor informado para um campo.

Parameters:
Name Type Argument Description
value * <nullable>

O valor a ser validado. considerado como o índice de um campo do tipo combo.

Events


afterChange

Evento que será emitido após um campo ter sido alterado, permitindo que o desenvolvedor modifique outros campos com base no valor informado.

Type: FieldChangeEvent
Example
field('uf').on('afterChange', function (evt) {
   if (evt.newValue) {
     evt.data.localidade = null;
   }
 });

afterLookupAddResult

Evento emitido após o filtro dos resultados de uma pesquisa de um campo lookup. Esse evento será emitido uma vez, independente da quantidade de registros filtrados pelo evento lookupAddResult. Seu uso é recomendado quando há necessidade de limpar eventuais recursos que foram alocados em listeners do evento beforeLookupAddResult.

Type: FieldEvent
Example
field.on('afterLookupAddResult', function (evt) {
   evt.field.saldo_.empty();
 });

beforeChange

Evento que será emitido antes de um campo ser alterado, permitindo que o desenvolvedor impeça a alteração do campo, lançando um erro, ou altere o valor a ser informado no campo, modificando a propriedade FieldChangeEvent#newValue.

Type: FieldChangeEvent
Example
field.on('beforeChange', function (evt) {
   if (evt.newValue > 10)
     throw new Error('Valor não pode ser maior que 10');
 });

beforeLookupAddResult

Evento emitido antes do filtro dos resultados de uma pesquisa de um campo lookup. Esse evento será emitido uma vez, independente da quantidade de registros filtrados pelo evento lookupAddResult. É recomendado o seu uso para alocar recursos que serão utilizados pelos listeners do evento lookupAddResult, evitando alocar esses recursos a cada avaliação do filtro.

Type: FieldEvent
Example
field.on('beforeLookupAddResult', function (evt) {
   var process = evt.field.parent.process;
   // Saldo é um DataSet que será utilizado no evento lookupAddResult
   evt.field.saldo_ = saldo.consulta();
   evt.field.saldo_.indexFieldNames = 'LOTE';
 });

getOptions

Evento emitido quando for necessário obter as opções de um campo do tipo "combo". Necessário apenas se as opções não forem informadas diretamente por meio da propriedade options do campo.

Type: FieldOptionsEvent
Example
field.on('getOptions', function (evt) {
   evt.options = [['Opção A', 1], ['Opção B', 2]];
 });

lookupAddResult

Evento emitido durante a pesquisa de um campo lookup, permitindo que o desenvolvedor filtre as opções possíveis de serem informadas neste campo. Deve ser retornado um booleano para indicar se o registro indicado por LookupAddResultEvent#key pode ser utilizado como valor deste campo.

Type: FieldEvent
Example
field.on('lookupAddResult', function (evt) {
   return !evt.data.uf || evt.key.uf === evt.data.uf;
 })

lookupDisplay

Evento emitido quando o sistema precisa obter o valor de exibição de uma chave desta classe de dados. Os listeners registrados deverão preencher a propriedade LookupDisplayEvent#displayValue do evento emitido para informar o valor de exibição da chave indicada por LookupDisplayEvent#key.

Type: LookupDisplayEvent
Example
this.on('lookupDisplay', function (evt) {
   evt.displayValue = evt.key.nome;
 });

validate

Evento emitido antes de efetivar uma modificação com o objetivo de validar o preenchimento do campo.

Diferentemente dos eventos beforeChange e afterChange, esse evento não deve fazer uso de componentes de interface, pois ele tem o objetivo exclusivo de realizar validações de modelo de dados e pode ser chamado em contextos sem interação com o usuário, como APIs HTTP.

Type: FieldEvent
Example
grid.field('field_name').on('validate', function (evt) {
   if (evt.data.field_name < 0) {
     throw new Error('O valor deve ser positivo.');
   }
 });