windmill-components 1.55.0 → 1.55.2
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/common.d.ts +1 -1
- package/common.js +3 -0
- package/components/AppConnect.svelte +2 -2
- package/components/ArgInput.svelte +1 -1
- package/components/CronInput.svelte +54 -53
- package/components/Dropdown.svelte +21 -9
- package/components/Editor.svelte +10 -10
- package/components/EditorBar.svelte +2 -2
- package/components/FlowBuilder.svelte +41 -25
- package/components/FlowGraphViewer.svelte +6 -2
- package/components/FlowMetadata.svelte +8 -3
- package/components/FlowViewer.svelte +2 -2
- package/components/FolderEditor.svelte +299 -0
- package/components/FolderEditor.svelte.d.ts +16 -0
- package/components/FolderInfo.svelte +13 -0
- package/components/FolderInfo.svelte.d.ts +16 -0
- package/components/FolderUsageInfo.svelte +17 -0
- package/components/FolderUsageInfo.svelte.d.ts +16 -0
- package/components/GroupEditor.svelte +287 -0
- package/components/GroupEditor.svelte.d.ts +18 -0
- package/components/GroupInfo.svelte +22 -0
- package/components/GroupInfo.svelte.d.ts +16 -0
- package/components/InputTransformForm.svelte +16 -7
- package/components/MoveDrawer.svelte +75 -0
- package/components/MoveDrawer.svelte.d.ts +19 -0
- package/components/Path.svelte +243 -96
- package/components/Path.svelte.d.ts +1 -4
- package/components/RadioButton.svelte +2 -0
- package/components/RadioButton.svelte.d.ts +1 -0
- package/components/ResourceEditor.svelte +11 -16
- package/components/RunForm.svelte +21 -4
- package/components/RunForm.svelte.d.ts +1 -1
- package/components/ScheduleEditor.svelte +226 -0
- package/components/ScheduleEditor.svelte.d.ts +26 -0
- package/components/ScriptBuilder.svelte +109 -114
- package/components/ScriptEditor.svelte +17 -14
- package/components/ScriptEditor.svelte.d.ts +1 -0
- package/components/ScriptPicker.svelte +55 -29
- package/components/ScriptPicker.svelte.d.ts +1 -0
- package/components/ShareModal.svelte +94 -73
- package/components/ShareModal.svelte.d.ts +2 -4
- package/components/SimpleEditor.svelte +15 -10
- package/components/TemplateEditor.svelte +496 -0
- package/components/TemplateEditor.svelte.d.ts +25 -0
- package/components/TestJobLoader.svelte +1 -1
- package/components/VariableEditor.svelte +2 -1
- package/components/apps/CreateApp.svelte +1 -1
- package/components/apps/components/buttons/AppButton.svelte +3 -3
- package/components/apps/components/dataDisplay/AppBarChart.svelte +5 -4
- package/components/apps/components/dataDisplay/AppPieChart.svelte +3 -3
- package/components/apps/components/dateInputs/AppDateInput.svelte +34 -0
- package/components/apps/components/dateInputs/AppDateInput.svelte.d.ts +22 -0
- package/components/apps/components/form/AppForm.svelte +4 -5
- package/components/apps/components/form/AppForm.svelte.d.ts +0 -1
- package/components/apps/components/helpers/AlignWrapper.svelte +3 -4
- package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +2 -3
- package/components/apps/components/helpers/InputValue.svelte +54 -5
- package/components/apps/components/helpers/InputValue.svelte.d.ts +1 -0
- package/components/apps/components/helpers/NonRunnableComponent.svelte +2 -1
- package/components/apps/components/helpers/RefreshButton.svelte +20 -0
- package/components/apps/components/helpers/RefreshButton.svelte.d.ts +16 -0
- package/components/apps/components/helpers/RunnableComponent.svelte +38 -42
- package/components/apps/components/helpers/RunnableWrapper.svelte +6 -3
- package/components/apps/components/numberInputs/AppNumberInput.svelte +8 -11
- package/components/apps/components/numberInputs/AppNumberInput.svelte.d.ts +1 -0
- package/components/apps/components/selectInputs/AppCheckbox.svelte +1 -1
- package/components/apps/components/selectInputs/AppSelect.svelte +26 -0
- package/components/apps/components/selectInputs/AppSelect.svelte.d.ts +22 -0
- package/components/apps/components/table/AppTable.svelte +159 -0
- package/components/apps/components/{dataDisplay → table}/AppTable.svelte.d.ts +0 -0
- package/components/apps/components/table/AppTableFooter.svelte +54 -0
- package/components/apps/components/table/AppTableFooter.svelte.d.ts +20 -0
- package/components/apps/components/table/tableOptions.d.ts +10 -0
- package/components/apps/components/table/tableOptions.js +11 -0
- package/components/apps/components/textInputs/AppTextInput.svelte +17 -10
- package/components/apps/components/textInputs/AppTextInput.svelte.d.ts +2 -0
- package/components/apps/editor/AppEditor.svelte +35 -20
- package/components/apps/editor/AppEditorHeader.svelte +15 -7
- package/components/apps/editor/AppPreview.svelte +5 -3
- package/components/apps/editor/AppPreview.svelte.d.ts +4 -1
- package/components/apps/editor/ComponentEditor.svelte +21 -3
- package/components/apps/editor/ComponentEditor.svelte.d.ts +2 -0
- package/components/apps/editor/ComponentHeader.svelte +21 -4
- package/components/apps/editor/ComponentHeader.svelte.d.ts +2 -0
- package/components/apps/editor/GridEditor.svelte +40 -20
- package/components/apps/editor/RecomputeAllComponents.svelte +5 -7
- package/components/apps/editor/componentsPanel/ComponentList.svelte +30 -82
- package/components/apps/editor/componentsPanel/data.js +78 -29
- package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +5 -1
- package/components/apps/editor/contextPanel/ContextPanel.svelte +35 -152
- package/components/apps/editor/contextPanel/ContextPanel.svelte.d.ts +1 -3
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +64 -0
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +18 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +95 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +20 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +32 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +19 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +63 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +17 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +44 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte.d.ts +14 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +126 -0
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte.d.ts +16 -0
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +41 -0
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +44 -0
- package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte.d.ts +18 -0
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +48 -130
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +3 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -2
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +1 -1
- package/components/apps/editor/settingsPanel/Recompute.svelte +2 -2
- package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +46 -0
- package/components/apps/editor/settingsPanel/SelectedRunnable.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +1 -1
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte +1 -1
- package/components/apps/editor/settingsPanel/{ConnectedInputEditor.svelte → inputEditor/ConnectedInputEditor.svelte} +1 -2
- package/components/apps/editor/settingsPanel/{ConnectedInputEditor.svelte.d.ts → inputEditor/ConnectedInputEditor.svelte.d.ts} +1 -1
- package/components/apps/editor/settingsPanel/inputEditor/RunnableInputEditor.svelte +12 -0
- package/components/apps/editor/settingsPanel/inputEditor/RunnableInputEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/{StaticInputEditor.svelte → inputEditor/StaticInputEditor.svelte} +5 -5
- package/components/apps/editor/settingsPanel/{StaticInputEditor.svelte.d.ts → inputEditor/StaticInputEditor.svelte.d.ts} +1 -1
- package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +6 -3
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +66 -22
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +2 -3
- package/components/apps/editor/settingsPanel/mainInput/WorkspaceFlowList.svelte +1 -1
- package/components/apps/gridUtils.d.ts +3 -1
- package/components/apps/gridUtils.js +16 -1
- package/components/apps/inputType.d.ts +10 -4
- package/components/apps/rx.d.ts +8 -8
- package/components/apps/rx.js +17 -9
- package/components/apps/types.d.ts +14 -2
- package/components/apps/utils.d.ts +4 -3
- package/components/apps/utils.js +37 -5
- package/components/common/drawer/Drawer.svelte +1 -1
- package/components/common/drawer/Drawer.svelte.d.ts +1 -0
- package/components/common/popup/Popup.svelte +0 -2
- package/components/common/popup/Popup.svelte.d.ts +0 -4
- package/components/common/table/FlowRow.svelte +21 -7
- package/components/common/table/FlowRow.svelte.d.ts +2 -0
- package/components/common/table/ScriptRow.svelte +22 -7
- package/components/common/table/ScriptRow.svelte.d.ts +2 -0
- package/components/common/toggleButton/ToggleButton.svelte +1 -1
- package/components/common/toggleButton/ToggleButtonGroup.svelte +1 -1
- package/components/common/toggleButton/ToggleButtonGroup.svelte.d.ts +1 -0
- package/components/flows/content/FlowEditorPanel.svelte +10 -16
- package/components/flows/content/FlowInputs.svelte +18 -4
- package/components/flows/content/FlowInputs.svelte.d.ts +1 -0
- package/components/flows/content/FlowModuleComponent.svelte +1 -1
- package/components/flows/content/FlowModuleWrapper.svelte +26 -1
- package/components/flows/content/FlowSchedules.svelte +5 -0
- package/components/flows/content/FlowSettings.svelte +16 -24
- package/components/flows/content/FlowSettings.svelte.d.ts +0 -1
- package/components/flows/header/FlowPreviewButtons.svelte +13 -10
- package/components/flows/map/FlowErrorHandlerItem.svelte +1 -1
- package/components/flows/map/FlowModuleSchemaMap.svelte +12 -3
- package/components/flows/map/FlowSettingsItem.svelte +8 -15
- package/components/flows/map/InsertModuleButton.svelte +29 -2
- package/components/flows/map/InsertModuleButton.svelte.d.ts +3 -1
- package/components/flows/map/MapItem.svelte +2 -1
- package/components/flows/map/MapItem.svelte.d.ts +1 -0
- package/components/flows/pickers/WorkspaceScriptPicker.svelte +3 -0
- package/components/flows/previousResults.js +1 -1
- package/components/graph/FlowGraph.svelte +15 -15
- package/components/graph/model.d.ts +35 -1
- package/components/home/ItemsList.svelte +20 -12
- package/components/jobs/JobDetail.svelte +9 -3
- package/components/sidebar/SidebarContent.svelte +4 -3
- package/components/sidebar/UserMenu.svelte +1 -1
- package/editorUtils.d.ts +7 -1
- package/editorUtils.js +98 -3
- package/es5.d.ts.txt +4526 -0
- package/gen/index.d.ts +2 -0
- package/gen/index.js +1 -0
- package/gen/models/CompletedJob.d.ts +1 -0
- package/gen/models/EditSchedule.d.ts +0 -2
- package/gen/models/Folder.d.ts +5 -0
- package/gen/models/Folder.js +4 -0
- package/gen/models/QueuedJob.d.ts +1 -0
- package/gen/models/Script.d.ts +1 -1
- package/gen/models/User.d.ts +1 -0
- package/gen/services/FolderService.d.ts +128 -0
- package/gen/services/FolderService.js +151 -0
- package/gen/services/GranularAclService.d.ts +3 -3
- package/gen/services/GroupService.d.ts +5 -1
- package/gen/services/GroupService.js +4 -1
- package/gen/services/JobService.d.ts +25 -5
- package/gen/services/JobService.js +10 -5
- package/gen/services/ScriptService.d.ts +2 -1
- package/gen/services/UserService.d.ts +9 -0
- package/gen/services/UserService.js +15 -0
- package/package.json +485 -461
- package/script_helpers.d.ts +2 -2
- package/script_helpers.js +4 -4
- package/stores.d.ts +1 -0
- package/utils.d.ts +3 -0
- package/utils.js +44 -7
- package/components/GroupModal.svelte +0 -98
- package/components/GroupModal.svelte.d.ts +0 -17
- package/components/apps/components/dataDisplay/AppTable.svelte +0 -132
- package/components/apps/components/dataDisplay/app.md +0 -49
- package/components/apps/editor/contextPanel/InlineScriptCreationPanel.svelte +0 -29
- package/components/apps/editor/contextPanel/InlineScriptCreationPanel.svelte.d.ts +0 -16
package/common.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Script } from "./gen";
|
|
2
|
-
export type OwnerKind = 'group' | 'user';
|
|
2
|
+
export type OwnerKind = 'group' | 'user' | 'folder';
|
|
3
3
|
export type ActionKind = 'Create' | 'Update' | 'Delete' | 'Execute';
|
|
4
4
|
export type SupportedLanguage = Script.language;
|
|
5
5
|
export interface SchemaProperty {
|
package/common.js
CHANGED
|
@@ -369,8 +369,8 @@ let filteredConnectsManual = [];
|
|
|
369
369
|
</ol>
|
|
370
370
|
</div>
|
|
371
371
|
{#if apiTokenApps[resource_type].img}
|
|
372
|
-
<div class="mt-4">
|
|
373
|
-
<img alt="connect" src={apiTokenApps[resource_type].img} />
|
|
372
|
+
<div class="mt-4 w-full">
|
|
373
|
+
<img class="max-h-96 m-auto" alt="connect" src={apiTokenApps[resource_type].img} />
|
|
374
374
|
</div>
|
|
375
375
|
{/if}
|
|
376
376
|
{/if}
|
|
@@ -11,7 +11,6 @@ import StringTypeNarrowing from './StringTypeNarrowing.svelte';
|
|
|
11
11
|
import SchemaForm from './SchemaForm.svelte';
|
|
12
12
|
import SimpleEditor from './SimpleEditor.svelte';
|
|
13
13
|
import autosize from 'svelte-autosize';
|
|
14
|
-
import * as autosizeLib from 'autosize';
|
|
15
14
|
import Toggle from './Toggle.svelte';
|
|
16
15
|
import Password from './Password.svelte';
|
|
17
16
|
export let label = '';
|
|
@@ -270,6 +269,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
|
|
|
270
269
|
{#if properties && Object.keys(properties).length > 0}
|
|
271
270
|
<div class="p-4 pl-8 border rounded w-full">
|
|
272
271
|
<SchemaForm
|
|
272
|
+
{disabled}
|
|
273
273
|
schema={{ properties, $schema: '', required: [], type: 'object' }}
|
|
274
274
|
bind:args={value}
|
|
275
275
|
/>
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
5
|
<script>import { ScheduleService } from '../gen';
|
|
6
|
-
import { displayDate, formatCron, sendUserToast } from '../utils';
|
|
6
|
+
import { displayDate, emptyString, formatCron, sendUserToast } from '../utils';
|
|
7
7
|
import CollapseLink from './CollapseLink.svelte';
|
|
8
8
|
export let validCRON = true;
|
|
9
9
|
let preview = [];
|
|
@@ -11,7 +11,7 @@ let cronError = '';
|
|
|
11
11
|
export let schedule = '0 0 12 * *';
|
|
12
12
|
export let disabled = false;
|
|
13
13
|
let limit = 3;
|
|
14
|
-
$: handleScheduleInput(schedule);
|
|
14
|
+
$: !emptyString(schedule) && handleScheduleInput(schedule);
|
|
15
15
|
async function handleScheduleInput(input) {
|
|
16
16
|
try {
|
|
17
17
|
preview = await ScheduleService.previewSchedule({
|
|
@@ -26,63 +26,64 @@ async function handleScheduleInput(input) {
|
|
|
26
26
|
validCRON = false;
|
|
27
27
|
}
|
|
28
28
|
else {
|
|
29
|
-
sendUserToast(`Cannot preview: ${err}`, true);
|
|
30
29
|
validCRON = false;
|
|
31
30
|
}
|
|
32
31
|
}
|
|
33
32
|
}
|
|
34
33
|
</script>
|
|
35
34
|
|
|
36
|
-
<div class="
|
|
37
|
-
<div class="
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
{#if !disabled}
|
|
49
|
-
<div class="flex flex-row text-xs text-blue-500 gap-3 pl-28 mb-2">
|
|
50
|
-
<button
|
|
51
|
-
on:click={() => {
|
|
52
|
-
schedule = '0 */15 * * *'
|
|
53
|
-
cronError = ''
|
|
54
|
-
}}>every 15 min</button
|
|
55
|
-
>
|
|
56
|
-
<button
|
|
57
|
-
on:click={() => {
|
|
58
|
-
schedule = '0 0 * * * *'
|
|
59
|
-
cronError = ''
|
|
60
|
-
}}>every hour</button
|
|
61
|
-
>
|
|
62
|
-
<button
|
|
63
|
-
on:click={() => {
|
|
64
|
-
schedule = '0 0 8 * * *'
|
|
65
|
-
cronError = ''
|
|
66
|
-
}}>once a day at 8AM</button
|
|
67
|
-
>
|
|
35
|
+
<div class="max-w-xl">
|
|
36
|
+
<div class="w-full text-right text-red-600 text-2xs grow">{cronError}</div>
|
|
37
|
+
<div class="flex flex-row items-end max-w-5xl">
|
|
38
|
+
<label class="text-xs min-w-max mr-2 self-center" for="cron-schedule">CRON expression</label>
|
|
39
|
+
<input
|
|
40
|
+
class="inline-block"
|
|
41
|
+
type="text"
|
|
42
|
+
id="cron-schedule"
|
|
43
|
+
name="cron-schedule"
|
|
44
|
+
bind:value={schedule}
|
|
45
|
+
{disabled}
|
|
46
|
+
/>
|
|
68
47
|
</div>
|
|
69
|
-
{
|
|
70
|
-
|
|
71
|
-
<
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
{
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
{
|
|
85
|
-
|
|
48
|
+
{#if !disabled}
|
|
49
|
+
<div class="flex flex-row text-xs text-blue-500 gap-3 pl-28 mb-2">
|
|
50
|
+
<button
|
|
51
|
+
on:click={() => {
|
|
52
|
+
schedule = '0 */15 * * *'
|
|
53
|
+
cronError = ''
|
|
54
|
+
}}>every 15 min</button
|
|
55
|
+
>
|
|
56
|
+
<button
|
|
57
|
+
on:click={() => {
|
|
58
|
+
schedule = '0 0 * * * *'
|
|
59
|
+
cronError = ''
|
|
60
|
+
}}>every hour</button
|
|
61
|
+
>
|
|
62
|
+
<button
|
|
63
|
+
on:click={() => {
|
|
64
|
+
schedule = '0 0 8 * * *'
|
|
65
|
+
cronError = ''
|
|
66
|
+
}}>once a day at 8AM</button
|
|
67
|
+
>
|
|
86
68
|
</div>
|
|
87
69
|
{/if}
|
|
88
|
-
|
|
70
|
+
|
|
71
|
+
<CollapseLink text="preview next runs" open={true}>
|
|
72
|
+
{#if preview && preview.length > 0}
|
|
73
|
+
<div class="text-sm text-gray-700 border p-2 rounded-md">
|
|
74
|
+
<div class="flex flex-row justify-between">The next runs will be scheduled at:</div>
|
|
75
|
+
<ul class="list-disc mx-12">
|
|
76
|
+
{#each preview.slice(0, limit) as p}
|
|
77
|
+
<li class="mx-2 text-gray-700 text-sm">{displayDate(p, true)}</li>
|
|
78
|
+
{/each}
|
|
79
|
+
<li class="text-sm mx-2">...</li>
|
|
80
|
+
{#if limit != 10}
|
|
81
|
+
<button class="underline text-gray-400" on:click={() => (limit = 10)}>Load more</button>
|
|
82
|
+
{:else}
|
|
83
|
+
<button class="underline text-gray-400" on:click={() => (limit = 3)}>Load less</button>
|
|
84
|
+
{/if}
|
|
85
|
+
</ul>
|
|
86
|
+
</div>
|
|
87
|
+
{/if}
|
|
88
|
+
</CollapseLink>
|
|
89
|
+
</div>
|
|
@@ -21,23 +21,24 @@ const dispatch = createEventDispatcher();
|
|
|
21
21
|
{#if item.action}
|
|
22
22
|
<button
|
|
23
23
|
on:click={(event) => {
|
|
24
|
+
event.preventDefault()
|
|
24
25
|
if (!item.disabled) {
|
|
25
|
-
event.preventDefault()
|
|
26
26
|
close()
|
|
27
27
|
item.action && item.action(event)
|
|
28
28
|
dispatch('click', { item: item?.eventName })
|
|
29
29
|
}
|
|
30
30
|
}}
|
|
31
|
-
class="block w-full
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
class="block w-full whitespace-nowrap hover:drop-shadow-sm hover:bg-gray-50 hover:bg-opacity-30
|
|
32
|
+
px-4 py-2 text-sm text-gray-700 text-left
|
|
33
|
+
{item.disabled ? 'bg-gray-100' : ''}
|
|
34
|
+
{item.separatorTop ? 'border-t' : ''} {item.separatorBottom ? 'border-b' : ''} {item.type ==
|
|
35
|
+
'delete'
|
|
34
36
|
? 'text-red-500'
|
|
35
37
|
: ''}"
|
|
36
38
|
role="menuitem"
|
|
37
39
|
tabindex="-1"
|
|
38
40
|
id="user-menu-item-{name}-{i}}"
|
|
39
41
|
disabled={item.disabled}
|
|
40
|
-
class:disabled={item.disabled}
|
|
41
42
|
>
|
|
42
43
|
{#if item.icon}
|
|
43
44
|
<Icon
|
|
@@ -48,15 +49,17 @@ const dispatch = createEventDispatcher();
|
|
|
48
49
|
{/if}
|
|
49
50
|
{item.displayName}
|
|
50
51
|
</button>
|
|
51
|
-
{:else if item.href}
|
|
52
|
+
{:else if item.href && !item.disabled}
|
|
52
53
|
<a
|
|
53
54
|
href={item.href}
|
|
54
|
-
on:click={() => {
|
|
55
|
+
on:click={(e) => {
|
|
55
56
|
if (!item.disabled) {
|
|
56
57
|
close()
|
|
58
|
+
} else {
|
|
59
|
+
e.preventDefault()
|
|
57
60
|
}
|
|
58
61
|
}}
|
|
59
|
-
class="block w-full px-4 py-2 text-sm text-gray-700 hover:drop-shadow-sm hover:bg-gray-50 hover:bg-opacity-30"
|
|
62
|
+
class="block w-full px-4 font-semibold py-2 text-sm text-gray-700 hover:drop-shadow-sm hover:bg-gray-50 hover:bg-opacity-30"
|
|
60
63
|
role="menuitem"
|
|
61
64
|
tabindex="-1"
|
|
62
65
|
id="user-menu-item-{name}-{i}}"
|
|
@@ -73,11 +76,20 @@ const dispatch = createEventDispatcher();
|
|
|
73
76
|
</a>
|
|
74
77
|
{:else}
|
|
75
78
|
<span
|
|
76
|
-
class
|
|
79
|
+
class:bg-gray-50={item.disabled}
|
|
80
|
+
class="block px-4 py-2 text-sm text-gray-700 cursor-auto"
|
|
77
81
|
role="menuitem"
|
|
78
82
|
tabindex="-1"
|
|
79
83
|
id="user-menu-item-{name}-{i}}"
|
|
84
|
+
on:click|preventDefault
|
|
80
85
|
>
|
|
86
|
+
{#if item.icon}
|
|
87
|
+
<Icon
|
|
88
|
+
data={item.icon}
|
|
89
|
+
scale={0.6}
|
|
90
|
+
class="inline mr-2 {item.type == 'delete' ? 'text-red-500' : 'text-gray-700'}"
|
|
91
|
+
/>
|
|
92
|
+
{/if}
|
|
81
93
|
{item.displayName}
|
|
82
94
|
</span>
|
|
83
95
|
{/if}
|
package/components/Editor.svelte
CHANGED
|
@@ -19,6 +19,14 @@ monaco.editor.defineTheme('myTheme', {
|
|
|
19
19
|
}
|
|
20
20
|
});
|
|
21
21
|
monaco.editor.setTheme('myTheme');
|
|
22
|
+
try {
|
|
23
|
+
StandaloneServices.initialize({
|
|
24
|
+
...getMessageServiceOverride(document.body)
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
console.error(e);
|
|
29
|
+
}
|
|
22
30
|
</script>
|
|
23
31
|
|
|
24
32
|
<script>import { browser, dev } from '$app/env';
|
|
@@ -27,20 +35,12 @@ import { sendUserToast } from '../utils';
|
|
|
27
35
|
import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
|
|
28
36
|
import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker';
|
|
29
37
|
import { buildWorkerDefinition } from 'monaco-editor-workers';
|
|
30
|
-
import { createEventDispatcher, onDestroy, onMount } from 'svelte';
|
|
31
38
|
import getMessageServiceOverride from 'vscode/service-override/messages';
|
|
32
|
-
import {
|
|
39
|
+
import { createEventDispatcher, onDestroy, onMount } from 'svelte';
|
|
33
40
|
import { BASH_INIT_CODE, DENO_INIT_CODE_CLEAR, GO_INIT_CODE, PYTHON_INIT_CODE_CLEAR } from '../script_helpers';
|
|
34
41
|
import { createHash as randomHash, editorConfig, langToExt, updateOptions } from '../editorUtils';
|
|
35
42
|
import { dirtyStore } from './common/confirmationModal/dirtyStore';
|
|
36
|
-
|
|
37
|
-
StandaloneServices.initialize({
|
|
38
|
-
...getMessageServiceOverride(document.body)
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
catch (e) {
|
|
42
|
-
console.error(e);
|
|
43
|
-
}
|
|
43
|
+
import { StandaloneServices } from 'vscode/services';
|
|
44
44
|
let divEl = null;
|
|
45
45
|
let editor;
|
|
46
46
|
export let lang;
|
|
@@ -127,7 +127,7 @@ async function onScriptPick(e) {
|
|
|
127
127
|
editor.insertAtCursor(`v, _ := wmill.GetVariable("${path}")`)
|
|
128
128
|
} else if (lang == 'bash') {
|
|
129
129
|
editor.insertAtCursor(`curl -s -H "Authorization: Bearer $WM_TOKEN" \\
|
|
130
|
-
"$
|
|
130
|
+
"$BASE_INTERNAL_URL/api/w/$WM_WORKSPACE/variables/get/${path}" \\
|
|
131
131
|
| jq -r .value`)
|
|
132
132
|
}
|
|
133
133
|
sendUserToast(`${name} inserted at cursor`)
|
|
@@ -173,7 +173,7 @@ async function onScriptPick(e) {
|
|
|
173
173
|
editor.insertAtCursor(`r, _ := wmill.GetResource("${path}")`)
|
|
174
174
|
} else if (lang == 'bash') {
|
|
175
175
|
editor.insertAtCursor(`curl -s -H "Authorization: Bearer $WM_TOKEN" \\
|
|
176
|
-
"$
|
|
176
|
+
"$BASE_INTERNAL_URL/api/w/$WM_WORKSPACE/resources/get/${path}" \\
|
|
177
177
|
| jq -r .value`)
|
|
178
178
|
}
|
|
179
179
|
sendUserToast(`${path} inserted at cursor`)
|
|
@@ -3,11 +3,12 @@ import { page } from '$app/stores';
|
|
|
3
3
|
import { FlowService, ScheduleService } from '../gen';
|
|
4
4
|
import { userStore, workspaceStore } from '../stores';
|
|
5
5
|
import { encodeState, formatCron, loadHubScripts, sendUserToast, setQueryWithoutLoad } from '../utils';
|
|
6
|
-
import { faEye, faPen, faSave } from '@fortawesome/free-solid-svg-icons';
|
|
6
|
+
import { faCalendarAlt, faEye, faPen, faSave } from '@fortawesome/free-solid-svg-icons';
|
|
7
7
|
import { setContext } from 'svelte';
|
|
8
|
+
import { Icon } from 'svelte-awesome';
|
|
8
9
|
import { writable } from 'svelte/store';
|
|
9
10
|
import CenteredPage from './CenteredPage.svelte';
|
|
10
|
-
import { Button, Drawer, DrawerContent } from './common';
|
|
11
|
+
import { Badge, Button, Drawer, DrawerContent } from './common';
|
|
11
12
|
import { dirtyStore } from './common/confirmationModal/dirtyStore';
|
|
12
13
|
import UnsavedConfirmationModal from './common/confirmationModal/UnsavedConfirmationModal.svelte';
|
|
13
14
|
import { OFFSET } from './CronInput.svelte';
|
|
@@ -26,18 +27,23 @@ export let loading = false;
|
|
|
26
27
|
let pathError = '';
|
|
27
28
|
async function createSchedule(path) {
|
|
28
29
|
const { cron, args, enabled } = $scheduleStore;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
30
|
+
try {
|
|
31
|
+
await ScheduleService.createSchedule({
|
|
32
|
+
workspace: $workspaceStore,
|
|
33
|
+
requestBody: {
|
|
34
|
+
path: path,
|
|
35
|
+
schedule: formatCron(cron),
|
|
36
|
+
offset: OFFSET,
|
|
37
|
+
script_path: path,
|
|
38
|
+
is_flow: true,
|
|
39
|
+
args,
|
|
40
|
+
enabled
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
sendUserToast(`The primary schedule could not be created: ${err}`, true);
|
|
46
|
+
}
|
|
41
47
|
}
|
|
42
48
|
async function saveFlow() {
|
|
43
49
|
const flow = cleanInputs($flowStore);
|
|
@@ -72,23 +78,19 @@ async function saveFlow() {
|
|
|
72
78
|
});
|
|
73
79
|
const scheduleExists = await ScheduleService.existsSchedule({
|
|
74
80
|
workspace: $workspaceStore ?? '',
|
|
75
|
-
path:
|
|
81
|
+
path: flow.path
|
|
76
82
|
});
|
|
77
83
|
if (scheduleExists) {
|
|
78
84
|
const schedule = await ScheduleService.getSchedule({
|
|
79
85
|
workspace: $workspaceStore ?? '',
|
|
80
|
-
path:
|
|
86
|
+
path: flow.path
|
|
81
87
|
});
|
|
82
|
-
if (schedule.
|
|
83
|
-
JSON.stringify(schedule.args) != JSON.stringify(args) ||
|
|
84
|
-
schedule.schedule != cron) {
|
|
88
|
+
if (JSON.stringify(schedule.args) != JSON.stringify(args) || schedule.schedule != cron) {
|
|
85
89
|
await ScheduleService.updateSchedule({
|
|
86
90
|
workspace: $workspaceStore ?? '',
|
|
87
|
-
path:
|
|
91
|
+
path: flow.path,
|
|
88
92
|
requestBody: {
|
|
89
93
|
schedule: formatCron(cron),
|
|
90
|
-
script_path: flow.path,
|
|
91
|
-
is_flow: true,
|
|
92
94
|
args
|
|
93
95
|
}
|
|
94
96
|
});
|
|
@@ -178,10 +180,24 @@ let flowViewer;
|
|
|
178
180
|
size="sm"
|
|
179
181
|
on:click={flowViewer.openDrawer}
|
|
180
182
|
>
|
|
181
|
-
|
|
183
|
+
Graph
|
|
182
184
|
</Button>
|
|
183
185
|
</div>
|
|
184
186
|
<div class="gap-1 flex-row hidden md:flex shrink overflow-hidden">
|
|
187
|
+
{#if $scheduleStore.enabled}
|
|
188
|
+
<Button
|
|
189
|
+
btnClasses="hidden lg:inline-flex"
|
|
190
|
+
startIcon={{ icon: faCalendarAlt }}
|
|
191
|
+
variant="contained"
|
|
192
|
+
color="light"
|
|
193
|
+
size="xs"
|
|
194
|
+
on:click={async () => {
|
|
195
|
+
select('settings-schedule')
|
|
196
|
+
}}
|
|
197
|
+
>
|
|
198
|
+
{$scheduleStore.cron ?? ''}
|
|
199
|
+
</Button>
|
|
200
|
+
{/if}
|
|
185
201
|
<Button
|
|
186
202
|
btnClasses="hidden lg:inline-flex"
|
|
187
203
|
startIcon={{ icon: faPen }}
|
|
@@ -189,7 +205,7 @@ let flowViewer;
|
|
|
189
205
|
color="light"
|
|
190
206
|
size="xs"
|
|
191
207
|
on:click={async () => {
|
|
192
|
-
select('settings')
|
|
208
|
+
select('settings-metadata')
|
|
193
209
|
document.getElementById('path')?.focus()
|
|
194
210
|
}}
|
|
195
211
|
>
|
|
@@ -201,7 +217,7 @@ let flowViewer;
|
|
|
201
217
|
color="light"
|
|
202
218
|
size="xs"
|
|
203
219
|
on:click={async () => {
|
|
204
|
-
select('settings')
|
|
220
|
+
select('settings-metadata')
|
|
205
221
|
document.getElementById('flow-summary')?.focus()
|
|
206
222
|
}}
|
|
207
223
|
>
|
|
@@ -72,7 +72,9 @@ let topHeight = 0;
|
|
|
72
72
|
<div class="grid grid-cols-3 w-full">
|
|
73
73
|
<div
|
|
74
74
|
bind:clientHeight={topHeight}
|
|
75
|
-
class="{noSide
|
|
75
|
+
class="{noSide
|
|
76
|
+
? 'col-span-3'
|
|
77
|
+
: 'sm:col-span-2 col-span-3'} w-full border border-gray-400 h-screen"
|
|
76
78
|
class:overflow-auto={overflowAuto}
|
|
77
79
|
>
|
|
78
80
|
<FlowGraph
|
|
@@ -83,7 +85,9 @@ let topHeight = 0;
|
|
|
83
85
|
/>
|
|
84
86
|
</div>
|
|
85
87
|
{#if !noSide}
|
|
86
|
-
<div
|
|
88
|
+
<div
|
|
89
|
+
class="w-full border-r border-b border-t border-gray-400 min-h-[150px] p-2 overflow-auto hidden sm:block"
|
|
90
|
+
>
|
|
87
91
|
{#if stepDetail == undefined}
|
|
88
92
|
<span class="font-black text-lg w-full my-4">
|
|
89
93
|
<span>Click on a step to see its details</span>
|
|
@@ -2,10 +2,14 @@
|
|
|
2
2
|
import Icon from 'svelte-awesome';
|
|
3
3
|
import { displayDaysAgo } from '../utils';
|
|
4
4
|
import { faCalendar, faClock, faRobot, faScroll, faUser, faBarsStaggered } from '@fortawesome/free-solid-svg-icons';
|
|
5
|
+
import ScheduleEditor from './ScheduleEditor.svelte';
|
|
5
6
|
export let job;
|
|
6
7
|
const SMALL_ICON_SCALE = 0.7;
|
|
8
|
+
let scheduleEditor;
|
|
7
9
|
</script>
|
|
8
10
|
|
|
11
|
+
<ScheduleEditor bind:this={scheduleEditor} />
|
|
12
|
+
|
|
9
13
|
<div class="rounded-md p-3 bg-gray-50 shadow-sm sm:text-sm md:text-base" style="min-height: 150px;">
|
|
10
14
|
<JobStatus {job} />
|
|
11
15
|
<div>
|
|
@@ -36,9 +40,10 @@ const SMALL_ICON_SCALE = 0.7;
|
|
|
36
40
|
{:else if job && job.schedule_path}
|
|
37
41
|
<Icon class="text-gray-700" data={faCalendar} scale={SMALL_ICON_SCALE} />
|
|
38
42
|
<span
|
|
39
|
-
>Triggered by the schedule: <
|
|
40
|
-
|
|
41
|
-
|
|
43
|
+
>Triggered by the schedule: <button
|
|
44
|
+
class="break-words text-sm text-blue-600 font-normal"
|
|
45
|
+
on:click={() => scheduleEditor?.openEdit(job.schedule_path ?? '', job.job_kind == 'flow')}
|
|
46
|
+
>{job.schedule_path}</button
|
|
42
47
|
></span
|
|
43
48
|
>
|
|
44
49
|
{/if}
|
|
@@ -27,9 +27,9 @@ function toAny(x) {
|
|
|
27
27
|
</script>
|
|
28
28
|
|
|
29
29
|
<Tabs bind:selected={tab}>
|
|
30
|
-
<Tab value="ui">
|
|
30
|
+
<Tab value="ui">Graph</Tab>
|
|
31
31
|
<Tab value="json">Json</Tab>
|
|
32
|
-
<Tab value="schema">Input
|
|
32
|
+
<Tab value="schema">Input Schema</Tab>
|
|
33
33
|
|
|
34
34
|
<svelte:fragment slot="content">
|
|
35
35
|
<TabContent value="ui">
|