@eccenca/gui-elements
Version:
GUI elements based on other libraries, usable in React application, written in Typescript.
86 lines (85 loc) • 3.81 kB
TypeScript
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 {};