UNPKG

@docsvision/webclient

Version:

Type definitions for DocsVision WebClient scripts and extensions.

315 lines (314 loc) 16.4 kB
import { GenModels } from "@docsvision/webclient/Generated/DocsVision.WebClient.Models"; import { IFileCommentsModalProps } from "@docsvision/webclient/Helpers/FileComments/FileCommentsModal"; import { IFilePreviewProps } from "@docsvision/webclient/Helpers/FilePreview/FilePreview"; import { DateTimeFormat } from "@docsvision/webclient/Legacy/DateTimeFormat"; import { $CardId, $CardTimestamp, $ExtendedDataSourceInfos, $RowId } from '@docsvision/webclient/System/LayoutServices'; import { Optional } from "@docsvision/web/core/services"; import { StandardRouteSemantics } from "@docsvision/webclient/System/StandardRouteSemantics"; import { IFileViewZipModalProps } from "@docsvision/webclient/Helpers/FileViewZip/FileViewZipModal"; /** @internal */ export declare class Helpers { constructor(); static GetTarget(event: Event): HTMLElement; static GetDateSeparator(): string; static HideCaption(): void; static ShowCaption(): void; static UpdateCaption(headerText?: string, color?: string): void; static GetKindNameFromFullString(str: string): string; static GetFileExtension(fileName: string): string; static GetFileNameWithoutExtension(fileName: string): string; static SetNumericControl(control: HTMLElement, callback?: Function): void; static InsertAfter(newElement: any, targetElement: any): void; static CapitalizeFirstLatter(str: string): string; static HideLoadingBar(): void; /** cspell:ignore toogle */ private toogle; static RunScripts(headerFolderName: HTMLElement): void; private static RunScriptsHelper; static LoadAndRunScript(url: string): Promise<{}>; static DisplayFileSize(fileSize: number): string; static CheckCardModified(cardId: string, timestamp: string, callback?: Function): Promise<any>; static CheckCardLocked(cardId: string, callback?: Function): Promise<any>; static CheckKindCreatable(cardTypeId: string, cardKindId: string, callback: Function): void; /** * Показать предпросмотр файла. * @param options Список опций. */ static ShowFilePreviewDialog(props: IFilePreviewProps, options?: { onClose?: () => void; onMount?: () => void; }): void; /** * Показать список комментариев файла. * @param options Список опций. * @returns Функция, вызов которой закрывает модальное окно */ static ShowFileComments(props: IFileCommentsModalProps, options?: { onClose?: () => void; onShowed?: () => void; }): () => void; /** * Показать окно редактирования имени файла. * @returns Функция, вызов которой закрывает модальное окно */ static ShowRenameFileDialog(props: any): () => void; /** * Показать окно содержимого zip-файла. * @returns Функция, вызов которой закрывает модальное окно */ static ShowViewZipFileDialog(props: IFileViewZipModalProps, options?: { onClose?: () => void; onShowed?: () => void; }): () => void; static ValidateForm(form: HTMLFormElement): boolean; static FindParentElement(headerFolderName: HTMLElement, parentClassName: string): HTMLElement; static SuppressEvents(e: Event): void; static FloatToCultureStr(num: number, precision?: number): string; static ParseFloatCultureStr(str: string): number; private static LegacyValidation; static Base64Encode(arrayBuffer: any): string; static Base64ArrayBuffer(arrayBuffer: any): string; static IsEdge(): boolean; static SetTooltip(headerFolderName: HTMLElement, extraOptions?: any): void; static SetTooltipFor(element: HTMLElement, rawText: string, extraOptions?: any): void; static DestroyTooltips(headerFolderName: HTMLElement): void; static ClearTips(): void; static LocationReload(): void; static GetCurrentDeviceType(): GenModels.DeviceType; static GetOriginalDeviceType(): GenModels.DeviceType; static GetIEVersion(): { major: string; minor: string; }; static CallCancelableIf(callback: Function, ...args: any[]): Promise<any>; static CallIf(callback: Function, ...args: any[]): any; static guidPattern: RegExp; static validGuid(guid: string): RegExpMatchArray; static iterateAsync<T>(collection: T[], func: (item: T) => Promise<any>): Promise<any>; private static iterateAsyncNext; /** @deprecated В методе нет необходимости, просто приведите к нужному типу. */ static deferredToPromise<T>(def: Promise<T>): Promise<T>; static getHashCode(str: string): number; static FindControlOnLayout: (name: string) => any; static CheckRouteSemantic: (semantic: StandardRouteSemantics) => boolean; static IsGuid(input: string): boolean; } export declare function setHtmlElementText(elem: HTMLElement, text: string): void; export declare function getHtmlElementText(elem: HTMLElement): string; /** @internal */ export declare class Animate { static SetEndCallback(htmlElement: HTMLElement, func: any): void; } /** @internal */ export declare class SessionStorage { static SupportsSessionStorage(): boolean; static SaveData(id: string, obj: any): boolean; static LoadData(id: string): any; } /** @internal */ export declare class ErrorHelper { static ThrowIfElementNotFound(htmlElement: HTMLElement): void; static ThrowIfElementIdNotFound(elementWithId: string): void; static ThrowIfNull(request: XMLHttpRequest): void; static RequestNotSupported(): void; static RequestError(errorText: string): void; static CertificateNotFound(errorText: string): void; static CertificateHasNoPrivateKey(): void; } /** Затемнение на весь экран с отображением анимации загрузки. */ export declare class ProgressOverlay { private progressOverlay; private overlayTimeout; private static OverlayElementId; /** Таймаут показа затемнения. */ Timeout: number; /** Показывает затемнение через {@link Timeout} мс., если к этому моменту не будет вызван {@link HideOverlay}. */ ShowOverlay(): void; /** Скрыть затемнение. */ HideOverlay(): void; private DestroyOverlay; private GetOrCreteateOverlay; } /** @internal */ export declare type RequestCustomCompleteCallback = (request: XMLHttpRequest, callerCallback?: Function) => void; /** @internal */ export declare enum LoadingBarValues { Start = 1, OneFourth = 25, Half = 50, AfterHalf = 60, ThreeFourth = 75, Full = 100, None = 0 } /** Возможные значения для параметра запроса в {@link RequestManager}. */ export declare enum RequestRejectValues { /** В функцию reject будет передан текст сообщения об ошибке. */ ErrorMessage = 0, /** В функцию reject будет передан объект ответа. */ ProcessedResponseObject = 1, /** В функцию reject будет передана необработанная строка тела ответа. */ RawResponseString = 2, /** В функцию reject будет передан объект запроса. */ RequestObject = 3 } /** Опции создания {@link Request}. */ export interface RequestOptions { /** Возвращать полученный ответ без предварительной обработки */ returnRawResponse?: boolean; /** Возвращать полученный ответ ошибки без предварительной обработки */ returnRawError?: boolean; /** Выполнять ли запрос асинхронном режиме (по умолчанию true). */ isAsync?: boolean; /** Отключить кеширование запроса (по умолчанию true). */ noCache?: boolean; /** Показывать ли затемнение на весь экран (по умолчанию false). */ isShowOverlay?: boolean; /** Показывать ли прогресс выполнения запроса в верхней части приложения (по умолчанию true). */ isShowLoadingBar?: boolean; /** При включенной защите от смены роута для запроса не будут вызваны колбэки, если во время выполнения запроса изменился роут. По умолчанию false. */ disableRouteChangeProtection?: boolean; /** Отключает показ диалогов при возникновении ошибок. */ disableDialogsOnErrors?: boolean; /** Значение, которое будет передано в функцию reject при возникновении ошибки в обработке запроса. По умолчанию - ErrorMessage. */ rejectValue?: RequestRejectValues; /** Тип ответа */ responseType?: XMLHttpRequestResponseType; /** Тип передаваемых данных */ contentType?: string; /** Дополнительные заголовки */ customHeaders?: IRequestHeader[]; /** * При указании данного параметра используются переданные сервисы вместо сервисов разметки. * * Например, передав собственный сервис $CardTimestamp можно управлять тем, где именно будет обновлен timestamp карточки. */ services?: $CardId & $CardTimestamp & Partial<$ExtendedDataSourceInfos> & Optional<$RowId>; } export interface IRequestHeader { name: string; value: string; } /** Обертка вокруг XMLHttpRequest с отображением прогресс-бара и обработкой ошибок. */ export declare class Request { private static ActiveRequests; private static LoadingBarElementId; private static LoadingBarWrapperElementId; /** @internal */ static ContentTypeForm: string; private isAsync; private responseType; private contentType; private dataType; private isShowOverlay; private isShowLoadingBar; private customErrorCallback; private customCriticalErrorCallback; private customCompleteCallback; private progressOverlay; private isForm; private noCache; private customHeaders?; /** Инициализирует объект. */ constructor(options?: RequestOptions); /** Режим выполнения запроса. */ get IsAsync(): boolean; set IsAsync(value: boolean); /** Отключено ли кеширование для запроса. */ get NoCache(): boolean; set NoCache(value: boolean); /** Тип данных, передаваемых с запросом. По умолчанию 'application/json; charset=UTF-8;'. */ set ContentType(value: string); get ContentType(): string; /** Собственный обработчик ситуации, когда запрос завершился с ошибкой. */ set CustomErrorCallback(value: Function); get CustomErrorCallback(): Function; /** Собственный обработчик ситуации, когда запрос завершился с ошибкой. */ set CustomCriticalErrorCallback(value: Function); get CustomCriticalErrorCallback(): Function; /** Собственный обработчик успешного завершения запроса. */ set CustomCompleteCallback(value: RequestCustomCompleteCallback); get CustomCompleteCallback(): RequestCustomCompleteCallback; /** Тип данных ответа. */ set ResponseType(value: XMLHttpRequestResponseType); get ResponseType(): XMLHttpRequestResponseType; /** Отображать ли затемнение экрана во время выполнения запроса. */ set IsShowOverlay(value: boolean); get IsShowOverlay(): boolean; /** Отображать ли ход выполнения запроса в верхней части приложения. */ set IsShowLoadingBar(value: boolean); get IsShowLoadingBar(): boolean; /** @internal */ set ShowLoadingBar(value: boolean); /** @internal */ get ShowLoadingBar(): boolean; private SetLoadingBar; /** Ожидаемый тип возвращаемых с сервера данных. */ set DataType(value: string); /** Отправляет запрос методом POST. */ PostData(url: string, requestData: any, callback?: Function): void; /** Отправляет запрос методом POST. */ PostDataEx(url: string, requestData: any): Promise<any>; /** Отправляет запрос методом POST без обработки ошибок. */ PostDataSilent(url: string, requestData: any): Promise<any>; /** Отправляет запрос методом GET. */ GetData(url: string, requestData?: any, callback?: Function): void; /** Отправляет запрос методом GET. */ GetDataEx(url: string, requestData?: any): Promise<any>; private ProcessRequest; private ProcessRequestEx; private static ParseError; private static GetRequestInstance; static unauthorizedConfirmDialog(): void; } /** @internal */ export declare class TabsHelper { static AddTabEvents(tabElement: HTMLElement): void; } /** * Утилита для исключения дублирования запуска длительных операций. * * Для использования необходимо создать экземпляр класса, и запускать операцию * через его метод perform. Если на момент вызова операция будет находится в процессе выполнения * с предыдущего раза, то вызов будет проигнорирован. * * Данная логика может быть использована при реализации запросов к серверу при нажатии на кнопку. * Использование данной утилиты исключает ситуацию отправки повторного запроса при двойном нажатии * кнопки пользователем. * * Пример использования: * * let once = new PerformOnce(); * button.addEventListener("click", () => { * once.perform(() => makeServerRequest()); * }); */ export declare class PerformOnce { performing: boolean; /** Выполняет операцию, если она уже не находится в процессе выполнения. */ perform(func: () => Promise<any> | Promise<any>): Promise<any>; } /** @internal */ export declare class DateTimeHelper { static GetLocaleFormat(locale: string): DateTimeFormat; } /** @internal */ export declare class EventHelper { static Change(headerFolderName: HTMLElement): void; static WindowResize(): void; } /** @deprecated */ export declare class ComponentBuilder<P, T = any, O = P> { static readonly MODIFIER_DELIMITER = "_"; protected component: any; protected mainClassName: string; protected additionalClassNames: string; protected propsForClasses: {}; constructor(component: any); static createWithProps<CustomInterface = {}>(): <SP, ST, SO>(component: any) => ComponentBuilder<SP & CustomInterface, ST, SO & CustomInterface>; setClasses(mainClassName: string, additionalClassNames?: string[] | string): ComponentBuilder<P, T, O>; setPropsForClasses(propsForClasses: any): this; protected buildClasses: (props: any) => string; protected attributeToClassName(attribute: string): string; build(): any; }