Class: ViewDef

@nginstack/web-framework/lib/classdef/ViewDef~ ViewDef


new ViewDef(key)

Abstração da definição da camada de visão a partir de uma classe. Pode ser entendido como uma interface stateful para um mapeamentos objeto-relacional, na camada MVC.

Parameters:
Name Type Description
key string

Chave da classe

Extends

Members


canDuplicate :boolean

Indica se os registros da classe de dados podem ser duplicados pela grade do Web Framework.

Type:
  • boolean
Default Value:
  • true

canNavigate :boolean

Permite que a classe seja navegável para o menu principal do sistema.

Type:
  • boolean

confirmCancel :boolean|undefined

Habilita a confirmação de cancelamento na interface de grade do web framework quando conter o valor true.

Type:
  • boolean | undefined

confirmChange :boolean|undefined

Habilita a confirmação de alteração na interface de grade do web framework quando conter o valor true.

Type:
  • boolean | undefined

confirmDelete :boolean|undefined

Habilita a confirmação de remoção na interface de grade do web framework quando conter o valor true.

Type:
  • boolean | undefined

defaultExplorerIndex :Array.<string>|string

Índice utilizado para ordenar o DataSet do processo Explorer.ip. O processo Explorer.ip utilizará o método DataSet.setIndex se esta propriedade for um array de strings ou o processo utilizará a propriedade DataSet.indexFieldNames se defaultExplorerIndex for uma string.

Type:
  • Array.<string> | string

defaultGlobalActionName :string

Registra o nome de uma uma ação global para que esta ação seja executada automaticamente quando o usuário clicar sobre um dos registros da "Busca do sistema" no diálogo de busca. Será disparado um erro para o usuário caso a ação global, cujo nome for configurado nesta propriedade, tenha sua visibilidade removida no evento 'show', portanto, deve-se evitar alterar a visibilidade de ações globais configuradas como padrão.

Somente é possível existir uma ação global padrão em uma definição de classe. Informar um novo nome de ação global irá substituir o anteriormente informado.

Type:
  • string

defaultIndex :Array.<string>|string

Esta propriedade faz a mesma coisa que ViewDef.defaultExplorerIndex.

Type:
  • Array.<string> | string
Deprecated:
  • ViewDef.defaultExplorerIndex

defaultOpenInteraction :string

Interação padrão que será executada logo após a abertura do processo, através da API de link.

Type:
  • string

<non-null> defaultOpenInteractionParameters :Array.<string>

Parâmetros que serão passados para interação quando um processo abrir através da API de link.

Type:
  • Array.<string>

defaultProcess :number

Processo que deve ser executado ao clicar no menu principal em qualquer classe que essa propriedade estiver definida com a chave do processo.

Essa funcionalidade não é mais suportada no menu principal do sistema e os valores atribuídos a ela são ignorados.

Type:
  • number
Deprecated:
  • Yes

deprecatedInterfaceEnabled :boolean

Habilita o uso do iWeb.

Type:
  • boolean

fieldClass :function

Determina qual é a classe que é utilizada para construção de campos no Mapeamento objeto-relacional. O método ViewDef#field retornará uma instância da classe apresentada nesta propriedade. Ou seja, se existir um campo criado para o nome de campo fornecido, uma instancia da classe em fieldClass é fornecido se não houver é criada uma e retornada.

Type:
  • function

globalActions :GlobalActionSet

Ações globais de uma classe. Uma ação global é uma espécie de link para qualquer relatório ou processo do sistema.

Type:
  • GlobalActionSet

<non-null> gridDefinition :Object

Guarda as definições de grade que são declaradas por defineGrid.

Type:
  • Object
See:
  • ViewDef#defineGrid

icon :string

Ícone será apresentado no menu de navegação, caso esta classe represente um módulo do sistema. Deve ser um dos ícones disponíveis em Menu > Desenvolvimento > Componentes > Ícones.

Type:
  • string

imageHeight :number

Altura padrão em pixels da imagem associada a este registro, caso exista uma.

Type:
  • number

imageWidth :number

Largura padrão em pixels da imagem associada a este registro, caso exista uma.

Type:
  • number

<nullable> lookupTableViewWidth :number

Largura da grade em visão de tabela.

Type:
  • number

lookupWidth :number

Define a largura do campo lookup.

Type:
  • number

onAfterChange :LegacyEvent

Evento que injeta comportamento no momento depois da alteração de um registro. Esse evento apresenta a característica de disparar os listeners definidos nas classes ancestrais.

Type:
  • LegacyEvent
Deprecated:
  • Este evento não é emitido pelo Web Framework. Utilize o evento "afterChange" dos campos da classe.

onBeforeChange :LegacyEvent

