import { EventEmitter } from '../../stencil-public-runtime'; import { DataUnit, DataUnitAction, DUActionInterceptor, Record, SelectionInfo } from '@sankhyalabs/core'; import { SnkApplication } from '../snk-application/snk-application'; import { IFieldConfig } from '@sankhyalabs/ezui/dist/types/utils/form/interfaces'; import { SnkMessageBuilder } from '../../lib/message/SnkMessageBuilder'; import { IRecordID } from '../snk-data-exporter/interfaces/IRecordID'; export declare class SnkDataUnit implements DUActionInterceptor { _onDataUnitResolve: Array<(dataUnit: DataUnit) => void>; _application: SnkApplication; _permissions: any; _parentSnkDataUnit: HTMLSnkDataUnitElement; _parentDataUnit: DataUnit; _openedAlert: boolean; _fieldsWithRmp: string[]; _fieldsWithRmPrecision: string[]; _metadataByRow: Map; _rowMetadataCache: Map; _formFieldsConfig: IFieldConfig[]; _internalDataStateChange: boolean; REGEX_DATAUNIT_NAME: RegExp; element: HTMLSnkDataUnitElement; fieldsToLink: Array; /** * Controla o estado atual dos dados. * @type {DataState} */ dataState: DataState; /** * Responsável por flexibilizar e padronizar o uso de mensagens nos blocos de construção. * @type {SnkMessageBuilder} */ messagesBuilder: SnkMessageBuilder; /** * Usado para criar o dataUnit uma única vez. * Se omitido, será usado o próprio nome da entidade. * @type {string} */ dataUnitName: string; /** * Determina qual a entidade que representa os dados em questão. * @type {string} */ entityName: string; /** * Determina quantas linhas são retornadas por página. * @type {number} * @default 150 */ pageSize: number; /** * Uma vez instanciado, pode-se obter o dataUnit por esta propriedade. * @type {DataUnit} */ dataUnit: DataUnit; /** * Executado imediatamente antes da ação de salvar as alterações. Útil no caso de validações por exemplo. * Caso retorne "false" (ou a promessa se resolva como false), cancela a ação. * @param {DataUnit} dataUnit - A instância do DataUnit. * @returns {boolean | Promise} `false` para cancelar a ação, `true` para continuar. */ beforeSave: (dataUnit: DataUnit) => boolean | Promise; /** * Executado após a ação de salvar. * @param {DataUnit} dataUnit - A instância do DataUnit. * @returns {void} */ afterSave: (dataUnit: DataUnit) => void; /** * Determina se será usado mensagem de confirmação padrão na tentativa de cancelar a edição. * @type {boolean} * @default true */ useCancelConfirm: boolean; /** * Responsável por evitar a mensagem de sucesso ao salvar. * @type {boolean} */ ignoreSaveMessage: boolean; /** * Usado para obter configuração de metadados. * @type {string} */ configName: string; /** * Identificador de recursos como configurações e acesso. * @type {string} */ resourceID: string; /** * Define a chave customizada para sobrescrever as mensagens (Não pegando pela entidade) * @type {string} */ domainMessagesBuilder: string; observePageSize(): void; observeDataUnitName(newValue: string, oldValue: string): void; observeEntityName(newValue: string, oldValue: string): void; observeDataState(newValue: DataState, oldValue: DataState): void; observeDataUnit(): void; observeMessagesBuilder(newValue: SnkMessageBuilder): void; /** * Emitido quando há qualquer mudança de estado no DataUnit. * @event dataStateChange * @type {CustomEvent} * @bubbles false */ dataStateChange: EventEmitter; /** * Emitido quando o DataUnit está pronto. * @event dataUnitReady * @type {CustomEvent} * @bubbles false */ dataUnitReady: EventEmitter; /** * Emitido quando o messagesBuilder é atualizado. * @event messagesBuilderUpdated * @type {CustomEvent} * @bubbles false */ messagesBuilderUpdated: EventEmitter; /** * Emitido quando há campos no DataUnit que devem ser ocultados. * @event dataUnitFieldsHidded * @type {CustomEvent} */ dataUnitFieldsHidded: EventEmitter; /** * Emitido quando um registro é adicionado ou copiado. * @event insertionMode * @type {CustomEvent} * @bubbles false */ insertionMode: EventEmitter; /** * Emitido quando se cancela uma inserção ou cópia. * @event cancelEdition * @type {CustomEvent} * @bubbles false */ cancelEdition: EventEmitter; onMasterFormConfigChange({ detail }: CustomEvent): void; /** * Obtém o dataUnit. * @returns {Promise} Uma promessa que resolve com a instância do DataUnit. * @async */ getDataUnit(): Promise; /** * Método que retorna a lista de IDs dos registros selecionados. * @returns {Promise>} Retorna uma promessa que resolve com a lista de IDs dos registros selecionados. * @async */ getSelectedRecordsIDsInfo(): Promise>; /** * Retorna os campos que possuem a propriedade "rmp" (Row Metadata Provider). * @returns {Promise} Uma promessa que resolve com um array de nomes de campos. * @async */ getFieldsWithRmp(): Promise; /** * Retorna os campos que possuem a propriedade "rm_precision" (Row Metadata Precision). * @returns {Promise} Uma promessa que resolve com um array de nomes de campos. * @async */ getFieldsWithRmPrecision(): Promise; /** * Busca os metadados da linha selecionada. * @param {Record | string} [record] - O registro ou ID do registro para o qual buscar os metadados. Se omitido, usa o registro selecionado. * @returns {Promise} Uma promessa que resolve com os metadados da linha. * @async */ getRowMetadata(record?: Record | string): Promise; private doGetRowMetadata; private buildGetPropRowMetadata; private resolvePrecisionFromMetadata; getCleanOnCopyFields(): Array; private fillFieldsWithRmp; private fillFieldsWithRmPrecision; private getCacheName; private updateDataStateRmp; private saveCacheRmd; private getMetadataByRow; private interceptRecordsAdded; private interceptRecordsCopied; private interceptDataChange; private interceptSavingData; private confirmMultipleSavingData; private getChangingFields; private buildChangingField; private getFieldTabName; private interceptDataSaved; private interceptEditionCanceled; private interceptRemovingRecords; private interceptDataLoaded; private interceptMetadataLoaded; interceptAction(action: DataUnitAction): Promise; private handleLoadRowMetadata; private updateRowMetadata; private handleDULinksOnMetadataLoaded; private handleRecordsCopied; private handleLinksWithParent; private buildRecordWithLinkedFields; private handleCleanOnCopy; private buildCopyWithCleanedFields; private showSuccessMessage; private isAllowed; private buildDataState; private handleDataSaved; private canIgnoreOperationMessage; private isCloneOrInsertOperation; private buildOperationMessage; private buildMultipleUpdateMessage; private isMultiplesUpdate; private handleRecordsRemoved; private buildRemoveFinishMessage; _dataUnitObserver: (action: DataUnitAction) => Promise; /** * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção * através de um pequeno modulo na estrutura da aplicação: * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js. * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-data-unit.msg.ts" */ private getMessage; private getMessageParams; private getMessageOperation; private getDataUnitParentOrChild; private updateMetadataWithRMP; loadDataUnit(): Promise; private getParentSnkDataUnit; private handlerLinkFields; private handleDUWithLinks; private processLinks; private getCleanDataUnitName; static getNearestInstance(element: HTMLElement): HTMLSnkDataUnitElement; private instanceMessagesBuilder; componentWillLoad(): void; disconnectedCallback(): void; componentDidLoad(): Promise; render(): any; } export interface DataState { copyMode: boolean; insertionMode: boolean; isStartingInsertionMode: boolean; isDirty: boolean; hasDirtyRecords: boolean; hasNext: boolean; hasPrevious: boolean; selectionInfo?: SelectionInfo; selectedRecord: Record; recordsIsEmpty?: boolean; metadataByRow?: Map; rowMetadata?: RowMetadata; } export interface RowMetadata { [key: string]: any; getProp: (propPath: string, fieldName?: string) => any; } export interface ChangingField { label: string; value: string; tabName?: string; }