Classes
- ApplyUpdatesAction
- ArrayBuffer
- Barcode
- Base64
- BigDecimal
- Classes
- Connection
- CriticalSection
- Crypto
- CryptoPKey
- Database
- DatabaseProxy
- DataSet
- DataSetStates
- DataTable
- DBCache
- DetailedError
- DSACryptoPKey
- EmailMessage
- EmailMessageHeader
- EmailMessagePart
- Encoder
- Engine
- Enginelet
- File
- FileSynchronizer
- GetFieldOptions
- GoogleVisualization
- GzipFile
- IdoDB
- IdoDBManager
- JavaImporter
- JavaRequest
- JSScanner
- JSSpecialWord
- JSTokenType
- JSTokenWord
- LicenseManager
- Logger
- MD5
- MemoryAnalyzer
- MemoryStream
- DataSourceColumnDef
- DataSourceColumns
- DataSourceColumn
- DataSourceDef
- DataSourceExecutor
- DataSourceFieldDef
- DataSourceField
- DataSourceFilterDef
- DataSourceFilters
- DataSourceFilter
- DataSourceQueryColumnDef
- DataSourceQueryDef
- DataSourceQueryFilterDef
- DataSourceQuery
- DataSourceResult
- DataSource
- UpdateOptions
- UpdateScript
- Barcode
- QRCode
- AfterPersistEvent
- BeforePersistEvent
- ClassDefCache
- ClassDefManager
- ClassDef
- ConfigDef
- DataEvent
- FieldChangeEvent
- FieldEvent
- FieldGroupSet
- FieldGroup
- FieldList
- FieldNameList
- FieldOptionsEvent
- Field
- LookupAddResultEvent
- LookupDisplayEvent
- ModelDef
- PermissionFieldScope
- PermissionField
- PersistEvent
- SessionConfiguration
- StrictModeEvaluator
- EngineCluster
- JSScanner
- JSSpecialWord
- JSTokenWord
- GzipFile
- ZipFile
- Zlib
- ZstdCompressor
- ZstdDecompressor
- Zstd
- Connection
- CryptoPKey
- Crypto
- DSACryptoPKey
- ECCryptoPKey
- HMAC
- MD5
- RSACryptoPKey
- SHA1
- SHA256
- SHA512
- Classes
- Database
- DBBackup
- DBCache
- DBTrackerPool
- DBTracker
- KeyPrefetcher
- KeyReplacer
- KeysUtilities
- LargeObject
- LobRecordIterator
- LobStorage
- LogDatumIterator
- QueryUtilities
- TransactionLog
- ApplyUpdatesAction
- ClientDataSet
- DataSetManagerError
- DataSetManager
- DataSetStates
- DataSetTransformer
- DataSet
- DataSetFieldDefs
- DeltaInspector
- GetFieldOptions
- RecordIterator
- Transaction
- DBKey
- Attr
- CDATASection
- CharacterData
- Comment
- DocumentFragment
- DocumentType
- Document
- DOMImplementation
- DOMString
- Element
- EntityReference
- Entity
- NamedNodeMap
- NodeList
- Node
- Notation
- ProcessingInstruction
- Text
- EmailMessageHeader
- EmailMessagePart
- EmailMessage
- Pop3
- Base32
- Base64
- Base85
- Encoder
- Hex
- Engine
- DetailedErrorBase
- DetailedError
- FatalError
- AdapterDescriptor
- Adapter
- Emitter
- EventTypeError
- Event
- LegacyEvent
- LegacyMethod
- Listener
- SurrogateListener
- FileInfo
- FileStorage
- FileSynchronizer
- ArgsError
- IDToken
- HtmlSanitizer
- Accepts
- HttpError
- BadRequest
- Forbidden
- NotAcceptable
- NotFound
- ServiceUnavailable
- Unauthorized
- RealmConfig
- RequestBody
- Request
- Response
- ServerId
- NumberFormat
- ResourceString
- IdoDBManager
- IdoDB
- File
- MemoryStream
- SearchRecord
- SerialPort
- Enginelet
- JavaImporter
- JavaRequest
- JWS
- LicenseManager
- Logger
- BigDecimal
- ApplicationSessionInfo
- EngineInfo
- SystemMonitor
- MultipartFormDataOptions
- MultipartFormDataPart
- MultipartFormDataReader
- MultipartFormData
- MultipartFormFile
- NetworkUtilities
- Socket
- WebSocket
- XMLHttpRequest
- OAuth2Client
- OpenIdClient
- OpenIdProvider
- OSApplication
- HOTP
- TOTP
- PhoneNumber
- HtmlToPdf
- Spool
- ProductManager
- Profiler
- ProgressMonitor
- Progress
- TaskProgressStatusArray
- TaskProgressStatus
- Regex
- Repository
- Broker
- ControllerEvent
- Controller
- RouteDef
- RouteResult
- RouteSetDef
- RouteSet
- RoutesValidator
- Route
- ScriptRunner
- Job
- RemoteScheduler
- Scheduler
- Task
- DatabaseSchemaObserver
- DatabaseSchema
- DataModelSchema
- AdministratorPasswordResetRequest
- AuthToken
- FieldPermissions
- PasswordResetService
- PasswordRulesUtilities
- PermissionAssignment
- PermissionMaintenance
- PermissionManager
- PermissionSchema
- SecurityPolicy
- Security
- Sequence
- SessionManager
- Session
- GeneralSettings
- StringList
- CriticalSection
- SyncEvent
- MockRequest
- MockResponse
- UnionFileSystem
- URLSearchParams
- VirtualFileSystem
- XMLStreamReader
- IClauseFrom
- IClauseJoin
- IClauseSelect
- IClauseWhere
- IColumn
- IJoinManager
- IQuery
- TestCaseEvent
- TestResult
- TestRunner
- TestSuiteRunner
- TestSuite
- EntityError
- EntityKeySet
- EntityKey
- EntityOptions
- EntitySetOptions
- EntitySet
- Entity
- LinkSet
- Link
- Audio
- ButtonTimer
- Button
- ECharts
- Chart
- CellThumbnail
- FieldCalculateEvent
- GetTreeIconEvent
- GlobalActionSet
- GlobalAction
- GridEvent
- GridFieldEvent
- GridLocateEvent
- LookupMultipleInsertEvent
- OpenKeyEvent
- TreeNodeEvent
- ViewDefField
- ViewDef
- FormDialogField
- FormDialog
- SimpleDialog
- UploadDialog
- CompositeVisualizationDef
- CompositeVisualizationSlot
- CompositeVisualization
- DataVisualizationDef
- DataVisualization
- EChartsVisualizationDef
- EChartsVisualization
- HighchartsVisualizationDef
- HighchartsVisualization
- ReportVisualizationColumnDef
- ReportVisualizationColumns
- ReportVisualizationColumn
- ReportVisualizationDef
- ReportVisualization
- VisualizationDef
- VisualizationFilterDef
- VisualizationFilters
- VisualizationFilter
- VisualizationFooterDef
- VisualizationHeaderDef
- VisualizationSchedulerJob
- Visualization
- Environment
- DataExporterFieldDef
- DataExporter
- DataSetExporter
- AvgFieldAggregator
- CountFieldAggregator
- FieldAggregator
- MaxFieldAggregator
- MinFieldAggregator
- SumFieldAggregator
- DownloadOptions
- FileLoader
- LoadedFile
- UploadedFile
- UploadOptions
- BeforeSelectRecordEvent
- DetailGrid
- GridExporter
- GridExportEvent
- GridField
- Grid
- TableViewBuffer
- TreeExpandEvent
- FakeResponse
- ControlChannel
- Label
- Controller
- MessageBuffer
- Interaction
- LayoutManager
- ProcessCreateEvent
- ProcessEvent
- ProcessInteractionEvent
- ProcessManager
- Process
- Promise
- PubSub
- Seeker
- Accumulator
- ColumnGroup
- Column
- Footer
- Header
- SimpleLayoutExporter
- SimpleLayout
- DeltaInspector
- RecordIterator
- DataSetUtils
- ScriptRunner
- Job
- AuthToken
- Regex
- ResourceString
- configureWithLocalSettings
- UnionFileSystem
- ZipFile
- OpenSSL
- OSApplication
- Pop3
- Profiler
- Progress
- ProgressMonitor
- Repository
- Request
- Response
- RSACryptoPKey
- Scheduler
- ScriptTag
- SearchRecord
- Security
- SerialPort
- Server
- Session
- SessionManager
- SHA1
- sleep
- Socket
- StreamedDatabaseBackup
- StringUtils
- SyncEvent
- SystemMonitor
- Task
- TaskProgressStatus
- TaskProgressStatusArray
- TextDecoder
- TextEncoder
- Counter
- ErrorStop
- PendingTaskManager
- PendingTaskScripts
- VirtualFileSystem
- XMLHttpRequest
- Zlib
Namespaces
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 para obter as opções de valores aceitos no preenchimento deste campo.
Ao configurar o evento
getOptions
de um campo, ele passa a ser comportar como um campo do tipo "combo", independentemente do tipo de dado informado na construção do campo.Este evento deve ser configurado 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 = DBKey.str(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.'); } });
-
afterCancel
-
Evento emitido após o cancelamento de uma inserção ou edição de um registro associado a classe de dados. Seu uso é recomendado para registrar que um usuário intencionalmente cancelou uma inserção ou edição. Importante: no momento da emissão deste evento o DataSet já concluiu o cancelamento da edição ou inserção, portanto a propriedade data não terá os dados do registro cancelado.
Type: DataEvent
-
afterDelete
-
Evento que será emitido após a exclusão de um registro associado a classe de dados. Seu uso é recomendado para realizar o registro de informações não essenciais, como logs de alterações.
Importante: este evento normalmente é emitido após a persistência das alterações no banco de dados. Visto que o sistema pode ser abruptamente interrompido, não há garantias de que ele será executado sempre que a classe de dados for alterada. Por esse motivo, não é recomendado o seu uso em regras de negócios.Type: DataEvent
-
afterEdit
-
Evento emitido depois de uma edição de um registro associado a classe de dados ter sido iniciada. Seu uso é recomendado para atualizar informações que indiquem o momento ou o usuário que está realizando a modificação.
Type: DataEvent
Example
// O exemplo abaixo pega o último horário em que o registro entrou em edição e grava // este valor em um campo somente leitura para o usuário on('afterEdit', function (evt) { evt.data.modificado = new Date(); evt.data.modificador = session.userKey; });
-
afterInsert
-
Evento emitido após a inserção de um registro associado a classe de dados. Seu uso é recomendado para sugerir os valores dos campos do novo registro, simplificando o preenchimento dos dados para o usuário.
Type: DataEvent
-
afterPersist
-
Evento emitido após o post e antes do afterPost, ou ainda, no caso de remoção de um registro ele deverá ser executado depois do delete e antes do afterDelete com o objetivo de fornecer a versão de alteração realizada pela persistência dos dados.
Type: AfterPersistEvent
Example
var logger = Logger.getLogger('package.MyClass'); this.on('afterPersist', function (evt) { logger.info('Registro ' + evt.key + ' da classe ' + evt.classKey + ' foi gravado com sucesso. Alteração: ' + evt.action + '. Versão: ' + evt.version); });
-
afterPost
-
Evento emitido depois da execução do método post do DataSet associado a classe de dados. Seu uso é recomendado para realizar o registro de informações não essenciais, como logs de alterações.
Importante: este evento normalmente é emitido após a persistência das alterações no banco de dados. Visto que o sistema pode ser abruptamente interrompido, não há garantias de que ele será executado sempre que a classe de dados for alterada. Por esse motivo, não é recomendado o seu uso em regras de negócios.Type: DataEvent
Example
on('afterPost', function (evt) { if (evt.data.recordCount > 5) { logger.debug('Registrado mais de 5 registros'); } })
-
beforeCancel
-
Evento emitido antes de cancelar a inserção ou edição de um registro associado a classe de dados. Seu uso é recomendado para registrar que um usuário intencionalmente cancelou uma inserção ou edição, ou para realizar algum tipo de confirmação, no caso deste evento estar sendo emitido em um contexto de interface.
Type: DataEvent
-
beforeDelete
-
Evento emitido antes da exclusão de um registro associado a classe de dados. Seu uso é recomendado para verificar regras de negócio que impeçam a remoção de um registro em uma classe de dados.
Type: DataEvent
Example
on('beforeDelete', function (evt) { if (session.userKey !== Users.ADMINISTRATOR) { throw new Error('Apenas o usuário "administrator" pode excluir este registro.'); } });
-
beforeEdit
-
Evento emitido antes da edição de um registro associado a classe de dados. Seu uso é recomendado para verificar regras de negócio que impeçam a edição de um registro da classe de dados.
Importante: no momento da emissão deste evento o DataSet ainda não encontra-se em estado de edição, portanto o registro corrente não deve ser modificado.Type: DataEvent
-
beforeInsert
-
Evento emitido antes da inserção de um registro associado a classe de dados. Seu uso é recomendado para verificar regras de negócio que impeçam a inserção de um novo registro em uma classe de dados.
Importante: no momento da emissão deste evento o DataSet ainda não possui dados do registro a ser inserido, portanto o registro corrente não deve ser modificado.Type: DataEvent
-
beforePersist
-
Evento emitido após o beforePost e antes do post, ou ainda, durante a remoção de um registro esse evento será executado depois do beforeDelete e antes do delete com intuito de fornecer os valores originais e modificados.
Caso haja uma regra configurada nesse evento o post da grade será responsável por persistir todas as informações que estejam na propriedade "transaction", que é uma instância do tipo Transaction. O intuito é armazenar datasets que devem ser persistidos junto com a alteração do registro.Type: BeforePersistEvent
Example
this.on('beforePersist', function (evt) { var evento = evt.transaction.getOrSet('erp.beforePersistEvent', function () { var evento = new DataSet(); dbCache.copyStructure('EVENTO', evento); evento.create(); return evento; }); if (evt.action === ApplyUpdatesAction.UPDATE && evt.beforeValues.uf !== evt.afterValues.uf) { evento.append(); // cria um registro na tabela evento com base evt.beforeValues e evt.afterValues evento.post(); } });
-
beforePost
-
Evento emitido antes da execução do método post do DataSet associado a classe de dados. Seu uso é recomendado para realizar validações se os dados do registro não ferem regras de negócio.
Type: DataEvent
Example
// O exemplo abaixo verifica se os valores nos campos "password" e "confirmPassword" // são iguais, ou seja, se o usuário digitou uma senha e a confirmou corretamente, // em caso negativo exibe um erro, impedindo que o registro seja inserido.<br> // O evento recebe os seguintes parâmetros:<br> on('beforePost', function (evt) { if (evt.data.password !== evt.data.confirmPassword) { throw new Error('A nova senha e a confirmação são diferentes. Digite novamente a senha.'); } });
-
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 = DBKey.from(evt.key, 'NOME'); });
-
validate
-
Evento emitido antes da execução do método post do DataSet associado a classe de dados. Seu uso é recomendado para realizar validações se os dados do registro não ferem regras de negócio.
Type: DataEvent
- Deprecated:
-
- Utilize o evento beforePost.
-
afterEvent
-
Evento emitido após a execução do método associado à ação de uma rota HTTP, mesmo que tenha ocorrido um erro durante a sua execução.
O seu uso é recomendado para fins de geração de logs ou para padronizar os resultados em um formato específico esperado pelo cliente da API HTTP.
Type: ControllerEvent
Example
this.on('afterAction', function (evt) { const original = evt.result; evt.result = RouteResult() .withStatus(Status.OK) .withContent({ success: !evt.error data: JSON.stringify(original.content) }); });
-
beforeAction
-
Evento emitido antes da execução do método associado à ação de uma rota HTTP.
O seu uso é recomendado para tratamentos ou validações que devem ocorrer para todas as rotas de uma API, ou para implementar um mecanismo de autorização customizado alternativo ao modelo de autorização padrão do sistema.
Type: ControllerEvent
Example
this.on('beforeAction', function (evt) { if (session.userKey == -1) { customAuthorization(evt.request.headers['x-user-token']); } });
-
error
-
Evento emitido se ocorrer um erro durante a execução do método associado à ação de uma rota HTTP.
O seu uso é recomendado para geração de logs ou para a geração de erros em um formato diferente do padrão do roteador HTTP, o qual expõe as propriedades do erro como propriedades de um objeto literal.
Observação: este evento irá capturar erros gerados nos eventos
beforeAction
eafterAction
, portanto ele será executado após esses eventos.Type: ControllerEvent
Example
this.on('error', function (evt) { evt.result = RouteResult() .withStatus(Status.OK) .withContent({ error: evt.error.message }); });
-
addTableColumns
-
Evento emitido após as colunas terem sido adicionadas em uma tabela.
Type: module:@nginstack/engine/lib/schema/DatabaseSchemaObserver~AddTableColumnsEvent
Example
const DatabaseSchema = require('@nginstack/engine/lib/schema/DatabaseSchema'); const DatabaseSchemaObserver = require('@nginstack/engine/lib/schema/DatabaseSchemaObserver'); const observer = new DatabaseSchemaObserver(); observer.on('addTableColumns', function (evt) { const columnNames = evt.columns.map(function (def) { return def.name; }); log.info('Columns added to table ' + evt.tableName + ': ' + columnNames.join(', )); }); DatabaseSchema.registerObserver(observer);
-
alterTableColumns
-
Evento emitido após as colunas terem sido alteradas em uma tabela.
Type: module:@nginstack/engine/lib/schema/DatabaseSchemaObserver~AlterTableColumnsEvent
Example
const DatabaseSchema = require('@nginstack/engine/lib/schema/DatabaseSchema'); const DatabaseSchemaObserver = require('@nginstack/engine/lib/schema/DatabaseSchemaObserver'); const observer = new DatabaseSchemaObserver(); observer.on('alterTableColumns', function (evt) { const columnNames = evt.columns.map(function (def) { return def.name; }); log.info('Columns altered on table ' + evt.tableName + ': ' + columnNames.join(', )); }); DatabaseSchema.registerObserver(observer);
-
dropTableColumns
-
Evento emitido após as colunas terem sido removidas de uma tabela.
Type: module:@nginstack/engine/lib/schema/DatabaseSchemaObserver~DropTableColumnsEvent
Example
const DatabaseSchema = require('@nginstack/engine/lib/schema/DatabaseSchema'); const DatabaseSchemaObserver = require('@nginstack/engine/lib/schema/DatabaseSchemaObserver'); const observer = new DatabaseSchemaObserver(); observer.on('dropTableColumns', function (evt) { log.info('Columns removed from table ' + evt.tableName + ': ' + evt.columns.join(', )); }); DatabaseSchema.registerObserver(observer);
-
show
-
Evento que será emitido antes da exibição desta ação global. Neste evento a ação global pode ter seus parâmetros complementados e suas propriedades alteradas dinamicamente de acordo com a chave do registro que está acionando essa ação global.
A propriedade
target
do evento é a instância da ação global.Type: GlobalActionEvent
- See:
-
- module:@nginstack/web-framework/lib/classdef/GlobalActionEvent~GlobalActionEvent
Example
globalAction.on('show', function (evt) { const key = DBKey.from(evt.key); if (key.num('classe') == CHAVE_CLASSE_CLIENTES) { evt.target.caption = 'Abrir cadastro do cliente'; } else { evt.target.caption = 'Abrir cadastro do fornecedor'; } evt.target.addParameter({ nome: key.str('nome') }); });
-
blur
-
Evento emitido quando o campo perde o foco. O uso deste evento não é recomendado, pois ele prejudica a usabilidade da grade ao torná-la mais lenta. Com o uso deste evento passa a ser necessária uma interação com o servidor durante a navegação de campos.
Type: GridFieldEvent
Example
field.on('blur', function (evt) { evt.field.parent.process.alert('O campo perdeu o foco.'); });
-
calculate
-
Evento que será emitido para obter o valor do campo calculado.
Type: FieldCalculateEvent | GridFieldEvent
Example
// O exemplo abaixo retorna o registro do DataSet em que o cursor está // posicionado e atribui esse valor ao campo. field.on('calculate', function (evt) { evt.value = evt.data.recNo; });
-
defineGrid
-
Evento emitido em campos do tipo "masterDetail" ou "grid" com o objetivo de permitir a configuração da grade detalhe.
Type: GridFieldEvent
Example
// O exemplo abaixo cria uma grade detalhe e seta o título como "Grade personalizada". grid.field('campo_detail_grid').on('defineGrid', function (evt) { var grid = evt.field.grid; grid.title = 'Grade detalhe'; });
-
focus
-
Evento emitido quando o campo recebe o foco. O uso deste evento não é recomendado, pois ele prejudica a usabilidade da grade ao torná-la mais lenta. Com o uso deste evento passa a ser necessária uma interação com o servidor durante a navegação de campos.
Type: GridFieldEvent
Example
// O exemplo abaixo exibe o help do campo no label "helpMessages" existente no // processo. field.on('focus', function (evt) { var label = evt.field.parent.process.helpMessages; label.text = evt.field.help; });
-
getTreeIconEvent
-
Evento emitido na apresentação de uma grade em árvore para obter o ícone de um nó.
Emitido apenas quando o field é do tipo "tree". O sender do evento é o nó corrente da árvore. Deve retornar o identificador de um dos ícones da biblioteca de ícones do Web Framework.Type: GetTreeIconEvent | GridFieldEvent
Example
field.on('getTreeIcon', function (evt) { if (!evt.node.level) { evt.icon = 'robot'; } });
-
lookupMultipleInsert
-
Evento emitido quando ocorrer uma inserção múltipla de registros a partir da grade Lookup.
A inserção múltipla de registros fica habilitada na grade Lookup por meio do botão 'Inserir como Novos' quando a propriedade 'allowMultipleInsert' do campo é definida como true.
O comportamento padrão é inserir automaticamente múltiplos registros de acordo com a seleção que ocorreu na grade Lookup, no entanto esse comportamento pode ser alterado por este tipo de evento.Type: LookupMultipleInsertEvent | GridFieldEvent
Example
// O exemplo abaixo, mostra a possibilidade de estender esse comportamento // herdando ou não o procedimento padrão. var field = grid.field('CAMPO', 'int64'); field.classKey = -1898187808; // Tipos de Arquivo field.allowMultipleInsert = true; field.replaceListeners('lookupMultipleInsert', function (evt, emitReplaced) { emitReplaced(evt); // herda o comportamento padrão (opcional) var grid = evt.field.parent; for (var i = 0; i < evt.lookupGrid.selectedRecords.length; ++i) { evt.lookupGrid.ds.bookmark = evt.lookupGrid.selectedRecords[i]; grid.ds.append(); grid.ds.campo = evt.lookupGrid.ds.ikey; grid.ds.obs = 'Registro inserido manualmente'; grid.ds.post(); } });
-
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.
Type: OpenKeyEvent | GridFieldEvent
Example
field.on('openKey', function (evt) { var parameters = [ 'baseClass', evt.classKey, 'keysToOpen', evt.value, 'fromOpenKey', true, 'lookupType', evt.lookupType ]; if (evt.target instanceof Field) { parameters.push( 'targetProcessId', evt.process.id, 'targetTabId', evt.process.currentTabId, 'targetGridName', evt.target.parent.name, 'targetFieldName', evt.target.name ); } evt.process.setNextInteraction('main', parameters, -1898145512, true); // Explorer.ip; });
-
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(); });
-
createDataSet
-
Evento que será emitido no momento em que a grade detalhe for necessitar do Dataset. Quando adicionado um listener a este evento, ele será o responsável por preparar o DataSet associado à grade detalhe.
Type: GridEvent
Example
// O exemplo abaixo cria um DataSet e retorna para a grid. detail.on('createDataSet', function (evt) { var result = new DataSet(); result.createField('iKey', 'int64'); result.createField('iContent', 'string', 255); result.create() evt.data = result; });
-
masterCancel
-
Evento que será emitido toda vez que ocorrer um cancel na master, útil quando algum campo na master tem influência nos campos da grade detalhe e é necessário desfazer uma alteração ao cancelar.
Importante: se você tentar usar o post da grade detalhe ou coloca-lá em edição nesse método, você nunca conseguirá tirar a grade de edição.Type: GridEvent
-
masterDelete
-
Evento que será emitido toda vez que ocorrer a exclusão de um registro na grade mestre. Seu uso é recomendado para excluir registros da grade detalhe que não façam sentido existir após a exclusão do registro mestre.
Importante: por padrão a grade detalhe registra um listener que implementa o comportamento definido pela propriedade #masterDeleteAction. Substitua os listeners definidos para este evento caso esse não seja o comportamento desejado.Type: GridEvent
Example
detail.replaceListeners('masterDelete', function (evt) { while (!evt.data.eof) { evt.date.del(); } });
-
masterInsert
-
Evento que será emitido quando ocorrer uma inserção na grade mestre.
Type: GridEvent
Example
// O exemplo abaixo insere um registro padrão no dataSet da detalhe, quando for inserido // um registro na mestre detail.on('masterInsert', function (evt) { var ds = evt.data.newSharedDataSet(); ds.append([evt.masterGrid.ds.chave, '123456']); ds.post(); });
-
masterPost
-
Evento que será emitido toda vez que ocorrer um post na grade mestre. Seu uso é recomendado para realizar alguma ação na grade detalhe após o post da Master, mas que ocorra antes do post da grade detalhe.
Este é um evento específico do fluxo de atualização da grade mestre detalhe e deve ser utilizado apenas nos casos em que a montagem dos dados da grade detalhe não são convencionais. Para regras de negócio, prefira utilizar o evento beforePost da grade detalhe.
Importante: neste evento não se deve alterar o estado de edição do dataset da grade detalhe, caso contrário os dados poderão ser gravados sem as validações contidas no evento beforePost ou a grade poderá ficar em constante estado de edição.
Type: GridEvent
-
masterScroll
-
Evento que será emitido quando ocorrer uma alteração do registro corrente na grade mestre. Seu uso é recomendado para definir um filtro no DataSet da grade detalhe.
Importante: a grade adiciona por padrão um evento que filtra os dados com base nas propriedades module:@nginstack/web-framework/lib/grid/GridField#masterFieldNames e module:@nginstack/web-framework/lib/grid/GridField#detailFieldNames. Executar os eventos já existentes aplicará este filtro. Caso não seja desejado, substitua os eventos definidos utilizando o método #replaceListeners.Type: GridEvent
Example
detail.replaceListeners('masterScroll', function (evt) { var masterData = evt.masterGrid.ds; evt.data.setRange([masterData.chave, masterData.tipo], [masterData.chave, masterData.tipo]); })
-
afterCancel
-
Evento emitido após o cancelamento de uma inserção ou edição de um registro associado a classe de dados. Seu uso é recomendado para registrar que um usuário intencionalmente cancelou uma inserção ou edição. Importante: no momento da emissão deste evento o DataSet já concluiu o cancelamento da edição ou inserção, portanto a propriedade data não terá os dados do registro cancelado.
Type: GridEvent
-
afterDelete
-
Evento que será emitido após a exclusão de um registro associado a classe de dados. Seu uso é recomendado para realizar o registro de informações não essenciais, como logs de alterações.
Importante: este evento normalmente é emitido após a persistência das alterações no banco de dados. Visto que o sistema pode ser abruptamente interrompido, não há garantias de que ele será executado sempre que a classe de dados for alterada. Por esse motivo, não é recomendado o seu uso em regras de negócios.Type: GridEvent
-
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: GridEvent
Example
grid.on('afterDuplicate', function (evt) { evt.grid.process.alert('Registro duplicado.'); });
-
afterEdit
-
Evento emitido depois de uma edição de um registro associado a classe de dados ter sido iniciada. Seu uso é recomendado para atualizar informações que indiquem o momento ou o usuário que está realizando a modificação.
Type: GridEvent
Example
// O exemplo abaixo pega o último horário em que o registro entrou em edição e grava // este valor em um campo somente leitura para o usuário on('afterEdit', function (evt) { evt.data.modificado = new Date(); evt.data.modificador = session.userKey; });
-
afterExpand
-
Evento emitido depois de um registro ser expandido pelo usuário.
Type: TreeExpandEvent
-
afterInsert
-
Evento emitido após a inserção de um registro associado a classe de dados. Seu uso é recomendado para sugerir os valores dos campos do novo registro, simplificando o preenchimento dos dados para o usuário.
Type: GridEvent
-
afterPost
-
Evento emitido depois da execução do método post do DataSet associado a classe de dados. Seu uso é recomendado para realizar o registro de informações não essenciais, como logs de alterações.
Importante: este evento normalmente é emitido após a persistência das alterações no banco de dados. Visto que o sistema pode ser abruptamente interrompido, não há garantias de que ele será executado sempre que a classe de dados for alterada. Por esse motivo, não é recomendado o seu uso em regras de negócios.Type: GridEvent
Example
on('afterPost', function (evt) { if (evt.data.recordCount > 5) { logger.debug('Registrado mais de 5 registros'); } })
-
afterPrepare
-
Evento emitido após a preparação da grade. A preparação da grade ocorre quando ela é escrita pela primeira vez na interface pelo método Grid#write.
Type: GridEvent
- Deprecated:
-
- Prefira utilizar o evento "defineFields".
- See:
-
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: GridEvent
-
afterSelectRecord
-
Evento que será emitido após um ou mais registros serem marcados ou desmarcados na grade.
Type: GridEvent
-
beforeCancel
-
Evento emitido antes de cancelar a inserção ou edição de um registro associado a classe de dados. Seu uso é recomendado para registrar que um usuário intencionalmente cancelou uma inserção ou edição, ou para realizar algum tipo de confirmação, no caso deste evento estar sendo emitido em um contexto de interface.
Type: GridEvent
-
beforeDelete
-
Evento emitido antes da exclusão de um registro associado a classe de dados. Seu uso é recomendado para verificar regras de negócio que impeçam a remoção de um registro em uma classe de dados.
Type: GridEvent
Example
on('beforeDelete', function (evt) { if (session.userKey !== ngin.keys.Users.ADMINISTRATOR) { throw new Error('Apenas o usuário "administrator" pode excluir este registro.'); } });
-
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: GridEvent
Example
grid.on('beforeDuplicate', function (evt) { evt.grid.process.alert('Duplicando registro em ' + evt.grid.name + '.'); });
-
beforeEdit
-
Evento emitido antes da edição de um registro da grade de dados. Seu uso é recomendado para verificar regras de negócio que impeçam a edição de um registro da classe de dados.
Importante: no momento da emissão deste evento o DataSet ainda não encontra-se em estado de edição, portanto o registro corrente não deve ser modificado.Type: GridEvent
-
beforeExpand
-
Evento emitido após um registro ser expandido em uma grade em árvore. O conceito de expansão e contração de registros existe apenas quando há campos do tipo "tree" em uma grade.
Type: TreeExpandEvent
-
beforeInsert
-
Evento emitido antes da inserção de um registro associado a classe de dados. Seu uso é recomendado para verificar regras de negócio que impeçam a inserção de um novo registro em uma classe de dados.
Importante: no momento da emissão deste evento o DataSet ainda não possui dados do registro a ser inserido, portanto o registro corrente não deve ser modificado.Type: GridEvent
-
beforePost
-
Evento emitido antes da execução do método post do DataSet associado a classe de dados. Seu uso é recomendado para realizar validações se os dados do registro não ferem regras de negócio.
Type: GridEvent
Example
// O exemplo abaixo verifica se os valores nos campos "password" e "confirmPassword" // são iguais, ou seja, se o usuário digitou uma senha e a confirmou corretamente, // em caso negativo exibe um erro, impedindo que o registro seja inserido.<br> // O evento recebe os seguintes parâmetros:<br> on('beforePost', function (evt) { if (evt.data.password !== evt.data.confirmPassword) { throw new Error('A nova senha e a confirmação são diferentes. Digite novamente a senha.'); } });
-
beforePrepare
-
Evento emitido antes da preparação da grade. A preparação da grade ocorre quando ela é escrita pela primeira vez na interface pelo método Grid#write.
Type: GridEvent
- Deprecated:
-
- Prefira utilizar o evento "defineFields".
- See:
-
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: 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> grid.on('beforeScroll', function (evt) { if (evt.data.recNo > 0) { evt.process.alert('Você estava no registro: ' + evt.data.recNo); }); })
-
beforeSelectRecord
-
Evento emitido quando um registro é marcado ou desmarcado, ou quando o usuário pressiona o botão inverter seleção. Este evento é emitido antes da seleção ocorrer, permitindo que o desenvolvedor possa alterar a seleção do usuário.
Type: BeforeSelectRecordEvent
Example
grid.on('beforeSelectRecord', function (evt) { var selected = createSet(evt.grid.selectedRecords); var alreadySelected = evt.bookmarks.some(function (bmk) { return bmk in selected; }); if (alreadySelected) { evt.process.alert('Não é permitido selecionar o registro mais de uma vez.'); evt.bookmarks = []; } });
-
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: 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> grid.on('changeView', function (evt) { if (evt.grid.viewMode === Grid.TABLEVIEW ){ evt.grid.visibleButtons = ['Redefinir Grade']; } else { evt.grid.visibleButtons = ['Editar', 'Recarregar grades']; } });
-
defineFields
-
Evento que deve ser utilizado para configurar os campos de uma grade. Todas as definições de campo devem ser declaradas através deste evento.
Configurações de campos realizadas fora deste evento serão perdidas caso sejam alteradas as propriedades Grid#classKey ou Grid#ds, ou caso seja executado o método Grid#refresh.Type: GridEvent
Example
grid.on('defineFields', function (evt) { var fld = evt.grid.field('matricula', 'int32'); fld.size = 6; fld.readOnly = true; fld.label = 'Número de matrícula'; fld.help = 'Número da matrícula do aluno.'; fld = evt.grid.field('disciplina', 'string', 256); fld.size = 6; fld.readOnly = true; fld.label = 'Disciplina'; fld.help = 'Código das disciplinas que serão cursadas por este aluno.'; });
-
export
-
Evento que será emitido quando o botão de exportar da grade for acionado.
Type: GridExportEvent
-
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: uwi.classdef.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. grid.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!') } });
-
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: GridEvent
Example
grid.replaceListeners('showLog', function (evt) { evt.grid.process.setNextInteraction('run', ['chave', evt.data.ikey], -1898143458); evt.preventDefault(); });
-
afterCreateProcess
-
Evento emitido após a criação de um novo processo no Web Framework. Seu uso é recomendado para customizações que devem ser aplicadas a todos os processos do sistema.
O processo recém criado estará disponível na propriedade
process
do evento.Por ser um evento global que afetará todos os processos, é recomendado que ele seja definido em um script de inicialização do Web Framework (/Configuração/Inicialização do Web Framework).
Type: ProcessCreateEvent
- See:
-
- module:@nginstack/web-framework/lib/process/ProcessCreationEvent
Example
const ProcessManager = require('@nginstack/web-framework/lib/process/ProcessManager'); const processManager = ProcessManager.getInstance(); processManager.on('afterCreateProcess', function (event) { event.process.help += '\nAdiciona uma ajuda padrão aos processos.'; });
-
processError
-
Evento emitido quando um erro é disparado durante a execução de um processo. Seu uso é recomendado para customizações sobre o diálogo de erro que será exibido ou sobre o próprio erro.
O erro estará disponível na propriedade
error
do evento.Por ser um evento global que afetará todos os processos, é recomendado que ele seja definido em um script de inicialização do Web Framework (/Configuração/Inicialização do Web Framework).
Type: ProcessErrorEvent
- See:
-
- module:@nginstack/web-framework/lib/process/ProcessErrorEvent
Example
const ProcessManager = require('@nginstack/web-framework/lib/process/ProcessManager'); const processManager = ProcessManager.getInstance(); processManager.on('processError', function (event) { if (event.error instanceof DetailedError) { event.dialogTitle = 'Erro detalhado'; } if (event.error.solution) { event.error.solution += (!event.error.solution.endsWith('.') ? '. ' : ' ') + 'Abra um ticket.'; } else { event.error.solution += 'Abra um ticket.'; } });
-
afterCreate
-
Evento emitido após a criação do processo no Web Framework. O processo recém criado estará disponível na propriedade
process
do evento.Type: ProcessCreateEvent
- See:
-
- module:@nginstack/web-framework/lib/process/ProcessCreationEvent
-
afterRunInteraction
-
Evento emitido após a execução de uma interação ou atividade do processo.
Type: ProcessInteractionEvent
-
beforeExit
-
Evento que sinaliza que o processo está sendo encerrado. Seu uso é recomendado quando há necessidade de alertar o usuário que o fechamento do processo poderá gerar perda de informações não gravadas.
Ele é emitido antes da aba do processo ser fechada, seja pelo usuário ou pelo método closeTab, ou quando um botão, atalho ou atividade do processo redirecionar o usuário para um outro processo na mesma aba.
A finalização do processo poderá ser impedida chamando o método preventDefault do evento.
Importante: este evento não será emitido quando o usuário fechar o navegador ou a aba onde o sistema está aberto. Por questões de segurança, os navegadores impedem a execução de JavaScript no fechamento de uma página web.
Type: module:@nginstack/web-framework/lib/process/ProcessEvent~ProcessEvent
Example
process.on('beforeExit', function (evt) { const process = evt.process; const grid = process.grid('pending'); if (!grid.ds.isEmpty){ if (!process.confirm('Ainda há operações a serem analisadas. Deseja realmente sair?') { evt.preventDefault(); } } });