UNPKG

@eccenca/gui-elements

Version:

GUI elements based on other libraries, usable in React application, written in Typescript.

86 lines (85 loc) 3.81 kB
import React from "react"; import { Intent } from "@blueprintjs/core/src/common/intent"; import { TestableComponent } from "../../components/interfaces"; import { ElapsedDateTimeDisplayUnits } from "../DateTimeDisplay/ElapsedDateTimeDisplay"; import { SilkActivityStatusConcrete, SilkActivityStatusProps } from "./ActivityControlTypes"; export interface SilkActivityControlProps extends TestableComponent { label: string | JSX.Element; /** * To add tags in addition to the widget status description */ tags?: JSX.Element; initialStatus?: SilkActivityStatusProps; registerForUpdates: (callback: (status: SilkActivityStatusProps) => any) => any; unregisterFromUpdates: () => any; showStartAction: boolean; showStopAction: boolean; failureReportAction?: IErrorReportAction; showReloadAction: boolean; viewValueAction?: { tooltip?: string; action: string | (() => any); }; executeActivityAction: (action: SilkActivityControlAction) => void; /** If specified, the activity control will offer a "Start prioritized" button while the activity is in the waiting state. * When the button is clicked it should start the activity via the startPrioritized endpoint. */ executePrioritized?: () => void; translate: (key: SilkActivityControlTranslationKeys) => string; elapsedTimeOfLastStart?: { prefix?: string; suffix?: string; translate: (unit: ElapsedDateTimeDisplayUnits) => string; }; layoutConfig?: SilkActivityControlLayoutProps; /** Configures when the status message should be hidden, e.g. because it is uninteresting. */ hideMessageOnStatus?: (concreteStatus: SilkActivityStatusConcrete | undefined) => boolean; /** * The translation of the time units */ translateUnits?: (unit: ElapsedDateTimeDisplayUnits) => string; } export interface SilkActivityControlLayoutProps { small?: boolean; border?: boolean; hasSpacing?: boolean; canShrink?: boolean; visualization?: "none" | "progressbar" | "spinner"; labelWrapper?: JSX.Element; } interface IErrorReportAction { title?: string; renderReport: (report: string | SilkActivityExecutionReportProps) => JSX.Element; renderMarkdown: boolean; fetchErrorReport: (markdown: boolean) => Promise<string | SilkActivityExecutionReportProps | undefined>; allowDownload?: boolean; downloadButtonValue: string; closeButtonValue: string; } export interface SilkActivityExecutionReportProps { errorSummary: string; projectId?: string; taskId?: string; activityId: string; projectLabel?: string; taskLabel?: string; taskDescription?: string; errorMessage?: string; stackTrace?: IStacktrace; } interface IStacktrace { errorMessage?: string; lines: string[]; cause?: IStacktrace; } export type SilkActivityControlTranslationKeys = "startActivity" | "stopActivity" | "reloadActivity" | "showErrorReport" | "startPrioritized"; export type SilkActivityControlAction = "start" | "cancel" | "restart"; /** Silk activity control. */ export declare function SilkActivityControl(props: SilkActivityControlProps): React.JSX.Element; export declare function useSilkActivityControl({ label, initialStatus, registerForUpdates, executeActivityAction, showReloadAction, showStartAction, viewValueAction, showStopAction, failureReportAction, unregisterFromUpdates, translate, elapsedTimeOfLastStart, tags, layoutConfig, hideMessageOnStatus, executePrioritized, translateUnits, ...props }: SilkActivityControlProps): { readonly elapsedDateTime: React.JSX.Element; readonly intent: Intent; readonly widget: React.JSX.Element; }; export declare const calcIntent: (activityStatus: SilkActivityStatusProps) => Intent; export {};