@eccenca/gui-elements 22.0.1 → 22.1.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -4
- package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js +18 -14
- package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
- package/dist/cjs/cmem/ActivityControl/SilkActivityControl.js +58 -30
- package/dist/cjs/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
- package/dist/cjs/cmem/ActivityControl/index.js +11 -0
- package/dist/cjs/cmem/ActivityControl/index.js.map +1 -0
- package/dist/cjs/cmem/ContentBlobToggler/index.js +8 -0
- package/dist/cjs/cmem/ContentBlobToggler/index.js.map +1 -0
- package/dist/cjs/cmem/index.js +14 -13
- package/dist/cjs/cmem/index.js.map +1 -1
- package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlow.js +57 -0
- package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlow.js.map +1 -0
- package/dist/cjs/cmem/react-flow/configuration/_colors-graph.module.scss +35 -0
- package/dist/cjs/cmem/react-flow/configuration/_colors-linking.module.scss +29 -0
- package/dist/cjs/cmem/react-flow/configuration/_colors-workflow.module.scss +22 -0
- package/dist/cjs/cmem/react-flow/configuration/graph.js +31 -0
- package/dist/cjs/cmem/react-flow/configuration/graph.js.map +1 -0
- package/dist/cjs/cmem/react-flow/configuration/linking.js +29 -0
- package/dist/cjs/cmem/react-flow/configuration/linking.js.map +1 -0
- package/dist/cjs/cmem/react-flow/configuration/unspecified.js +15 -0
- package/dist/cjs/cmem/react-flow/configuration/unspecified.js.map +1 -0
- package/dist/cjs/cmem/react-flow/configuration/workflow.js +27 -0
- package/dist/cjs/cmem/react-flow/configuration/workflow.js.map +1 -0
- package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js +285 -0
- package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js.map +1 -0
- package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js +81 -0
- package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js.map +1 -0
- package/dist/cjs/components/AutoSuggestion/SingleLineCodeEditor.js +46 -0
- package/dist/cjs/components/AutoSuggestion/SingleLineCodeEditor.js.map +1 -0
- package/dist/cjs/components/AutocompleteField/AutoCompleteField.js +8 -12
- package/dist/cjs/components/AutocompleteField/AutoCompleteField.js.map +1 -1
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/ContextOverlay/ContextMenu.js +1 -1
- package/dist/cjs/components/ContextOverlay/ContextMenu.js.map +1 -1
- package/dist/cjs/components/Dialog/Modal.js +2 -2
- package/dist/cjs/components/Dialog/Modal.js.map +1 -1
- package/dist/cjs/components/Dialog/SimpleDialog.js.map +1 -1
- package/dist/cjs/components/Icon/Icon.js.map +1 -1
- package/dist/cjs/components/Icon/canonicalIconNames.js +30 -0
- package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
- package/dist/cjs/components/MultiSelect/MultiSelect.js +219 -0
- package/dist/cjs/components/MultiSelect/MultiSelect.js.map +1 -0
- package/dist/cjs/components/Tabs/Tab.js +95 -0
- package/dist/cjs/components/Tabs/Tab.js.map +1 -0
- package/dist/cjs/components/Tabs/TabTitle.js +20 -0
- package/dist/cjs/components/Tabs/TabTitle.js.map +1 -0
- package/dist/cjs/components/Tabs/Tabs.js +29 -19
- package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
- package/dist/cjs/components/Tag/Tag.js +7 -1
- package/dist/cjs/components/Tag/Tag.js.map +1 -1
- package/dist/cjs/extensions/react-flow/edges/utils.js +96 -4
- package/dist/cjs/extensions/react-flow/edges/utils.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeContent.js +5 -4
- package/dist/cjs/extensions/react-flow/nodes/NodeContent.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeContentExtension.js +2 -2
- package/dist/cjs/extensions/react-flow/nodes/NodeContentExtension.js.map +1 -1
- package/dist/cjs/extensions/react-flow/nodes/NodeTools.js.map +1 -1
- package/dist/cjs/index.js +17 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js +25 -0
- package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js.map +1 -0
- package/dist/cjs/legacy-replacements/Button/Button.js +61 -0
- package/dist/cjs/legacy-replacements/Button/Button.js.map +1 -0
- package/dist/cjs/legacy-replacements/Button/DismissiveButton.js +25 -0
- package/dist/cjs/legacy-replacements/Button/DismissiveButton.js.map +1 -0
- package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js +25 -0
- package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js.map +1 -0
- package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js +55 -0
- package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js.map +1 -0
- package/dist/cjs/legacy-replacements/Radio/RadioButton.js +48 -0
- package/dist/cjs/legacy-replacements/Radio/RadioButton.js.map +1 -0
- package/dist/cjs/legacy-replacements/Tabs/Tabs.js +36 -0
- package/dist/cjs/legacy-replacements/Tabs/Tabs.js.map +1 -0
- package/dist/cjs/legacy-replacements/TextField/TextField.js +75 -0
- package/dist/cjs/legacy-replacements/TextField/TextField.js.map +1 -0
- package/dist/cjs/legacy-replacements/index.js +22 -0
- package/dist/cjs/legacy-replacements/index.js.map +1 -0
- package/dist/es5/cmem/ActivityControl/ActivityControlWidget.js +19 -15
- package/dist/es5/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
- package/dist/es5/cmem/ActivityControl/SilkActivityControl.js +56 -30
- package/dist/es5/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
- package/dist/es5/cmem/ActivityControl/index.js +4 -0
- package/dist/es5/cmem/ActivityControl/index.js.map +1 -0
- package/dist/es5/cmem/ContentBlobToggler/index.js +3 -0
- package/dist/es5/cmem/ContentBlobToggler/index.js.map +1 -0
- package/dist/es5/cmem/index.js +6 -8
- package/dist/es5/cmem/index.js.map +1 -1
- package/dist/es5/cmem/react-flow/ReactFlow/ReactFlow.js +43 -0
- package/dist/es5/cmem/react-flow/ReactFlow/ReactFlow.js.map +1 -0
- package/dist/es5/cmem/react-flow/configuration/_colors-graph.module.scss +35 -0
- package/dist/es5/cmem/react-flow/configuration/_colors-linking.module.scss +29 -0
- package/dist/es5/cmem/react-flow/configuration/_colors-workflow.module.scss +22 -0
- package/dist/es5/cmem/react-flow/configuration/graph.js +23 -0
- package/dist/es5/cmem/react-flow/configuration/graph.js.map +1 -0
- package/dist/es5/cmem/react-flow/configuration/linking.js +21 -0
- package/dist/es5/cmem/react-flow/configuration/linking.js.map +1 -0
- package/dist/es5/cmem/react-flow/configuration/unspecified.js +12 -0
- package/dist/es5/cmem/react-flow/configuration/unspecified.js.map +1 -0
- package/dist/es5/cmem/react-flow/configuration/workflow.js +19 -0
- package/dist/es5/cmem/react-flow/configuration/workflow.js.map +1 -0
- package/dist/es5/components/AutoSuggestion/AutoSuggestion.js +347 -0
- package/dist/es5/components/AutoSuggestion/AutoSuggestion.js.map +1 -0
- package/dist/es5/components/AutoSuggestion/AutoSuggestionList.js +93 -0
- package/dist/es5/components/AutoSuggestion/AutoSuggestionList.js.map +1 -0
- package/dist/es5/components/AutoSuggestion/SingleLineCodeEditor.js +42 -0
- package/dist/es5/components/AutoSuggestion/SingleLineCodeEditor.js.map +1 -0
- package/dist/es5/components/AutocompleteField/AutoCompleteField.js +8 -12
- package/dist/es5/components/AutocompleteField/AutoCompleteField.js.map +1 -1
- package/dist/es5/components/Button/Button.js.map +1 -1
- package/dist/es5/components/ContextOverlay/ContextMenu.js +1 -1
- package/dist/es5/components/ContextOverlay/ContextMenu.js.map +1 -1
- package/dist/es5/components/Dialog/Modal.js +2 -2
- package/dist/es5/components/Dialog/Modal.js.map +1 -1
- package/dist/es5/components/Dialog/SimpleDialog.js.map +1 -1
- package/dist/es5/components/Icon/Icon.js.map +1 -1
- package/dist/es5/components/Icon/canonicalIconNames.js +30 -0
- package/dist/es5/components/Icon/canonicalIconNames.js.map +1 -1
- package/dist/es5/components/MultiSelect/MultiSelect.js +301 -0
- package/dist/es5/components/MultiSelect/MultiSelect.js.map +1 -0
- package/dist/es5/components/Tabs/Tab.js +98 -0
- package/dist/es5/components/Tabs/Tab.js.map +1 -0
- package/dist/es5/components/Tabs/TabTitle.js +16 -0
- package/dist/es5/components/Tabs/TabTitle.js.map +1 -0
- package/dist/es5/components/Tabs/Tabs.js +11 -21
- package/dist/es5/components/Tabs/Tabs.js.map +1 -1
- package/dist/es5/components/Tag/Tag.js +7 -1
- package/dist/es5/components/Tag/Tag.js.map +1 -1
- package/dist/es5/extensions/react-flow/edges/utils.js +99 -5
- package/dist/es5/extensions/react-flow/edges/utils.js.map +1 -1
- package/dist/es5/extensions/react-flow/nodes/NodeContent.js +21 -4
- package/dist/es5/extensions/react-flow/nodes/NodeContent.js.map +1 -1
- package/dist/es5/extensions/react-flow/nodes/NodeContentExtension.js +2 -2
- package/dist/es5/extensions/react-flow/nodes/NodeContentExtension.js.map +1 -1
- package/dist/es5/extensions/react-flow/nodes/NodeTools.js.map +1 -1
- package/dist/es5/index.js +9 -2
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/legacy-replacements/Button/AffirmativeButton.js +29 -0
- package/dist/es5/legacy-replacements/Button/AffirmativeButton.js.map +1 -0
- package/dist/es5/legacy-replacements/Button/Button.js +65 -0
- package/dist/es5/legacy-replacements/Button/Button.js.map +1 -0
- package/dist/es5/legacy-replacements/Button/DismissiveButton.js +29 -0
- package/dist/es5/legacy-replacements/Button/DismissiveButton.js.map +1 -0
- package/dist/es5/legacy-replacements/Button/DisruptiveButton.js +29 -0
- package/dist/es5/legacy-replacements/Button/DisruptiveButton.js.map +1 -0
- package/dist/es5/legacy-replacements/Checkbox/Checkbox.js +59 -0
- package/dist/es5/legacy-replacements/Checkbox/Checkbox.js.map +1 -0
- package/dist/es5/legacy-replacements/Radio/RadioButton.js +52 -0
- package/dist/es5/legacy-replacements/Radio/RadioButton.js.map +1 -0
- package/dist/es5/legacy-replacements/Tabs/Tabs.js +40 -0
- package/dist/es5/legacy-replacements/Tabs/Tabs.js.map +1 -0
- package/dist/es5/legacy-replacements/TextField/TextField.js +81 -0
- package/dist/es5/legacy-replacements/TextField/TextField.js.map +1 -0
- package/dist/es5/legacy-replacements/index.js +10 -0
- package/dist/es5/legacy-replacements/index.js.map +1 -0
- package/dist/types/cmem/ActivityControl/ActivityControlTypes.d.ts +2 -1
- package/dist/types/cmem/ActivityControl/ActivityControlWidget.d.ts +39 -2
- package/dist/types/cmem/ActivityControl/SilkActivityControl.d.ts +16 -3
- package/dist/types/cmem/ActivityControl/index.d.ts +3 -0
- package/dist/types/cmem/ContentBlobToggler/index.d.ts +2 -0
- package/dist/types/cmem/index.d.ts +8 -8
- package/dist/types/cmem/react-flow/ReactFlow/ReactFlow.d.ts +14 -0
- package/dist/types/cmem/react-flow/configuration/graph.d.ts +21 -0
- package/dist/types/cmem/react-flow/configuration/linking.d.ts +19 -0
- package/dist/types/cmem/react-flow/configuration/unspecified.d.ts +9 -0
- package/dist/types/cmem/react-flow/configuration/workflow.d.ts +17 -0
- package/dist/types/components/AutoSuggestion/AutoSuggestion.d.ts +67 -0
- package/dist/types/components/AutoSuggestion/AutoSuggestionList.d.ts +13 -0
- package/dist/types/components/AutoSuggestion/SingleLineCodeEditor.d.ts +25 -0
- package/dist/types/components/AutocompleteField/AutoCompleteField.d.ts +8 -7
- package/dist/types/components/Button/Button.d.ts +3 -2
- package/dist/types/components/ContextOverlay/ContextMenu.d.ts +6 -1
- package/dist/types/components/Dialog/Modal.d.ts +4 -3
- package/dist/types/components/Dialog/SimpleDialog.d.ts +2 -0
- package/dist/types/components/Icon/Icon.d.ts +2 -2
- package/dist/types/components/Icon/IconButton.d.ts +1 -1
- package/dist/types/components/Icon/canonicalIconNames.d.ts +1 -1
- package/dist/types/components/MultiSelect/MultiSelect.d.ts +79 -0
- package/dist/types/components/Tabs/Tab.d.ts +549 -0
- package/dist/types/components/Tabs/TabTitle.d.ts +38 -0
- package/dist/types/components/Tabs/Tabs.d.ts +14 -20
- package/dist/types/components/Tag/Tag.d.ts +1 -1
- package/dist/types/extensions/react-flow/edges/utils.d.ts +1 -1
- package/dist/types/extensions/react-flow/nodes/NodeContent.d.ts +8 -8
- package/dist/types/extensions/react-flow/nodes/NodeDefault.d.ts +2 -2
- package/dist/types/extensions/react-flow/nodes/NodeTools.d.ts +2 -1
- package/dist/types/extensions/react-flow/nodes/nodeTypes.d.ts +10 -10
- package/dist/types/index.d.ts +9 -2
- package/dist/types/legacy-replacements/Button/AffirmativeButton.d.ts +2 -0
- package/dist/types/legacy-replacements/Button/Button.d.ts +5 -0
- package/dist/types/legacy-replacements/Button/DismissiveButton.d.ts +2 -0
- package/dist/types/legacy-replacements/Button/DisruptiveButton.d.ts +2 -0
- package/dist/types/legacy-replacements/Checkbox/Checkbox.d.ts +2 -0
- package/dist/types/legacy-replacements/Radio/RadioButton.d.ts +2 -0
- package/dist/types/legacy-replacements/Tabs/Tabs.d.ts +22 -0
- package/dist/types/legacy-replacements/TextField/TextField.d.ts +2 -0
- package/dist/types/legacy-replacements/index.d.ts +10 -0
- package/package.json +16 -7
- package/src/cmem/ActivityControl/ActivityControlTypes.ts +3 -1
- package/src/cmem/ActivityControl/ActivityControlWidget.stories.tsx +98 -0
- package/src/cmem/ActivityControl/ActivityControlWidget.tsx +131 -89
- package/src/cmem/ActivityControl/SilkActivityControl.tsx +178 -120
- package/src/cmem/ActivityControl/index.ts +3 -0
- package/src/cmem/ContentBlobToggler/index.ts +2 -0
- package/src/cmem/_index.scss +6 -0
- package/src/cmem/index.ts +10 -23
- package/src/cmem/react-flow/ReactFlow/ReactFlow.stories.tsx +222 -0
- package/src/cmem/react-flow/ReactFlow/ReactFlow.tsx +40 -0
- package/src/cmem/react-flow/_edges.scss +23 -0
- package/src/cmem/react-flow/_handles.scss +34 -0
- package/src/cmem/react-flow/_index.scss +5 -0
- package/src/cmem/react-flow/_minimap.scss +33 -0
- package/src/cmem/react-flow/_nodes.scss +60 -0
- package/src/cmem/react-flow/configuration/_colors-graph.module.scss +35 -0
- package/src/cmem/react-flow/configuration/_colors-linking.module.scss +29 -0
- package/src/cmem/react-flow/configuration/_colors-workflow.module.scss +22 -0
- package/src/cmem/react-flow/configuration/_colors.scss +3 -0
- package/src/cmem/react-flow/configuration/graph.ts +29 -0
- package/src/cmem/react-flow/configuration/linking.ts +28 -0
- package/src/cmem/react-flow/configuration/unspecified.ts +13 -0
- package/src/cmem/react-flow/configuration/workflow.ts +25 -0
- package/src/components/AutoSuggestion/AutoSuggestion.scss +100 -0
- package/src/components/AutoSuggestion/AutoSuggestion.tsx +447 -0
- package/src/components/AutoSuggestion/AutoSuggestionList.tsx +170 -0
- package/src/components/AutoSuggestion/SingleLineCodeEditor.tsx +97 -0
- package/src/components/AutoSuggestion/tests/AutoSuggestion.test.tsx +37 -0
- package/src/components/AutoSuggestion/tests/AutoSuggestionList.test.tsx +124 -0
- package/src/components/AutoSuggestion/tests/SingleLineCodeEditor.test.tsx +55 -0
- package/src/components/AutocompleteField/AutoCompleteField.tsx +19 -19
- package/src/components/AutocompleteField/autoCompleteFieldUtils.tsx +2 -1
- package/src/components/Button/Button.tsx +3 -2
- package/src/components/ContextOverlay/ContextMenu.tsx +8 -2
- package/src/components/Dialog/Modal.tsx +9 -2
- package/src/components/Dialog/SimpleDialog.tsx +2 -0
- package/src/components/Icon/Icon.tsx +4 -4
- package/src/components/Icon/IconButton.tsx +1 -1
- package/src/components/Icon/canonicalIconNames.tsx +39 -2
- package/src/components/MultiSelect/MultiSelect.stories.tsx +63 -0
- package/src/components/MultiSelect/MultiSelect.tsx +370 -0
- package/src/components/Tabs/Tab.tsx +112 -0
- package/src/components/Tabs/TabTitle.tsx +71 -0
- package/src/components/Tabs/Tabs.tsx +26 -90
- package/src/components/Tabs/stories/Tab.stories.tsx +65 -0
- package/src/components/Tabs/stories/TabTitle.stories.tsx +35 -0
- package/src/components/Tabs/stories/Tabs.stories.tsx +98 -0
- package/src/components/Tabs/tabs.scss +11 -4
- package/src/components/Tag/Tag.tsx +10 -3
- package/src/components/Tag/tag.scss +1 -1
- package/src/components/TextField/TextField.tsx +1 -1
- package/src/configuration/_variables.scss +3 -3
- package/src/extensions/react-flow/_config.scss +2 -2
- package/src/extensions/react-flow/edges/_edges.scss +3 -28
- package/src/extensions/react-flow/edges/utils.ts +139 -4
- package/src/extensions/react-flow/handles/_handles.scss +4 -58
- package/src/extensions/react-flow/minimap/_minimap.scss +0 -45
- package/src/extensions/react-flow/nodes/NodeContent.tsx +134 -133
- package/src/extensions/react-flow/nodes/NodeContentExtension.tsx +11 -10
- package/src/extensions/react-flow/nodes/NodeDefault.tsx +2 -2
- package/src/extensions/react-flow/nodes/NodeTools.tsx +2 -1
- package/src/extensions/react-flow/nodes/_nodes.scss +31 -185
- package/src/extensions/react-flow/nodes/{NodeContent.stories.tsx → stories/NodeContent.stories.tsx} +4 -4
- package/src/extensions/react-flow/nodes/{NodeContentExtension.stories.tsx → stories/NodeContentExtension.stories.tsx} +4 -4
- package/src/extensions/react-flow/nodes/{NodeDefault.stories.tsx → stories/NodeDefault.stories.tsx} +5 -4
- package/src/index.scss +1 -0
- package/src/index.ts +16 -1
- package/src/legacy-replacements/Tabs/Tabs.stories.tsx +46 -0
- package/src/legacy-replacements/Tabs/Tabs.tsx +84 -0
- package/src/legacy-replacements/index.ts +11 -0
- package/src/test/setupTests.js +19 -0
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
import {TestableComponent} from "../../components/interfaces";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} from "
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {Spacing} from "../../index";
|
|
11
|
-
import {
|
|
12
|
-
ElapsedDateTimeDisplay,
|
|
13
|
-
TimeUnits
|
|
14
|
-
} from "../DateTimeDisplay/ElapsedDateTimeDisplay";
|
|
1
|
+
import { TestableComponent } from "../../components/interfaces";
|
|
2
|
+
import { ActivityControlWidget, IActivityAction } from "./ActivityControlWidget";
|
|
3
|
+
import React, { useEffect, useState } from "react";
|
|
4
|
+
import {ConcreteActivityStatus, IActivityStatus} from "./ActivityControlTypes";
|
|
5
|
+
import { Intent } from "@blueprintjs/core/src/common/intent";
|
|
6
|
+
import { ActivityExecutionErrorReportModal } from "./ActivityExecutionErrorReportModal";
|
|
7
|
+
import { Icon, Spacing } from "../../";
|
|
8
|
+
import { ElapsedDateTimeDisplay, TimeUnits } from "../DateTimeDisplay/ElapsedDateTimeDisplay";
|
|
9
|
+
import { IntentTypes } from "../../common/Intent";
|
|
15
10
|
|
|
16
11
|
const progressBreakpointIndetermination = 10;
|
|
17
12
|
const progressBreakpointAnimation = 99;
|
|
18
13
|
|
|
19
14
|
interface SilkActivityControlProps extends TestableComponent {
|
|
20
15
|
// The label of this activity
|
|
21
|
-
label: string;
|
|
16
|
+
label: string | JSX.Element;
|
|
17
|
+
/**
|
|
18
|
+
* To add tags in addition to the widget status description
|
|
19
|
+
*/
|
|
20
|
+
tags?: JSX.Element;
|
|
22
21
|
// Initial state
|
|
23
22
|
initialStatus?: IActivityStatus;
|
|
24
23
|
// Register a function in order to receive callbacks
|
|
@@ -55,6 +54,8 @@ interface SilkActivityControlProps extends TestableComponent {
|
|
|
55
54
|
};
|
|
56
55
|
// configure how the widget is displayed
|
|
57
56
|
layoutConfig?: IActivityControlLayoutProps;
|
|
57
|
+
/** Configures when the status message should be hidden, e.g. because it is uninteresting. */
|
|
58
|
+
hideMessageOnStatus?: (concreteStatus: ConcreteActivityStatus | undefined) => boolean
|
|
58
59
|
}
|
|
59
60
|
|
|
60
61
|
export interface IActivityControlLayoutProps {
|
|
@@ -68,7 +69,12 @@ export interface IActivityControlLayoutProps {
|
|
|
68
69
|
visualization?: "none" | "progressbar" | "spinner";
|
|
69
70
|
}
|
|
70
71
|
|
|
71
|
-
const defaultLayout: IActivityControlLayoutProps = {
|
|
72
|
+
const defaultLayout: IActivityControlLayoutProps = {
|
|
73
|
+
small: false,
|
|
74
|
+
border: false,
|
|
75
|
+
canShrink: false,
|
|
76
|
+
visualization: "spinner",
|
|
77
|
+
};
|
|
72
78
|
|
|
73
79
|
interface IErrorReportAction {
|
|
74
80
|
// The title of the error report modal
|
|
@@ -117,29 +123,36 @@ interface IStacktrace {
|
|
|
117
123
|
cause?: IStacktrace;
|
|
118
124
|
}
|
|
119
125
|
|
|
120
|
-
export type ActivityControlTranslationKeys = "startActivity" | "stopActivity" | "reloadActivity" | "showErrorReport"
|
|
126
|
+
export type ActivityControlTranslationKeys = "startActivity" | "stopActivity" | "reloadActivity" | "showErrorReport";
|
|
121
127
|
|
|
122
|
-
export type ActivityAction = "start" | "cancel" | "restart"
|
|
128
|
+
export type ActivityAction = "start" | "cancel" | "restart";
|
|
123
129
|
|
|
124
130
|
/** Silk activity control. */
|
|
125
|
-
export function SilkActivityControl({
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
131
|
+
export function SilkActivityControl(props: SilkActivityControlProps) {
|
|
132
|
+
const { widget } = useSilkActivityControl(props);
|
|
133
|
+
return widget;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function useSilkActivityControl({
|
|
137
|
+
label,
|
|
138
|
+
initialStatus,
|
|
139
|
+
registerForUpdates,
|
|
140
|
+
executeActivityAction,
|
|
141
|
+
showReloadAction,
|
|
142
|
+
showStartAction,
|
|
143
|
+
viewValueAction,
|
|
144
|
+
showStopAction,
|
|
145
|
+
failureReportAction,
|
|
146
|
+
unregisterFromUpdates,
|
|
147
|
+
translate,
|
|
148
|
+
elapsedTimeOfLastStart,
|
|
149
|
+
tags,
|
|
150
|
+
layoutConfig = defaultLayout,
|
|
151
|
+
hideMessageOnStatus = () => false,
|
|
152
|
+
...props
|
|
153
|
+
}: SilkActivityControlProps) {
|
|
154
|
+
const [activityStatus, setActivityStatus] = useState<IActivityStatus | undefined>(initialStatus);
|
|
155
|
+
const [errorReport, setErrorReport] = useState<string | IActivityExecutionReport | undefined>(undefined);
|
|
143
156
|
|
|
144
157
|
// Register update function
|
|
145
158
|
useEffect(() => {
|
|
@@ -151,153 +164,198 @@ export function SilkActivityControl({
|
|
|
151
164
|
},
|
|
152
165
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
153
166
|
[]
|
|
154
|
-
)
|
|
167
|
+
);
|
|
155
168
|
|
|
156
169
|
// Create activity actions
|
|
157
|
-
const actions: IActivityAction[] = []
|
|
170
|
+
const actions: IActivityAction[] = [];
|
|
158
171
|
|
|
159
|
-
if(failureReportAction && activityStatus?.failed && activityStatus.concreteStatus !== "Cancelled") {
|
|
172
|
+
if (failureReportAction && activityStatus?.failed && activityStatus.concreteStatus !== "Cancelled") {
|
|
160
173
|
actions.push({
|
|
161
174
|
"data-test-id": "activity-show-error-report",
|
|
162
175
|
icon: "artefact-report",
|
|
163
176
|
action: () => showErrorReport(failureReportAction),
|
|
164
177
|
tooltip: translate("showErrorReport"),
|
|
165
|
-
hasStateWarning: true
|
|
166
|
-
})
|
|
178
|
+
hasStateWarning: true,
|
|
179
|
+
});
|
|
167
180
|
}
|
|
168
181
|
|
|
169
|
-
if(showStartAction) {
|
|
182
|
+
if (showStartAction) {
|
|
170
183
|
actions.push({
|
|
171
184
|
"data-test-id": "activity-start-activity",
|
|
172
185
|
icon: "item-start",
|
|
173
186
|
action: () => executeActivityAction("start"),
|
|
174
187
|
tooltip: translate("startActivity"),
|
|
175
|
-
disabled: activityStatus?.isRunning === true
|
|
176
|
-
})
|
|
188
|
+
disabled: activityStatus?.isRunning === true,
|
|
189
|
+
});
|
|
177
190
|
}
|
|
178
191
|
|
|
179
|
-
if(showReloadAction) {
|
|
192
|
+
if (showReloadAction) {
|
|
180
193
|
actions.push({
|
|
181
194
|
"data-test-id": "activity-reload-activity",
|
|
182
195
|
icon: "item-reload",
|
|
183
196
|
action: () => executeActivityAction("restart"),
|
|
184
197
|
tooltip: translate("reloadActivity"),
|
|
185
|
-
disabled: activityStatus?.isRunning === true
|
|
186
|
-
})
|
|
198
|
+
disabled: activityStatus?.isRunning === true,
|
|
199
|
+
});
|
|
187
200
|
}
|
|
188
201
|
|
|
189
|
-
if(showStopAction) {
|
|
202
|
+
if (showStopAction) {
|
|
190
203
|
actions.push({
|
|
191
204
|
"data-test-id": "activity-stop-activity",
|
|
192
205
|
icon: "item-stop",
|
|
193
206
|
action: () => executeActivityAction("cancel"),
|
|
194
207
|
tooltip: translate("stopActivity"),
|
|
195
|
-
disabled: activityStatus?.isRunning === false
|
|
196
|
-
})
|
|
208
|
+
disabled: activityStatus?.isRunning === false,
|
|
209
|
+
});
|
|
197
210
|
}
|
|
198
211
|
|
|
199
|
-
if(viewValueAction && activityStatus?.concreteStatus !== "Not executed") {
|
|
200
|
-
const action: () => any =
|
|
201
|
-
|
|
202
|
-
|
|
212
|
+
if (viewValueAction && activityStatus?.concreteStatus !== "Not executed") {
|
|
213
|
+
const action: () => any =
|
|
214
|
+
typeof viewValueAction.action === "string"
|
|
215
|
+
? () => {
|
|
216
|
+
window.open(viewValueAction.action as string, "_blank");
|
|
217
|
+
}
|
|
218
|
+
: viewValueAction.action;
|
|
203
219
|
actions.push({
|
|
204
220
|
"data-test-id": "activity-view-data",
|
|
205
221
|
icon: "artefact-rawdata",
|
|
206
222
|
action,
|
|
207
|
-
tooltip: viewValueAction.tooltip
|
|
208
|
-
})
|
|
223
|
+
tooltip: viewValueAction.tooltip,
|
|
224
|
+
});
|
|
209
225
|
}
|
|
210
226
|
|
|
211
227
|
const showErrorReport = async (action: IErrorReportAction) => {
|
|
212
|
-
const errorReport = await action.fetchErrorReport(action.renderMarkdown)
|
|
213
|
-
setErrorReport(errorReport)
|
|
214
|
-
}
|
|
228
|
+
const errorReport = await action.fetchErrorReport(action.renderMarkdown);
|
|
229
|
+
setErrorReport(errorReport);
|
|
230
|
+
};
|
|
215
231
|
|
|
216
232
|
const closeErrorReport = () => {
|
|
217
|
-
setErrorReport(undefined)
|
|
218
|
-
}
|
|
233
|
+
setErrorReport(undefined);
|
|
234
|
+
};
|
|
219
235
|
|
|
220
|
-
const activityControlLabel =
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
236
|
+
const activityControlLabel =
|
|
237
|
+
activityStatus?.startTime && elapsedTimeOfLastStart ? (
|
|
238
|
+
<>
|
|
239
|
+
{label}
|
|
240
|
+
<Spacing vertical={true} size="tiny" />
|
|
241
|
+
<ElapsedDateTimeDisplay
|
|
242
|
+
dateTime={activityStatus.startTime}
|
|
243
|
+
prefix={elapsedTimeOfLastStart.prefix}
|
|
244
|
+
suffix={elapsedTimeOfLastStart.suffix}
|
|
245
|
+
translateUnits={elapsedTimeOfLastStart.translate}
|
|
246
|
+
/>
|
|
247
|
+
</>
|
|
248
|
+
) : (
|
|
249
|
+
<>{label}</>
|
|
250
|
+
);
|
|
230
251
|
|
|
231
|
-
const {visualization, ...otherLayoutConfig} = layoutConfig;
|
|
252
|
+
const { visualization, ...otherLayoutConfig } = layoutConfig;
|
|
232
253
|
let visualizationProps = {}; // visualization==="none" or undefined
|
|
233
254
|
const runningProgress = activityStatus && activityStatus.isRunning;
|
|
234
255
|
const waitingProgress = activityStatus && activityStatus.concreteStatus === "Waiting";
|
|
235
|
-
const animateProgress =
|
|
256
|
+
const animateProgress =
|
|
257
|
+
activityStatus && activityStatus.progress > 0 && activityStatus.progress < progressBreakpointAnimation;
|
|
236
258
|
const indeterminateProgress = activityStatus && activityStatus.progress < progressBreakpointIndetermination;
|
|
259
|
+
const intent = activityStatus ? calcIntent(activityStatus) : "none";
|
|
237
260
|
|
|
238
261
|
if (visualization === "progressbar") {
|
|
239
262
|
visualizationProps = {
|
|
240
263
|
progressBar: {
|
|
241
264
|
animate: waitingProgress || (runningProgress && animateProgress),
|
|
242
265
|
stripes: waitingProgress || (runningProgress && animateProgress),
|
|
243
|
-
value:
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
266
|
+
value:
|
|
267
|
+
waitingProgress || (runningProgress && indeterminateProgress)
|
|
268
|
+
? undefined
|
|
269
|
+
: activityStatus && activityStatus.progress > 0
|
|
270
|
+
? activityStatus.progress / 100
|
|
271
|
+
: 0,
|
|
272
|
+
intent,
|
|
273
|
+
},
|
|
274
|
+
};
|
|
275
|
+
}
|
|
248
276
|
if (visualization === "spinner") {
|
|
249
277
|
visualizationProps = {
|
|
250
278
|
progressSpinner: {
|
|
251
|
-
value:
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
279
|
+
value:
|
|
280
|
+
waitingProgress || (runningProgress && indeterminateProgress)
|
|
281
|
+
? undefined
|
|
282
|
+
: activityStatus && activityStatus.progress > 0
|
|
283
|
+
? activityStatus.progress / 100
|
|
284
|
+
: 0,
|
|
285
|
+
intent,
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
if (activityStatus?.statusName === "Finished" && intent !== "none" && intent !== "primary") {
|
|
291
|
+
visualizationProps = {
|
|
292
|
+
...visualizationProps,
|
|
293
|
+
progressSpinnerFinishedIcon: <Icon name={[`state-${intent}`]} intent={intent as IntentTypes} />,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
256
296
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
297
|
+
const widget = (
|
|
298
|
+
<>
|
|
299
|
+
<ActivityControlWidget
|
|
300
|
+
key={"activity-control"}
|
|
301
|
+
tags={tags}
|
|
302
|
+
data-test-id={props["data-test-id"]}
|
|
303
|
+
label={activityControlLabel}
|
|
304
|
+
activityActions={actions}
|
|
305
|
+
statusMessage={hideMessageOnStatus(activityStatus?.concreteStatus) ? undefined : activityStatus?.message}
|
|
306
|
+
{...visualizationProps}
|
|
307
|
+
{...otherLayoutConfig}
|
|
308
|
+
/>
|
|
309
|
+
{errorReport && failureReportAction && (
|
|
310
|
+
<ActivityExecutionErrorReportModal
|
|
311
|
+
title={failureReportAction.title}
|
|
312
|
+
key={"error-report-modal"}
|
|
313
|
+
closeButtonValue={failureReportAction.closeButtonValue}
|
|
314
|
+
downloadButtonValue={failureReportAction.downloadButtonValue}
|
|
315
|
+
fetchErrorReport={async () => {
|
|
316
|
+
return (await failureReportAction.fetchErrorReport(true)) as string | undefined;
|
|
317
|
+
}}
|
|
318
|
+
report={failureReportAction.renderReport(errorReport)}
|
|
319
|
+
onDiscard={closeErrorReport}
|
|
320
|
+
/>
|
|
321
|
+
)}
|
|
322
|
+
</>
|
|
323
|
+
);
|
|
324
|
+
|
|
325
|
+
return {
|
|
326
|
+
elapsedDateTime: activityStatus?.startTime && elapsedTimeOfLastStart ? (
|
|
327
|
+
<ElapsedDateTimeDisplay
|
|
328
|
+
dateTime={activityStatus.startTime}
|
|
329
|
+
translateUnits={elapsedTimeOfLastStart.translate}
|
|
330
|
+
/>
|
|
331
|
+
) : (
|
|
332
|
+
<></>
|
|
333
|
+
),
|
|
334
|
+
intent,
|
|
335
|
+
widget
|
|
336
|
+
} as const;
|
|
279
337
|
}
|
|
280
338
|
|
|
281
|
-
const calcIntent = (activityStatus: IActivityStatus): Intent => {
|
|
282
|
-
const concreteStatus = activityStatus.concreteStatus
|
|
283
|
-
let intent: Intent
|
|
284
|
-
switch(concreteStatus) {
|
|
339
|
+
export const calcIntent = (activityStatus: IActivityStatus): Intent => {
|
|
340
|
+
const concreteStatus = activityStatus.concreteStatus;
|
|
341
|
+
let intent: Intent;
|
|
342
|
+
switch (concreteStatus) {
|
|
285
343
|
case "Running":
|
|
286
344
|
case "Successful":
|
|
287
|
-
intent = "success"
|
|
288
|
-
break
|
|
345
|
+
intent = "success";
|
|
346
|
+
break;
|
|
289
347
|
case "Cancelled":
|
|
290
348
|
case "Canceling":
|
|
291
|
-
intent = "warning"
|
|
292
|
-
break
|
|
349
|
+
intent = "warning";
|
|
350
|
+
break;
|
|
293
351
|
case "Failed":
|
|
294
|
-
intent = "danger"
|
|
295
|
-
break
|
|
352
|
+
intent = "danger";
|
|
353
|
+
break;
|
|
296
354
|
case "Waiting":
|
|
297
|
-
intent = "none" // TODO: This is 100% yellow in the old activity control
|
|
298
|
-
break
|
|
355
|
+
intent = "none"; // TODO: This is 100% yellow in the old activity control
|
|
356
|
+
break;
|
|
299
357
|
default:
|
|
300
|
-
intent = "none"
|
|
358
|
+
intent = "none";
|
|
301
359
|
}
|
|
302
|
-
return intent
|
|
303
|
-
}
|
|
360
|
+
return intent;
|
|
361
|
+
};
|
package/src/cmem/_index.scss
CHANGED
package/src/cmem/index.ts
CHANGED
|
@@ -1,32 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ActivityExecutionErrorReportModal } from "./ActivityControl/ActivityExecutionErrorReportModal";
|
|
3
|
-
import {
|
|
4
|
-
ActivityAction,
|
|
5
|
-
SilkActivityControl,
|
|
6
|
-
IActivityControlLayoutProps,
|
|
7
|
-
} from "./ActivityControl/SilkActivityControl";
|
|
1
|
+
import { ActivityAction, IActivityControlLayoutProps } from "./ActivityControl/SilkActivityControl";
|
|
8
2
|
import { IActivityStatus } from "./ActivityControl/ActivityControlTypes";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
ElapsedDateTimeDisplay,
|
|
12
|
-
TimeUnits
|
|
13
|
-
} from "./DateTimeDisplay/ElapsedDateTimeDisplay";
|
|
14
|
-
import { Markdown } from "./markdown/Markdown";
|
|
15
|
-
import {
|
|
16
|
-
StringPreviewContentBlobToggler,
|
|
17
|
-
firstNonEmptyLine,
|
|
18
|
-
} from "./ContentBlobToggler/StringPreviewContentBlobToggler";
|
|
3
|
+
import { TimeUnits } from "./DateTimeDisplay/ElapsedDateTimeDisplay";
|
|
19
4
|
|
|
20
5
|
export {
|
|
21
6
|
ActivityControlWidget,
|
|
22
7
|
ActivityExecutionErrorReportModal,
|
|
23
|
-
ContentBlobToggler,
|
|
24
|
-
Markdown,
|
|
25
|
-
StringPreviewContentBlobToggler,
|
|
26
8
|
SilkActivityControl,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
9
|
+
useSilkActivityControl,
|
|
10
|
+
} from "./ActivityControl";
|
|
11
|
+
export { ContentBlobToggler, StringPreviewContentBlobToggler } from "./ContentBlobToggler";
|
|
12
|
+
export { firstNonEmptyLine } from "./ContentBlobToggler/StringPreviewContentBlobToggler";
|
|
13
|
+
export { ElapsedDateTimeDisplay } from "./DateTimeDisplay/ElapsedDateTimeDisplay";
|
|
14
|
+
export { Markdown } from "./markdown/Markdown";
|
|
15
|
+
export { ReactFlow } from "./react-flow/ReactFlow/ReactFlow";
|
|
16
|
+
|
|
30
17
|
export type {
|
|
31
18
|
IActivityStatus,
|
|
32
19
|
ActivityAction,
|