Evento que injeta comportamento no momento antes da alteração de um registro. Esse evento apresenta a característica de disparar os listeners definidos nas classes ancestrais.

Type:
  • LegacyEvent
Deprecated:
  • Este evento não é emitido pelo Web Framework. Utilize o evento "beforeChange" dos campos da classe.

onCalculate :LegacyEvent

Evite o uso deste evento, ele não faz sentido para definição de classe.

Este evento não é emitido pelo Web Framework. Utilize o evento "calculate" dos campos da classe.

Type:
  • LegacyEvent
Deprecated:
  • Yes

<non-null> thumbnail :CellThumbnail

Controla a disposição da célula de imagem.

Type:
  • CellThumbnail

tooltip :string

Conteúdo de ajuda que será exibido ao repousar o cursor sobre a classe em um menu.

Essa funcionalidade não é mais suportada no menu principal do sistema e os valores atribuídos a esta propriedade são ignorados.

Type:
  • string
Deprecated:
  • Yes

zoomImageHeight :number

Indica a altura padrão em pixels da imagem associada a este registro quando está sendo exibida a ampliação dela, normalmente ativa quando ela recebe o foco do mouse.

Type:
  • number

zoomImageOnHover :boolean

Indica se haverá ampliação ao passar o cursor do mouse sobre uma imagem associada a este registro.

Type:
  • boolean

zoomImageWidth :number

Indica a largura padrão em pixels da imagem associada a este registro quando está sendo exibida a ampliação dela, normalmente ativa quando ela recebe o foco do mouse.

Type:
  • number

Methods


defineGrid(gridName, func)

Registra uma função de configuração que será executada para grades cujo nome seja gridName e que utilizem esta classe como a de definição dos dados. A classe de definição dos dados de uma grade é determinada pela propriedade Grid#definitionClass. Caso ela não tenha sido informada, será considerada a propriedade Grid#classKey. O uso desta função é recomendado para realizar configurações específicas de uma grade, que não se aplicam para todas as grades de uma classe de dados.
Caso sejam registradas várias funções de configuração para um mesmo nome de grade, será executada apenas a última registrada. Para executar as definições anteriores, deve ser executada a função global inherited.
Em campos do tipo masterDetail, o nome do campo será utilizado para obter as definições da grade. Ou seja, serão executadas as funções registradas para grades cujo nome seja igual ao nome do campo mestre-detalhe.
A função de definição é executada no momento da preparação da grade, que ocorre na primeira escrita ou quando a classe de dados da grade é alterada. Em campos do tipo mestre-detalhe, ela é executada antes do evento defineGrid do campo detalhe. Dessa forma, definições realizadas em um campo do tipo mestre-detalhe prevalecem sobre as definições realizadas por meio deste método.

Parameters:
Name Type Description
gridName string

Nome da grade.

func function

Função com que irá configurar a grade. No contexto desta função, this é a grade a ser configurada.

Example
this.defineGrid('Explorer', function () {
   inherited()
   this.field('iKey').visible = true;
 });

field(name [, type] [, size])

Obtém ou cria um campo na classe de dados. Este método retornará o campo existente com o nome informado ou criará um caso não exista. Nesse último caso, é obrigatório informar o tipo do campo. Além dos tipos suportados na declaração do modelo de dados (x-model), relacionados em ModelDef#field, também são suportados:

"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. Campos do tipo "grid" podem ser definidos em grades de variáveis, sem DataSet associado. Nesse caso, o evento createDataSet da grade detalhe deve ser configurado e as propriedades masterFieldNames, detailFieldNames e classKey não devem ser informadas.
"tree" - Tipo utilizado para campos que conterão grades do tipo treeGrid (árvore);

Parameters:
Name Type Argument Description
name string

Nome do campo.

type string <optional>

Tipo do campo. Opcional quando for solicitado um campo existente.

size number <optional>

Tamanho do campo em caracteres. Obrigatório apenas para os tipos "string" e "password".

Returns:
Type
Field

fileAttributes(vfsKey)

Informa os atributos de um determinado arquivo na tabela iVfs. Os atributos servem para informar se um arquivo será exibido, informar nome, ordem de exibição, permissão de controle e tooltip. A tabela iVfs representa o sistema de arquivos virtuais, ou seja, são arquivos que estão sendo armazenados diretamente no banco e são replicados para o cache local

Parameters:
Name Type Description
vfsKey number

Chave do arquivo.

Returns:

Atributos do arquivo.

Type
Object

toString()

Retorna uma string que informa qual a chave do x-class ao qual a instância foi criada.

Returns:
Type
string

Events


afterDuplicate

Evento que será emitido após um registro ser duplicado. Seu uso é recomendado para realizar sugestões de valores para o registro novo, recém duplicado.

