windmill-components 1.339.2 → 1.352.1
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 +0 -12
- package/package/ata/index.js +1 -0
- package/package/autosize.js +1 -1
- package/package/common.d.ts +6 -2
- package/package/common.js +2 -1
- package/package/components/AppConnectDrawer.svelte +1 -1
- package/package/components/AppConnectInner.svelte +9 -15
- package/package/components/ArgEnum.svelte +4 -1
- package/package/components/ArgEnum.svelte.d.ts +3 -1
- package/package/components/ArgInput.svelte +184 -141
- package/package/components/ArgInput.svelte.d.ts +7 -7
- package/package/components/ArrayTypeNarrowing.svelte +29 -27
- package/package/components/CenteredPage.svelte +2 -2
- package/package/components/DefaultTagsInner.svelte +1 -1
- package/package/components/Dev.svelte +2 -1
- package/package/components/DiffDrawer.svelte +1 -2
- package/package/components/DisplayResult.svelte +293 -233
- package/package/components/DurationMs.svelte +11 -3
- package/package/components/DurationMs.svelte.d.ts +2 -0
- package/package/components/EditableSchemaForm.svelte +447 -103
- package/package/components/EditableSchemaForm.svelte.d.ts +16 -6
- package/package/components/Editor.svelte +3 -1
- package/package/components/EditorBar.svelte +2 -2
- package/package/components/FlowBuilder.svelte +14 -6
- package/package/components/FlowGraphViewer.svelte +1 -1
- package/package/components/FlowGraphViewerStep.svelte +37 -9
- package/package/components/FlowGraphViewerStep.svelte.d.ts +2 -7
- package/package/components/FlowJobResult.svelte +1 -3
- package/package/components/FlowMetadata.svelte +1 -1
- package/package/components/FlowPreviewContent.svelte +5 -3
- package/package/components/FlowStatusViewer.svelte +4 -0
- package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
- package/package/components/FlowStatusViewerInner.svelte +50 -17
- package/package/components/FlowStatusViewerInner.svelte.d.ts +3 -0
- package/package/components/FlowTimeline.svelte +13 -0
- package/package/components/FlowTimeline.svelte.d.ts +2 -0
- package/package/components/FlowViewer.svelte +0 -5
- package/package/components/FolderEditor.svelte +25 -0
- package/package/components/FolderEditor.svelte.d.ts +2 -0
- package/package/components/GroupEditor.svelte +36 -91
- package/package/components/GroupInfo.svelte +1 -1
- package/package/components/InputTransformForm.svelte +16 -1
- package/package/components/InputTransformForm.svelte.d.ts +2 -0
- package/package/components/InputTransformSchemaForm.svelte +6 -0
- package/package/components/InputTransformSchemaForm.svelte.d.ts +2 -0
- package/package/components/InstanceSettings.svelte +36 -3
- package/package/components/InstanceSettings.svelte.d.ts +2 -0
- package/package/components/JobStatus.svelte +2 -2
- package/package/components/LightweightArgInput.svelte +66 -14
- package/package/components/LightweightArgInput.svelte.d.ts +3 -2
- package/package/components/LightweightSchemaForm.svelte +24 -15
- package/package/components/ModulePreviewForm.svelte +1 -0
- package/package/components/NumberTypeNarrowing.svelte +71 -44
- package/package/components/ObjectResourceInput.svelte +2 -0
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/ObjectTypeNarrowing.svelte +0 -1
- package/package/components/ParqetCsvTableRenderer.svelte +181 -0
- package/package/components/ParqetCsvTableRenderer.svelte.d.ts +21 -0
- package/package/components/Path.svelte +2 -2
- package/package/components/PersistentScriptDrawer.svelte +6 -3
- package/package/components/Range.svelte +88 -286
- package/package/components/Range.svelte.d.ts +9 -23
- package/package/components/ResourceEditor.svelte +138 -141
- package/package/components/ResourceEditor.svelte.d.ts +9 -2
- package/package/components/ResourceEditorDrawer.svelte +45 -0
- package/package/components/ResourceEditorDrawer.svelte.d.ts +21 -0
- package/package/components/ResourcePicker.svelte +5 -2
- package/package/components/ResourceTypePicker.svelte +88 -36
- package/package/components/RunChart.svelte +55 -5
- package/package/components/RunChart.svelte.d.ts +1 -0
- package/package/components/RunForm.svelte +1 -1
- package/package/components/S3FilePicker.svelte +20 -8
- package/package/components/S3FilePicker.svelte.d.ts +2 -0
- package/package/components/ScheduleEditorInner.svelte +40 -37
- package/package/components/SchemaForm.svelte +192 -103
- package/package/components/SchemaForm.svelte.d.ts +16 -2
- package/package/components/ScriptBuilder.svelte +13 -8
- package/package/components/ScriptSchedules.svelte +11 -8
- package/package/components/ScriptSchema.svelte +3 -21
- package/package/components/ScriptVersionHistory.svelte +1 -1
- package/package/components/StringTypeNarrowing.svelte +217 -174
- package/package/components/StringTypeNarrowing.svelte.d.ts +5 -1
- package/package/components/Toggle.svelte +6 -3
- package/package/components/Toggle.svelte.d.ts +1 -0
- package/package/components/UserSettings.svelte +24 -1
- package/package/components/WorkspaceGroup.svelte +11 -13
- package/package/components/apps/components/buttons/AppButton.svelte +2 -0
- package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
- package/package/components/apps/components/display/AppFlowStatusComponent.svelte +13 -70
- package/package/components/apps/components/display/AppFlowStatusComponent.svelte.d.ts +1 -9
- package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +21 -8
- package/package/components/apps/components/display/AppJobIdFlowStatus.svelte.d.ts +1 -3
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte +19 -7
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte.d.ts +1 -3
- package/package/components/apps/components/display/AppLogsComponent.svelte +13 -70
- package/package/components/apps/components/display/AppLogsComponent.svelte.d.ts +1 -9
- package/package/components/apps/components/display/charts/AppAgCharts.svelte +25 -15
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +2 -0
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte +1 -1
- package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +18 -8
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -0
- package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -0
- package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
- package/package/components/apps/components/helpers/eval.js +1 -36
- package/package/components/apps/components/inputs/AppFileInput.svelte +3 -1
- package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppS3FileInput.svelte +3 -1
- package/package/components/apps/components/inputs/AppS3FileInput.svelte.d.ts +1 -0
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte +3 -1
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte.d.ts +1 -0
- package/package/components/apps/components/layout/AppStepper.svelte +5 -1
- package/package/components/apps/components/layout/AppStepper.svelte.d.ts +2 -0
- package/package/components/apps/components/layout/AppTabs.svelte +3 -1
- package/package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -0
- package/package/components/apps/editor/AppEditorHeader.svelte +6 -7
- package/package/components/apps/editor/SettingsPanel.svelte +13 -3
- package/package/components/apps/editor/component/Component.svelte +8 -16
- package/package/components/apps/editor/component/components.d.ts +11 -2
- package/package/components/apps/editor/component/components.js +2 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +5 -34
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +3 -41
- package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte +33 -0
- package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte.d.ts +19 -0
- package/package/components/apps/editor/settingsPanel/EventHandlers.svelte +103 -0
- package/package/components/apps/editor/settingsPanel/EventHandlers.svelte.d.ts +18 -0
- package/package/components/apps/editor/settingsPanel/GridCondition.svelte +21 -45
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +3 -23
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +5 -1
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +0 -2
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +0 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +7 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +7 -14
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +0 -1
- package/package/components/build_workers.js +13 -11
- package/package/components/common/button/ButtonDropdown.svelte +1 -0
- package/package/components/common/drawer/Disposable.svelte +3 -2
- package/package/components/common/drawer/Disposable.svelte.d.ts +1 -0
- package/package/components/common/drawer/Drawer.svelte +12 -2
- package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
- package/package/components/common/fileDownload/FileDownload.svelte +4 -2
- package/package/components/common/fileUpload/FileUpload.svelte +4 -3
- package/package/components/common/modal/Modal.svelte +4 -1
- package/package/components/common/modal/Modal.svelte.d.ts +1 -0
- package/package/components/common/popup/Popup.svelte +1 -1
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +4 -1
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
- package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte +79 -0
- package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte.d.ts +18 -0
- package/package/components/flows/content/FlowEditorPanel.svelte +16 -2
- package/package/components/flows/content/FlowInput.svelte +63 -53
- package/package/components/flows/content/FlowModuleComponent.svelte +26 -3
- package/package/components/flows/content/FlowModuleScript.svelte +40 -1
- package/package/components/flows/content/FlowModuleScript.svelte.d.ts +2 -0
- package/package/components/flows/content/FlowModuleSuspend.svelte +99 -59
- package/package/components/flows/content/FlowModuleWrapper.svelte +16 -1
- package/package/components/flows/content/FlowSchedules.svelte +11 -8
- package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -4
- package/package/components/flows/flowStateUtils.js +4 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +16 -1
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +6 -1
- package/package/components/flows/types.d.ts +4 -0
- package/package/components/flows/utils.d.ts +5 -1
- package/package/components/flows/utils.js +36 -0
- package/package/components/graph/FlowGraph.svelte +5 -2
- package/package/components/graph/FlowGraph.svelte.d.ts +2 -0
- package/package/components/graph/svelvet/container/models/index.d.ts +0 -5
- package/package/components/graph/svelvet/container/models/index.js +1 -1
- package/package/components/graph/svelvet/container/views/Svelvet.svelte +2 -5
- package/package/components/graph/util.d.ts +1 -37
- package/package/components/graph/util.js +0 -34
- package/package/components/instanceSettings.js +2 -1
- package/package/components/jobs/JobPreview.svelte +1 -1
- package/package/components/multiselect/MultiSelect.svelte +4 -3
- package/package/components/multiselect/MultiSelect.svelte.d.ts +1 -0
- package/package/components/multiselect/MultiSelectWrapper.svelte +89 -0
- package/package/components/multiselect/MultiSelectWrapper.svelte.d.ts +20 -0
- package/package/components/propertyPicker/ObjectViewer.svelte +6 -2
- package/package/components/runs/JobPreview.svelte +5 -1
- package/package/components/runs/RunRow.svelte +22 -3
- package/package/components/runs/RunRow.svelte.d.ts +2 -1
- package/package/components/runs/RunsTable.svelte +22 -9
- package/package/components/runs/RunsTable.svelte.d.ts +2 -1
- package/package/components/schema/AddProperty.svelte +149 -0
- package/package/components/schema/AddProperty.svelte.d.ts +23 -0
- package/package/components/schema/AddPropertyForm.svelte +33 -0
- package/package/components/schema/AddPropertyForm.svelte.d.ts +16 -0
- package/package/components/schema/EditableSchemaDrawer.svelte +198 -0
- package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +21 -0
- package/package/components/schema/EditableSchemaWrapper.svelte +31 -0
- package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +22 -0
- package/package/components/schema/FlowPropertyEditor.svelte +393 -0
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +47 -0
- package/package/components/schema/PropertyEditor.svelte +185 -0
- package/package/components/schema/PropertyEditor.svelte.d.ts +46 -0
- package/package/components/schema/SchemaFormDND.svelte +75 -0
- package/package/components/schema/SchemaFormDND.svelte.d.ts +28 -0
- package/package/components/table/AutoDataTable.svelte +90 -104
- package/package/components/table/Cell.svelte +4 -1
- package/package/components/table/Cell.svelte.d.ts +1 -0
- package/package/components/table/DownloadCsv.svelte +30 -0
- package/package/components/table/DownloadCsv.svelte.d.ts +17 -0
- package/package/components/table/tableUtils.d.ts +8 -0
- package/package/components/table/tableUtils.js +37 -0
- package/package/consts.js +3 -1
- package/package/deno_fetch.d.ts.txt +6 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +76 -0
- package/package/gen/schemas.gen.js +76 -0
- package/package/gen/services.gen.d.ts +100 -5
- package/package/gen/services.gen.js +216 -16
- package/package/gen/types.gen.d.ts +378 -5
- package/package/inferArgSig.d.ts +10 -0
- package/package/inferArgSig.js +59 -2
- package/package/scripts.d.ts +2 -0
- package/package/scripts.js +6 -3
- package/package/utils.d.ts +4 -3
- package/package/utils.js +9 -4
- package/package/workspace_settings.d.ts +15 -0
- package/package/workspace_settings.js +81 -0
- package/package.json +17 -7
- package/package/components/ParqetTableRenderer.svelte +0 -117
- package/package/components/ParqetTableRenderer.svelte.d.ts +0 -18
- package/package/components/PropertyRow.svelte +0 -88
- package/package/components/PropertyRow.svelte.d.ts +0 -23
- package/package/components/SchemaEditor.svelte +0 -346
- package/package/components/SchemaEditor.svelte.d.ts +0 -25
- package/package/components/SchemaModal.svelte +0 -443
- package/package/components/SchemaModal.svelte.d.ts +0 -33
- package/package/components/apps/editor/settingsPanel/Recompute.svelte +0 -55
- package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +0 -20
|
@@ -1,58 +1,66 @@
|
|
|
1
1
|
<script>import { ResourceService } from '../gen';
|
|
2
2
|
import { canWrite, emptyString, isOwner, urlize } from '../utils';
|
|
3
3
|
import { createEventDispatcher } from 'svelte';
|
|
4
|
-
import { Alert,
|
|
4
|
+
import { Alert, Skeleton } from './common';
|
|
5
5
|
import Path from './Path.svelte';
|
|
6
6
|
import Required from './Required.svelte';
|
|
7
7
|
import { userStore, workspaceStore } from '../stores';
|
|
8
|
-
import DrawerContent from './common/drawer/DrawerContent.svelte';
|
|
9
8
|
import SchemaForm from './SchemaForm.svelte';
|
|
10
9
|
import SimpleEditor from './SimpleEditor.svelte';
|
|
11
10
|
import Toggle from './Toggle.svelte';
|
|
12
11
|
import { sendUserToast } from '../toast';
|
|
13
12
|
import TestConnection from './TestConnection.svelte';
|
|
14
|
-
import { Pen
|
|
13
|
+
import { Pen } from 'lucide-svelte';
|
|
15
14
|
import Markdown from 'svelte-exmarkdown';
|
|
16
15
|
import autosize from '../autosize';
|
|
17
16
|
import GfmMarkdown from './GfmMarkdown.svelte';
|
|
18
|
-
let
|
|
19
|
-
let
|
|
20
|
-
let
|
|
17
|
+
export let canSave = true;
|
|
18
|
+
export let resource_type = undefined;
|
|
19
|
+
export let path = '';
|
|
20
|
+
export let newResource = false;
|
|
21
|
+
export let hidePath = false;
|
|
22
|
+
let isValid = true;
|
|
23
|
+
let jsonError = '';
|
|
24
|
+
let can_write = true;
|
|
25
|
+
$: canSave = can_write && isValid && jsonError == '';
|
|
26
|
+
let initialPath = path;
|
|
27
|
+
let resourceToEdit = undefined;
|
|
21
28
|
let description = '';
|
|
22
29
|
let DESCRIPTION_PLACEHOLDER = `Describe what this resource is for`;
|
|
23
|
-
let
|
|
24
|
-
let resourceSchema;
|
|
30
|
+
let resourceSchema = undefined;
|
|
25
31
|
let args = {};
|
|
26
|
-
let
|
|
27
|
-
let loadingSchema = false;
|
|
32
|
+
let loadingSchema = true;
|
|
28
33
|
let linkedVars = [];
|
|
29
|
-
let drawer;
|
|
30
34
|
let resourceTypeInfo = undefined;
|
|
31
|
-
let
|
|
35
|
+
let editDescription = false;
|
|
36
|
+
let viewJsonSchema = false;
|
|
32
37
|
let rawCode = undefined;
|
|
33
38
|
const dispatch = createEventDispatcher();
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
path = p;
|
|
37
|
-
resourceToEdit = undefined;
|
|
38
|
-
resourceSchema = undefined;
|
|
39
|
-
viewJsonSchema = false;
|
|
40
|
-
loadingSchema = true;
|
|
41
|
-
drawer.openDrawer?.();
|
|
42
|
-
resourceToEdit = await ResourceService.getResource({ workspace: $workspaceStore, path: p });
|
|
39
|
+
async function initEdit() {
|
|
40
|
+
resourceToEdit = await ResourceService.getResource({ workspace: $workspaceStore, path });
|
|
43
41
|
description = resourceToEdit.description ?? '';
|
|
44
|
-
|
|
42
|
+
resource_type = resourceToEdit.resource_type;
|
|
43
|
+
args = resourceToEdit?.value ?? {};
|
|
45
44
|
loadResourceType();
|
|
46
|
-
args = resourceToEdit.value;
|
|
47
45
|
can_write =
|
|
48
46
|
resourceToEdit.workspace_id == $workspaceStore &&
|
|
49
|
-
canWrite(
|
|
47
|
+
canWrite(path, resourceToEdit.extra_perms ?? {}, $userStore);
|
|
50
48
|
linkedVars = Object.entries(args)
|
|
51
49
|
.filter(([_, v]) => typeof v == 'string' && v == `$var:${initialPath}`)
|
|
52
50
|
.map(([k, _]) => k);
|
|
53
|
-
renderDescription = false;
|
|
54
51
|
}
|
|
55
|
-
|
|
52
|
+
if (!newResource) {
|
|
53
|
+
initEdit();
|
|
54
|
+
}
|
|
55
|
+
else if (resource_type) {
|
|
56
|
+
loadResourceType();
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
sendUserToast('Resource type cannot be undefined for new resource creation', true);
|
|
60
|
+
}
|
|
61
|
+
$: rawCode && parseJson();
|
|
62
|
+
$: linkedVars.length > 0 && path && updateArgsFromLinkedVars();
|
|
63
|
+
export async function editResource() {
|
|
56
64
|
if (resourceToEdit) {
|
|
57
65
|
await ResourceService.updateResource({
|
|
58
66
|
workspace: $workspaceStore,
|
|
@@ -61,18 +69,25 @@ async function editResource() {
|
|
|
61
69
|
});
|
|
62
70
|
sendUserToast(`Updated resource at ${path}`);
|
|
63
71
|
dispatch('refresh', path);
|
|
64
|
-
drawer.closeDrawer?.();
|
|
65
72
|
}
|
|
66
73
|
else {
|
|
67
74
|
throw Error('Cannot edit undefined resourceToEdit');
|
|
68
75
|
}
|
|
69
76
|
}
|
|
77
|
+
export async function createResource() {
|
|
78
|
+
await ResourceService.createResource({
|
|
79
|
+
workspace: $workspaceStore,
|
|
80
|
+
requestBody: { path, value: args, description, resource_type: resource_type }
|
|
81
|
+
});
|
|
82
|
+
sendUserToast(`Updated resource at ${path}`);
|
|
83
|
+
dispatch('refresh', path);
|
|
84
|
+
}
|
|
70
85
|
async function loadResourceType() {
|
|
71
|
-
if (
|
|
86
|
+
if (resource_type) {
|
|
72
87
|
try {
|
|
73
88
|
const resourceType = await ResourceService.getResourceType({
|
|
74
89
|
workspace: $workspaceStore,
|
|
75
|
-
path:
|
|
90
|
+
path: resource_type
|
|
76
91
|
});
|
|
77
92
|
resourceTypeInfo = resourceType;
|
|
78
93
|
if (resourceType.schema) {
|
|
@@ -90,9 +105,6 @@ async function loadResourceType() {
|
|
|
90
105
|
}
|
|
91
106
|
loadingSchema = false;
|
|
92
107
|
}
|
|
93
|
-
let isValid = true;
|
|
94
|
-
let jsonError = '';
|
|
95
|
-
$: rawCode && parseJson();
|
|
96
108
|
function parseJson() {
|
|
97
109
|
try {
|
|
98
110
|
args = JSON.parse(rawCode ?? '');
|
|
@@ -102,13 +114,11 @@ function parseJson() {
|
|
|
102
114
|
jsonError = e.message;
|
|
103
115
|
}
|
|
104
116
|
}
|
|
105
|
-
$: linkedVars.length > 0 && path && updateArgsFromLinkedVars();
|
|
106
117
|
function updateArgsFromLinkedVars() {
|
|
107
118
|
linkedVars.forEach((k) => {
|
|
108
119
|
args[k] = `$var:${path}`;
|
|
109
120
|
});
|
|
110
121
|
}
|
|
111
|
-
let viewJsonSchema = false;
|
|
112
122
|
function switchTab(asJson) {
|
|
113
123
|
viewJsonSchema = asJson;
|
|
114
124
|
if (asJson) {
|
|
@@ -120,118 +130,105 @@ function switchTab(asJson) {
|
|
|
120
130
|
}
|
|
121
131
|
</script>
|
|
122
132
|
|
|
123
|
-
<
|
|
124
|
-
<
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
<div class="m-2">
|
|
133
|
-
<Alert type="warning" title="Only read access">
|
|
134
|
-
You only have read access to this resource and cannot edit it
|
|
135
|
-
</Alert>
|
|
136
|
-
</div>
|
|
137
|
-
{/if}
|
|
138
|
-
<Path
|
|
139
|
-
disabled={initialPath != '' && !isOwner(initialPath, $userStore, $workspaceStore)}
|
|
140
|
-
bind:path
|
|
141
|
-
{initialPath}
|
|
142
|
-
namePlaceholder="resource"
|
|
143
|
-
kind="resource"
|
|
144
|
-
/>
|
|
145
|
-
</div>
|
|
146
|
-
{#if !emptyString(resourceTypeInfo?.description)}
|
|
147
|
-
<h4 class="mt-4 mb-2">{resourceTypeInfo?.name} description</h4>
|
|
148
|
-
<div class="text-sm">
|
|
149
|
-
<Markdown md={urlize(resourceTypeInfo?.description ?? '', 'md')} />
|
|
133
|
+
<div>
|
|
134
|
+
<div class="flex flex-col gap-3 py-3">
|
|
135
|
+
{#if !hidePath}
|
|
136
|
+
<div>
|
|
137
|
+
{#if !can_write}
|
|
138
|
+
<div class="m-2">
|
|
139
|
+
<Alert type="warning" title="Only read access">
|
|
140
|
+
You only have read access to this resource and cannot edit it
|
|
141
|
+
</Alert>
|
|
150
142
|
</div>
|
|
151
143
|
{/if}
|
|
152
|
-
<
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
144
|
+
<Path
|
|
145
|
+
disabled={initialPath != '' && !isOwner(initialPath, $userStore, $workspaceStore)}
|
|
146
|
+
bind:path
|
|
147
|
+
{initialPath}
|
|
148
|
+
namePlaceholder="resource"
|
|
149
|
+
kind="resource"
|
|
150
|
+
/>
|
|
151
|
+
</div>
|
|
152
|
+
{/if}
|
|
161
153
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
<
|
|
174
|
-
|
|
175
|
-
|
|
154
|
+
{#if !emptyString(resourceTypeInfo?.description)}
|
|
155
|
+
<h4 class="mt-4 mb-2">{resourceTypeInfo?.name} description</h4>
|
|
156
|
+
<div class="text-sm">
|
|
157
|
+
<Markdown md={urlize(resourceTypeInfo?.description ?? '', 'md')} />
|
|
158
|
+
</div>
|
|
159
|
+
{/if}
|
|
160
|
+
<h4 class="mt-4 inline-flex items-center gap-4"
|
|
161
|
+
>Resource description <Required required={false} />
|
|
162
|
+
{#if can_write}
|
|
163
|
+
<div class="flex gap-1 items-center">
|
|
164
|
+
<Toggle size="xs" bind:checked={editDescription} />
|
|
165
|
+
<Pen size={14} />
|
|
166
|
+
</div>
|
|
167
|
+
{/if}</h4
|
|
168
|
+
>
|
|
176
169
|
|
|
177
|
-
|
|
170
|
+
{#if can_write && editDescription}
|
|
171
|
+
<div>
|
|
172
|
+
<div class="flex flex-row-reverse text-2xs text-tertiary -mt-1">GH Markdown</div>
|
|
173
|
+
<textarea
|
|
174
|
+
disabled={!can_write}
|
|
175
|
+
use:autosize
|
|
176
|
+
bind:value={description}
|
|
177
|
+
placeholder={DESCRIPTION_PLACEHOLDER}
|
|
178
|
+
/>
|
|
179
|
+
</div>
|
|
180
|
+
{:else if description == undefined || description == ''}
|
|
181
|
+
<div class="text-sm text-tertiary">No description provided</div>
|
|
182
|
+
{:else}
|
|
183
|
+
<div class="mt-2" />
|
|
184
|
+
|
|
185
|
+
<GfmMarkdown md={description} />
|
|
186
|
+
{/if}
|
|
187
|
+
<div class="flex w-full justify-between max-w-lg items-center mt-4">
|
|
188
|
+
<Toggle
|
|
189
|
+
on:change={(e) => switchTab(e.detail)}
|
|
190
|
+
options={{
|
|
191
|
+
right: 'As JSON'
|
|
192
|
+
}}
|
|
193
|
+
/>
|
|
194
|
+
<TestConnection resourceType={resourceToEdit?.resource_type} {args} />
|
|
195
|
+
</div>
|
|
196
|
+
<div class="text-sm">
|
|
197
|
+
{#if loadingSchema}
|
|
198
|
+
<Skeleton layout={[[4]]} />
|
|
199
|
+
{:else if !viewJsonSchema && resourceSchema && resourceSchema?.properties}
|
|
200
|
+
<SchemaForm
|
|
201
|
+
onlyMaskPassword
|
|
202
|
+
noDelete
|
|
203
|
+
disabled={!can_write}
|
|
204
|
+
compact
|
|
205
|
+
schema={resourceSchema}
|
|
206
|
+
bind:args
|
|
207
|
+
bind:isValid
|
|
208
|
+
/>
|
|
209
|
+
{:else if !can_write}
|
|
210
|
+
<input type="text" disabled value={rawCode} />
|
|
211
|
+
{:else}
|
|
212
|
+
{#if !viewJsonSchema}
|
|
213
|
+
<p class="italic text-secondary text-xs mb-4">
|
|
214
|
+
No corresponding resource type found in your workspace for {resource_type}. Define the
|
|
215
|
+
value in JSON directly
|
|
216
|
+
</p>
|
|
178
217
|
{/if}
|
|
179
|
-
<div class="flex w-full justify-between max-w-lg items-center mt-4">
|
|
180
|
-
<Toggle
|
|
181
|
-
on:change={(e) => switchTab(e.detail)}
|
|
182
|
-
options={{
|
|
183
|
-
right: 'As JSON'
|
|
184
|
-
}}
|
|
185
|
-
/>
|
|
186
|
-
<TestConnection resourceType={resourceToEdit?.resource_type} {args} />
|
|
187
|
-
</div>
|
|
188
|
-
<div class="text-sm">
|
|
189
|
-
{#if loadingSchema}
|
|
190
|
-
<Skeleton layout={[[4]]} />
|
|
191
|
-
{:else if !viewJsonSchema && resourceSchema && resourceSchema?.properties}
|
|
192
|
-
<SchemaForm
|
|
193
|
-
onlyMaskPassword
|
|
194
|
-
noDelete
|
|
195
|
-
disabled={!can_write}
|
|
196
|
-
compact
|
|
197
|
-
schema={resourceSchema}
|
|
198
|
-
bind:args
|
|
199
|
-
bind:isValid
|
|
200
|
-
/>
|
|
201
|
-
{:else if !can_write}
|
|
202
|
-
<input type="text" disabled value={rawCode} />
|
|
203
|
-
{:else}
|
|
204
|
-
{#if !viewJsonSchema}
|
|
205
|
-
<p class="italic text-secondary text-xs mb-4">
|
|
206
|
-
No corresponding resource type found in your workspace for {selectedResourceType}.
|
|
207
|
-
Define the value in JSON directly
|
|
208
|
-
</p>
|
|
209
|
-
{/if}
|
|
210
218
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
</div>
|
|
223
|
-
{/if}
|
|
219
|
+
{#if !emptyString(jsonError)}<span class="text-red-400 text-xs mb-1 flex flex-row-reverse"
|
|
220
|
+
>{jsonError}</span
|
|
221
|
+
>{:else}<div class="py-2" />{/if}
|
|
222
|
+
<div class="h-full w-full border p-1 rounded">
|
|
223
|
+
<SimpleEditor
|
|
224
|
+
autoHeight
|
|
225
|
+
class="editor"
|
|
226
|
+
lang="json"
|
|
227
|
+
bind:code={rawCode}
|
|
228
|
+
fixedOverflowWidgets={false}
|
|
229
|
+
/>
|
|
224
230
|
</div>
|
|
225
|
-
|
|
231
|
+
{/if}
|
|
226
232
|
</div>
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
startIcon={{ icon: Save }}
|
|
230
|
-
on:click={editResource}
|
|
231
|
-
disabled={!can_write || !isValid || jsonError != ''}
|
|
232
|
-
>
|
|
233
|
-
Save
|
|
234
|
-
</Button>
|
|
235
|
-
</svelte:fragment>
|
|
236
|
-
</DrawerContent>
|
|
237
|
-
</Drawer>
|
|
233
|
+
</div>
|
|
234
|
+
</div>
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
|
-
|
|
4
|
+
canSave?: boolean | undefined;
|
|
5
|
+
resource_type?: string | undefined;
|
|
6
|
+
path?: string | undefined;
|
|
7
|
+
newResource?: boolean | undefined;
|
|
8
|
+
hidePath?: boolean | undefined;
|
|
9
|
+
editResource?: (() => Promise<void>) | undefined;
|
|
10
|
+
createResource?: (() => Promise<void>) | undefined;
|
|
5
11
|
};
|
|
6
12
|
events: {
|
|
7
13
|
refresh: CustomEvent<any>;
|
|
@@ -14,6 +20,7 @@ export type ResourceEditorProps = typeof __propDef.props;
|
|
|
14
20
|
export type ResourceEditorEvents = typeof __propDef.events;
|
|
15
21
|
export type ResourceEditorSlots = typeof __propDef.slots;
|
|
16
22
|
export default class ResourceEditor extends SvelteComponent<ResourceEditorProps, ResourceEditorEvents, ResourceEditorSlots> {
|
|
17
|
-
get
|
|
23
|
+
get editResource(): () => Promise<void>;
|
|
24
|
+
get createResource(): () => Promise<void>;
|
|
18
25
|
}
|
|
19
26
|
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<script>import ResourceEditor from './ResourceEditor.svelte';
|
|
2
|
+
import { Button, Drawer } from './common';
|
|
3
|
+
import DrawerContent from './common/drawer/DrawerContent.svelte';
|
|
4
|
+
import { Save } from 'lucide-svelte';
|
|
5
|
+
let drawer;
|
|
6
|
+
let canSave = true;
|
|
7
|
+
let resource_type = undefined;
|
|
8
|
+
let resourceEditor = undefined;
|
|
9
|
+
let path = undefined;
|
|
10
|
+
export async function initEdit(p) {
|
|
11
|
+
resource_type = undefined;
|
|
12
|
+
path = p;
|
|
13
|
+
drawer.openDrawer?.();
|
|
14
|
+
}
|
|
15
|
+
export async function initNew(resourceType) {
|
|
16
|
+
path = undefined;
|
|
17
|
+
resource_type = resourceType;
|
|
18
|
+
drawer.openDrawer?.();
|
|
19
|
+
}
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<Drawer bind:this={drawer} size="800px">
|
|
23
|
+
<DrawerContent title={path ? 'Edit ' + path : 'Add a resource'} on:close={drawer.closeDrawer}>
|
|
24
|
+
<ResourceEditor
|
|
25
|
+
newResource
|
|
26
|
+
{path}
|
|
27
|
+
{resource_type}
|
|
28
|
+
on:refresh
|
|
29
|
+
bind:this={resourceEditor}
|
|
30
|
+
bind:canSave
|
|
31
|
+
/>
|
|
32
|
+
<svelte:fragment slot="actions">
|
|
33
|
+
<Button
|
|
34
|
+
startIcon={{ icon: Save }}
|
|
35
|
+
on:click={() => {
|
|
36
|
+
resourceEditor?.editResource()
|
|
37
|
+
drawer.closeDrawer()
|
|
38
|
+
}}
|
|
39
|
+
disabled={!canSave}
|
|
40
|
+
>
|
|
41
|
+
Save
|
|
42
|
+
</Button>
|
|
43
|
+
</svelte:fragment>
|
|
44
|
+
</DrawerContent>
|
|
45
|
+
</Drawer>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
initEdit?: ((p: string) => Promise<void>) | undefined;
|
|
5
|
+
initNew?: ((resourceType: string) => Promise<void>) | undefined;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
refresh: CustomEvent<any>;
|
|
9
|
+
} & {
|
|
10
|
+
[evt: string]: CustomEvent<any>;
|
|
11
|
+
};
|
|
12
|
+
slots: {};
|
|
13
|
+
};
|
|
14
|
+
export type ResourceEditorDrawerProps = typeof __propDef.props;
|
|
15
|
+
export type ResourceEditorDrawerEvents = typeof __propDef.events;
|
|
16
|
+
export type ResourceEditorDrawerSlots = typeof __propDef.slots;
|
|
17
|
+
export default class ResourceEditorDrawer extends SvelteComponent<ResourceEditorDrawerProps, ResourceEditorDrawerEvents, ResourceEditorDrawerSlots> {
|
|
18
|
+
get initEdit(): (p: string) => Promise<void>;
|
|
19
|
+
get initNew(): (resourceType: string) => Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -5,10 +5,10 @@ import Select from './apps/svelte-select/lib/index';
|
|
|
5
5
|
import { SELECT_INPUT_DEFAULT_STYLE } from '../defaults';
|
|
6
6
|
import AppConnect from './AppConnectDrawer.svelte';
|
|
7
7
|
import { Button } from './common';
|
|
8
|
-
import ResourceEditor from './ResourceEditor.svelte';
|
|
9
8
|
import DBSchemaExplorer from './DBSchemaExplorer.svelte';
|
|
10
9
|
import DarkModeObserver from './DarkModeObserver.svelte';
|
|
11
10
|
import { Pen, Plus, RotateCw } from 'lucide-svelte';
|
|
11
|
+
import ResourceEditorDrawer from './ResourceEditorDrawer.svelte';
|
|
12
12
|
const dispatch = createEventDispatcher();
|
|
13
13
|
export let initialValue = undefined;
|
|
14
14
|
export let value = initialValue;
|
|
@@ -24,6 +24,9 @@ let valueSelect = initialValue || value
|
|
|
24
24
|
type: valueType
|
|
25
25
|
}
|
|
26
26
|
: undefined;
|
|
27
|
+
$: if (value === undefined && initialValue) {
|
|
28
|
+
value = initialValue;
|
|
29
|
+
}
|
|
27
30
|
let collection = valueSelect ? [valueSelect] : [];
|
|
28
31
|
async function loadResources(resourceType) {
|
|
29
32
|
const nc = (await ResourceService.listResource({
|
|
@@ -70,7 +73,7 @@ let darkMode = false;
|
|
|
70
73
|
bind:this={appConnect}
|
|
71
74
|
/>
|
|
72
75
|
|
|
73
|
-
<
|
|
76
|
+
<ResourceEditorDrawer
|
|
74
77
|
bind:this={resourceEditor}
|
|
75
78
|
on:refresh={async (e) => {
|
|
76
79
|
await loadResources(resourceType)
|
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
import { ResourceService } from '../gen';
|
|
3
3
|
import { workspaceStore } from '../stores';
|
|
4
4
|
import IconedResourceType from './IconedResourceType.svelte';
|
|
5
|
-
import { Button, ClearableInput } from './common';
|
|
6
|
-
|
|
5
|
+
import { Button, ClearableInput, Popup } from './common';
|
|
6
|
+
import { offset, flip, shift } from 'svelte-floating-ui/dom';
|
|
7
|
+
import Label from './Label.svelte';
|
|
8
|
+
import Tooltip from './Tooltip.svelte';
|
|
9
|
+
import Badge from './common/badge/Badge.svelte';
|
|
7
10
|
export let value;
|
|
8
11
|
export let notPickable = false;
|
|
9
12
|
export let nonePickable = false;
|
|
13
|
+
let resources = [];
|
|
10
14
|
async function loadResources() {
|
|
11
15
|
resources = await ResourceService.listResourceTypeNames({ workspace: $workspaceStore });
|
|
12
16
|
}
|
|
@@ -22,38 +26,86 @@ let search = '';
|
|
|
22
26
|
$: filteredResources = resources.filter((r) => r.toLowerCase().includes(search.toLowerCase()));
|
|
23
27
|
</script>
|
|
24
28
|
|
|
25
|
-
<
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
29
|
+
<Label label="Resource type" class="w-full col-span-2">
|
|
30
|
+
<svelte:fragment slot="header">
|
|
31
|
+
<Tooltip light small>Select a resource type to narrow down the object type.</Tooltip>
|
|
32
|
+
</svelte:fragment>
|
|
33
|
+
|
|
34
|
+
<svelte:fragment slot="action">
|
|
35
|
+
<div class="flex flex-row gap-1">
|
|
36
|
+
<Button
|
|
37
|
+
size="xs"
|
|
38
|
+
color="light"
|
|
39
|
+
on:click={() => onClick(undefined)}
|
|
40
|
+
disabled={notPickable || value === undefined}
|
|
41
|
+
>
|
|
42
|
+
Clear
|
|
43
|
+
</Button>
|
|
44
|
+
<Popup
|
|
45
|
+
floatingConfig={{
|
|
46
|
+
strategy: 'fixed',
|
|
47
|
+
placement: 'left-end',
|
|
48
|
+
middleware: [offset(8), flip(), shift()]
|
|
49
|
+
}}
|
|
50
|
+
containerClasses="border rounded-lg shadow-lg bg-surface p-4 w-[500px] h-[500px] "
|
|
51
|
+
let:close
|
|
52
|
+
>
|
|
53
|
+
<svelte:fragment slot="button">
|
|
54
|
+
<Button nonCaptureEvent size="xs" color="dark">Select resource type</Button>
|
|
55
|
+
</svelte:fragment>
|
|
56
|
+
|
|
57
|
+
<div class="flex flex-col gap-2 h-full">
|
|
58
|
+
<ClearableInput bind:value={search} placeholder="Search resource..." />
|
|
59
|
+
|
|
60
|
+
<div class="overflow-y-scroll h-full">
|
|
61
|
+
<div
|
|
62
|
+
class="grid sm:grid-cols-2 md:grid-cols-3 gap-x-2 gap-y-1 items-center overflow-x-hidden"
|
|
63
|
+
>
|
|
64
|
+
{#if nonePickable && search === ''}
|
|
65
|
+
{@const isPicked = value === undefined}
|
|
66
|
+
<Button
|
|
67
|
+
size="sm"
|
|
68
|
+
variant="border"
|
|
69
|
+
color={isPicked ? 'blue' : 'dark'}
|
|
70
|
+
btnClasses={isPicked ? '!border-2' : 'm-[1px]'}
|
|
71
|
+
disabled={notPickable}
|
|
72
|
+
on:click={() => {
|
|
73
|
+
onClick(undefined)
|
|
74
|
+
close(null)
|
|
75
|
+
}}
|
|
76
|
+
>
|
|
77
|
+
None
|
|
78
|
+
</Button>
|
|
79
|
+
{/if}
|
|
80
|
+
{#each filteredResources as r}
|
|
81
|
+
{@const isPicked = value === r}
|
|
82
|
+
<Button
|
|
83
|
+
size="sm"
|
|
84
|
+
variant="border"
|
|
85
|
+
color={isPicked ? 'blue' : 'light'}
|
|
86
|
+
btnClasses={isPicked ? '!border-2' : 'm-[1px]'}
|
|
87
|
+
disabled={notPickable}
|
|
88
|
+
on:click={() => {
|
|
89
|
+
onClick(r)
|
|
90
|
+
close(null)
|
|
91
|
+
}}
|
|
92
|
+
>
|
|
93
|
+
<IconedResourceType name={r} after={true} width="20px" height="20px" />
|
|
94
|
+
</Button>
|
|
95
|
+
{/each}
|
|
55
96
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
</div>
|
|
97
|
+
{#if filteredResources.length === 0 && search !== ''}
|
|
98
|
+
<div class="text-tertiary text-sm">No resources found</div>
|
|
99
|
+
{/if}
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
</Popup>
|
|
104
|
+
</div>
|
|
105
|
+
</svelte:fragment>
|
|
106
|
+
<div class="flex flex-row items-center w-full justify-between">
|
|
107
|
+
<Badge color={!value ? 'gray' : 'blue'}>
|
|
108
|
+
{value ?? 'None'}
|
|
109
|
+
</Badge>
|
|
110
|
+
</div>
|
|
111
|
+
</Label>
|