import { DataUnit, Filter, KeyboardManager, Record } from "@sankhyalabs/core"; import { DialogType, MessageOptions } from "@sankhyalabs/ezui/dist/collection/utils"; import { AlertItem } from "@sankhyalabs/ezui/dist/types/components/ez-alert-list/ez-alert-list"; import { IOption, ISearchArgument } from "@sankhyalabs/ezui/dist/types/components/ez-search/ez-search"; import { EventEmitter } from "../../stencil-public-runtime"; import { IAppletCallerParams } from "../../lib/applet-caller/applet-caller"; import { DataFetcher, Options } from "../../lib/http/data-fetcher/DataFetcher"; import AuthFetcher, { AutorizationType } from "../../lib/http/data-fetcher/fetchers/auth-fetcher"; import DataUnitFetcher from "../../lib/http/data-fetcher/fetchers/data-unit/dataunit-fetcher"; import GridConfigFetcher from "../../lib/http/data-fetcher/fetchers/grid-config-fetcher"; import ParametersFetcher from "../../lib/http/data-fetcher/fetchers/parameters-fecher"; import { IRemoveSearchListener, ISearchListener, PesquisaFetcher } from "../../lib/http/data-fetcher/fetchers/pesquisa-fetcher"; import { TotalsFetcher } from "../../lib/http/data-fetcher/fetchers/totals-fetcher"; import { IClientEventResponse } from "../../lib/http/data-fetcher/interfaces/IClientEventResponse"; import { IDataFetcherRecaller } from "../../lib/http/data-fetcher/recaller/IDataFetcherRecaller"; import { SnkMessageBuilder } from "../../lib/message/SnkMessageBuilder"; import { SnkErrorHandler } from "./errorhandler/snk-error-handler"; import { ILoadBarRequestListener } from "./request-listener/RequestListenerFactory"; import { TEMPLATES_SKELETON } from "../../lib/utils/constants"; import { LayoutFormConfig } from "../../lib/configs/LayoutFormConfig"; export declare class SnkApplication { private readonly NEW_VERSION_POPUP_LOCKER; private readonly FEATURE_FLAG_CACHE_DURATION; _parameters: ParametersFetcher; _urlParams: Map; _dataUnitFetcher: DataUnitFetcher; _gridConfigFetcher: GridConfigFetcher; _totalsFetcher: TotalsFetcher; _pesquisaFetcher: PesquisaFetcher; _authFetcher: AuthFetcher; _applicationResourceID: string; _popUp: HTMLEzPopupElement; _rightModal: HTMLEzModalElement; _errorHandler: SnkErrorHandler; _authPromises: Array; _removeVersionLayoutPopup: Function; _keyboardManager: KeyboardManager; _waitingAppReady: Array; _duCache: Map; _duPromises: Map>; _requestListener: ILoadBarRequestListener; private readonly _maxTimerAppLoading; private readonly _featureFlagsCache; private _lockManagerTimer; private _scrimWindowTimer; private _isBrowserTypeElectron; private _pendingActions; private _auth; private _currentPkParameter; private _loadPkParameter; private _isLoadedByPk; private _formConfigFetcher; private _LayoutFormConfigSingleton; private processPendingActions; private get parameters(); private getAuth; private getApplicationAuth; private _element; _applicationReady: boolean; _templateSkeleton: TEMPLATES_SKELETON; _activeScrimWindow: boolean; /** * Define se o componente deve usar o LockManager para controle de carregamento da aplicação. */ enableLockManagerLoadingApp: boolean; /** * Responsável por flexibilizar e padronizar o uso de mensagens nos blocos de construção. */ messagesBuilder: SnkMessageBuilder; /** * Nome da configuração utilizada para salvar as preferências dos blocos de construção. */ configName: string; /** * Chave da configuração legada da grade, utilizada para migração de configurações antigas. */ gridLegacyConfigName: string; /** * Chave da configuração legada do formulário, utilizada para migração de configurações antigas. */ formLegacyConfigName: string; /** * Usado para receber um parâmetro na inicialização da tela, e utilizá-lo conforme necessário * caso a tela receba um parâmetro, e, esta propriedade não seja informada * é criado um filtro de forma automática através do método defaultLoadByPk */ loadByPK: LoadByPkHandler; watchPropHandler(newValue: LoadByPkHandler, _: LoadByPkHandler): void; /** * Obtém o controlador de teclado. * @returns {Promise} O gerenciador de teclado. * @async */ getKeyboardManager(): Promise; /** * Obtém o notificador de Layout de formulário. * @returns {Promise} O configurador de Layout do Formulário. * @async */ getLayoutFormConfig(): Promise; /** * Obtém `true` caso o usuário logado seja o SUP. * @returns {Promise} `true` se o usuário for SUP, `false` caso contrário. * @async */ isUserSup(): Promise; /** * Adiciona uma ação pendente que deve ser executada por um determinado locker. * @param {string} actionsLocker - Nome do locker da ação que será adicionada. * @param {Function} action - Ação que será executada. * @returns {Promise} * @async */ addPendingAction(actionsLocker: string, action: Function): Promise; /** * Realiza a chamada ao Service Broker conforme o nome do serviço. * @param {string} serviceName - Nome do serviço. * @param {string | Object} payload - Dados que serão processados na ação. * @param {Options} [options] - Parâmetros de URL. * @returns {Promise} A resposta do Service Broker. * @async */ callServiceBroker(serviceName: string, payload: string | Object, options?: Options): Promise; /** * Inicializa o onboarding para uma chave específica. * @param {string} onboardingKey - A chave do onboarding a ser iniciado. * @returns {Promise} * @async */ initOnboarding(onboardingKey: string): Promise; private doInitOnboarding; /** * Obtém `true` caso o usuário logado tenha permissão para determinada ação. * @param {AutorizationType} access - O tipo de acesso a ser verificado. * @param {string} [resourceID] - O ID do recurso para verificar a permissão. Se não fornecido, verifica a permissão da aplicação. * @returns {Promise} `true` se o usuário tiver acesso, `false` caso contrário. * @async */ hasAccess(access: AutorizationType, resourceID?: string): Promise; /** * Obtém todos os acessos do usuário logado para um recurso específico ou para a aplicação. * @param {string} [resourceID] - O ID do recurso. Se não fornecido, obtém os acessos da aplicação. * @returns {Promise} Um objeto contendo todos os tipos de acesso e se o usuário os possui. * @async */ getAllAccess(resourceID?: string): Promise; /** * Obtém o valor de um parâmetro do tipo string. * @param {string} name - O nome do parâmetro. * @returns {Promise} O valor do parâmetro como string. * @async */ getStringParam(name: string): Promise; /** * Obtém o valor de um parâmetro do tipo Inteiro. * @param {string} name - O nome do parâmetro. * @returns {Promise} O valor do parâmetro como número inteiro. * @async */ getIntParam(name: string): Promise; /** * Obtém o valor de um parâmetro do tipo Decimal. * @param {string} name - O nome do parâmetro. * @returns {Promise} O valor do parâmetro como número decimal. * @async */ getFloatParam(name: string): Promise; /** * Obtém o valor de um parâmetro do tipo booleano. * @param {string} name - O nome do parâmetro. * @returns {Promise} O valor do parâmetro como booleano. * @async */ getBooleanParam(name: string): Promise; /** * Obtém o valor de um parâmetro do tipo data. * @param {string} name - O nome do parâmetro. * @returns {Promise} O valor do parâmetro como objeto Date. * @async */ getDateParam(name: string): Promise; /** * Exibe o conteúdo passado em um Popup. * @param {HTMLElement} content - O elemento HTML a ser exibido no popup. * @param {"auto" | "full"} [size="full"] - O tamanho do popup. * @param {boolean} [useHeader=true] - Define se o cabeçalho do popup deve ser usado. * @param {Function} [onCloseCallback] - Função a ser chamada quando o popup for fechado. * @returns {Promise} * @async */ showPopUp(content: HTMLElement, size?: "auto" | "full", useHeader?: boolean, onCloseCallback?: Function): Promise; /** * Exibe o conteúdo passado em um Modal. * @param {HTMLElement} content - O elemento HTML a ser exibido no modal. * @returns {Promise} * @async */ showModal(content: HTMLElement): Promise; /** * Apresenta uma lista de alertas. * Geralmente é utilizado para apresentar resultados de processamentos em lote. * @param {Array} alerts - A lista de alertas a serem exibidos. * @returns {Promise} */ showAlerts(alerts: Array): Promise; /** * Fecha o Modal e limpa o conteúdo. * @returns {Promise} * @async */ closeModal(): Promise; /** * Fecha o Popup e limpa o conteúdo. * @returns {Promise} * @async */ closePopUp(): Promise; /** * Verifica se a licença do cliente tem determinado opcional (produto). * @param {string} opcional - O nome do opcional ou uma string de opcionais separados por vírgula. * @returns {Promise} `true` se o cliente tiver o opcional, `false` caso contrário. * @async */ temOpcional(opcional: string): Promise; /** * Obtém a configuração de um recurso por service broker. * @param {string} key - A chave da configuração. * @returns {Promise} Os dados da configuração. * @async */ getConfig(key: string): Promise; /** * Retorna se uma feature flag global está ativa ou não. */ isFeatureActive(featureName: string): Promise; /** * Salva a configuração de determinado recurso. * @param {string} key - A chave da configuração. * @param {Object} data - Os dados da configuração a serem salvos. * @returns {Promise} O resultado da operação de salvamento. * @async */ saveConfig(key: string, data: Object): Promise; /** * Acessa informações de contexto "empurrados" na abertura da tela. * @param {string} attribName - O nome do atributo. * @returns {Promise} O valor do atributo. * @async */ getAttributeFromHTMLWrapper(attribName: string): Promise; /** * Abre determinada tela, repassando pkObject. * @param {string} resourceId - O ID do recurso da tela a ser aberta. * @param {Object} pkObject - O objeto de chave primária a ser passado para a tela. * @returns {Promise} * @async */ openApp(resourceId: string, pkObject: Object): Promise; /** * Realiza a chamada do WebConnection para realizar a exportação de arquivo. * @param {string} keyPort - Chave da porta que será requisitada. * @param {string} methodName - Nome do tipo de exportação de arquivo que será realizado. * @param {IAppletCallerParams} params - Parâmetros necessários para realizar a exportação do arquivo. * @returns {Promise} * @async */ webConnection(keyPort: string, methodName: string, params: IAppletCallerParams): Promise; private getDuPromissesStack; /** * Cria o DataUnit a partir do nome da entidade. É possível armazená-lo no cache * passando o dataUnitName, assim, se mais de uma chamada for feita, o mesmo DataUnit será usado. * @param {string} entityName - O nome da entidade. * @param {string} [dataUnitName] - O nome para identificar o DataUnit no cache. * @param {DataUnit} [parentDataUnit] - O DataUnit pai, se houver. * @param {string} [configName] - O nome da configuração a ser usada. * @param {string} [resourceID] - O ID do recurso. Se não fornecido, usa o da aplicação. * @returns {Promise} O DataUnit criado ou obtido do cache. * @async */ createDataunit(entityName: string, dataUnitName?: string, parentDataUnit?: DataUnit, configName?: string, resourceID?: string): Promise; private processResolveDataUnit; /** * Atualiza o cache de dataunits da aplicação. * @param {string} oldName - Nome do dataunit que está em cache (será removido). * @param {string} dataUnitName - Nome do dataunit que será armazenado em cache. * @param {DataUnit} dataUnit - Instância do Dataunit para ser armazenado em cache. * @returns {Promise} * @async */ updateDataunitCache(oldName: string, dataUnitName: string, dataUnit: DataUnit): Promise; /** * Obtém um DataUnit do cache ou cria um caso ainda não tenha sido criado. * @param {string} entityName - O nome da entidade. * @param {string} dataUnitName - O nome para identificar o DataUnit no cache. * @param {DataUnit} [parentDataUnit] - O DataUnit pai, se houver. * @param {string} [configName] - O nome da configuração a ser usada. * @param {string} [resourceID] - O ID do recurso. Se não fornecido, usa o da aplicação. * @returns {Promise} O DataUnit obtido do cache ou recém-criado. * @async */ getDataUnit(entityName: string, dataUnitName: string, parentDataUnit?: DataUnit, configName?: string, resourceID?: string): Promise; /** * Registra um client event para o DataFetcher da aplicação. * @param {String} eventID - Nome do evento para a aplicação se registrar. * @param {(clientEvent: IClientEventResponse, dataFetcherReacaller: IDataFetcherRecaller) => void} handler - Função de callback que será chamada quando o client event ocorrer. * @returns {Promise} * @async */ addClientEvent(eventID: String, handler: (clientEvent: IClientEventResponse, dataFetcherReacaller: IDataFetcherRecaller) => void): Promise; /** * Remove um client event do DataFetcher da aplicação. * @param {String} eventID - Nome do evento a ser removido. * @returns {Promise} * @async */ removeClientEvent(eventID: String): Promise; /** * Verifica se um client event está registrado no DataFetcher da aplicação. * @param {String} eventID - Nome do evento a ser verificado. * @returns {Promise} `true` se o evento estiver registrado, `false` caso contrário. * @async */ hasClientEvent(eventID: String): Promise; private get applicationResourceID(); /** * Obtém o resourceID da tela em questão. * @returns {Promise} O ID do recurso da aplicação. * @async */ getResourceID(): Promise; /** * Obtém o UserId do usuário logado. * @returns {Promise} O ID do usuário. * @async */ getUserID(): Promise; /** * Exibe o diálogo de alerta de acordo com os parâmetros passados. * @param {string} title - O título do alerta. * @param {string} message - A mensagem do alerta. * @param {string} [icon] - O nome do ícone a ser exibido. * @param {MessageOptions} [options] - Opções adicionais para a mensagem. * @returns {Promise} * @async */ alert(title: string, message: string, icon?: string, options?: MessageOptions): Promise; /** * Exibe o diálogo de erro de acordo com os parâmetros passados. * @param {string} title - O título do erro. * @param {string} message - A mensagem do erro. * @param {string} [icon] - O nome do ícone a ser exibido. * @param {MessageOptions} [options] - Opções adicionais para a mensagem. * @returns {Promise} * @async */ error(title: string, message: string, icon?: string, options?: MessageOptions): Promise; /** * Exibe o diálogo de sucesso de acordo com os parâmetros passados. * @param {string} title - O título da mensagem de sucesso. * @param {string} message - A mensagem de sucesso. * @param {string} [icon] - O nome do ícone a ser exibido. * @param {MessageOptions} [options] - Opções adicionais para a mensagem. * @returns {Promise} * @async */ success(title: string, message: string, icon?: string, options?: MessageOptions): Promise; /** * Exibe um diálogo de mensagem comum. * @param {string} title - O título da mensagem. * @param {string} message - A mensagem. * @param {string} [icon] - O nome do ícone a ser exibido. * @param {MessageOptions} [options] - Opções adicionais para a mensagem. * @returns {Promise} * @async */ message(title: string, message: string, icon?: string, options?: MessageOptions): Promise; /** * Exibe um diálogo de confirmação. * @param {string} title - O título da confirmação. * @param {string} message - A mensagem da confirmação. * @param {string} [icon] - O nome do ícone a ser exibido. * @param {DialogType} [dialogType] - O tipo de diálogo. * @param {MessageOptions} [options] - Opções adicionais para a mensagem. * @returns {Promise} `true` se confirmado, `false` caso contrário. * @async */ confirm(title: string, message: string, icon?: string, dialogType?: DialogType, options?: MessageOptions): Promise; /** * Exibe uma informação efêmera (de segundo plano). * @param {string} message - A mensagem a ser exibida. * @param {MessageOptions} [options] - Opções adicionais para a mensagem. * @returns {Promise} * @async */ info(message: string, options?: MessageOptions): Promise; /** * Obtém os totalizadores da grade. * @param {string} name - O nome da configuração de totalizadores. * @param {string} resourceID - O ID do recurso. * @param {Array} filters - A lista de filtros a serem aplicados. * @returns {Promise>} Um mapa com os nomes dos totalizadores e seus valores. * @async */ loadTotals(name: string, resourceID: string, filters: Array): Promise>; /** * Obtém a informação se o último carregamento do dataunit foi feito através de um loadByPk. * @returns {Promise} `true` se foi carregado por PK, `false` caso contrário. * @async */ isLoadedByPk(): Promise; /** * Remove registro do cache do PreLoader do dataunit. * Deve ser usado quando existe um dataunit usando loader do application, mas o removeLoader está sendo sobrescrito. * @param {DataUnit} dataUnit - O DataUnit do qual o registro será removido. * @param {Array} recordsIDs - Os IDs dos registros a serem removidos. * @returns {Promise} * @async */ preloadMangerRemoveRecord(dataUnit: DataUnit, recordsIDs: Array): Promise; private getCountSkeleton; private getSkeletonRandomWidth; /** * Emitido quando a aplicação for carregada. */ applicationLoaded: EventEmitter; /** * Emitido ao iniciar a carga do componente. */ applicationLoading: EventEmitter; private getAuthList; private get urlParams(); private getMessage; private get dataUnitFetcher(); private get totalsFetcher(); private get pesquisaFetcher(); private get authFetcher(); /** * Obtém as opções em componentes de pesquisa. * Ex.: snk-config-options * @param {ISearchArgument} searchArgument - Argumentos da pesquisa. * @param {string} fieldName - Nome do campo no DataUnit. * @param {DataUnit} dataUnit - Instância do DataUnit. * @param {ISearchCtxOptions} [ctxOptions] - Opções de contexto adicionais. * @returns {Promise | IOption>} Uma lista de opções ou uma única opção. * @async */ executeSearch(searchArgument: ISearchArgument, fieldName: string, dataUnit: DataUnit, ctxOptions?: ISearchCtxOptions): Promise | IOption>; private filterInvalidFields; private filterMathFields; private builOptionItem; /** * Realiza a pesquisa de registros * Ex.: snk-config-options * @param {string} mode - O modo da pesquisa ("ADVANCED" ou outro). * @param {string} argument - O argumento da pesquisa. * @param {any} options - Opções preparadas para a pesquisa. * @returns {Promise | IOption>} Uma lista de opções ou uma única opção. * @async */ executePreparedSearchPlus(mode: string, argument: string, options: any): Promise | IOption>; /** * Obtém as opções em componentes de pesquisa com base em opções preparadas. * Ex.: snk-config-options * @param {string} mode - O modo da pesquisa ("ADVANCED" ou outro). * @param {string} argument - O argumento da pesquisa. * @param {any} options - Opções preparadas para a pesquisa. * @returns {Promise | IOption>} Uma lista de opções ou uma única opção. * @async */ executePreparedSearch(mode: string, argument: string, options: any): Promise | IOption>; /** * Obtém `true` caso a tela esteja em modo de debug. */ isDebugMode(): Promise; /** * Obtém o nome (label) da aplicação. * @returns {Promise} O nome da aplicação. * @async */ getAppLabel(): Promise; /** * Adiciona um listener no fetcher de Pesquisa. * @param {string} entityName - O nome da entidade. * @param {DataUnit} dataUnit - A instância do DataUnit. * @param {ISearchListener} listener - O listener a ser adicionado. * @returns {Promise} Uma função para remover o listener. * @async */ addSearchListener(entityName: string, dataUnit: DataUnit, listener: ISearchListener): Promise; /** Realiza o import de um JavaScript que está disponível dentro da pasta /public da aplicação. @param {string | Array} relativePath - Define o caminho relativo para o arquivo JavaScript a ser importado, ou uma lista de caminhos. @returns {Promise} @async */ importScript(relativePath: string | Array): Promise; /** * Retorna o path relativo da aplicação. * @returns {Promise} O caminho relativo da aplicação. * @async */ getApplicationPath(): Promise; /** * Retorna o contexto Sankhya-om da aplicação. */ getModuleName(): string; /** * Com base em um campo realiza um "select distinct" respeitando os * filtros atuais do dataUnit e um critério de filtro para a própria * coluna. * @param {DataUnit} dataUnit - A instância do DataUnit. * @param {string} fieldName - O nome do campo para o select distinct. * @param {string} argument - O argumento de filtro para a coluna. * @returns {Promise>} Uma lista de valores distintos. * @async */ executeSelectDistinct(dataUnit: DataUnit, fieldName: string, argument: string): Promise>; /** * Retorna a instância do DataFetcher utilizado pelo application. * @returns {Promise} O DataFetcher da aplicação. * @async */ getDataFetcher(): Promise; /** * Retorna uma promise que será resolvida quando o snk-application estiver carregado e registrado no ApplicationContext. * @returns {Promise} O componente SnkApplication carregado. * @async */ whenApplicationReady(): Promise; /** * Atribui valor para parâmetros de contexto no componente de pesquisa. * @param {string} name - Nome do parâmetro. * @param {string} value - String conversível de acordo com o tipo do parâmetro. * @returns {Promise} * @async */ setSearchFilterContext(name: string, value: string): Promise; private clearContent; clearPopUpTitle(): Promise; setPopUpTitle(title: string): Promise; private pkChangeListener; private getResourceIdFromToken; private defaultLoadByPK; private loadDataWithPKFilter; private getFirstDataUnitFromDOM; private getFilterParamsFromPkObject; private getDefaultDataTypeLoadByPK; private buildFilterExpressionByPkObject; private showNewVersionPopup; private newVersionPopupEventListener; private handleShowNewVersionPopup; private hasToShowNewVersionPopup; private registerPkChangeListener; componentWillLoad(): void; setLayoutFormConfig(): Promise; connectedCallback(): void; disconnectedCallback(): void; componentDidLoad(): Promise; showScrimApp(active: boolean): Promise; private changeTemplateSkeleton; /** * Marca a aplicação para recarregar, opcionalmente especificando um tipo de esqueleto de carregamento. * @param {TEMPLATES_SKELETON} [templateSkeletonType] - O tipo de esqueleto de carregamento a ser exibido. * @returns {Promise} * @async */ markToReload(templateSkeletonType?: TEMPLATES_SKELETON): Promise; /** * Adiciona um bloqueio de carregamento à aplicação. * @param {boolean} [forceReady=false] - Se `true`, força a aplicação para o estado "não pronto" antes de adicionar o bloqueio. * @param {TEMPLATES_SKELETON} [templateSkeletonType] - O tipo de esqueleto de carregamento a ser exibido. * @returns {Promise} O ID do bloqueio adicionado. * @async */ addLoadingLock(forceReady?: boolean, templateSkeletonType?: TEMPLATES_SKELETON): Promise<() => void>; private resolveApplicationReady; private stopTimeoutLockManager; private checkTimeoutLimitLockManager; private initKeyboardManager; private removeShortcuts; private renderLoadingSkeleton; private getLoadingVisibilityStyle; private getSkeletonTemplateGrid; private getSkeletonTemplateGridWithSidebar; private getSkeletonTemplateGridWithPanel; private getSkeletonTemplateFormWithSidebar; private getSpinnerLoadingDefault; render(): any; } type LoadByPkHandler = (objPK: { pk: Record; }, redirectFrom?: string) => void; declare class PendingPromise { resolve: Function; reject: Function; constructor(resolve: Function, reject: Function); } export interface ISearchCtxOptions { allowsNonAnalytic?: boolean; useSearchPlus?: boolean; [key: string]: any; } export {};