Type: module:@nginstack/web-framework/lib/classdef/GridEvent~GridEvent
Example
this.on('afterDuplicate', function (evt) {
   evt.grid.process.alert('Registro duplicado.');
 });

afterScroll

Evento emitido após a navegação de um registro para um outro em uma grade associada a um DataSet. Também será emitido assim que a grade for escrita, momento em que ela se posicionar no registro corrente do DataSet.

Type: module:@nginstack/web-framework/lib/classdef/GridEvent~GridEvent

beforeDuplicate

Evento que será emitido antes de um registro seja duplicado. Seu uso é recomendado para verificar regras de negócio que indiquem se o registro pode ou não ser duplicado.

Type: module:@nginstack/web-framework/lib/classdef/GridEvent~GridEvent
Example
this.on('beforeDuplicate', function (evt) {
   evt.grid.process.alert('Duplicando registro em ' + evt.grid.name + '.');
 });

beforeScroll

Evento que será emitido antes da navegação de um registro para um outro em uma grade associada a um DataSet. Também será emitido assim que a grade for escrita, momento em que ela se posicionar no registro corrente do DataSet.

Type: module:@nginstack/web-framework/lib/classdef/GridEvent~GridEvent
Example
// No exemplo abaixo é dado um alerta informando o número do registro em que
 // se estava posicionado, caso a grade não esteja vazia.<br>
 this.on('beforeScroll', function (evt) {
   if (evt.data.recNo > 0) {
     evt.process.alert('Você estava no registro: ' + evt.data.recNo);
   });
 })

changeView

Evento que será emitido quando for alterado o modo de visão da grade.
A grade poderá ter seu modo de visão alterado a partir da propriedade viewMode que irá disparar este evento, ao chamar esse evento a propriedade viewMode estará com seu valor anterior á mudança de visão.
A grade também pode ter seu modo de visão alterado quando for chamado o grid.write() que possui um parâmetro que determina em que modo será escrita a grade.

Type: module:@nginstack/web-framework/lib/classdef/GridEvent~GridEvent
Example
// No exemplo abaixo quando o modo de visão da grade é alterado são alterados
 // também os botões visíveis pois algumas delas não fazem sentido em um ou outro
 // modo de visão. Como a modificação deve ser do modo formulário para tabela e
 // vice-versa, é utilizado uma expressão condicional para analisar o valor do viewMode.<br>
 this.on('changeView', function (evt) {
   if (evt.grid.viewMode === Grid.TABLEVIEW ){
     evt.grid.visibleButtons = ['Redefinir Grade'];
   } else {
     evt.grid.visibleButtons = ['Editar', 'Recarregar grades'];
   }
 });

defineClassesGrid

Evento que permite a customização da grade de classes no processo ClassesExplorer do Admin.

Type: module:@nginstack/web-framework/lib/classdef/GridEvent~GridEvent

definePermissionsGrid

Evento que permite a customização da grade de permissões.

Type: module:@nginstack/web-framework/lib/classdef/GridEvent~GridEvent

locate

Evento que será emitido quando a grade for localizar um conteúdo.
O comportamento padrão de localização da grade poderá ser substituído fazendo uso do método ngin.event.Listener#replaceListeners.

Type: module:@nginstack/web-framework/lib/classdef/GridLocateEvent~GridLocateEvent
Example
// O exemplo abaixo personaliza a busca para permitir que sejam buscados apenas
 // números e executa o evento padrão através do "inherited".<br>
 // O evento deverá retornar um valor booleano, sendo true para indicar que localizou
 // o registro. O dataSet da grid deve ser posicionado no registro localizado.
 this.replaceListeners('locate', function (evt, replacedEmit) {
   if (typeof evt.value !== 'number') {
     replacedEmit(evt)
     if (replacedEmit.locatedField) {
       grid.process.setNextInteraction('interactionName')
     }
   } else {
     throw new Error('Não é possível localizar valores diferentes de números!')
   }
 });

openKey

Evento emitido quando o usuário deseja abrir detalhes sobre um registro de um campo lookup ou deseja uma interface mais rica para auxiliar o seu preenchimento. nas classes ancestrais.

Type: module:@nginstack/web-framework/lib/classdef/OpenKeyEvent~OpenKeyEvent

showLog

A grade possui o botão de "Log" que ao ser acionado exibe o histórico de alterações do registro corrente. Este evento será emitido quando esse botão for acionado.
O processo padrão de histórico de alterações da grade poderá ser substituído fazendo uso do método ngin.event.Listener#replaceListeners.

Type: module:@nginstack/web-framework/lib/classdef/GridEvent~GridEvent
Example
this.replaceListeners('showLog', function (evt) {
   evt.grid.process.setNextInteraction('run', ['chave', evt.data.ikey], -1898143458);
   evt.preventDefault();
 });