windmill-components 1.389.3 → 1.394.4
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 +4 -3
- package/package/components/AppConnectInner.svelte +18 -10
- package/package/components/ArgInfo.svelte +1 -1
- package/package/components/ArgInput.svelte +22 -2
- package/package/components/AutheliaSetting.svelte +1 -0
- package/package/components/AuthentikSetting.svelte +1 -0
- package/package/components/BoundedInputNumber +0 -0
- package/package/components/CliHelpBox.svelte +2 -2
- package/package/components/DateInput.svelte +1 -0
- package/package/components/DisplayResult.svelte +39 -31
- package/package/components/Editor.svelte +0 -21
- package/package/components/ErrorOrRecoveryHandler.svelte +7 -1
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +1 -1
- package/package/components/FlowBuilder.svelte +2 -2
- package/package/components/FlowGraphViewerStep.svelte +22 -0
- package/package/components/FlowJobResult.svelte +1 -0
- package/package/components/FlowMetadata.svelte +3 -2
- package/package/components/FlowStatusViewer.svelte +2 -0
- package/package/components/FlowStatusViewer.svelte.d.ts +2 -0
- package/package/components/FlowStatusViewerInner.svelte +10 -5
- package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -0
- package/package/components/FolderEditor.svelte +1 -1
- package/package/components/IdEditorInput.svelte +82 -0
- package/package/components/IdEditorInput.svelte.d.ts +26 -0
- package/package/components/InputTransformForm.svelte +10 -10
- package/package/components/InputTransformForm.svelte.d.ts +4 -1
- package/package/components/InputTransformSchemaForm.svelte.d.ts +3 -1
- package/package/components/InstanceSettings.svelte +73 -12
- package/package/components/ItemPicker.svelte +1 -0
- package/package/components/KanidmSetting.svelte +1 -0
- package/package/components/KeycloakSetting.svelte +1 -0
- package/package/components/LightweightArgInput.svelte +2 -0
- package/package/components/LogViewer.svelte +206 -0
- package/package/components/ModulePreview.svelte.d.ts +3 -1
- package/package/components/ModulePreviewForm.svelte +2 -2
- package/package/components/ModulePreviewForm.svelte.d.ts +4 -1
- package/package/components/OAuthSetting.svelte +11 -10
- package/package/components/ObjectStoreConfigSettings.svelte +6 -6
- package/package/components/OktaSetting.svelte +1 -0
- package/package/components/Password.svelte +30 -35
- package/package/components/RunChart.svelte +16 -0
- package/package/components/RunChart.svelte.d.ts +2 -0
- package/package/components/SavedInputs.svelte +4 -4
- package/package/components/ScheduleEditorInner.svelte +145 -2
- package/package/components/SchemaForm.svelte +1 -2
- package/package/components/ScriptBuilder.svelte +1 -0
- package/package/components/TestConnection.svelte +24 -6
- package/package/components/TestJobLoader.svelte +2 -0
- package/package/components/ZitadelSetting.svelte +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +0 -1
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +1 -2
- package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte +0 -2
- package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte.d.ts +1 -2
- package/package/components/apps/components/display/table/AppAggridTable.svelte +6 -2
- package/package/components/apps/components/inputs/AppSelect.svelte +19 -18
- package/package/components/apps/editor/AppEditor.svelte +1 -1
- package/package/components/apps/editor/AppPreview.svelte +3 -6
- package/package/components/apps/editor/AppReportsDrawer.svelte +17 -5
- package/package/components/apps/editor/DeploymentHistory.svelte +1 -0
- package/package/components/apps/editor/component/Component.svelte +0 -2
- package/package/components/apps/editor/componentsPanel/themeUtils.js +18 -7
- package/package/components/apps/editor/contextPanel/SubGridOutput.svelte +1 -0
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +13 -67
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte.d.ts +1 -2
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +0 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +0 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte.d.ts +0 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/decisionTree/InsertDecisionTreeNode.svelte +2 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +1 -0
- package/package/components/apps/svelte-select/lib/Select.svelte +1 -0
- package/package/components/build_workers.js +23 -18
- package/package/components/common/button/Button.svelte +3 -4
- package/package/components/common/button/model.d.ts +1 -1
- package/package/components/common/button/model.js +6 -0
- package/package/components/common/clearableInput/ClearableInput.svelte +1 -0
- package/package/components/common/menu/MenuItem.svelte +1 -0
- package/package/components/common/modal/AlwaysMountedModal.svelte +1 -0
- package/package/components/common/stepper/Stepper.svelte +1 -0
- package/package/components/copilot/StepInputsGen.svelte +2 -2
- package/package/components/copilot/StepInputsGen.svelte.d.ts +3 -1
- package/package/components/copilot/lib.js +2 -2
- package/package/components/copilot/prompts/edit.yaml +3 -0
- package/package/components/copilot/prompts/editPrompt.js +3 -3
- package/package/components/copilot/prompts/fix.yaml +3 -0
- package/package/components/copilot/prompts/fixPrompt.js +3 -3
- package/package/components/details/ClipboardPanel.svelte +1 -0
- package/package/components/flows/content/DynamicInputHelpBox.svelte +4 -1
- package/package/components/flows/content/FlowConstants.svelte +3 -3
- package/package/components/flows/content/FlowEditorPanel.svelte +1 -1
- package/package/components/flows/content/FlowModuleComponent.svelte +2 -2
- package/package/components/flows/content/FlowModuleHeader.svelte +5 -45
- package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +47 -0
- package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte.d.ts +16 -0
- package/package/components/flows/content/FlowSettings.svelte +1 -0
- package/package/components/flows/flowModuleNextId.js +1 -1
- package/package/components/flows/flowState.d.ts +1 -1
- package/package/components/flows/flowStateUtils.d.ts +1 -1
- package/package/components/flows/flowStateUtils.js +1 -1
- package/package/components/flows/flowStore.d.ts +1 -0
- package/package/components/flows/flowStore.js +5 -0
- package/package/components/flows/map/FlowJobsMenu.svelte +0 -1
- package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +0 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +103 -19
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +31 -1
- package/package/components/flows/map/InsertModuleButton.svelte +5 -5
- package/package/components/flows/map/InsertTriggerButton.svelte +2 -2
- package/package/components/flows/map/MapItem.svelte +4 -0
- package/package/components/flows/map/MapItem.svelte.d.ts +1 -0
- package/package/components/flows/map/VirtualItem.svelte +15 -7
- package/package/components/flows/map/VirtualItem.svelte.d.ts +2 -1
- package/package/components/flows/previousResults.js +1 -1
- package/package/components/flows/utils.d.ts +3 -3
- package/package/components/flows/utils.js +2 -2
- package/package/components/graph/FlowGraphV2.svelte +4 -0
- package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
- package/package/components/graph/graphBuilder.d.ts +1 -0
- package/package/components/graph/graphBuilder.js +2 -4
- package/package/components/graph/renderers/edges/BaseEdge.svelte +2 -2
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +2 -1
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +3 -3
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/InputNode.svelte +2 -2
- package/package/components/graph/renderers/nodes/ModuleNode.svelte +6 -2
- package/package/components/graph/util.d.ts +1 -1
- package/package/components/graph/util.js +7 -2
- package/package/components/icons/AzureIcon.svelte +1 -1
- package/package/components/icons/FunkwhaleIcon.svelte +1 -19
- package/package/components/icons/JumpCloudIcon.svelte +12 -0
- package/package/components/icons/JumpCloudIcon.svelte.d.ts +17 -0
- package/package/components/icons/KeycloakIcon.svelte +20 -0
- package/package/components/icons/KeycloakIcon.svelte.d.ts +17 -0
- package/package/components/icons/MailchimpIcon.svelte +1 -1
- package/package/components/icons/ZitadelIcon.svelte +76 -0
- package/package/components/icons/ZitadelIcon.svelte.d.ts +17 -0
- package/package/components/icons/index.d.ts +7 -1
- package/package/components/icons/index.js +8 -2
- package/package/components/instanceSettings.d.ts +1 -1
- package/package/components/instanceSettings.js +24 -15
- package/package/components/runs/JobLoader.svelte +17 -6
- package/package/components/runs/JobLoader.svelte.d.ts +2 -0
- package/package/components/runs/RunRow.svelte +7 -7
- package/package/components/runs/RunsFilter.svelte +8 -1
- package/package/components/runs/RunsTable.svelte +30 -8
- package/package/components/runs/RunsTable.svelte.d.ts +2 -0
- package/package/components/schema/PropertyEditor.svelte +0 -5
- package/package/components/settings/WorkspaceUserSettings.svelte +1 -1
- package/package/components/sidebar/MenuLink.svelte +2 -1
- package/package/components/sidebar/WorkspaceMenu.svelte +4 -1
- package/package/components/sidebar/changelogs.js +30 -0
- package/package/components/tutorials/FlowBuilderTutorialsForLoop.svelte +2 -2
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +21 -0
- package/package/gen/schemas.gen.js +21 -0
- package/package/gen/services.gen.d.ts +11 -12
- package/package/gen/services.gen.js +19 -24
- package/package/gen/types.gen.d.ts +62 -37
- package/package/hub.d.ts +1 -0
- package/package/hubPaths.json +11 -8
- package/package.json +4 -4
- package/package/windmill_fetch.d.ts.txt +0 -16966
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<script>export let height = '24px';
|
|
2
|
+
export let width = '24px';
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<svg {width} {height} viewBox="0 0 467 467" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
|
6
|
+
<g id="zitadel-logo-solo-darkdesign" transform="matrix(0.564847,0,0,0.659318,-1282.85,0)">
|
|
7
|
+
<rect x="2271.15" y="0" width="826.773" height="708.241" style="fill:none;"/>
|
|
8
|
+
<g transform="matrix(4.96737,-1.14029,1.331,4.25561,-5923.46,-2258.26)">
|
|
9
|
+
<path d="M1493.5,1056.38L1493.5,1037L1496.5,1037L1496.5,1061.62L1426.02,1020.38L1496.5,979.392L1496.5,1004L1493.5,1004L1493.5,984.608L1431.98,1020.39L1493.5,1056.38Z" style="fill:white;"/>
|
|
10
|
+
</g>
|
|
11
|
+
<g transform="matrix(31.0036,0,0,15.0393,-397275,-666.457)">
|
|
12
|
+
<g transform="matrix(-0.0429306,-0.282967,0.160219,-0.0758207,12884.5,137.392)">
|
|
13
|
+
<path d="M212.517,110L200.392,110L190,92L179.608,110L167.483,110L190,71L212.517,110Z" style="fill:url(#_Linear1);"/>
|
|
14
|
+
</g>
|
|
15
|
+
<g transform="matrix(0.160219,0.0758207,-0.0429306,0.282967,12878.9,10.8747)">
|
|
16
|
+
<path d="M212.517,110L200.392,110L190,92L179.608,110L167.483,110L190,71L212.517,110Z" style="fill:url(#_Linear2);"/>
|
|
17
|
+
</g>
|
|
18
|
+
<g transform="matrix(-0.117289,0.207146,-0.117289,-0.207146,12943.8,65.7)">
|
|
19
|
+
<path d="M212.517,110L200.392,110L190,92L179.608,110L167.483,110L190,71L212.517,110Z" style="fill:url(#_Linear3);"/>
|
|
20
|
+
</g>
|
|
21
|
+
<g transform="matrix(-0.160219,-0.0758207,0.0429306,-0.282967,12917.4,132.195)">
|
|
22
|
+
<path d="M139.622,117L149,142L130.244,142L139.622,117Z" style="fill:url(#_Linear4);"/>
|
|
23
|
+
</g>
|
|
24
|
+
<g transform="matrix(-0.117289,0.207146,0.117289,0.207146,12897.8,5.87512)">
|
|
25
|
+
<path d="M139.622,117L149,142L130.244,142L139.622,117Z" style="fill:url(#_Linear5);"/>
|
|
26
|
+
</g>
|
|
27
|
+
<g transform="matrix(-0.0429306,-0.282967,-0.160219,0.0758207,12936.8,97.6441)">
|
|
28
|
+
<path d="M139.622,117L149,142L130.244,142L139.622,117Z" style="fill:url(#_Linear6);"/>
|
|
29
|
+
</g>
|
|
30
|
+
</g>
|
|
31
|
+
<g transform="matrix(4.96737,-1.14029,1.331,4.25561,-5928.43,-2257.12)">
|
|
32
|
+
<circle cx="1496" cy="1004" r="7" style="fill:white;"/>
|
|
33
|
+
</g>
|
|
34
|
+
<g transform="matrix(4.96737,-1.14029,1.331,4.25561,-5884.5,-2116.69)">
|
|
35
|
+
<circle cx="1496" cy="1004" r="7" style="fill:white;"/>
|
|
36
|
+
</g>
|
|
37
|
+
<g transform="matrix(4.96737,-1.14029,1.331,4.25561,-5855.22,-2023.06)">
|
|
38
|
+
<circle cx="1496" cy="1004" r="7" style="fill:white;"/>
|
|
39
|
+
</g>
|
|
40
|
+
<g transform="matrix(4.96737,-1.14029,1.331,4.25561,-6234.47,-2112.14)">
|
|
41
|
+
<circle cx="1496" cy="1004" r="7" style="fill:white;"/>
|
|
42
|
+
</g>
|
|
43
|
+
<g transform="matrix(4.96737,-1.14029,1.331,4.25561,-5957.71,-2350.75)">
|
|
44
|
+
<circle cx="1496" cy="1004" r="7" style="fill:white;"/>
|
|
45
|
+
</g>
|
|
46
|
+
<g transform="matrix(4.96737,-1.14029,1.16463,3.72366,-5477.99,-831.33)">
|
|
47
|
+
<path d="M1499.26,757.787C1499.26,757.787 1497.37,756.489 1497,755.2C1496.71,754.182 1496.57,750.662 1496.54,750C1496.41,747.303 1499.21,745.644 1499.21,745.644L1490.01,745.835C1490.01,745.835 1493.15,745.713 1493.46,750C1493.51,750.661 1493.23,753.476 1493,755.2C1492.91,756.447 1491.2,757.668 1491.2,757.668L1499.26,757.787Z" style="fill:white;"/>
|
|
48
|
+
</g>
|
|
49
|
+
<g transform="matrix(4.96737,-1.14029,1.16463,3.72366,-5404.79,-597.271)">
|
|
50
|
+
<path d="M1495,760L1495,744" style="fill:none;"/>
|
|
51
|
+
</g>
|
|
52
|
+
<g transform="matrix(4.96737,-1.14029,1.16463,3.72366,-5404.79,-597.271)">
|
|
53
|
+
<path d="M1498.27,757.077C1498.27,757.077 1496.71,756.46 1496.65,754.8C1496.65,753.658 1496.64,753.281 1496.65,752.016C1496.62,751.334 1496.59,750.608 1496.65,749.949C1496.78,746.836 1498.5,746.156 1498.5,746.156L1491.46,745.931C1491.46,745.931 1493.37,746.719 1493.65,749.83C1493.71,750.489 1493.69,751.528 1493.65,752.209C1493.64,753.331 1493.64,753.413 1493.65,754.518C1493.68,756.334 1492.58,756.827 1492.58,756.827L1498.27,757.077Z" style="fill:white;"/>
|
|
54
|
+
</g>
|
|
55
|
+
<g transform="matrix(4.96737,-1.14029,1.16463,3.72366,-5770.62,-677.495)">
|
|
56
|
+
<path d="M1496.17,759.473L1555.54,720.014" style="fill:none;"/>
|
|
57
|
+
</g>
|
|
58
|
+
<g transform="matrix(4.96737,-1.14029,1.16463,3.72366,-5770.62,-677.495)">
|
|
59
|
+
<path d="M1500.86,762.056C1500.86,762.056 1499.86,760.4 1503.09,757.456C1504.91,755.797 1507.33,754.151 1509.98,752.255C1514.82,748.79 1520.68,744.94 1526.52,741.049C1531.45,737.766 1536.38,734.479 1540.82,731.68C1544.52,729.349 1547.85,727.296 1550.54,725.8C1551.07,725.506 1551.6,725.329 1552.05,725.029C1554.73,723.257 1556.85,724.968 1556.85,724.968L1552.23,716.282C1552.23,716.282 1551.99,719.454 1550,720.997C1549.57,721.333 1549.15,721.741 1548.67,722.12C1546.2,724.053 1542.99,726.344 1539.39,728.867C1535.06,731.898 1530.13,735.166 1525.19,738.438C1519.35,742.314 1513.52,746.234 1508.49,749.329C1505.74,751.023 1503.28,752.577 1501.13,753.598C1497.99,755.086 1495.28,753.617 1495.28,753.617L1500.86,762.056Z" style="fill:white;"/>
|
|
60
|
+
</g>
|
|
61
|
+
<g transform="matrix(4.96737,-1.14029,-1.16463,-3.72366,-3997,4993.28)">
|
|
62
|
+
<path d="M1496.17,759.473L1555.54,720.014" style="fill:none;"/>
|
|
63
|
+
</g>
|
|
64
|
+
<g transform="matrix(4.96737,-1.14029,-1.16463,-3.72366,-3997,4993.28)">
|
|
65
|
+
<path d="M1496.1,754.362C1496.1,754.362 1497.2,755.607 1501.13,753.598C1503.25,752.509 1505.74,751.023 1508.49,749.329C1513.52,746.234 1519.35,742.314 1525.19,738.438C1530.13,735.166 1534.94,731.832 1539.27,728.802C1542.87,726.279 1549.36,722.059 1549.81,721.75C1552.75,719.73 1552.18,718.196 1552.18,718.196L1555.28,724.152C1555.28,724.152 1553.77,722.905 1551.37,724.681C1550.93,725.006 1544.52,729.349 1540.82,731.68C1536.38,734.479 1531.45,737.766 1526.52,741.049C1520.68,744.94 1514.82,748.79 1509.98,752.255C1507.33,754.151 1504.89,755.771 1503.09,757.456C1499.47,760.841 1501.26,763.283 1501.26,763.283L1496.1,754.362Z" style="fill:white;"/>
|
|
66
|
+
</g>
|
|
67
|
+
</g>
|
|
68
|
+
<defs>
|
|
69
|
+
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-41.5984,155.247,-155.247,-41.5984,201.516,76.8392)"><stop offset="0" style="stop-color:rgb(255,143,0);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(254,0,255);stop-opacity:1"/></linearGradient>
|
|
70
|
+
<linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(155.247,-41.5984,41.5984,155.247,110.08,195.509)"><stop offset="0" style="stop-color:rgb(255,143,0);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(254,0,255);stop-opacity:1"/></linearGradient>
|
|
71
|
+
<linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-113.649,-113.649,113.649,-113.649,258.31,215.618)"><stop offset="0" style="stop-color:rgb(255,143,0);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(254,0,255);stop-opacity:1"/></linearGradient>
|
|
72
|
+
<linearGradient id="_Linear4" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-155.247,41.5984,-41.5984,-155.247,220.914,144.546)"><stop offset="0" style="stop-color:rgb(255,143,0);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(254,0,255);stop-opacity:1"/></linearGradient>
|
|
73
|
+
<linearGradient id="_Linear5" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-113.649,113.649,113.649,113.649,206.837,124.661)"><stop offset="0" style="stop-color:rgb(255,143,0);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(254,0,255);stop-opacity:1"/></linearGradient>
|
|
74
|
+
<linearGradient id="_Linear6" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-41.5984,-155.247,-155.247,41.5984,152.054,262.8)"><stop offset="0" style="stop-color:rgb(255,143,0);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(254,0,255);stop-opacity:1"/></linearGradient>
|
|
75
|
+
</defs>
|
|
76
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
height?: string | undefined;
|
|
5
|
+
width?: string | undefined;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export type ZitadelIconProps = typeof __propDef.props;
|
|
13
|
+
export type ZitadelIconEvents = typeof __propDef.events;
|
|
14
|
+
export type ZitadelIconSlots = typeof __propDef.slots;
|
|
15
|
+
export default class ZitadelIcon extends SvelteComponent<ZitadelIconProps, ZitadelIconEvents, ZitadelIconSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -87,6 +87,9 @@ import GoogleCloudIcon from './GoogleCloudIcon.svelte';
|
|
|
87
87
|
import CaCertificate from './CACertificate.svelte';
|
|
88
88
|
import CurrencyApiIcon from './CurrencyApiIcon.svelte';
|
|
89
89
|
import VismaIcon from './VismaIcon.svelte';
|
|
90
|
+
import JumpCloudIcon from './JumpCloudIcon.svelte';
|
|
91
|
+
import KeycloakIcon from './KeycloakIcon.svelte';
|
|
92
|
+
import ZitadelIcon from './ZitadelIcon.svelte';
|
|
90
93
|
export declare const APP_TO_ICON_COMPONENT: {
|
|
91
94
|
readonly postgresql: typeof PostgresIcon;
|
|
92
95
|
readonly mysql: typeof Mysql;
|
|
@@ -181,5 +184,8 @@ export declare const APP_TO_ICON_COMPONENT: {
|
|
|
181
184
|
readonly cacertificate: typeof CaCertificate;
|
|
182
185
|
readonly currencyapi: typeof CurrencyApiIcon;
|
|
183
186
|
readonly visma: typeof VismaIcon;
|
|
187
|
+
readonly jumpcloud: typeof JumpCloudIcon;
|
|
188
|
+
readonly keycloak: typeof KeycloakIcon;
|
|
189
|
+
readonly zitadel: typeof ZitadelIcon;
|
|
184
190
|
};
|
|
185
|
-
export { AirtableIcon, DbIcon, DiscordIcon, GcalIcon, GCloudIcon, GdriveIcon, GithubIcon, GitlabIcon, GmailIcon, GSheetsIcon, HttpIcon, Mail, MastodonIcon, MatrixIcon, Mysql, PostgresIcon, S3Icon, Slack, TogglIcon, WindmillIcon, MailchimpIcon, SendgridIcon, LinkedinIcon, HubspotIcon, TelegramIcon, StripeIcon, DatadogIcon, FunkwhaleIcon, GdocsIcon, FaunadbIcon, ClickhouseIcon, OpenaiIcon, AwsIcon, BcryptIcon, GoogleIcon, HackernewsIcon, MongodbIcon, RedditIcon, SupabaseIcon, WebdavIcon, ZammadIcon, NextcloudIcon, SendflakeIcon, SurrealdbIcon, ActivitypubIcon, AwsEcrIcon, CalcomIcon, ClickupIcon, CloudflareIcon, FirebaseIcon, GoogleFormsIcon, JiraIcon, NotionIcon, PineconeIcon, RssIcon, ShopifyIcon, TypeformIcon, BigQueryIcon, GraphqlIcon, NocoDbIcon, AzureIcon, MicrosoftIcon, OktaIcon, AuthentikIcon, AutheliaIcon, KanidmIcon, AsanaIcon, BitbucketIcon, DynatraceIcon, EdgeDbIcon, GitIcon, ZendeskIcon, TwilioIcon, TrelloIcon, ResendIcon, PushoverIcon, QuickbooksIcon, MsTeamsIcon, MailgunIcon, IpinfoIcon, GoogleCloudIcon, CaCertificate, CurrencyApiIcon };
|
|
191
|
+
export { AirtableIcon, DbIcon, DiscordIcon, GcalIcon, GCloudIcon, GdriveIcon, GithubIcon, GitlabIcon, GmailIcon, GSheetsIcon, HttpIcon, Mail, MastodonIcon, MatrixIcon, Mysql, PostgresIcon, S3Icon, Slack, TogglIcon, WindmillIcon, MailchimpIcon, SendgridIcon, LinkedinIcon, HubspotIcon, TelegramIcon, StripeIcon, DatadogIcon, FunkwhaleIcon, GdocsIcon, FaunadbIcon, ClickhouseIcon, OpenaiIcon, AwsIcon, BcryptIcon, GoogleIcon, HackernewsIcon, MongodbIcon, RedditIcon, SupabaseIcon, WebdavIcon, ZammadIcon, NextcloudIcon, SendflakeIcon, SurrealdbIcon, ActivitypubIcon, AwsEcrIcon, CalcomIcon, ClickupIcon, CloudflareIcon, FirebaseIcon, GoogleFormsIcon, JiraIcon, NotionIcon, PineconeIcon, RssIcon, ShopifyIcon, TypeformIcon, BigQueryIcon, GraphqlIcon, NocoDbIcon, AzureIcon, MicrosoftIcon, OktaIcon, AuthentikIcon, AutheliaIcon, KanidmIcon, AsanaIcon, BitbucketIcon, DynatraceIcon, EdgeDbIcon, GitIcon, ZendeskIcon, TwilioIcon, TrelloIcon, ResendIcon, PushoverIcon, QuickbooksIcon, MsTeamsIcon, MailgunIcon, IpinfoIcon, GoogleCloudIcon, CaCertificate, CurrencyApiIcon, VismaIcon, JumpCloudIcon, KeycloakIcon, ZitadelIcon };
|
|
@@ -87,6 +87,9 @@ import GoogleCloudIcon from './GoogleCloudIcon.svelte';
|
|
|
87
87
|
import CaCertificate from './CACertificate.svelte';
|
|
88
88
|
import CurrencyApiIcon from './CurrencyApiIcon.svelte';
|
|
89
89
|
import VismaIcon from './VismaIcon.svelte';
|
|
90
|
+
import JumpCloudIcon from './JumpCloudIcon.svelte';
|
|
91
|
+
import KeycloakIcon from './KeycloakIcon.svelte';
|
|
92
|
+
import ZitadelIcon from './ZitadelIcon.svelte';
|
|
90
93
|
export const APP_TO_ICON_COMPONENT = {
|
|
91
94
|
postgresql: PostgresIcon,
|
|
92
95
|
mysql: Mysql,
|
|
@@ -180,6 +183,9 @@ export const APP_TO_ICON_COMPONENT = {
|
|
|
180
183
|
gcp_service_account: GoogleCloudIcon,
|
|
181
184
|
cacertificate: CaCertificate,
|
|
182
185
|
currencyapi: CurrencyApiIcon,
|
|
183
|
-
visma: VismaIcon
|
|
186
|
+
visma: VismaIcon,
|
|
187
|
+
jumpcloud: JumpCloudIcon,
|
|
188
|
+
keycloak: KeycloakIcon,
|
|
189
|
+
zitadel: ZitadelIcon
|
|
184
190
|
};
|
|
185
|
-
export { AirtableIcon, DbIcon, DiscordIcon, GcalIcon, GCloudIcon, GdriveIcon, GithubIcon, GitlabIcon, GmailIcon, GSheetsIcon, HttpIcon, Mail, MastodonIcon, MatrixIcon, Mysql, PostgresIcon, S3Icon, Slack, TogglIcon, WindmillIcon, MailchimpIcon, SendgridIcon, LinkedinIcon, HubspotIcon, TelegramIcon, StripeIcon, DatadogIcon, FunkwhaleIcon, GdocsIcon, FaunadbIcon, ClickhouseIcon, OpenaiIcon, AwsIcon, BcryptIcon, GoogleIcon, HackernewsIcon, MongodbIcon, RedditIcon, SupabaseIcon, WebdavIcon, ZammadIcon, NextcloudIcon, SendflakeIcon, SurrealdbIcon, ActivitypubIcon, AwsEcrIcon, CalcomIcon, ClickupIcon, CloudflareIcon, FirebaseIcon, GoogleFormsIcon, JiraIcon, NotionIcon, PineconeIcon, RssIcon, ShopifyIcon, TypeformIcon, BigQueryIcon, GraphqlIcon, NocoDbIcon, AzureIcon, MicrosoftIcon, OktaIcon, AuthentikIcon, AutheliaIcon, KanidmIcon, AsanaIcon, BitbucketIcon, DynatraceIcon, EdgeDbIcon, GitIcon, ZendeskIcon, TwilioIcon, TrelloIcon, ResendIcon, PushoverIcon, QuickbooksIcon, MsTeamsIcon, MailgunIcon, IpinfoIcon, GoogleCloudIcon, CaCertificate, CurrencyApiIcon };
|
|
191
|
+
export { AirtableIcon, DbIcon, DiscordIcon, GcalIcon, GCloudIcon, GdriveIcon, GithubIcon, GitlabIcon, GmailIcon, GSheetsIcon, HttpIcon, Mail, MastodonIcon, MatrixIcon, Mysql, PostgresIcon, S3Icon, Slack, TogglIcon, WindmillIcon, MailchimpIcon, SendgridIcon, LinkedinIcon, HubspotIcon, TelegramIcon, StripeIcon, DatadogIcon, FunkwhaleIcon, GdocsIcon, FaunadbIcon, ClickhouseIcon, OpenaiIcon, AwsIcon, BcryptIcon, GoogleIcon, HackernewsIcon, MongodbIcon, RedditIcon, SupabaseIcon, WebdavIcon, ZammadIcon, NextcloudIcon, SendflakeIcon, SurrealdbIcon, ActivitypubIcon, AwsEcrIcon, CalcomIcon, ClickupIcon, CloudflareIcon, FirebaseIcon, GoogleFormsIcon, JiraIcon, NotionIcon, PineconeIcon, RssIcon, ShopifyIcon, TypeformIcon, BigQueryIcon, GraphqlIcon, NocoDbIcon, AzureIcon, MicrosoftIcon, OktaIcon, AuthentikIcon, AutheliaIcon, KanidmIcon, AsanaIcon, BitbucketIcon, DynatraceIcon, EdgeDbIcon, GitIcon, ZendeskIcon, TwilioIcon, TrelloIcon, ResendIcon, PushoverIcon, QuickbooksIcon, MsTeamsIcon, MailgunIcon, IpinfoIcon, GoogleCloudIcon, CaCertificate, CurrencyApiIcon, VismaIcon, JumpCloudIcon, KeycloakIcon, ZitadelIcon };
|
|
@@ -6,7 +6,7 @@ export interface Setting {
|
|
|
6
6
|
ee_only?: string;
|
|
7
7
|
tooltip?: string;
|
|
8
8
|
key: string;
|
|
9
|
-
fieldType: 'text' | 'number' | 'boolean' | 'password' | 'select' | 'textarea' | 'seconds' | 'email' | 'license_key' | 'object_store_config' | 'critical_error_channels';
|
|
9
|
+
fieldType: 'text' | 'number' | 'boolean' | 'password' | 'select' | 'textarea' | 'seconds' | 'email' | 'license_key' | 'object_store_config' | 'critical_error_channels' | 'slack_connect';
|
|
10
10
|
storage: SettingStorage;
|
|
11
11
|
isValid?: (value: any) => boolean;
|
|
12
12
|
error?: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const settings = {
|
|
2
2
|
Core: [
|
|
3
3
|
{
|
|
4
|
-
label: 'Base
|
|
4
|
+
label: 'Base url',
|
|
5
5
|
description: 'Public base url of the instance',
|
|
6
6
|
key: 'base_url',
|
|
7
7
|
fieldType: 'text',
|
|
@@ -24,7 +24,7 @@ export const settings = {
|
|
|
24
24
|
placeholder: 'mail.windmill.com'
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
|
-
label: 'Request
|
|
27
|
+
label: 'Request size limit in MB',
|
|
28
28
|
description: 'Maximum size of HTTP requests in MB.',
|
|
29
29
|
cloudonly: true,
|
|
30
30
|
key: 'request_size_limit_mb',
|
|
@@ -41,7 +41,7 @@ export const settings = {
|
|
|
41
41
|
cloudonly: false
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
|
-
label: 'Max
|
|
44
|
+
label: 'Max timeout for sync endpoints',
|
|
45
45
|
key: 'timeout_wait_result',
|
|
46
46
|
cloudonly: true,
|
|
47
47
|
fieldType: 'seconds',
|
|
@@ -49,8 +49,8 @@ export const settings = {
|
|
|
49
49
|
storage: 'config'
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
|
-
label: 'License
|
|
53
|
-
description: 'License
|
|
52
|
+
label: 'License key',
|
|
53
|
+
description: 'License key required to use the EE (switch image for windmill-ee)',
|
|
54
54
|
key: 'license_key',
|
|
55
55
|
fieldType: 'license_key',
|
|
56
56
|
placeholder: 'only needed to prepare upgrade to EE',
|
|
@@ -65,7 +65,7 @@ export const settings = {
|
|
|
65
65
|
ee_only: 'This is only relevant for EE'
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
|
-
label: 'Retention
|
|
68
|
+
label: 'Retention period in secs',
|
|
69
69
|
key: 'retention_period_secs',
|
|
70
70
|
description: 'How long to keep the jobs data in the database (max 30 days on CE)',
|
|
71
71
|
fieldType: 'seconds',
|
|
@@ -76,14 +76,14 @@ export const settings = {
|
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
78
|
label: 'Expose metrics',
|
|
79
|
-
description: 'Expose
|
|
79
|
+
description: 'Expose Prometheus metrics for workers and servers on port 8001 at /metrics',
|
|
80
80
|
key: 'expose_metrics',
|
|
81
81
|
fieldType: 'boolean',
|
|
82
82
|
storage: 'setting',
|
|
83
83
|
ee_only: ''
|
|
84
84
|
},
|
|
85
85
|
{
|
|
86
|
-
label: 'S3/Azure for Python/Go
|
|
86
|
+
label: 'S3/Azure for Python/Go cache & large logs',
|
|
87
87
|
description: 'Bucket to store large logs and global cache for Python and Go.',
|
|
88
88
|
key: 'object_store_cache_config',
|
|
89
89
|
fieldType: 'object_store_config',
|
|
@@ -91,8 +91,8 @@ export const settings = {
|
|
|
91
91
|
ee_only: ''
|
|
92
92
|
},
|
|
93
93
|
{
|
|
94
|
-
label: 'Critical
|
|
95
|
-
description: 'Channels to send critical alerts to. SMTP must be configured for the email channel.',
|
|
94
|
+
label: 'Critical alert channels',
|
|
95
|
+
description: 'Channels to send critical alerts to. SMTP must be configured for the email channel. A Slack workspace must be connected to the instance for the Slack channel.',
|
|
96
96
|
key: 'critical_error_channels',
|
|
97
97
|
fieldType: 'critical_error_channels',
|
|
98
98
|
storage: 'setting',
|
|
@@ -107,8 +107,8 @@ export const settings = {
|
|
|
107
107
|
ee_only: ''
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
|
-
label: 'Private
|
|
111
|
-
description: 'Base url of your private
|
|
110
|
+
label: 'Private Hub base url',
|
|
111
|
+
description: 'Base url of your private Hub instance, without trailing slash',
|
|
112
112
|
placeholder: 'https://hub.company.com',
|
|
113
113
|
key: 'hub_base_url',
|
|
114
114
|
fieldType: 'text',
|
|
@@ -197,9 +197,18 @@ export const settings = {
|
|
|
197
197
|
storage: 'config'
|
|
198
198
|
}
|
|
199
199
|
],
|
|
200
|
+
Slack: [
|
|
201
|
+
{
|
|
202
|
+
label: 'Slack',
|
|
203
|
+
key: 'slack',
|
|
204
|
+
fieldType: 'slack_connect',
|
|
205
|
+
storage: 'setting',
|
|
206
|
+
ee_only: ''
|
|
207
|
+
}
|
|
208
|
+
],
|
|
200
209
|
'SCIM/SAML': [
|
|
201
210
|
{
|
|
202
|
-
label: 'SCIM
|
|
211
|
+
label: 'SCIM token',
|
|
203
212
|
description: 'Token used to authenticate requests from the IdP',
|
|
204
213
|
key: 'scim_token',
|
|
205
214
|
fieldType: 'text',
|
|
@@ -219,14 +228,14 @@ export const settings = {
|
|
|
219
228
|
],
|
|
220
229
|
Debug: [
|
|
221
230
|
{
|
|
222
|
-
label: 'Keep
|
|
231
|
+
label: 'Keep job directories',
|
|
223
232
|
key: 'keep_job_dir',
|
|
224
233
|
fieldType: 'boolean',
|
|
225
234
|
tooltip: 'Keep Job directories after execution at /tmp/windmill/<worker>/<job_id>',
|
|
226
235
|
storage: 'setting'
|
|
227
236
|
},
|
|
228
237
|
{
|
|
229
|
-
label: 'Expose
|
|
238
|
+
label: 'Expose debug metrics',
|
|
230
239
|
key: 'expose_debug_metrics',
|
|
231
240
|
fieldType: 'boolean',
|
|
232
241
|
tooltip: 'Expose additional metrics (require metrics to be enabled)',
|
|
@@ -105,7 +105,19 @@ function computeJobKinds(jobKindsCat) {
|
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
let loadingFetch = false;
|
|
108
|
-
async function
|
|
108
|
+
export async function loadExtraJobs() {
|
|
109
|
+
if (jobs && jobs.length > 0) {
|
|
110
|
+
const lastJob = jobs[jobs.length - 1];
|
|
111
|
+
// const minCreated = lastJob?.created_at
|
|
112
|
+
const minCreated = new Date(new Date(lastJob.created_at).getTime() - 1).toISOString();
|
|
113
|
+
let olderJobs = await fetchJobs(undefined, minTs, undefined, minCreated);
|
|
114
|
+
jobs = jobs.concat(olderJobs);
|
|
115
|
+
computeCompletedJobs();
|
|
116
|
+
return olderJobs?.length < 1000;
|
|
117
|
+
}
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
async function fetchJobs(startedBefore, startedAfter, startedAfterCompletedJobs, createdBefore) {
|
|
109
121
|
loadingFetch = true;
|
|
110
122
|
try {
|
|
111
123
|
let scriptPathStart = folder === null || folder === '' ? undefined : `f/${folder}/`;
|
|
@@ -117,6 +129,7 @@ async function fetchJobs(startedBefore, startedAfter, startedAfterCompletedJobs)
|
|
|
117
129
|
createdOrStartedAfterCompletedJobs: startedAfterCompletedJobs,
|
|
118
130
|
schedulePath,
|
|
119
131
|
scriptPathExact,
|
|
132
|
+
createdBefore,
|
|
120
133
|
createdBy: user === null || user === '' ? undefined : user,
|
|
121
134
|
scriptPathStart: scriptPathStart,
|
|
122
135
|
jobKinds,
|
|
@@ -128,9 +141,7 @@ async function fetchJobs(startedBefore, startedAfter, startedAfterCompletedJobs)
|
|
|
128
141
|
: undefined,
|
|
129
142
|
isSkipped: isSkipped ? undefined : false,
|
|
130
143
|
// isFlowStep: jobKindsCat != 'all' ? false : undefined,
|
|
131
|
-
hasNullParent:
|
|
132
|
-
? true
|
|
133
|
-
: undefined,
|
|
144
|
+
hasNullParent: jobKindsCat != 'all' ? true : undefined,
|
|
134
145
|
label: label === null || label === '' ? undefined : label,
|
|
135
146
|
tag: tag === null || tag === '' ? undefined : tag,
|
|
136
147
|
isNotSchedule: showSchedules == false ? true : undefined,
|
|
@@ -229,7 +240,7 @@ async function loadJobsIntern(shouldGetCount) {
|
|
|
229
240
|
// lookback won't be needed anymore (just filter ended_at > minTs instead
|
|
230
241
|
const extendedMinTs = subtractDaysFromDateString(minTs, lookback);
|
|
231
242
|
if (concurrencyKey == null || concurrencyKey === '') {
|
|
232
|
-
let newJobs = await fetchJobs(maxTs, undefined, extendedMinTs);
|
|
243
|
+
let newJobs = await fetchJobs(maxTs, undefined, extendedMinTs, undefined);
|
|
233
244
|
extendedJobs = { jobs: newJobs, obscured_jobs: [] };
|
|
234
245
|
// Filter on minTs here and not in the backend
|
|
235
246
|
// to get enough data for the concurrency graph
|
|
@@ -328,7 +339,7 @@ async function syncer() {
|
|
|
328
339
|
loading = true;
|
|
329
340
|
let newJobs;
|
|
330
341
|
if (concurrencyKey == null || concurrencyKey === '') {
|
|
331
|
-
newJobs = await fetchJobs(maxTs, minTs ?? ts, undefined);
|
|
342
|
+
newJobs = await fetchJobs(maxTs, minTs ?? ts, undefined, undefined);
|
|
332
343
|
}
|
|
333
344
|
else {
|
|
334
345
|
// Obscured jobs have no ids, so we have to do the full request
|
|
@@ -39,6 +39,7 @@ declare const __propDef: {
|
|
|
39
39
|
} | undefined) | undefined;
|
|
40
40
|
lookback?: number | undefined;
|
|
41
41
|
perPage?: number | undefined;
|
|
42
|
+
loadExtraJobs?: (() => Promise<boolean>) | undefined;
|
|
42
43
|
loadJobs?: ((nMinTs: string | undefined, nMaxTs: string | undefined, reset: boolean, shouldGetCount?: boolean) => Promise<void>) | undefined;
|
|
43
44
|
};
|
|
44
45
|
events: {
|
|
@@ -50,6 +51,7 @@ export type JobLoaderProps = typeof __propDef.props;
|
|
|
50
51
|
export type JobLoaderEvents = typeof __propDef.events;
|
|
51
52
|
export type JobLoaderSlots = typeof __propDef.slots;
|
|
52
53
|
export default class JobLoader extends SvelteComponent<JobLoaderProps, JobLoaderEvents, JobLoaderSlots> {
|
|
54
|
+
get loadExtraJobs(): () => Promise<boolean>;
|
|
53
55
|
get loadJobs(): (nMinTs: string | undefined, nMaxTs: string | undefined, reset: boolean, shouldGetCount?: boolean | undefined) => Promise<void>;
|
|
54
56
|
}
|
|
55
57
|
export {};
|
|
@@ -193,14 +193,14 @@ function isJobCancelable(j) {
|
|
|
193
193
|
{/if}
|
|
194
194
|
</div>
|
|
195
195
|
{#if containsLabel}
|
|
196
|
-
<div class="w-3/12 flex justify-start">
|
|
196
|
+
<div class="w-3/12 flex justify-start px-0.5">
|
|
197
197
|
{#if job && job?.['labels']}
|
|
198
198
|
<div class="flex flex-row items-center gap-1 overflow-x-auto">
|
|
199
199
|
{#if Array.isArray(job?.['labels'])}
|
|
200
200
|
{#each job?.['labels'] as label}
|
|
201
201
|
<Button
|
|
202
202
|
variant="border"
|
|
203
|
-
size="
|
|
203
|
+
size="xs3"
|
|
204
204
|
btnClasses={twMerge(
|
|
205
205
|
activeLabel == label ? 'bg-blue-50 dark:bg-blue-900/50' : '',
|
|
206
206
|
'!text-2xs !font-normal truncate max-w-28'
|
|
@@ -209,9 +209,9 @@ function isJobCancelable(j) {
|
|
|
209
209
|
on:click={() => {
|
|
210
210
|
dispatch('filterByLabel', label)
|
|
211
211
|
}}
|
|
212
|
+
endIcon={{ icon: ListFilter }}
|
|
212
213
|
>
|
|
213
214
|
{label}
|
|
214
|
-
<ListFilter size={10} />
|
|
215
215
|
</Button>
|
|
216
216
|
{/each}
|
|
217
217
|
{/if}
|
|
@@ -229,7 +229,7 @@ function isJobCancelable(j) {
|
|
|
229
229
|
btnClasses="font-normal"
|
|
230
230
|
on:click={() => scheduleEditor?.openEdit(job.schedule_path ?? '', job.job_kind == 'flow')}
|
|
231
231
|
>
|
|
232
|
-
<div class="truncate text-ellipsis text-left">
|
|
232
|
+
<div class="truncate text-ellipsis text-left" title={job.schedule_path}>
|
|
233
233
|
{truncateRev(job.schedule_path, 20)}
|
|
234
234
|
</div>
|
|
235
235
|
</Button>
|
|
@@ -245,15 +245,15 @@ function isJobCancelable(j) {
|
|
|
245
245
|
</div>
|
|
246
246
|
{:else}
|
|
247
247
|
<div class="flex flex-row gap-1 items-center">
|
|
248
|
-
<div class="text-xs">
|
|
249
|
-
{job.created_by}
|
|
248
|
+
<div class="text-xs truncate text-ellipsis text-left" title={job.created_by}>
|
|
249
|
+
{truncateRev(job.created_by ?? '', 20)}
|
|
250
250
|
</div>
|
|
251
251
|
{#if !isExternal}
|
|
252
252
|
<Button
|
|
253
253
|
size="xs2"
|
|
254
254
|
color="light"
|
|
255
255
|
on:click={() => {
|
|
256
|
-
dispatch('filterByUser', job.created_by)
|
|
256
|
+
dispatch('filterByUser', job.created_by ?? '')
|
|
257
257
|
}}
|
|
258
258
|
>
|
|
259
259
|
<ListFilter size={10} />
|
|
@@ -249,6 +249,7 @@ let tagTimeout = undefined;
|
|
|
249
249
|
></span
|
|
250
250
|
>
|
|
251
251
|
|
|
252
|
+
<!-- svelte-ignore a11y-autofocus -->
|
|
252
253
|
<input
|
|
253
254
|
autofocus
|
|
254
255
|
type="text"
|
|
@@ -290,6 +291,7 @@ let tagTimeout = undefined;
|
|
|
290
291
|
</Tooltip></span
|
|
291
292
|
>
|
|
292
293
|
|
|
294
|
+
<!-- svelte-ignore a11y-autofocus -->
|
|
293
295
|
<input
|
|
294
296
|
autofocus
|
|
295
297
|
type="text"
|
|
@@ -323,6 +325,7 @@ let tagTimeout = undefined;
|
|
|
323
325
|
{/if}
|
|
324
326
|
<span class="text-xs absolute -top-4"> Tag </span>
|
|
325
327
|
|
|
328
|
+
<!-- svelte-ignore a11y-autofocus -->
|
|
326
329
|
<input
|
|
327
330
|
autofocus
|
|
328
331
|
type="text"
|
|
@@ -356,6 +359,7 @@ let tagTimeout = undefined;
|
|
|
356
359
|
{/if}
|
|
357
360
|
<span class="text-xs absolute -top-4"> Schedule Path </span>
|
|
358
361
|
|
|
362
|
+
<!-- svelte-ignore a11y-autofocus -->
|
|
359
363
|
<input
|
|
360
364
|
autofocus
|
|
361
365
|
type="text"
|
|
@@ -470,7 +474,7 @@ let tagTimeout = undefined;
|
|
|
470
474
|
<CloseButton on:close={() => close(null)} />
|
|
471
475
|
</svelte:fragment>
|
|
472
476
|
|
|
473
|
-
<div class="w-
|
|
477
|
+
<div class="w-102 flex flex-col gap-4">
|
|
474
478
|
{#if mobile}
|
|
475
479
|
<Label label="Filter by">
|
|
476
480
|
<ToggleButtonGroup
|
|
@@ -603,6 +607,7 @@ let tagTimeout = undefined;
|
|
|
603
607
|
</button>
|
|
604
608
|
{/if}
|
|
605
609
|
|
|
610
|
+
<!-- svelte-ignore a11y-autofocus -->
|
|
606
611
|
<input
|
|
607
612
|
autofocus
|
|
608
613
|
type="text"
|
|
@@ -637,6 +642,7 @@ let tagTimeout = undefined;
|
|
|
637
642
|
</button>
|
|
638
643
|
{/if}
|
|
639
644
|
|
|
645
|
+
<!-- svelte-ignore a11y-autofocus -->
|
|
640
646
|
<input
|
|
641
647
|
autofocus
|
|
642
648
|
type="text"
|
|
@@ -671,6 +677,7 @@ let tagTimeout = undefined;
|
|
|
671
677
|
</button>
|
|
672
678
|
{/if}
|
|
673
679
|
|
|
680
|
+
<!-- svelte-ignore a11y-autofocus -->
|
|
674
681
|
<input
|
|
675
682
|
autofocus
|
|
676
683
|
type="text"
|
|
@@ -16,6 +16,7 @@ export let selectedIds = [];
|
|
|
16
16
|
export let selectedWorkspace = undefined;
|
|
17
17
|
export let activeLabel = null;
|
|
18
18
|
// const loadMoreQuantity: number = 100
|
|
19
|
+
export let lastFetchWentToEnd = false;
|
|
19
20
|
function getTime(job) {
|
|
20
21
|
return job['started_at'] ?? job['scheduled_for'] ?? job['created_at'];
|
|
21
22
|
}
|
|
@@ -123,9 +124,12 @@ function selectAll() {
|
|
|
123
124
|
let cancelableJobCount = 0;
|
|
124
125
|
$: isSelectingJobsToCancel && (allSelected = selectedIds.length === cancelableJobCount);
|
|
125
126
|
$: isSelectingJobsToCancel && (cancelableJobCount = jobs?.filter(isJobCancelable).length ?? 0);
|
|
126
|
-
function jobCountString(jobCount) {
|
|
127
|
+
function jobCountString(jobCount, lastFetchWentToEnd) {
|
|
128
|
+
if (jobCount === undefined) {
|
|
129
|
+
return '';
|
|
130
|
+
}
|
|
127
131
|
const jc = jobCount;
|
|
128
|
-
const isTruncated = jc >= 1000;
|
|
132
|
+
const isTruncated = jc >= 1000 && !lastFetchWentToEnd;
|
|
129
133
|
return `${jc}${isTruncated ? '+' : ''} job${jc != 1 ? 's' : ''}`;
|
|
130
134
|
}
|
|
131
135
|
function computeHeight() {
|
|
@@ -166,14 +170,14 @@ const dispatch = createEventDispatcher();
|
|
|
166
170
|
{#if showExternalJobs && externalJobs.length > 0}
|
|
167
171
|
<div class="w-1/12 text-2xs">
|
|
168
172
|
<div class="flex flex-row">
|
|
169
|
-
{jobs
|
|
170
|
-
|
|
171
|
-
|
|
173
|
+
{jobs
|
|
174
|
+
? jobCountString(jobs.length + externalJobs.length, lastFetchWentToEnd)
|
|
175
|
+
: ''}<Tooltip>{externalJobs.length} jobs obscured</Tooltip>
|
|
172
176
|
</div>
|
|
173
177
|
</div>
|
|
174
178
|
{:else if $workspaceStore !== 'admins' && omittedObscuredJobs}
|
|
175
179
|
<div class="w-1/12 text-2xs flex flex-row">
|
|
176
|
-
{jobs
|
|
180
|
+
{jobs ? jobCountString(jobs.length, lastFetchWentToEnd) : ''}
|
|
177
181
|
<Popover>
|
|
178
182
|
<AlertTriangle size={16} class="ml-0.5 text-yellow-500" />
|
|
179
183
|
<svelte:fragment slot="text">
|
|
@@ -183,9 +187,11 @@ const dispatch = createEventDispatcher();
|
|
|
183
187
|
</Popover>
|
|
184
188
|
</div>
|
|
185
189
|
{:else}
|
|
186
|
-
<div class="w-1/12 text-2xs"
|
|
190
|
+
<div class="w-1/12 text-2xs"
|
|
191
|
+
>{jobs ? jobCountString(jobs.length, lastFetchWentToEnd) : ''}</div
|
|
192
|
+
>
|
|
187
193
|
{/if}
|
|
188
|
-
<div class="w-4/12 text-xs font-semibold"
|
|
194
|
+
<div class="w-4/12 text-xs font-semibold" />
|
|
189
195
|
<div class="w-4/12 text-xs font-semibold">Path</div>
|
|
190
196
|
{#if containsLabel}
|
|
191
197
|
<div class="w-3/12 text-xs font-semibold">Label</div>
|
|
@@ -262,6 +268,22 @@ const dispatch = createEventDispatcher();
|
|
|
262
268
|
</div>
|
|
263
269
|
{/if}
|
|
264
270
|
</div>
|
|
271
|
+
<div slot="footer"
|
|
272
|
+
>{#if !lastFetchWentToEnd && jobs && jobs.length >= 1000}
|
|
273
|
+
<button
|
|
274
|
+
class="text-xs text-blue-600 text-center w-full pb-2"
|
|
275
|
+
on:click={() => {
|
|
276
|
+
dispatch('loadExtra')
|
|
277
|
+
}}>Load next 1000 jobs</button
|
|
278
|
+
>
|
|
279
|
+
{/if}</div
|
|
280
|
+
>
|
|
265
281
|
</VirtualList>
|
|
266
282
|
{/if}
|
|
267
283
|
</div>
|
|
284
|
+
|
|
285
|
+
<style>
|
|
286
|
+
:global(.virtual-list-wrapper:hover::-webkit-scrollbar) {
|
|
287
|
+
width: 8px !important;
|
|
288
|
+
height: 8px !important;
|
|
289
|
+
}</style>
|
|
@@ -10,6 +10,7 @@ declare const __propDef: {
|
|
|
10
10
|
selectedIds?: string[] | undefined;
|
|
11
11
|
selectedWorkspace?: string | undefined;
|
|
12
12
|
activeLabel?: string | null | undefined;
|
|
13
|
+
lastFetchWentToEnd?: boolean | undefined;
|
|
13
14
|
};
|
|
14
15
|
events: {
|
|
15
16
|
focus: FocusEvent;
|
|
@@ -20,6 +21,7 @@ declare const __propDef: {
|
|
|
20
21
|
filterByConcurrencyKey: CustomEvent<any>;
|
|
21
22
|
filterBySchedule: CustomEvent<any>;
|
|
22
23
|
select: CustomEvent<any>;
|
|
24
|
+
loadExtra: CustomEvent<any>;
|
|
23
25
|
} & {
|
|
24
26
|
[evt: string]: CustomEvent<any>;
|
|
25
27
|
};
|
|
@@ -290,7 +290,7 @@ $: showInvites = invites?.length > 0 || (auto_invite_domain != undefined && !aut
|
|
|
290
290
|
{#if filteredUsers}
|
|
291
291
|
{#each filteredUsers.slice(0, nbDisplayed) as { email, username, is_admin, operator, disabled } (email)}
|
|
292
292
|
<tr class="!hover:bg-surface-hover">
|
|
293
|
-
<Cell first>{truncate(email, 20)}</Cell>
|
|
293
|
+
<Cell first><a href="mailto:{email}">{truncate(email, 20)}</a></Cell>
|
|
294
294
|
<Cell>{truncate(username, 30)}</Cell>
|
|
295
295
|
<Cell
|
|
296
296
|
>{#if usage?.[email] != undefined}{usage?.[email]}{:else}<Loader2
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<script>import { classNames } from '../../utils';
|
|
2
2
|
import { navigating, page } from '$app/stores';
|
|
3
3
|
import Popover from '../Popover.svelte';
|
|
4
|
+
import { base } from '$app/paths';
|
|
4
5
|
export let label;
|
|
5
6
|
export let href;
|
|
6
7
|
export let icon = undefined;
|
|
@@ -9,7 +10,7 @@ export let disabled = false;
|
|
|
9
10
|
export let lightMode = false;
|
|
10
11
|
let isSelected = false;
|
|
11
12
|
navigating.subscribe(() => {
|
|
12
|
-
if (href ===
|
|
13
|
+
if (href === `${base}/`) {
|
|
13
14
|
isSelected = $page.url.pathname === href;
|
|
14
15
|
}
|
|
15
16
|
else {
|
|
@@ -26,10 +26,13 @@ async function toggleSwitchWorkspace(id) {
|
|
|
26
26
|
const isOnEditPage = editPages.some((editPage) => $page.route.id?.includes(editPage) ?? false);
|
|
27
27
|
if (!isOnEditPage) {
|
|
28
28
|
switchWorkspace(id);
|
|
29
|
+
if ($page.url.searchParams.get('workspace')) {
|
|
30
|
+
$page.url.searchParams.set('workspace', id);
|
|
31
|
+
}
|
|
29
32
|
}
|
|
30
33
|
else {
|
|
31
|
-
await goto('/');
|
|
32
34
|
switchWorkspace(id);
|
|
35
|
+
await goto('/');
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
38
|
</script>
|