windmill-components 1.352.9 → 1.362.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/package/assets/app.css +8 -45
- package/package/components/ApiConnectForm.svelte +1 -0
- package/package/components/ArgInput.svelte +5 -1
- package/package/components/ChangeInstanceUsername.svelte +20 -12
- package/package/components/ContentSearchInner.svelte +359 -0
- package/package/components/{ContentSearch.svelte.d.ts → ContentSearchInner.svelte.d.ts} +9 -5
- package/package/components/CustomPopover.svelte +73 -0
- package/package/components/CustomPopover.svelte.d.ts +29 -0
- package/package/components/DateTimeInput.svelte +29 -3
- package/package/components/DateTimeInput.svelte.d.ts +4 -0
- package/package/components/Dev.svelte +8 -3
- package/package/components/DurationMs.svelte +2 -2
- package/package/components/FlowBuilder.svelte +122 -24
- package/package/components/FlowBuilder.svelte.d.ts +1 -0
- package/package/components/FlowGraphViewerStep.svelte +2 -2
- package/package/components/FlowJobResult.svelte +5 -3
- package/package/components/FlowStatusViewer.svelte +4 -3
- package/package/components/FlowStatusViewerInner.svelte +265 -160
- package/package/components/FlowStatusViewerInner.svelte.d.ts +15 -2
- package/package/components/HighlightTheme.svelte +75 -77
- package/package/components/InputTransformForm.svelte +2 -0
- package/package/components/JobArgs.svelte +59 -44
- package/package/components/JobArgs.svelte.d.ts +2 -0
- package/package/components/LightweightArgInput.svelte +27 -2
- package/package/components/Path.svelte +3 -8
- package/package/components/Popover.svelte +1 -1
- package/package/components/ResourceEditor.svelte +3 -2
- package/package/components/ResourceEditorDrawer.svelte +4 -1
- package/package/components/ResourcePicker.svelte +1 -0
- package/package/components/RunChart.svelte +6 -3
- package/package/components/RunChart.svelte.d.ts +1 -0
- package/package/components/RunForm.svelte +24 -23
- package/package/components/RunForm.svelte.d.ts +0 -2
- package/package/components/SavedInputs.svelte +50 -39
- package/package/components/ScheduleEditorInner.svelte +26 -4
- package/package/components/ScriptBuilder.svelte +47 -22
- package/package/components/ScriptBuilder.svelte.d.ts +1 -0
- package/package/components/SearchItems.svelte +5 -4
- package/package/components/Summary.svelte +74 -0
- package/package/components/Summary.svelte.d.ts +16 -0
- package/package/components/apps/components/display/AppMarkdown.svelte +3 -2
- package/package/components/apps/components/display/AppMenu.svelte +2 -2
- package/package/components/apps/components/display/AppNavbar.svelte +94 -0
- package/package/components/apps/components/display/AppNavbar.svelte.d.ts +24 -0
- package/package/components/apps/components/display/AppNavbarItem.svelte +146 -0
- package/package/components/apps/components/display/AppNavbarItem.svelte.d.ts +27 -0
- package/package/components/apps/components/display/ResolveNavbarItemPath.svelte +21 -0
- package/package/components/apps/components/display/ResolveNavbarItemPath.svelte.d.ts +20 -0
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +16 -0
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +12 -16
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +5 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +28 -6
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +68 -43
- package/package/components/apps/components/inputs/AppDateSelect.svelte +284 -0
- package/package/components/apps/components/inputs/AppDateSelect.svelte.d.ts +21 -0
- package/package/components/apps/components/inputs/AppDateTimeInput.svelte +2 -0
- package/package/components/apps/components/inputs/AppFileInput.svelte +22 -27
- package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppTextInput.svelte +1 -1
- package/package/components/apps/components/layout/AppDecisionTree.svelte +32 -30
- package/package/components/apps/components/layout/AppModal.svelte +17 -6
- package/package/components/apps/editor/AppDeploymentHistory.svelte +2 -3
- package/package/components/apps/editor/AppDeploymentHistory.svelte.d.ts +3 -2
- package/package/components/apps/editor/AppEditor.svelte +9 -2
- package/package/components/apps/editor/AppEditorHeader.svelte +7 -10
- package/package/components/apps/editor/AppPreview.svelte +12 -3
- package/package/components/apps/editor/AppPreview.svelte.d.ts +2 -0
- package/package/components/apps/editor/DecisionTreeDebug.svelte +92 -68
- package/package/components/apps/editor/DeploymentHistory.svelte +0 -2
- package/package/components/apps/editor/appUtils.d.ts +1 -0
- package/package/components/apps/editor/appUtils.js +17 -0
- package/package/components/apps/editor/component/Component.svelte +23 -0
- package/package/components/apps/editor/component/components.d.ts +205 -3
- package/package/components/apps/editor/component/components.js +160 -1
- package/package/components/apps/editor/component/default-codes.js +13 -13
- package/package/components/apps/editor/component/sets.js +4 -2
- package/package/components/apps/editor/componentsPanel/ComponentList.svelte +12 -12
- package/package/components/apps/editor/componentsPanel/cssUtils.js +39 -3
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
- package/package/components/apps/editor/contextPanel/ComponentOutput.svelte +2 -2
- package/package/components/apps/editor/contextPanel/ContextPanel.svelte +6 -0
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +11 -0
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +4 -0
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +21 -8
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -20
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +48 -15
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +25 -5
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +2 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/DocLink.svelte +33 -0
- package/package/components/apps/editor/settingsPanel/DocLink.svelte.d.ts +19 -0
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +192 -0
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte.d.ts +18 -0
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +2 -2
- package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte +17 -0
- package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte.d.ts +16 -0
- package/package/components/apps/editor/settingsPanel/TableActions.svelte +81 -38
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +12 -5
- package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +11 -12
- package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +4 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +4 -1
- package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +7 -1
- package/package/components/apps/inputType.d.ts +2 -2
- package/package/components/apps/svelte-select/lib/Select.svelte +2 -3
- package/package/components/apps/types.d.ts +3 -0
- package/package/components/auditLogs/AuditLogsTable.svelte +2 -2
- package/package/components/common/CloseButton.svelte +10 -10
- package/package/components/common/CloseButton.svelte.d.ts +6 -14
- package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -0
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +7 -1
- package/package/components/common/fileInput/FileInput.svelte +2 -0
- package/package/components/common/fileInput/FileInput.svelte.d.ts +1 -0
- package/package/components/common/popup/Popup.svelte +4 -3
- package/package/components/common/popup/Popup.svelte.d.ts +1 -0
- package/package/components/common/table/AppRow.svelte +3 -10
- package/package/components/common/table/FlowRow.svelte +12 -1
- package/package/components/copilot/IteratorGen.svelte +1 -1
- package/package/components/copilot/PredicateGen.svelte +1 -1
- package/package/components/copilot/StepInputGen.svelte +8 -3
- package/package/components/copilot/StepInputsGen.svelte +5 -2
- package/package/components/details/WebhooksPanel.svelte +32 -1
- package/package/components/details/WebhooksPanel.svelte.d.ts +2 -11
- package/package/components/flows/FlowHistory.svelte +208 -0
- package/package/components/flows/FlowHistory.svelte.d.ts +21 -0
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +1 -1
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +1 -1
- package/package/components/flows/content/FlowEditorPanel.svelte +1 -1
- package/package/components/flows/content/FlowLoop.svelte +23 -26
- package/package/components/flows/content/FlowModuleComponent.svelte +2 -18
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +10 -4
- package/package/components/flows/content/FlowModuleHeader.svelte +3 -4
- package/package/components/flows/content/FlowModuleScript.svelte +1 -1
- package/package/components/flows/content/FlowModuleSleep.svelte +1 -0
- package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
- package/package/components/flows/content/SuspendDrawer.svelte +7 -7
- package/package/components/flows/flowStateUtils.js +2 -1
- package/package/components/flows/flowStore.js +1 -1
- package/package/components/flows/header/FlowImportExportMenu.svelte +3 -16
- package/package/components/flows/header/FlowImportExportMenu.svelte.d.ts +4 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +69 -0
- package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +22 -0
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +7 -4
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
- package/package/components/flows/map/MapItem.svelte +20 -0
- package/package/components/flows/map/MapItem.svelte.d.ts +9 -0
- package/package/components/flows/map/VirtualItem.svelte +4 -2
- package/package/components/flows/map/VirtualItem.svelte.d.ts +1 -0
- package/package/components/flows/previousResults.d.ts +9 -0
- package/package/components/flows/previousResults.js +42 -8
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +2 -0
- package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +1 -0
- package/package/components/flows/types.d.ts +1 -1
- package/package/components/graph/FlowGraph.svelte +80 -42
- package/package/components/graph/FlowGraph.svelte.d.ts +1 -0
- package/package/components/graph/model.d.ts +6 -1
- package/package/components/graph/svelvet/container/controllers/middleware.js +4 -4
- package/package/components/graph/svelvet/container/views/GraphView.svelte +2 -0
- package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +24 -25
- package/package/components/graph/util.d.ts +1 -1
- package/package/components/graph/util.js +1 -2
- package/package/components/home/ItemsList.svelte +22 -19
- package/package/components/jobs/JobPreview.svelte +11 -2
- package/package/components/propertyPicker/PropPicker.svelte +30 -0
- package/package/components/propertyPicker/PropPickerResult.svelte +14 -1
- package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
- package/package/components/runs/JobLoader.svelte +21 -8
- package/package/components/runs/JobLoader.svelte.d.ts +2 -0
- package/package/components/runs/JobPreview.svelte +5 -1
- package/package/components/runs/RunRow.svelte +12 -8
- package/package/components/runs/RunsFilter.svelte +2 -4
- package/package/components/runs/RunsFilter.svelte.d.ts +0 -1
- package/package/components/runs/RunsTable.svelte +63 -29
- package/package/components/runs/RunsTable.svelte.d.ts +1 -0
- package/package/components/schema/EditableSchemaWrapper.svelte +9 -1
- package/package/components/schema/PropertyEditor.svelte +1 -1
- package/package/components/search/GlobalSearchModal.svelte +559 -0
- package/package/components/search/GlobalSearchModal.svelte.d.ts +17 -0
- package/package/components/search/QuickMenuItem.svelte +76 -0
- package/package/components/search/QuickMenuItem.svelte.d.ts +27 -0
- package/package/components/sidebar/MenuButton.svelte +11 -0
- package/package/components/sidebar/MenuButton.svelte.d.ts +4 -0
- package/package/components/sidebar/changelogs.js +35 -0
- package/package/components/wizards/AppPicker.svelte +68 -0
- package/package/components/wizards/AppPicker.svelte.d.ts +17 -0
- package/package/components/wizards/NavbarWizard.svelte +131 -0
- package/package/components/wizards/NavbarWizard.svelte.d.ts +19 -0
- package/package/defaults.d.ts +1 -1
- package/package/defaults.js +1 -1
- package/package/es6.d.ts.txt +370 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +42 -3
- package/package/gen/schemas.gen.js +42 -3
- package/package/gen/services.gen.d.ts +80 -5
- package/package/gen/services.gen.js +149 -8
- package/package/gen/types.gen.d.ts +265 -11
- package/package/inferArgSig.js +4 -0
- package/package/script_helpers.d.ts +3 -3
- package/package/script_helpers.js +46 -22
- package/package/stores.d.ts +1 -1
- package/package/stores.js +1 -1
- package/package/utils.d.ts +7 -23
- package/package/utils.js +54 -33
- package/package/windmill_fetch.d.ts.txt +6 -6
- package/package.json +3 -11
- package/package/components/ContentSearch.svelte +0 -355
|
@@ -47,11 +47,16 @@ export type GraphModuleState = {
|
|
|
47
47
|
type: FlowStatusModule['type'];
|
|
48
48
|
args: any;
|
|
49
49
|
logs?: string;
|
|
50
|
+
flow_jobs_results?: any;
|
|
51
|
+
branchChosen?: number;
|
|
50
52
|
result?: any;
|
|
51
53
|
scheduled_for?: Date;
|
|
52
54
|
job_id?: string;
|
|
53
55
|
parent_module?: string;
|
|
54
|
-
|
|
56
|
+
selectedForloop?: string;
|
|
57
|
+
selectedForloopIndex?: number;
|
|
58
|
+
flow_jobs_success?: (boolean | undefined)[];
|
|
59
|
+
flow_jobs?: string[];
|
|
55
60
|
iteration_total?: number;
|
|
56
61
|
retries?: number;
|
|
57
62
|
duration_ms?: number;
|
|
@@ -3,7 +3,7 @@ This file contains "middleware" functions that sanitize user input (UserNodeType
|
|
|
3
3
|
maintain consistency between previous
|
|
4
4
|
|
|
5
5
|
*/
|
|
6
|
-
import { bottomCb, leftCb, rightCb, topCb
|
|
6
|
+
import { bottomCb, leftCb, rightCb, topCb } from '../../edges/controllers/anchorCbUser';
|
|
7
7
|
/**
|
|
8
8
|
* sanitizeUserNodesAndEdges will sanitize the data initially passed in to Svelvet component. For example, the node that user specified have an integar as its id but to instantiate a Node and be compatible with uuid we will need to convert the integar id to a string.
|
|
9
9
|
* @param userNodes The array of nodes that have a UserNodeType
|
|
@@ -51,6 +51,8 @@ function convertAnchorPositionsToCallbacks(userNodes, userEdges) {
|
|
|
51
51
|
for (let userEdge of userEdges) {
|
|
52
52
|
const userNodeSource = userNodesObj[userEdge.source];
|
|
53
53
|
const userNodeTarget = userNodesObj[userEdge.target];
|
|
54
|
+
if (!userNodeSource || !userNodeTarget)
|
|
55
|
+
continue;
|
|
54
56
|
const sourcePosition = userNodeSource.sourcePosition;
|
|
55
57
|
const targetPosition = userNodeTarget.targetPosition;
|
|
56
58
|
const cbs = { left: leftCb, right: rightCb, top: topCb, bottom: bottomCb };
|
|
@@ -68,9 +70,7 @@ function convertIdToString(userNodes) {
|
|
|
68
70
|
userNodes = userNodes.map((node) => {
|
|
69
71
|
node.id = node.id.toString();
|
|
70
72
|
node.childNodes =
|
|
71
|
-
node.childNodes === undefined
|
|
72
|
-
? []
|
|
73
|
-
: node.childNodes.map((childId) => childId.toString());
|
|
73
|
+
node.childNodes === undefined ? [] : node.childNodes.map((childId) => childId.toString());
|
|
74
74
|
return node;
|
|
75
75
|
});
|
|
76
76
|
}
|
|
@@ -123,6 +123,8 @@ $: {
|
|
|
123
123
|
on:nodeInsert={(e) => node?.data?.custom?.cb?.('nodeInsert', e.detail)}
|
|
124
124
|
on:addBranch={(e) => node?.data?.custom?.cb?.('addBranch', e.detail)}
|
|
125
125
|
on:removeBranch={(e) => node?.data?.custom?.cb?.('removeBranch', e.detail)}
|
|
126
|
+
on:selectedIteration={(e) =>
|
|
127
|
+
node?.data?.custom?.cb?.('selectedIteration', e.detail)}
|
|
126
128
|
{...node.data.custom.props}
|
|
127
129
|
/>
|
|
128
130
|
</Node>
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<script>// destructuring props to pass into BaseEdge component
|
|
2
2
|
export let edgeTextProps;
|
|
3
|
-
$: ({ label, labelBgColor, labelTextColor, centerX, centerY } =
|
|
4
|
-
edgeTextProps);
|
|
3
|
+
$: ({ label, labelBgColor, labelTextColor, centerX, centerY } = edgeTextProps);
|
|
5
4
|
const shiftRectY = 7;
|
|
6
5
|
$: pxRatio = label.length < 3 ? 9 : 7;
|
|
7
6
|
// determine the center point of the edge to be used in the EdgeText component
|
|
@@ -16,28 +15,28 @@ $: labelPx = newLength * pxRatio;
|
|
|
16
15
|
</script>
|
|
17
16
|
|
|
18
17
|
{#if typeof label === 'undefined' || !label}
|
|
19
|
-
|
|
18
|
+
{null}
|
|
20
19
|
{:else}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
20
|
+
<g>
|
|
21
|
+
<rect
|
|
22
|
+
class="EdgeTextBg"
|
|
23
|
+
data-testid="edge-text-bg"
|
|
24
|
+
fill={labelBgColor ? labelBgColor : 'white'}
|
|
25
|
+
x={textCenterX - labelPx / 2}
|
|
26
|
+
y={textCenterY - shiftRectY}
|
|
27
|
+
width={labelPx}
|
|
28
|
+
height={16}
|
|
29
|
+
/>
|
|
30
|
+
<text
|
|
31
|
+
class="EdgeText"
|
|
32
|
+
x={textCenterX}
|
|
33
|
+
y={textCenterY}
|
|
34
|
+
font-size="12px"
|
|
35
|
+
dominant-baseline="central"
|
|
36
|
+
text-anchor="middle"
|
|
37
|
+
fill={labelTextColor ? labelTextColor : 'black'}
|
|
38
|
+
>
|
|
39
|
+
{label}
|
|
40
|
+
</text>
|
|
41
|
+
</g>
|
|
43
42
|
{/if}
|
|
@@ -8,4 +8,4 @@ export declare const NODE: {
|
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
10
|
export declare function createIdGenerator(): Generator<number, number, unknown>;
|
|
11
|
-
export declare function getStateColor(state: FlowStatusModule['type'] | undefined): string;
|
|
11
|
+
export declare function getStateColor(state: FlowStatusModule['type'] | undefined, isDark: boolean): string;
|
|
@@ -12,8 +12,7 @@ export function* createIdGenerator() {
|
|
|
12
12
|
yield id++;
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
export function getStateColor(state) {
|
|
16
|
-
const isDark = document.documentElement.classList.contains('dark');
|
|
15
|
+
export function getStateColor(state, isDark) {
|
|
17
16
|
switch (state) {
|
|
18
17
|
case 'Success':
|
|
19
18
|
return isDark ? '#059669' : 'rgb(193, 255, 216)';
|
|
@@ -16,13 +16,13 @@ import FlowIcon from './FlowIcon.svelte';
|
|
|
16
16
|
import { canWrite, getLocalSetting, storeLocalSetting } from '../../utils';
|
|
17
17
|
import { page } from '$app/stores';
|
|
18
18
|
import { setQuery } from '../../navigation';
|
|
19
|
-
import ContentSearch from '../ContentSearch.svelte';
|
|
20
19
|
import Drawer from '../common/drawer/Drawer.svelte';
|
|
21
20
|
import HighlightCode from '../HighlightCode.svelte';
|
|
22
21
|
import DrawerContent from '../common/drawer/DrawerContent.svelte';
|
|
23
22
|
import Item from './Item.svelte';
|
|
24
23
|
import TreeViewRoot from './TreeViewRoot.svelte';
|
|
25
24
|
import { Popup } from '../common';
|
|
25
|
+
import { getContext } from 'svelte';
|
|
26
26
|
let scripts;
|
|
27
27
|
let flows;
|
|
28
28
|
let apps;
|
|
@@ -31,11 +31,12 @@ let filteredItems = [];
|
|
|
31
31
|
let itemKind = $page.url.searchParams.get('kind') ?? 'all';
|
|
32
32
|
let loading = true;
|
|
33
33
|
let nbDisplayed = 15;
|
|
34
|
-
async function loadScripts(
|
|
34
|
+
async function loadScripts(includeWithoutMain) {
|
|
35
35
|
const loadedScripts = await ScriptService.listScripts({
|
|
36
36
|
workspace: $workspaceStore,
|
|
37
37
|
showArchived: archived ? true : undefined,
|
|
38
|
-
|
|
38
|
+
includeWithoutMain: includeWithoutMain ? true : undefined,
|
|
39
|
+
includeDraftOnly: true
|
|
39
40
|
});
|
|
40
41
|
scripts = loadedScripts.map((script) => {
|
|
41
42
|
return {
|
|
@@ -48,7 +49,8 @@ async function loadScripts(hideWithoutMain) {
|
|
|
48
49
|
async function loadFlows() {
|
|
49
50
|
flows = (await FlowService.listFlows({
|
|
50
51
|
workspace: $workspaceStore,
|
|
51
|
-
showArchived: archived ? true : undefined
|
|
52
|
+
showArchived: archived ? true : undefined,
|
|
53
|
+
includeDraftOnly: true
|
|
52
54
|
})).map((x) => {
|
|
53
55
|
return {
|
|
54
56
|
canWrite: canWrite(x.path, x.extra_perms, $userStore) &&
|
|
@@ -60,7 +62,7 @@ async function loadFlows() {
|
|
|
60
62
|
loading = false;
|
|
61
63
|
}
|
|
62
64
|
async function loadApps() {
|
|
63
|
-
apps = (await AppService.listApps({ workspace: $workspaceStore })).map((app) => {
|
|
65
|
+
apps = (await AppService.listApps({ workspace: $workspaceStore, includeDraftOnly: true })).map((app) => {
|
|
64
66
|
return {
|
|
65
67
|
canWrite: canWrite(app.path, app.extra_perms, $userStore) &&
|
|
66
68
|
app.workspace_id == $workspaceStore &&
|
|
@@ -131,7 +133,7 @@ $: if ($workspaceStore) {
|
|
|
131
133
|
}
|
|
132
134
|
$: {
|
|
133
135
|
if ($userStore && $workspaceStore) {
|
|
134
|
-
loadScripts(
|
|
136
|
+
loadScripts(includeWithoutMain);
|
|
135
137
|
loadFlows();
|
|
136
138
|
if (!archived) {
|
|
137
139
|
loadApps();
|
|
@@ -187,14 +189,16 @@ $: items && resetScroll();
|
|
|
187
189
|
let archived = false;
|
|
188
190
|
const TREE_VIEW_SETTING_NAME = 'treeView';
|
|
189
191
|
const FILTER_USER_FOLDER_SETTING_NAME = 'filterUserFolders';
|
|
190
|
-
const
|
|
192
|
+
const INCLUDE_WITHOUT_MAIN_SETTING_NAME = 'includeWithoutMain';
|
|
191
193
|
let treeView = getLocalSetting(TREE_VIEW_SETTING_NAME) == 'true';
|
|
192
194
|
let filterUserFolders = getLocalSetting(FILTER_USER_FOLDER_SETTING_NAME) == 'true';
|
|
193
|
-
let
|
|
195
|
+
let includeWithoutMain = getLocalSetting(INCLUDE_WITHOUT_MAIN_SETTING_NAME)
|
|
196
|
+
? getLocalSetting(INCLUDE_WITHOUT_MAIN_SETTING_NAME) == 'true'
|
|
197
|
+
: true;
|
|
194
198
|
$: storeLocalSetting(TREE_VIEW_SETTING_NAME, treeView ? 'true' : undefined);
|
|
195
199
|
$: storeLocalSetting(FILTER_USER_FOLDER_SETTING_NAME, filterUserFolders ? 'true' : undefined);
|
|
196
|
-
$: storeLocalSetting(
|
|
197
|
-
|
|
200
|
+
$: storeLocalSetting(INCLUDE_WITHOUT_MAIN_SETTING_NAME, includeWithoutMain ? 'true' : undefined);
|
|
201
|
+
const openSearchWithPrefilledText = getContext("openSearchWithPrefilledText");
|
|
198
202
|
let viewCodeDrawer;
|
|
199
203
|
let viewCodeTitle;
|
|
200
204
|
let script;
|
|
@@ -235,7 +239,6 @@ let collapseAll = true;
|
|
|
235
239
|
</DrawerContent>
|
|
236
240
|
</Drawer>
|
|
237
241
|
|
|
238
|
-
<ContentSearch bind:this={contentSearch} />
|
|
239
242
|
<CenteredPage>
|
|
240
243
|
<div class="flex flex-wrap gap-2 items-center justify-between w-full mt-2">
|
|
241
244
|
<div class="flex justify-start">
|
|
@@ -300,7 +303,7 @@ let collapseAll = true;
|
|
|
300
303
|
</button>
|
|
301
304
|
</div>
|
|
302
305
|
<Button
|
|
303
|
-
on:click={() =>
|
|
306
|
+
on:click={() => openSearchWithPrefilledText("#")}
|
|
304
307
|
variant="border"
|
|
305
308
|
size="sm"
|
|
306
309
|
spacingSize="lg"
|
|
@@ -345,12 +348,12 @@ let collapseAll = true;
|
|
|
345
348
|
<div>
|
|
346
349
|
<span class="text-sm font-semibold">Filters</span>
|
|
347
350
|
<div class="flex flex-col gap-2 mt-2">
|
|
348
|
-
<Toggle size="xs" bind:checked={archived} options={{ right: '
|
|
351
|
+
<Toggle size="xs" bind:checked={archived} options={{ right: 'Only archived' }} />
|
|
349
352
|
{#if $userStore && !$userStore.operator}
|
|
350
353
|
<Toggle
|
|
351
354
|
size="xs"
|
|
352
|
-
bind:checked={
|
|
353
|
-
options={{ right: '
|
|
355
|
+
bind:checked={includeWithoutMain}
|
|
356
|
+
options={{ right: 'Include without main function' }}
|
|
354
357
|
/>
|
|
355
358
|
{/if}
|
|
356
359
|
</div>
|
|
@@ -402,12 +405,12 @@ let collapseAll = true;
|
|
|
402
405
|
{nbDisplayed}
|
|
403
406
|
{collapseAll}
|
|
404
407
|
isSearching={filter !== ''}
|
|
405
|
-
on:scriptChanged={() => loadScripts(
|
|
408
|
+
on:scriptChanged={() => loadScripts(includeWithoutMain)}
|
|
406
409
|
on:flowChanged={loadFlows}
|
|
407
410
|
on:appChanged={loadApps}
|
|
408
411
|
on:rawAppChanged={loadRawApps}
|
|
409
412
|
on:reload={() => {
|
|
410
|
-
loadScripts(
|
|
413
|
+
loadScripts(includeWithoutMain)
|
|
411
414
|
loadFlows()
|
|
412
415
|
loadApps()
|
|
413
416
|
loadRawApps()
|
|
@@ -419,12 +422,12 @@ let collapseAll = true;
|
|
|
419
422
|
{#each (items ?? []).slice(0, nbDisplayed) as item (item.type + '/' + item.path)}
|
|
420
423
|
<Item
|
|
421
424
|
{item}
|
|
422
|
-
on:scriptChanged={() => loadScripts(
|
|
425
|
+
on:scriptChanged={() => loadScripts(includeWithoutMain)}
|
|
423
426
|
on:flowChanged={loadFlows}
|
|
424
427
|
on:appChanged={loadApps}
|
|
425
428
|
on:rawAppChanged={loadRawApps}
|
|
426
429
|
on:reload={() => {
|
|
427
|
-
loadScripts(
|
|
430
|
+
loadScripts(includeWithoutMain)
|
|
428
431
|
loadFlows()
|
|
429
432
|
loadApps()
|
|
430
433
|
loadRawApps()
|
|
@@ -12,6 +12,7 @@ import LogViewer from '../LogViewer.svelte';
|
|
|
12
12
|
import { Badge } from '../common';
|
|
13
13
|
import { forLater } from '../../forLater';
|
|
14
14
|
import DurationMs from '../DurationMs.svelte';
|
|
15
|
+
import { workspaceStore } from '../../stores';
|
|
15
16
|
const POPUP_HEIGHT = 320;
|
|
16
17
|
export let id;
|
|
17
18
|
let job = undefined;
|
|
@@ -95,7 +96,11 @@ onDestroy(() => {
|
|
|
95
96
|
Mem: {job?.['mem_peak'] ? `${(job['mem_peak'] / 1024).toPrecision(4)}MB` : 'N/A'}
|
|
96
97
|
</Badge>
|
|
97
98
|
{#if job?.['duration_ms']}
|
|
98
|
-
<DurationMs
|
|
99
|
+
<DurationMs
|
|
100
|
+
duration_ms={job?.['duration_ms']}
|
|
101
|
+
self_wait_time_ms={job?.self_wait_time_ms}
|
|
102
|
+
aggregate_wait_time_ms={job?.aggregate_wait_time_ms}
|
|
103
|
+
/>
|
|
99
104
|
{/if}
|
|
100
105
|
{#if job?.['labels'] && Array.isArray(job?.['labels']) && job?.['labels'].length > 0}
|
|
101
106
|
{#each job?.['labels'] as label}
|
|
@@ -104,7 +109,11 @@ onDestroy(() => {
|
|
|
104
109
|
{/if}
|
|
105
110
|
</div>
|
|
106
111
|
<div class="w-1/2 h-full overflow-auto">
|
|
107
|
-
<JobArgs
|
|
112
|
+
<JobArgs
|
|
113
|
+
id={job?.id}
|
|
114
|
+
workspace={job?.workspace_id ?? $workspaceStore ?? 'no_w'}
|
|
115
|
+
args={job?.args}
|
|
116
|
+
/>
|
|
108
117
|
</div>
|
|
109
118
|
<div class="w-1/2 h-full overflow-auto p-2">
|
|
110
119
|
{#if job && 'scheduled_for' in job && !job.running && job.scheduled_for && forLater(job.scheduled_for)}
|
|
@@ -97,6 +97,36 @@ async function loadResources() {
|
|
|
97
97
|
on:select
|
|
98
98
|
/>
|
|
99
99
|
</div>
|
|
100
|
+
{#if Object.keys(pickableProperties.priorIds).length > 0}
|
|
101
|
+
{#if suggestedPropsFiltered && Object.keys(suggestedPropsFiltered).length > 0}
|
|
102
|
+
<span class="font-bold text-sm">Suggested Results</span>
|
|
103
|
+
<div class="overflow-y-auto mb-2">
|
|
104
|
+
<ObjectViewer
|
|
105
|
+
allowCopy={false}
|
|
106
|
+
topLevelNode
|
|
107
|
+
pureViewer={!$propPickerConfig}
|
|
108
|
+
collapsed={false}
|
|
109
|
+
json={suggestedPropsFiltered}
|
|
110
|
+
on:select={(e) => {
|
|
111
|
+
dispatch('select', `results.${e.detail}`)
|
|
112
|
+
}}
|
|
113
|
+
/>
|
|
114
|
+
</div>
|
|
115
|
+
{/if}
|
|
116
|
+
<span class="font-bold text-sm">All Results</span>
|
|
117
|
+
<div class="overflow-y-auto mb-2">
|
|
118
|
+
<ObjectViewer
|
|
119
|
+
allowCopy={false}
|
|
120
|
+
topLevelNode
|
|
121
|
+
pureViewer={!$propPickerConfig}
|
|
122
|
+
collapsed={true}
|
|
123
|
+
json={resultByIdFiltered}
|
|
124
|
+
on:select={(e) => {
|
|
125
|
+
dispatch('select', `results.${e.detail}`)
|
|
126
|
+
}}
|
|
127
|
+
/>
|
|
128
|
+
</div>
|
|
129
|
+
{/if}
|
|
100
130
|
{:else}
|
|
101
131
|
{#if previousId}
|
|
102
132
|
<span class="font-bold text-sm">Previous Result</span>
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
<script>import
|
|
1
|
+
<script>import { createEventDispatcher } from 'svelte';
|
|
2
|
+
import ObjectViewer from './ObjectViewer.svelte';
|
|
2
3
|
export let result;
|
|
4
|
+
export let flow_input = undefined;
|
|
5
|
+
const dispatch = createEventDispatcher();
|
|
3
6
|
</script>
|
|
4
7
|
|
|
5
8
|
<div class="w-full px-2">
|
|
@@ -7,4 +10,14 @@ export let result;
|
|
|
7
10
|
<div class="overflow-y-auto mb-2 w-full">
|
|
8
11
|
<ObjectViewer allowCopy={false} json={{ result }} on:select />
|
|
9
12
|
</div>
|
|
13
|
+
{#if flow_input}
|
|
14
|
+
<span class="font-bold text-sm">Flow Input</span>
|
|
15
|
+
<div class="overflow-y-auto w-full">
|
|
16
|
+
<ObjectViewer
|
|
17
|
+
allowCopy={false}
|
|
18
|
+
json={flow_input}
|
|
19
|
+
on:select={(e) => dispatch('select', `flow_input.${e.detail}`)}
|
|
20
|
+
/>
|
|
21
|
+
</div>
|
|
22
|
+
{/if}
|
|
10
23
|
</div>
|
|
@@ -3,6 +3,7 @@ import { JobService, ConcurrencyGroupsService } from '../../gen';
|
|
|
3
3
|
import { sendUserToast } from '../../toast';
|
|
4
4
|
import { workspaceStore } from '../../stores';
|
|
5
5
|
import { tweened } from 'svelte/motion';
|
|
6
|
+
import { subtractDaysFromDateString } from '../../utils';
|
|
6
7
|
export let jobs;
|
|
7
8
|
export let user;
|
|
8
9
|
export let label = null;
|
|
@@ -32,6 +33,8 @@ export let refreshRate = 5000;
|
|
|
32
33
|
export let syncQueuedRunsCount = true;
|
|
33
34
|
export let allWorkspaces = false;
|
|
34
35
|
export let computeMinAndMax;
|
|
36
|
+
export let lookback = 0;
|
|
37
|
+
export let perPage = undefined;
|
|
35
38
|
let intervalId;
|
|
36
39
|
let sync = true;
|
|
37
40
|
$: jobKinds = computeJobKinds(jobKindsCat);
|
|
@@ -42,6 +45,7 @@ $: ($workspaceStore && loadJobsIntern(true)) ||
|
|
|
42
45
|
isSkipped != undefined &&
|
|
43
46
|
jobKinds &&
|
|
44
47
|
concurrencyKey &&
|
|
48
|
+
lookback &&
|
|
45
49
|
user &&
|
|
46
50
|
folder &&
|
|
47
51
|
showFutureJobs != undefined &&
|
|
@@ -91,11 +95,12 @@ function computeJobKinds(jobKindsCat) {
|
|
|
91
95
|
return kinds.join(',');
|
|
92
96
|
}
|
|
93
97
|
}
|
|
94
|
-
async function fetchJobs(startedBefore, startedAfter) {
|
|
98
|
+
async function fetchJobs(startedBefore, startedAfter, startedAfterCompletedJobs) {
|
|
95
99
|
return JobService.listJobs({
|
|
96
100
|
workspace: $workspaceStore,
|
|
97
101
|
createdOrStartedBefore: startedBefore,
|
|
98
102
|
createdOrStartedAfter: startedAfter,
|
|
103
|
+
createdOrStartedAfterCompletedJobs: startedAfterCompletedJobs,
|
|
99
104
|
schedulePath,
|
|
100
105
|
scriptPathExact: path === null || path === '' ? undefined : path,
|
|
101
106
|
createdBy: user === null || user === '' ? undefined : user,
|
|
@@ -112,16 +117,18 @@ async function fetchJobs(startedBefore, startedAfter) {
|
|
|
112
117
|
result: resultFilter && resultFilter != '{}' && resultFilter != '' && resultError == ''
|
|
113
118
|
? resultFilter
|
|
114
119
|
: undefined,
|
|
115
|
-
allWorkspaces: allWorkspaces ? true : undefined
|
|
120
|
+
allWorkspaces: allWorkspaces ? true : undefined,
|
|
121
|
+
perPage
|
|
116
122
|
});
|
|
117
123
|
}
|
|
118
|
-
async function fetchExtendedJobs(concurrencyKey, startedBefore, startedAfter) {
|
|
124
|
+
async function fetchExtendedJobs(concurrencyKey, startedBefore, startedAfter, startedAfterCompletedJobs) {
|
|
119
125
|
return ConcurrencyGroupsService.listExtendedJobs({
|
|
120
126
|
rowLimit: 1000,
|
|
121
127
|
concurrencyKey: concurrencyKey == null || concurrencyKey == '' ? undefined : concurrencyKey,
|
|
122
128
|
workspace: $workspaceStore,
|
|
123
129
|
createdOrStartedBefore: startedBefore,
|
|
124
130
|
createdOrStartedAfter: startedAfter,
|
|
131
|
+
createdOrStartedAfterCompletedJobs: startedAfterCompletedJobs,
|
|
125
132
|
schedulePath,
|
|
126
133
|
scriptPathExact: path === null || path === '' ? undefined : path,
|
|
127
134
|
createdBy: user === null || user === '' ? undefined : user,
|
|
@@ -138,7 +145,8 @@ async function fetchExtendedJobs(concurrencyKey, startedBefore, startedAfter) {
|
|
|
138
145
|
result: resultFilter && resultFilter != '{}' && resultFilter != '' && resultError == ''
|
|
139
146
|
? resultFilter
|
|
140
147
|
: undefined,
|
|
141
|
-
allWorkspaces: allWorkspaces ? true : undefined
|
|
148
|
+
allWorkspaces: allWorkspaces ? true : undefined,
|
|
149
|
+
perPage
|
|
142
150
|
});
|
|
143
151
|
}
|
|
144
152
|
export async function loadJobs(nMinTs, nMaxTs, reset, shouldGetCount) {
|
|
@@ -160,8 +168,12 @@ async function loadJobsIntern(shouldGetCount) {
|
|
|
160
168
|
}
|
|
161
169
|
loading = true;
|
|
162
170
|
try {
|
|
171
|
+
// Extend MinTs to fetch jobs mefore minTs and show a correct concurrency graph
|
|
172
|
+
// TODO: when an ended_at column is created on the completed_job table,
|
|
173
|
+
// lookback won't be needed anymore (just filter ended_at > minTs instead
|
|
174
|
+
const extendedMinTs = subtractDaysFromDateString(minTs, lookback);
|
|
163
175
|
if (concurrencyKey == null || concurrencyKey === '') {
|
|
164
|
-
let newJobs = await fetchJobs(maxTs, undefined);
|
|
176
|
+
let newJobs = await fetchJobs(maxTs, undefined, extendedMinTs);
|
|
165
177
|
extendedJobs = { jobs: newJobs, obscured_jobs: [] };
|
|
166
178
|
// Filter on minTs here and not in the backend
|
|
167
179
|
// to get enough data for the concurrency graph
|
|
@@ -169,7 +181,7 @@ async function loadJobsIntern(shouldGetCount) {
|
|
|
169
181
|
externalJobs = [];
|
|
170
182
|
}
|
|
171
183
|
else {
|
|
172
|
-
extendedJobs = await fetchExtendedJobs(concurrencyKey, maxTs, undefined);
|
|
184
|
+
extendedJobs = await fetchExtendedJobs(concurrencyKey, maxTs, undefined, extendedMinTs);
|
|
173
185
|
const newJobs = extendedJobs.jobs;
|
|
174
186
|
const newExternalJobs = extendedJobs.obscured_jobs;
|
|
175
187
|
// Filter on minTs here and not in the backend
|
|
@@ -245,11 +257,11 @@ async function syncer() {
|
|
|
245
257
|
loading = true;
|
|
246
258
|
let newJobs;
|
|
247
259
|
if (concurrencyKey == null || concurrencyKey === '') {
|
|
248
|
-
newJobs = await fetchJobs(maxTs, minTs ?? ts);
|
|
260
|
+
newJobs = await fetchJobs(maxTs, minTs ?? ts, undefined);
|
|
249
261
|
}
|
|
250
262
|
else {
|
|
251
263
|
// Obscured jobs have no ids, so we have to do the full request
|
|
252
|
-
extendedJobs = await fetchExtendedJobs(concurrencyKey, maxTs, undefined);
|
|
264
|
+
extendedJobs = await fetchExtendedJobs(concurrencyKey, maxTs, undefined, minTs ?? ts);
|
|
253
265
|
externalJobs = computeExternalJobs(extendedJobs.obscured_jobs);
|
|
254
266
|
// Filter on minTs here and not in the backend
|
|
255
267
|
// to get enough data for the concurrency graph
|
|
@@ -336,6 +348,7 @@ onMount(() => {
|
|
|
336
348
|
};
|
|
337
349
|
});
|
|
338
350
|
onDestroy(() => {
|
|
351
|
+
sync = false;
|
|
339
352
|
if (intervalId) {
|
|
340
353
|
clearInterval(intervalId);
|
|
341
354
|
}
|
|
@@ -35,6 +35,8 @@ declare const __propDef: {
|
|
|
35
35
|
minTs: string;
|
|
36
36
|
maxTs: string;
|
|
37
37
|
} | undefined) | undefined;
|
|
38
|
+
lookback?: number | undefined;
|
|
39
|
+
perPage?: number | undefined;
|
|
38
40
|
loadJobs?: ((nMinTs: string | undefined, nMaxTs: string | undefined, reset: boolean, shouldGetCount?: boolean) => Promise<void>) | undefined;
|
|
39
41
|
};
|
|
40
42
|
events: {
|
|
@@ -121,7 +121,11 @@ const dispatch = createEventDispatcher();
|
|
|
121
121
|
<span class="font-semibold text-xs leading-6">Arguments</span>
|
|
122
122
|
|
|
123
123
|
<div class="w-full">
|
|
124
|
-
<JobArgs
|
|
124
|
+
<JobArgs
|
|
125
|
+
id={job?.id}
|
|
126
|
+
workspace={job?.workspace_id ?? $workspaceStore ?? 'no_w'}
|
|
127
|
+
args={job?.args}
|
|
128
|
+
/>
|
|
125
129
|
</div>
|
|
126
130
|
|
|
127
131
|
{#if job?.type === 'CompletedJob'}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script>import { goto } from '$app/navigation';
|
|
2
|
-
import { displayDate,
|
|
2
|
+
import { displayDate, msToReadableTime, truncateHash, truncateRev } from '../../utils';
|
|
3
3
|
import { Badge, Button } from '../common';
|
|
4
4
|
import ScheduleEditor from '../ScheduleEditor.svelte';
|
|
5
5
|
import BarsStaggered from '../icons/BarsStaggered.svelte';
|
|
@@ -45,9 +45,9 @@ function isJobCancelable(j) {
|
|
|
45
45
|
>
|
|
46
46
|
<div class="w-1/12 flex justify-center">
|
|
47
47
|
{#if isSelectingJobsToCancel && isJobCancelable(job)}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
<div class="px-2">
|
|
49
|
+
<input type="checkbox" checked={selected} />
|
|
50
|
+
</div>
|
|
51
51
|
{/if}
|
|
52
52
|
{#if isExternal}
|
|
53
53
|
<Badge color="gray" baseClass="!px-1.5">
|
|
@@ -86,11 +86,11 @@ function isJobCancelable(j) {
|
|
|
86
86
|
<div class="flex flex-row items-center gap-1 text-gray-500 dark:text-gray-300 text-2xs">
|
|
87
87
|
{#if job}
|
|
88
88
|
{#if 'started_at' in job && job.started_at}
|
|
89
|
-
Started <TimeAgo date={job.started_at ?? ''} />
|
|
89
|
+
Started <TimeAgo withDate agoOnlyIfRecent date={job.started_at ?? ''} />
|
|
90
90
|
{#if job && 'duration_ms' in job && job.duration_ms != undefined}
|
|
91
|
-
(Ran in {
|
|
91
|
+
(Ran in {msToReadableTime(
|
|
92
92
|
job.duration_ms
|
|
93
|
-
)}
|
|
93
|
+
)}{#if job.job_kind == 'flow' || job.job_kind == 'flowpreview'} total{/if})
|
|
94
94
|
{/if}
|
|
95
95
|
{#if job && (job.self_wait_time_ms || job.aggregate_wait_time_ms)}
|
|
96
96
|
<WaitTimeWarning
|
|
@@ -102,7 +102,11 @@ function isJobCancelable(j) {
|
|
|
102
102
|
{:else if `scheduled_for` in job && job.scheduled_for && forLater(job.scheduled_for)}
|
|
103
103
|
Scheduled for {displayDate(job.scheduled_for)}
|
|
104
104
|
{:else}
|
|
105
|
-
Waiting for executor (created <TimeAgo
|
|
105
|
+
Waiting for executor (created <TimeAgo
|
|
106
|
+
withDate
|
|
107
|
+
agoOnlyIfRecent
|
|
108
|
+
date={job.created_at || ''}
|
|
109
|
+
/>)
|
|
106
110
|
{/if}
|
|
107
111
|
{/if}
|
|
108
112
|
</div>
|
|
@@ -530,10 +530,10 @@ let concurrencyKeyTimeout = undefined;
|
|
|
530
530
|
{`Filter by a json being a subset of the args/result. Try '\{"foo": "bar"\}'`}
|
|
531
531
|
</span>
|
|
532
532
|
<Label label="Filter by args">
|
|
533
|
-
<JsonEditor
|
|
533
|
+
<JsonEditor bind:error={argError} bind:code={copyArgFilter} />
|
|
534
534
|
</Label>
|
|
535
535
|
<Label label="Filter by result">
|
|
536
|
-
<JsonEditor
|
|
536
|
+
<JsonEditor bind:error={resultError} bind:code={copyResultFilter} />
|
|
537
537
|
</Label>
|
|
538
538
|
|
|
539
539
|
<div class="flex flex-row gap-2 justify-between">
|
|
@@ -543,7 +543,6 @@ let concurrencyKeyTimeout = undefined;
|
|
|
543
543
|
on:click={() => {
|
|
544
544
|
argFilter = ''
|
|
545
545
|
resultFilter = ''
|
|
546
|
-
close(null)
|
|
547
546
|
}}
|
|
548
547
|
>
|
|
549
548
|
Clear
|
|
@@ -555,7 +554,6 @@ let concurrencyKeyTimeout = undefined;
|
|
|
555
554
|
on:click={() => {
|
|
556
555
|
argFilter = copyArgFilter
|
|
557
556
|
resultFilter = copyResultFilter
|
|
558
|
-
close(null)
|
|
559
557
|
}}
|
|
560
558
|
>
|
|
561
559
|
Set args/result filter
|