windmill-components 1.309.7 → 1.352.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/assets/app.css +22 -13
- package/package/ata/index.js +1 -0
- package/package/autosize.js +2 -2
- package/package/common.d.ts +14 -2
- package/package/common.js +6 -1
- package/package/components/AllFlowLogs.svelte +30 -0
- package/package/components/AllFlowLogs.svelte.d.ts +18 -0
- package/package/components/ApiConnectForm.svelte +10 -4
- package/package/components/AppConnectDrawer.svelte +74 -0
- package/package/components/AppConnectDrawer.svelte.d.ts +20 -0
- package/package/components/AppConnectInner.svelte +507 -0
- package/package/components/AppConnectInner.svelte.d.ts +28 -0
- package/package/components/ArgEnum.svelte +4 -1
- package/package/components/ArgEnum.svelte.d.ts +3 -1
- package/package/components/ArgInfo.svelte +19 -3
- package/package/components/ArgInput.svelte +222 -122
- package/package/components/ArgInput.svelte.d.ts +11 -7
- package/package/components/ArrayTypeNarrowing.svelte +29 -27
- package/package/components/CenteredPage.svelte +2 -2
- package/package/components/ConcurrentJobsChart.svelte +212 -0
- package/package/components/ConcurrentJobsChart.svelte.d.ts +23 -0
- package/package/components/CustomOauth.svelte +2 -2
- package/package/components/DateInput.svelte +47 -0
- package/package/components/DateInput.svelte.d.ts +24 -0
- package/package/components/DateTimeInput.svelte +25 -3
- package/package/components/DefaultScripts.svelte +5 -8
- package/package/components/DefaultTags.svelte +3 -2
- package/package/components/DefaultTags.svelte.d.ts +3 -1
- package/package/components/DefaultTagsInner.svelte +2 -11
- package/package/components/DefaultTagsInner.svelte.d.ts +3 -1
- package/package/components/Dev.svelte +72 -10
- package/package/components/DiffDrawer.svelte +1 -2
- package/package/components/DiffEditor.svelte +3 -0
- package/package/components/DisplayResult.svelte +467 -344
- package/package/components/DisplayResult.svelte.d.ts +1 -0
- package/package/components/DropdownV2.svelte.d.ts +2 -2
- package/package/components/DurationMs.svelte +11 -3
- package/package/components/DurationMs.svelte.d.ts +2 -0
- package/package/components/EditableSchemaForm.svelte +447 -100
- package/package/components/EditableSchemaForm.svelte.d.ts +16 -6
- package/package/components/Editor.svelte +112 -93
- package/package/components/Editor.svelte.d.ts +4 -2
- package/package/components/EditorBar.svelte +101 -10
- package/package/components/EditorBar.svelte.d.ts +0 -1
- package/package/components/ErrorOrRecoveryHandler.svelte +0 -1
- package/package/components/FlowBuilder.svelte +14 -6
- package/package/components/FlowGraphViewer.svelte +2 -1
- package/package/components/FlowGraphViewerStep.svelte +56 -10
- package/package/components/FlowGraphViewerStep.svelte.d.ts +2 -7
- package/package/components/FlowJobResult.svelte +14 -3
- package/package/components/FlowJobResult.svelte.d.ts +3 -0
- package/package/components/FlowMetadata.svelte +41 -36
- package/package/components/FlowMetadata.svelte.d.ts +3 -1
- package/package/components/FlowPreviewContent.svelte +18 -9
- package/package/components/FlowStatusViewer.svelte +4 -0
- package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
- package/package/components/FlowStatusViewerInner.svelte +96 -19
- 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/HighlightCode.svelte +3 -0
- package/package/components/InputTransformForm.svelte +19 -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 +196 -16
- package/package/components/InstanceSettings.svelte.d.ts +4 -0
- package/package/components/JobLogs.svelte +12 -0
- package/package/components/JobLogs.svelte.d.ts +16 -0
- package/package/components/JobStatus.svelte +3 -3
- package/package/components/Label.svelte +1 -1
- package/package/components/Label.svelte.d.ts +1 -0
- package/package/components/LightweightArgInput.svelte +342 -264
- package/package/components/LightweightArgInput.svelte.d.ts +6 -2
- package/package/components/LightweightResourcePicker.svelte +74 -26
- package/package/components/LightweightSchemaForm.svelte +49 -39
- package/package/components/LogViewer.svelte +52 -15
- package/package/components/LogViewer.svelte.d.ts +1 -0
- package/package/components/Login.svelte +288 -0
- package/package/components/Login.svelte.d.ts +19 -0
- package/package/components/ModulePreviewForm.svelte +4 -0
- package/package/components/NoMainFuncBadge.svelte +8 -0
- package/package/components/NoMainFuncBadge.svelte.d.ts +14 -0
- package/package/components/NumberTypeNarrowing.svelte +71 -44
- package/package/components/OauthExtraParams.svelte +1 -1
- package/package/components/OauthScopes.svelte +1 -1
- package/package/components/ObjectResourceInput.svelte +2 -0
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/ObjectStoreConfigSettings.svelte +12 -1
- package/package/components/ObjectStoreConfigSettings.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/Password.svelte +1 -0
- package/package/components/Password.svelte.d.ts +2 -0
- package/package/components/PasswordArgInput.svelte +49 -0
- package/package/components/PasswordArgInput.svelte.d.ts +17 -0
- package/package/components/Path.svelte +2 -2
- package/package/components/PersistentScriptDrawer.svelte +6 -3
- package/package/components/QueueMetricsDrawer.svelte +225 -0
- package/package/components/QueueMetricsDrawer.svelte.d.ts +18 -0
- package/package/components/Range.svelte +88 -286
- package/package/components/Range.svelte.d.ts +9 -23
- package/package/components/ResourceEditor.svelte +138 -140
- 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 +8 -9
- package/package/components/ResourceTypePicker.svelte +88 -36
- package/package/components/ResultJobLoader.svelte +2 -2
- package/package/components/ResultJobLoader.svelte.d.ts +9 -9
- 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 +21 -9
- package/package/components/S3FilePicker.svelte.d.ts +2 -0
- package/package/components/SavedInputs.svelte +49 -13
- package/package/components/ScheduleEditorInner.svelte +294 -264
- package/package/components/SchemaForm.svelte +193 -99
- package/package/components/SchemaForm.svelte.d.ts +17 -2
- package/package/components/ScriptBuilder.svelte +23 -14
- package/package/components/ScriptEditor.svelte +1 -2
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ScriptSchedules.svelte +11 -8
- package/package/components/ScriptSchema.svelte +3 -21
- package/package/components/ScriptVersionHistory.svelte +1 -1
- package/package/components/SimpleEditor.svelte +4 -1
- package/package/components/StringTypeNarrowing.svelte +229 -167
- package/package/components/StringTypeNarrowing.svelte.d.ts +6 -1
- package/package/components/TemplateEditor.svelte +1 -0
- package/package/components/TestJobLoader.svelte +14 -5
- package/package/components/TestJobLoader.svelte.d.ts +1 -1
- package/package/components/Toggle.svelte +6 -3
- package/package/components/Toggle.svelte.d.ts +1 -0
- package/package/components/Tooltip.svelte +8 -2
- package/package/components/Tooltip.svelte.d.ts +1 -0
- package/package/components/UserSettings.svelte +24 -1
- package/package/components/WorkspaceGroup.svelte +84 -21
- package/package/components/WorkspaceGroup.svelte.d.ts +1 -0
- package/package/components/app_connect.d.ts +7 -0
- package/package/components/app_connect.js +78 -0
- package/package/components/apps/components/buttons/AppButton.svelte +2 -1
- package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
- package/package/components/apps/components/display/AppAlert.svelte +1 -1
- package/package/components/apps/components/display/AppCustomComponent.svelte +1 -1
- package/package/components/apps/components/display/AppDisplayComponent.svelte +2 -2
- package/package/components/apps/components/display/AppDownload.svelte +1 -1
- 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/AppIcon.svelte +1 -1
- package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +23 -10
- package/package/components/apps/components/display/AppJobIdFlowStatus.svelte.d.ts +1 -3
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte +22 -10
- 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/AppMap.svelte +3 -2
- package/package/components/apps/components/display/AppMenu.svelte +1 -1
- package/package/components/apps/components/display/AppPdf.svelte +3 -11
- package/package/components/apps/components/display/AppText.svelte +7 -2
- package/package/components/apps/components/display/charts/AppAgCharts.svelte +31 -18
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +32 -30
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +3 -6
- package/package/components/apps/components/display/dbtable/queries/delete.js +1 -1
- package/package/components/apps/components/display/dbtable/queries/insert.js +1 -12
- package/package/components/apps/components/display/dbtable/queries/select.js +1 -1
- package/package/components/apps/components/display/dbtable/queries/update.js +2 -2
- package/package/components/apps/components/display/dbtable/utils.d.ts +0 -1
- package/package/components/apps/components/display/dbtable/utils.js +0 -83
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +75 -44
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +5 -1
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +172 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +27 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte +38 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte.d.ts +28 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +189 -56
- package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -1
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +13 -2
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppCell.svelte +1 -3
- package/package/components/apps/components/display/table/AppTable.svelte +320 -281
- package/package/components/apps/components/display/table/AppTableFooter.svelte +42 -23
- package/package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +2 -2
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte +119 -0
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte.d.ts +21 -0
- package/package/components/apps/components/display/table/theme/windmill-theme.css +656 -0
- package/package/components/apps/components/display/table/utils.js +22 -0
- package/package/components/apps/components/helpers/DebouncedInput.svelte +3 -2
- package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -1
- package/package/components/apps/components/helpers/NonRunnableComponent.svelte +35 -0
- package/package/components/apps/components/helpers/RefreshButton.svelte +30 -12
- package/package/components/apps/components/helpers/RefreshButton.svelte.d.ts +1 -3
- package/package/components/apps/components/helpers/RefreshIndicator.svelte +19 -0
- package/package/components/apps/components/helpers/RefreshIndicator.svelte.d.ts +16 -0
- package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +102 -41
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +9 -5
- package/package/components/apps/components/helpers/RunnableWrapper.svelte +9 -1
- package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +6 -0
- package/package/components/apps/components/helpers/eval.js +1 -36
- package/package/components/apps/components/inputs/AppDateInput.svelte +5 -1
- package/package/components/apps/components/inputs/AppFileInput.svelte +13 -2
- package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppMultiSelect.svelte +56 -50
- package/package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +178 -0
- package/package/components/apps/components/inputs/AppMultiSelectV2.svelte.d.ts +24 -0
- package/package/components/apps/components/inputs/AppNumberInput.svelte +1 -1
- package/package/components/apps/components/inputs/AppQuillEditor.svelte +26 -0
- package/package/components/apps/components/inputs/AppRangeInput.svelte +38 -37
- 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/inputs/AppSelect.svelte +21 -10
- package/package/components/apps/components/inputs/AppSliderInputs.svelte +26 -31
- package/package/components/apps/components/inputs/AppTextInput.svelte +1 -1
- package/package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +1 -1
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte +10 -3
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte.d.ts +1 -0
- package/package/components/apps/components/layout/AppContainer.svelte +1 -1
- package/package/components/apps/components/layout/AppDecisionTree.svelte +1 -1
- package/package/components/apps/components/layout/AppDrawer.svelte +16 -3
- package/package/components/apps/components/layout/AppDrawer.svelte.d.ts +2 -0
- package/package/components/apps/components/layout/AppModal.svelte +85 -79
- package/package/components/apps/components/layout/AppModal.svelte.d.ts +2 -0
- package/package/components/apps/components/layout/AppStepper.svelte +7 -2
- package/package/components/apps/components/layout/AppStepper.svelte.d.ts +2 -0
- package/package/components/apps/components/layout/AppTabs.svelte +4 -2
- package/package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -0
- package/package/components/apps/editor/AppEditor.svelte +3 -2
- package/package/components/apps/editor/AppEditorHeader.svelte +68 -38
- package/package/components/apps/editor/AppInputs.svelte +1 -1
- package/package/components/apps/editor/AppPreview.svelte +18 -7
- package/package/components/apps/editor/ComponentHeader.svelte +37 -1
- package/package/components/apps/editor/ComponentHeader.svelte.d.ts +2 -0
- package/package/components/apps/editor/GridEditor.svelte +15 -6
- package/package/components/apps/editor/GridEditorMenu.svelte +120 -49
- package/package/components/apps/editor/GridViewer.svelte +14 -5
- package/package/components/apps/editor/GridViewer.svelte.d.ts +5 -1
- package/package/components/apps/editor/RecomputeAllComponents.svelte +17 -3
- package/package/components/apps/editor/RunnableJobPanel.svelte +9 -5
- package/package/components/apps/editor/SettingsPanel.svelte +19 -5
- package/package/components/apps/editor/SubGridEditor.svelte +44 -27
- package/package/components/apps/editor/appUtils.d.ts +6 -1
- package/package/components/apps/editor/appUtils.js +85 -7
- package/package/components/apps/editor/component/Component.svelte +86 -18
- package/package/components/apps/editor/component/Component.svelte.d.ts +3 -0
- package/package/components/apps/editor/component/components.d.ts +285 -23
- package/package/components/apps/editor/component/components.js +178 -13
- package/package/components/apps/editor/component/default-codes.d.ts +1 -1
- package/package/components/apps/editor/component/default-codes.js +241 -9
- package/package/components/apps/editor/component/sets.d.ts +3 -0
- package/package/components/apps/editor/component/sets.js +12 -2
- package/package/components/apps/editor/componentsPanel/ComponentList.svelte +15 -2
- package/package/components/apps/editor/componentsPanel/componentControlUtils.js +4 -2
- package/package/components/apps/editor/componentsPanel/cssUtils.js +1 -1
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +5 -0
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +9 -5
- package/package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +46 -6
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelWithTable.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/utils.js +3 -1
- package/package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +5 -34
- package/package/components/apps/editor/settingsPanel/ComponentControl.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +8 -5
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +41 -29
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +61 -0
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte.d.ts +16 -0
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +12 -10
- package/package/components/apps/editor/settingsPanel/DeleteComponent.svelte +29 -32
- package/package/components/apps/editor/settingsPanel/DeleteComponent.svelte.d.ts +0 -5
- 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 +14 -36
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +4 -24
- package/package/components/apps/editor/settingsPanel/GridTabDisabled.svelte +2 -1
- package/package/components/apps/editor/settingsPanel/GridTabDisabled.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +24 -3
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +32 -2
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/StylePanel.svelte +4 -3
- 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/ColorInput.svelte +3 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +8 -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/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +4 -4
- package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +6 -3
- package/package/components/apps/inputType.d.ts +4 -0
- package/package/components/apps/rx.d.ts +1 -1
- package/package/components/apps/rx.js +7 -0
- package/package/components/apps/svelte-grid/Grid.svelte +13 -4
- package/package/components/apps/svelte-grid/Grid.svelte.d.ts +2 -1
- package/package/components/apps/svelte-grid/types.d.ts +1 -0
- package/package/components/apps/svelte-grid/utils/helper.js +1 -0
- package/package/components/apps/svelte-grid/utils/overlap.d.ts +3 -0
- package/package/components/apps/svelte-grid/utils/overlap.js +21 -0
- package/package/components/apps/svelte-select/lib/Select.svelte.d.ts +2 -2
- package/package/components/apps/svelte-select/lib/tailwind.css +1 -1
- package/package/components/apps/types.d.ts +1 -0
- package/package/components/apps/utils.js +13 -3
- package/package/components/auditLogs/AuditLogsTable.svelte +5 -2
- package/package/components/build_workers.js +1 -0
- package/package/components/common/alert/Alert.svelte +17 -17
- package/package/components/common/badge/Badge.svelte +6 -3
- package/package/components/common/badge/model.d.ts +1 -1
- package/package/components/common/button/Button.svelte +22 -14
- package/package/components/common/button/ButtonDropdown.svelte +1 -0
- package/package/components/common/calendarPicker/CalendarPicker.svelte +2 -0
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -0
- package/package/components/common/drawer/ConditionalPortal.svelte +9 -0
- package/package/components/common/drawer/ConditionalPortal.svelte.d.ts +18 -0
- package/package/components/common/drawer/Disposable.svelte +67 -0
- package/package/components/common/drawer/Disposable.svelte.d.ts +37 -0
- package/package/components/common/drawer/Drawer.svelte +40 -56
- package/package/components/common/drawer/Drawer.svelte.d.ts +2 -1
- package/package/components/common/fileDownload/FileDownload.svelte +4 -2
- package/package/components/common/fileInput/FileInput.svelte +3 -3
- package/package/components/common/fileInput/FileInput.svelte.d.ts +1 -0
- package/package/components/common/fileUpload/FileUpload.svelte +5 -4
- package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
- 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/table/RowIcon.svelte +4 -4
- package/package/components/common/table/ScriptRow.svelte +12 -1
- package/package/components/common/table/ScriptRow.svelte.d.ts +1 -0
- 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/toggleButton-v2/ToggleButtonMore.svelte +45 -0
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +24 -0
- package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte +79 -0
- package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte.d.ts +18 -0
- package/package/components/copilot/CronGen.svelte +2 -2
- package/package/components/copilot/FlowCopilotStatus.svelte +1 -1
- package/package/components/copilot/RegexGen.svelte +17 -39
- package/package/components/copilot/ScriptGen.svelte +14 -5
- package/package/components/copilot/StepInputGen.svelte +2 -1
- package/package/components/copilot/StepInputsGen.svelte +2 -1
- package/package/components/copilot/completion.js +60 -9
- package/package/components/copilot/lib.js +5 -3
- package/package/components/copilot/prompts/edit.yaml +24 -0
- package/package/components/copilot/prompts/editPrompt.d.ts +3 -0
- package/package/components/copilot/prompts/editPrompt.js +3 -0
- package/package/components/copilot/prompts/fix.yaml +25 -0
- package/package/components/copilot/prompts/fixPrompt.d.ts +3 -0
- package/package/components/copilot/prompts/fixPrompt.js +3 -0
- package/package/components/copilot/prompts/gen.yaml +20 -0
- package/package/components/copilot/prompts/genPrompt.d.ts +3 -0
- package/package/components/copilot/prompts/genPrompt.js +3 -0
- package/package/components/copilot/utils.d.ts +2 -1
- package/package/components/copilot/utils.js +38 -0
- package/package/components/details/createAppFromScript.d.ts +26 -0
- package/package/components/details/createAppFromScript.js +50 -24
- package/package/components/flows/CreateActionsApp.svelte +1 -0
- package/package/components/flows/CreateActionsFlow.svelte +1 -0
- package/package/components/flows/content/FlowEditorPanel.svelte +16 -2
- package/package/components/flows/content/FlowInput.svelte +63 -53
- package/package/components/flows/content/FlowInputs.svelte +2 -2
- package/package/components/flows/content/FlowModuleComponent.svelte +41 -9
- 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 +6 -6
- package/package/components/flows/flowExplorer.js +4 -1
- package/package/components/flows/flowStateUtils.js +4 -1
- package/package/components/flows/map/FlowConstantsItem.svelte +1 -1
- package/package/components/flows/map/FlowErrorHandlerItem.svelte +1 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +19 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +6 -1
- package/package/components/flows/map/FlowSettingsItem.svelte +1 -1
- package/package/components/flows/map/MapItem.svelte +2 -0
- package/package/components/flows/map/MapItem.svelte.d.ts +1 -0
- 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 +6 -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/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +41 -16
- package/package/components/graph/util.d.ts +1 -37
- package/package/components/graph/util.js +0 -34
- package/package/components/home/ItemsList.svelte +44 -9
- package/package/components/home/TreeView.svelte +2 -0
- package/package/components/icons/AzureIcon.svelte +25 -1
- package/package/components/icons/PHPIcon.svelte +117 -0
- package/package/components/icons/PHPIcon.svelte.d.ts +17 -0
- package/package/components/instanceSettings.d.ts +1 -1
- package/package/components/instanceSettings.js +20 -3
- package/package/components/jobs/JobPreview.svelte +6 -1
- package/package/components/multiselect/MultiSelect.svelte +783 -0
- package/package/components/multiselect/MultiSelect.svelte.d.ts +98 -0
- package/package/components/multiselect/MultiSelectWrapper.svelte +89 -0
- package/package/components/multiselect/MultiSelectWrapper.svelte.d.ts +20 -0
- package/package/components/multiselect/types.d.ts +56 -0
- package/package/components/multiselect/types.js +1 -0
- package/package/components/multiselect/utils.d.ts +7 -0
- package/package/components/multiselect/utils.js +54 -0
- package/package/components/propertyPicker/ObjectViewer.svelte +19 -2
- package/package/components/runs/JobLoader.svelte +135 -17
- package/package/components/runs/JobLoader.svelte.d.ts +7 -2
- package/package/components/runs/JobPreview.svelte +44 -4
- package/package/components/runs/JobPreview.svelte.d.ts +2 -0
- package/package/components/runs/RunRow.svelte +99 -33
- package/package/components/runs/RunRow.svelte.d.ts +5 -1
- package/package/components/runs/RunsFilter.svelte +125 -9
- package/package/components/runs/RunsFilter.svelte.d.ts +4 -2
- package/package/components/runs/RunsTable.svelte +71 -10
- package/package/components/runs/RunsTable.svelte.d.ts +8 -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/scriptEditor/LogPanel.svelte +46 -33
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +1 -0
- package/package/components/scripts/CreateActionsScript.svelte +1 -1
- package/package/components/settings/WorkspaceUserSettings.svelte +246 -226
- package/package/components/sidebar/MenuButton.svelte +1 -1
- package/package/components/sidebar/MenuLink.svelte +1 -1
- package/package/components/sidebar/changelogs.js +40 -0
- package/package/components/table/AutoDataTable.svelte +124 -163
- package/package/components/table/Cell.svelte +4 -1
- package/package/components/table/Cell.svelte.d.ts +1 -0
- package/package/components/table/DataTable.svelte +13 -5
- package/package/components/table/DataTable.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/components/vscode.js +1 -1
- package/package/components/wizards/AgGridWizard.svelte +27 -2
- package/package/components/wizards/AgGridWizard.svelte.d.ts +1 -0
- package/package/consts.js +7 -1
- package/package/defaults.d.ts +2 -2
- package/package/defaults.js +2 -2
- package/package/deno_fetch.d.ts.txt +36 -0
- package/package/editorUtils.js +2 -0
- package/package/gen/core/OpenAPI.js +5 -6
- package/package/gen/core/request.js +4 -1
- package/package/gen/index.d.ts +0 -1
- package/package/gen/index.js +0 -1
- package/package/gen/schemas.gen.d.ts +173 -428
- package/package/gen/schemas.gen.js +173 -433
- package/package/gen/services.gen.d.ts +3182 -1840
- package/package/gen/services.gen.js +3652 -2368
- package/package/gen/types.gen.d.ts +5445 -1529
- package/package/infer.d.ts +1 -1
- package/package/infer.js +6 -2
- package/package/inferArgSig.d.ts +10 -0
- package/package/inferArgSig.js +64 -4
- package/package/init_scripts/python_init_code.d.ts +1 -1
- package/package/init_scripts/python_init_code.js +1 -1
- package/package/process.d.ts.txt +1770 -0
- package/package/script_helpers.d.ts +3 -2
- package/package/script_helpers.js +28 -3
- package/package/scripts.d.ts +3 -1
- package/package/scripts.js +10 -3
- package/package/utils.d.ts +5 -1
- package/package/utils.js +53 -5
- package/package/windmill_fetch.d.ts.txt +16966 -0
- package/package/workspace_settings.d.ts +15 -0
- package/package/workspace_settings.js +81 -0
- package/package/zIndexes.d.ts +12 -0
- package/package/zIndexes.js +12 -0
- package/package.json +19 -10
- package/package/components/AppConnect.svelte +0 -566
- package/package/components/AppConnect.svelte.d.ts +0 -23
- package/package/components/ContextMenu.svelte +0 -89
- package/package/components/ContextMenu.svelte.d.ts +0 -28
- package/package/components/ParqetTableRenderer.svelte +0 -121
- package/package/components/ParqetTableRenderer.svelte.d.ts +0 -18
- package/package/components/PropertyRow.svelte +0 -80
- package/package/components/PropertyRow.svelte.d.ts +0 -23
- package/package/components/SchemaEditor.svelte +0 -344
- package/package/components/SchemaEditor.svelte.d.ts +0 -23
- package/package/components/SchemaModal.svelte +0 -350
- package/package/components/SchemaModal.svelte.d.ts +0 -31
- package/package/components/apps/components/display/index.d.ts +0 -17
- package/package/components/apps/components/display/index.js +0 -17
- package/package/components/apps/components/helpers/index.d.ts +0 -10
- package/package/components/apps/components/helpers/index.js +0 -10
- package/package/components/apps/components/index.d.ts +0 -5
- package/package/components/apps/components/index.js +0 -5
- package/package/components/apps/editor/settingsPanel/Recompute.svelte +0 -55
- package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +0 -20
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
<script>import { Highlight } from 'svelte-highlight';
|
|
2
2
|
import { json } from 'svelte-highlight/languages';
|
|
3
|
-
import
|
|
4
|
-
import { copyToClipboard, roughSizeOfObject, truncate } from '../utils';
|
|
3
|
+
import { copyToClipboard, roughSizeOfObject } from '../utils';
|
|
5
4
|
import { Button, Drawer, DrawerContent } from './common';
|
|
6
|
-
import { ClipboardCopy, Download, Expand, PanelRightOpen, Table2, Braces, Highlighter } from 'lucide-svelte';
|
|
5
|
+
import { ClipboardCopy, Download, Expand, PanelRightOpen, Table2, Braces, Highlighter, InfoIcon, ArrowDownFromLine } from 'lucide-svelte';
|
|
7
6
|
import Portal from 'svelte-portal';
|
|
8
7
|
import ObjectViewer from './propertyPicker/ObjectViewer.svelte';
|
|
9
8
|
import S3FilePicker from './S3FilePicker.svelte';
|
|
@@ -12,10 +11,14 @@ import AutoDataTable from './table/AutoDataTable.svelte';
|
|
|
12
11
|
import Markdown from 'svelte-exmarkdown';
|
|
13
12
|
import Toggle from './Toggle.svelte';
|
|
14
13
|
import FileDownload from './common/fileDownload/FileDownload.svelte';
|
|
15
|
-
import ParqetTableRenderer from './
|
|
14
|
+
import ParqetTableRenderer from './ParqetCsvTableRenderer.svelte';
|
|
16
15
|
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
17
16
|
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
18
17
|
import MapResult from './MapResult.svelte';
|
|
18
|
+
import Popover from './Popover.svelte';
|
|
19
|
+
import DownloadCsv from './table/DownloadCsv.svelte';
|
|
20
|
+
import { convertJsonToCsv } from './table/tableUtils';
|
|
21
|
+
import Tooltip from './Tooltip.svelte';
|
|
19
22
|
export let result;
|
|
20
23
|
export let requireHtmlApproval = false;
|
|
21
24
|
export let filename = undefined;
|
|
@@ -24,39 +27,49 @@ export let jobId = undefined;
|
|
|
24
27
|
export let workspaceId = undefined;
|
|
25
28
|
export let hideAsJson = false;
|
|
26
29
|
export let noControls = false;
|
|
30
|
+
export let drawerOpen = false;
|
|
31
|
+
const IMG_MAX_SIZE = 10000000;
|
|
32
|
+
const TABLE_MAX_SIZE = 5000000;
|
|
33
|
+
const DISPLAY_MAX_SIZE = 100000;
|
|
27
34
|
let resultKind;
|
|
28
35
|
$: resultKind = inferResultKind(result);
|
|
29
36
|
export let forceJson = false;
|
|
30
37
|
let enableHtml = false;
|
|
31
38
|
let s3FileDisplayRawMode = false;
|
|
32
|
-
function
|
|
33
|
-
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
if (!Object.values(obj)
|
|
37
|
-
.map(Array.isArray)
|
|
38
|
-
.reduce((a, b) => a && b)) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
let innerSize = obj[0].length;
|
|
42
|
-
return Object.values(obj)
|
|
43
|
-
.map((x) => x.length == innerSize)
|
|
44
|
-
.reduce((a, b) => a && b);
|
|
39
|
+
function isTableRow(result) {
|
|
40
|
+
return Array.isArray(result) && result.every((x) => Array.isArray(x));
|
|
45
41
|
}
|
|
46
|
-
function
|
|
47
|
-
return
|
|
42
|
+
function isTableCol(result, keys) {
|
|
43
|
+
return (!Array.isArray(result) &&
|
|
44
|
+
keys.map((k) => Array.isArray(result[k])).reduce((a, b) => a && b, true));
|
|
48
45
|
}
|
|
49
|
-
function
|
|
50
|
-
|
|
46
|
+
function isTableRowObject(json) {
|
|
47
|
+
// check array of objects (with possible a first row of headers)
|
|
48
|
+
return (Array.isArray(json) &&
|
|
49
|
+
json.length > 0 &&
|
|
50
|
+
(json.every((item) => item && typeof item === 'object' && Object.keys(item).length > 0 && !Array.isArray(item)) ||
|
|
51
|
+
(Array.isArray(json[0]) &&
|
|
52
|
+
json[0].every((item) => typeof item === 'string') &&
|
|
53
|
+
json
|
|
54
|
+
.slice(1)
|
|
55
|
+
.every((item) => item &&
|
|
56
|
+
typeof item === 'object' &&
|
|
57
|
+
Object.keys(item).length > 0 &&
|
|
58
|
+
!Array.isArray(item)))));
|
|
51
59
|
}
|
|
52
60
|
let largeObject = undefined;
|
|
61
|
+
function checkIfS3(result, keys) {
|
|
62
|
+
return keys.includes('s3') && typeof result.s3 === 'string';
|
|
63
|
+
}
|
|
53
64
|
let is_render_all = false;
|
|
65
|
+
let download_as_csv = false;
|
|
54
66
|
function inferResultKind(result) {
|
|
55
67
|
if (result == 'WINDMILL_TOO_BIG') {
|
|
56
68
|
largeObject = true;
|
|
57
69
|
return 'json';
|
|
58
70
|
}
|
|
59
71
|
if (result !== undefined) {
|
|
72
|
+
download_as_csv = false;
|
|
60
73
|
if (typeof result === 'string') {
|
|
61
74
|
length = 0;
|
|
62
75
|
largeObject = false;
|
|
@@ -68,32 +81,53 @@ function inferResultKind(result) {
|
|
|
68
81
|
is_render_all =
|
|
69
82
|
keys.length == 1 && keys.includes('render_all') && Array.isArray(result['render_all']);
|
|
70
83
|
// Check if the result is an image
|
|
71
|
-
if (['png', 'svg', 'jpeg', 'html'].includes(keys[0]) && keys.length == 1) {
|
|
84
|
+
if (['png', 'svg', 'jpeg', 'html', 'gif'].includes(keys[0]) && keys.length == 1) {
|
|
72
85
|
// Check if the image is too large (10mb)
|
|
73
|
-
largeObject = roughSizeOfObject(result) >
|
|
86
|
+
largeObject = roughSizeOfObject(result) > IMG_MAX_SIZE;
|
|
74
87
|
return keys[0];
|
|
75
88
|
}
|
|
76
|
-
let
|
|
89
|
+
let size = roughSizeOfObject(result);
|
|
77
90
|
// Otherwise, check if the result is too large (10kb) for json
|
|
78
|
-
|
|
79
|
-
|
|
91
|
+
if (size > TABLE_MAX_SIZE) {
|
|
92
|
+
largeObject = true;
|
|
93
|
+
if (Array.isArray(result) && isTableRowObject(result)) {
|
|
94
|
+
download_as_csv = true;
|
|
95
|
+
}
|
|
80
96
|
return 'json';
|
|
81
97
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
98
|
+
else {
|
|
99
|
+
largeObject = size > DISPLAY_MAX_SIZE;
|
|
100
|
+
}
|
|
101
|
+
if (Array.isArray(result)) {
|
|
102
|
+
if (result.length === 0) {
|
|
103
|
+
return 'json';
|
|
85
104
|
}
|
|
86
|
-
else if (
|
|
87
|
-
|
|
105
|
+
else if (result.every((elt) => typeof elt === 'object' && checkIfS3(elt, Object.keys(elt)))) {
|
|
106
|
+
largeObject = result.length > 100;
|
|
107
|
+
if (largeObject) {
|
|
108
|
+
return 'json';
|
|
109
|
+
}
|
|
110
|
+
return 's3object-list';
|
|
88
111
|
}
|
|
89
|
-
else if (
|
|
112
|
+
else if (isTableRow(result)) {
|
|
90
113
|
return 'table-row';
|
|
91
114
|
}
|
|
92
|
-
else if ((
|
|
93
|
-
|
|
94
|
-
|
|
115
|
+
else if (isTableRowObject(result)) {
|
|
116
|
+
return 'table-row-object';
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
return 'json';
|
|
95
120
|
}
|
|
96
|
-
|
|
121
|
+
}
|
|
122
|
+
else if (keys.length === 1 &&
|
|
123
|
+
['table-row', 'table-row-object', 'table-col'].includes(keys[0])) {
|
|
124
|
+
return keys[0];
|
|
125
|
+
}
|
|
126
|
+
if (largeObject) {
|
|
127
|
+
return 'json';
|
|
128
|
+
}
|
|
129
|
+
if (keys.length != 0) {
|
|
130
|
+
if (keys.length == 1 && keys[0] == 'html') {
|
|
97
131
|
return 'html';
|
|
98
132
|
}
|
|
99
133
|
else if (keys.length == 1 && keys[0] == 'map') {
|
|
@@ -129,12 +163,15 @@ function inferResultKind(result) {
|
|
|
129
163
|
keys.includes('approvalPage')) {
|
|
130
164
|
return 'approval';
|
|
131
165
|
}
|
|
132
|
-
else if (
|
|
166
|
+
else if (checkIfS3(result, keys)) {
|
|
133
167
|
return 's3object';
|
|
134
168
|
}
|
|
135
169
|
else if (keys.length === 1 && (keys.includes('md') || keys.includes('markdown'))) {
|
|
136
170
|
return 'markdown';
|
|
137
171
|
}
|
|
172
|
+
else if (isTableCol(result, keys)) {
|
|
173
|
+
return 'table-col';
|
|
174
|
+
}
|
|
138
175
|
}
|
|
139
176
|
}
|
|
140
177
|
catch (err) { }
|
|
@@ -158,14 +195,29 @@ function contentOrRootString(obj) {
|
|
|
158
195
|
return obj.content;
|
|
159
196
|
}
|
|
160
197
|
}
|
|
161
|
-
function
|
|
162
|
-
|
|
198
|
+
function handleArrayOfObjectsHeaders(json) {
|
|
199
|
+
// handle possible a first row of headers
|
|
200
|
+
if (Array.isArray(json) &&
|
|
163
201
|
json.length > 0 &&
|
|
164
|
-
|
|
202
|
+
Array.isArray(json[0]) &&
|
|
203
|
+
json[0].every((item) => typeof item === 'string') &&
|
|
204
|
+
json
|
|
205
|
+
.slice(1)
|
|
206
|
+
.every((item) => item && typeof item === 'object' && Object.keys(item).length > 0 && !Array.isArray(item))) {
|
|
207
|
+
const headers = json[0];
|
|
208
|
+
const rows = json.slice(1);
|
|
209
|
+
const result = rows.map((row) => {
|
|
210
|
+
const obj = {};
|
|
211
|
+
for (const header of headers) {
|
|
212
|
+
obj[header] = row[header];
|
|
213
|
+
}
|
|
214
|
+
return obj;
|
|
215
|
+
});
|
|
216
|
+
return result;
|
|
217
|
+
}
|
|
218
|
+
return json;
|
|
165
219
|
}
|
|
166
|
-
|
|
167
|
-
let richRender = !forceJson;
|
|
168
|
-
function transform(input) {
|
|
220
|
+
function objectOfArraysToObjects(input) {
|
|
169
221
|
const maxLength = Math.max(...Object.values(input).map((arr) => arr.length));
|
|
170
222
|
const result = [];
|
|
171
223
|
for (let i = 0; i < maxLength; i++) {
|
|
@@ -182,14 +234,47 @@ function transform(input) {
|
|
|
182
234
|
}
|
|
183
235
|
return result;
|
|
184
236
|
}
|
|
237
|
+
function arrayOfRowsToObjects(input) {
|
|
238
|
+
if (Array.isArray(input) && input.length > 0) {
|
|
239
|
+
// handle possible first row of headers
|
|
240
|
+
if (input.length > 1 &&
|
|
241
|
+
Array.isArray(input[0]) &&
|
|
242
|
+
input[0].every((item) => typeof item === 'string')) {
|
|
243
|
+
const headers = input[0];
|
|
244
|
+
const rows = input.slice(1);
|
|
245
|
+
return rows.map((row) => {
|
|
246
|
+
const obj = {};
|
|
247
|
+
for (let i = 0; i < headers.length; i++) {
|
|
248
|
+
obj[headers[i]] = row[i];
|
|
249
|
+
}
|
|
250
|
+
return obj;
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
return input;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return [];
|
|
258
|
+
}
|
|
185
259
|
let globalForceJson = false;
|
|
260
|
+
let seeS3PreviewFileFromList = '';
|
|
186
261
|
</script>
|
|
187
262
|
|
|
188
263
|
{#if is_render_all}
|
|
189
264
|
<div class="flex flex-col w-full gap-6">
|
|
190
265
|
{#if !noControls}
|
|
191
|
-
<div class="
|
|
192
|
-
|
|
266
|
+
<div class="text-tertiary text-sm">
|
|
267
|
+
<ToggleButtonGroup
|
|
268
|
+
class="h-6"
|
|
269
|
+
selected={globalForceJson ? 'json' : 'pretty'}
|
|
270
|
+
on:selected={(ev) => {
|
|
271
|
+
globalForceJson = ev.detail === 'json'
|
|
272
|
+
}}
|
|
273
|
+
>
|
|
274
|
+
<ToggleButton class="px-1.5" value="pretty" label="Pretty" icon={Highlighter} />
|
|
275
|
+
|
|
276
|
+
<ToggleButton class="px-1.5" value="json" label="JSON" icon={Braces} />
|
|
277
|
+
</ToggleButtonGroup>
|
|
193
278
|
</div>
|
|
194
279
|
{/if}
|
|
195
280
|
{#each result['render_all'] as res}
|
|
@@ -213,306 +298,346 @@ let globalForceJson = false;
|
|
|
213
298
|
: 'min-h-[200px]'}"
|
|
214
299
|
>
|
|
215
300
|
{#if result != undefined && length != undefined && largeObject != undefined}
|
|
216
|
-
<div class="flex justify-between items-center w-full
|
|
217
|
-
<div class="text-tertiary text-sm
|
|
218
|
-
{#if
|
|
301
|
+
<div class="flex justify-between items-center w-full">
|
|
302
|
+
<div class="text-tertiary text-sm">
|
|
303
|
+
{#if !hideAsJson && !['json', 's3object'].includes(resultKind ?? '') && typeof result === 'object'}
|
|
219
304
|
<ToggleButtonGroup
|
|
220
305
|
class="h-6"
|
|
221
|
-
selected={
|
|
222
|
-
? richRender
|
|
223
|
-
? 'table'
|
|
224
|
-
: 'json'
|
|
225
|
-
: forceJson
|
|
226
|
-
? 'json'
|
|
227
|
-
: 'pretty'}
|
|
306
|
+
selected={forceJson ? 'json' : resultKind?.startsWith('table-') ? 'table' : 'pretty'}
|
|
228
307
|
on:selected={(ev) => {
|
|
229
|
-
if (isTableDisplay) {
|
|
230
|
-
richRender = ev.detail === 'table'
|
|
231
|
-
}
|
|
232
308
|
forceJson = ev.detail === 'json'
|
|
233
309
|
}}
|
|
234
310
|
>
|
|
235
|
-
{#if
|
|
236
|
-
<ToggleButton class="px-1.5" value="pretty" label="Pretty" icon={Highlighter} />
|
|
237
|
-
{/if}
|
|
238
|
-
{#if isTableDisplay}
|
|
311
|
+
{#if ['table-col', 'table-row', 'table-row-object'].includes(resultKind ?? '')}
|
|
239
312
|
<ToggleButton class="px-1.5" value="table" label="Table" icon={Table2} />
|
|
313
|
+
{:else}
|
|
314
|
+
<ToggleButton class="px-1.5" value="pretty" label="Pretty" icon={Highlighter} />
|
|
240
315
|
{/if}
|
|
241
316
|
<ToggleButton class="px-1.5" value="json" label="JSON" icon={Braces} />
|
|
242
317
|
</ToggleButtonGroup>
|
|
243
318
|
{/if}
|
|
244
319
|
</div>
|
|
245
|
-
<div class="text-
|
|
320
|
+
<div class="text-secondary text-xs flex gap-2.5 z-10 items-center">
|
|
246
321
|
<slot name="copilot-fix" />
|
|
247
322
|
{#if !disableExpand && !noControls}
|
|
248
|
-
<
|
|
249
|
-
|
|
323
|
+
<Popover
|
|
324
|
+
documentationLink="https://www.windmill.dev/docs/core_concepts/rich_display_rendering"
|
|
250
325
|
>
|
|
251
|
-
|
|
326
|
+
<svelte:fragment slot="text">
|
|
327
|
+
The result renderer in Windmill supports rich display rendering, allowing you to
|
|
328
|
+
customize the display format of your results.
|
|
329
|
+
</svelte:fragment>
|
|
330
|
+
<div class="-mt-1">
|
|
331
|
+
<InfoIcon size={14} />
|
|
332
|
+
</div>
|
|
333
|
+
</Popover>
|
|
334
|
+
<button on:click={() => copyToClipboard(toJsonStr(result))} class="-mt-1">
|
|
335
|
+
<ClipboardCopy size={14} />
|
|
336
|
+
</button>
|
|
337
|
+
<button on:click={jsonViewer.openDrawer} class="-mt-1">
|
|
338
|
+
<Expand size={14} />
|
|
339
|
+
</button>
|
|
252
340
|
{/if}
|
|
253
341
|
</div>
|
|
254
|
-
</div
|
|
255
|
-
{
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
{
|
|
259
|
-
|
|
260
|
-
<
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
342
|
+
</div><div class="grow"
|
|
343
|
+
>{#if !forceJson && resultKind == 'table-col'}
|
|
344
|
+
{@const data = 'table-col' in result ? result['table-col'] : result}
|
|
345
|
+
<AutoDataTable objects={objectOfArraysToObjects(data)} />
|
|
346
|
+
{:else if !forceJson && resultKind == 'table-row'}
|
|
347
|
+
{@const data = 'table-row' in result ? result['table-row'] : result}
|
|
348
|
+
<AutoDataTable objects={arrayOfRowsToObjects(data)} />
|
|
349
|
+
{:else if !forceJson && resultKind == 'table-row-object'}
|
|
350
|
+
{@const data = 'table-row-object' in result ? result['table-row-object'] : result}
|
|
351
|
+
<AutoDataTable objects={handleArrayOfObjectsHeaders(data)} />
|
|
352
|
+
{:else if !forceJson && resultKind == 'html'}
|
|
353
|
+
<div class="h-full">
|
|
354
|
+
{#if !requireHtmlApproval || enableHtml}
|
|
355
|
+
{@html result.html}
|
|
356
|
+
{:else}
|
|
357
|
+
<div class="font-main text-sm">
|
|
358
|
+
<div class="flex flex-col">
|
|
359
|
+
<div class="bg-red-400 py-1 rounded-t text-white font-bold text-center">
|
|
360
|
+
Warning
|
|
361
|
+
</div>
|
|
362
|
+
<p
|
|
363
|
+
class="text-tertiary mb-2 text-left border-2 !border-t-0 rounded-b border-red-400 overflow-auto p-1"
|
|
364
|
+
>Rendering HTML can expose you to <a
|
|
365
|
+
href="https://owasp.org/www-community/attacks/xss/"
|
|
366
|
+
target="_blank"
|
|
367
|
+
rel="noreferrer"
|
|
368
|
+
class="hover:underline">XSS attacks</a
|
|
369
|
+
>. Only enable it if you trust the author of the script.
|
|
370
|
+
</p>
|
|
371
|
+
</div>
|
|
372
|
+
<div class="center-center">
|
|
373
|
+
<Button size="sm" color="dark" on:click={() => (enableHtml = true)}>
|
|
374
|
+
Enable HTML rendering
|
|
375
|
+
</Button>
|
|
281
376
|
</div>
|
|
282
|
-
<p
|
|
283
|
-
class="text-tertiary mb-2 text-left border-2 !border-t-0 rounded-b border-red-400 overflow-auto p-1"
|
|
284
|
-
>Rendering HTML can expose you to <a
|
|
285
|
-
href="https://owasp.org/www-community/attacks/xss/"
|
|
286
|
-
target="_blank"
|
|
287
|
-
rel="noreferrer"
|
|
288
|
-
class="hover:underline">XSS attacks</a
|
|
289
|
-
>. Only enable it if you trust the author of the script.
|
|
290
|
-
</p>
|
|
291
|
-
</div>
|
|
292
|
-
<div class="center-center">
|
|
293
|
-
<Button size="sm" color="dark" on:click={() => (enableHtml = true)}>
|
|
294
|
-
Enable HTML rendering
|
|
295
|
-
</Button>
|
|
296
377
|
</div>
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
markers={result.map.markers}
|
|
307
|
-
/>
|
|
308
|
-
</div>
|
|
309
|
-
{:else if !forceJson && resultKind == 'png'}
|
|
310
|
-
<div class="h-full">
|
|
311
|
-
<img
|
|
312
|
-
alt="png rendered"
|
|
313
|
-
class="w-auto h-full"
|
|
314
|
-
src="data:image/png;base64,{contentOrRootString(result.png)}"
|
|
315
|
-
/>
|
|
316
|
-
</div>
|
|
317
|
-
{:else if !forceJson && resultKind == 'jpeg'}
|
|
318
|
-
<div class="h-full">
|
|
319
|
-
<img
|
|
320
|
-
alt="jpeg rendered"
|
|
321
|
-
class="w-auto h-full"
|
|
322
|
-
src="data:image/jpeg;base64,{contentOrRootString(result.jpeg)}"
|
|
323
|
-
/>
|
|
324
|
-
</div>
|
|
325
|
-
{:else if !forceJson && resultKind == 'svg'}
|
|
326
|
-
<div
|
|
327
|
-
><a download="windmill.svg" href="data:text/plain;base64,{btoa(result.svg)}">Download</a>
|
|
328
|
-
</div>
|
|
329
|
-
<div class="h-full overflow-auto">{@html result.svg} </div>
|
|
330
|
-
{:else if !forceJson && resultKind == 'gif'}
|
|
331
|
-
<div class="h-full">
|
|
332
|
-
<img
|
|
333
|
-
alt="gif rendered"
|
|
334
|
-
class="w-auto h-full"
|
|
335
|
-
src="data:image/gif;base64,{contentOrRootString(result.gif)}"
|
|
336
|
-
/>
|
|
337
|
-
</div>
|
|
338
|
-
{:else if !forceJson && resultKind == 'plain'}<div class="h-full text-2xs"
|
|
339
|
-
><pre>{typeof result == 'string' ? result : result?.['result']}</pre>{#if !noControls}
|
|
340
|
-
<div class="flex">
|
|
341
|
-
<Button
|
|
342
|
-
on:click={() =>
|
|
343
|
-
copyToClipboard(typeof result == 'string' ? result : result?.['result'])}
|
|
344
|
-
color="light"
|
|
345
|
-
size="xs"
|
|
346
|
-
>
|
|
347
|
-
<div class="flex gap-2 items-center">Copy <ClipboardCopy size={12} /> </div>
|
|
348
|
-
</Button>
|
|
349
|
-
</div>
|
|
350
|
-
{/if}
|
|
351
|
-
</div>
|
|
352
|
-
{:else if !forceJson && resultKind == 'file'}
|
|
353
|
-
<div>
|
|
354
|
-
<a
|
|
355
|
-
download={result.filename ?? result.file?.filename ?? 'windmill.file'}
|
|
356
|
-
href="data:application/octet-stream;base64,{contentOrRootString(result.file)}"
|
|
357
|
-
>Download</a
|
|
358
|
-
>
|
|
359
|
-
</div>
|
|
360
|
-
{:else if !forceJson && resultKind == 'error' && result?.error}
|
|
361
|
-
<div class="flex flex-col items-start">
|
|
362
|
-
<span class="text-red-500 font-semibold text-sm whitespace-pre-wrap"
|
|
363
|
-
>{#if result.error.name || result.error.message}{result.error.name}: {result.error
|
|
364
|
-
.message}{:else}{JSON.stringify(result.error, null, 4)}{/if}</span
|
|
365
|
-
>
|
|
366
|
-
<pre class="text-sm whitespace-pre-wrap text-primary">{result.error.stack ?? ''}</pre>
|
|
367
|
-
<slot />
|
|
368
|
-
</div>
|
|
369
|
-
{:else if !forceJson && resultKind == 'approval'}<div class="flex flex-col gap-3 mt-2 mx-4">
|
|
370
|
-
<Button
|
|
371
|
-
color="green"
|
|
372
|
-
variant="border"
|
|
373
|
-
on:click={() =>
|
|
374
|
-
fetch(result['resume'], {
|
|
375
|
-
method: 'POST',
|
|
376
|
-
body: JSON.stringify({}),
|
|
377
|
-
headers: { 'Content-Type': 'application/json' }
|
|
378
|
-
})}
|
|
379
|
-
>
|
|
380
|
-
Resume</Button
|
|
381
|
-
>
|
|
382
|
-
<Button color="red" variant="border" on:click={() => fetch(result['cancel'])}
|
|
383
|
-
>Cancel</Button
|
|
384
|
-
>
|
|
385
|
-
<div class="center-center"
|
|
386
|
-
><a rel="noreferrer" target="_blank" href={result['approvalPage']}>Approval Page</a
|
|
387
|
-
></div
|
|
388
|
-
>
|
|
389
|
-
</div>
|
|
390
|
-
{:else if !forceJson && resultKind == 's3object'}
|
|
391
|
-
<div
|
|
392
|
-
class="h-full w-full {typeof result?.s3 == 'string' && result?.s3?.endsWith('.parquet')
|
|
393
|
-
? 'h-min-[600px]'
|
|
394
|
-
: ''}"
|
|
395
|
-
>
|
|
396
|
-
<div class="flex flex-col gap-2">
|
|
397
|
-
<Toggle
|
|
398
|
-
class="flex"
|
|
399
|
-
bind:checked={s3FileDisplayRawMode}
|
|
400
|
-
size="xs"
|
|
401
|
-
options={{ right: 'Raw S3 object input' }}
|
|
378
|
+
{/if}
|
|
379
|
+
</div>
|
|
380
|
+
{:else if !forceJson && resultKind == 'map'}
|
|
381
|
+
<div class="h-full">
|
|
382
|
+
<MapResult
|
|
383
|
+
lat={result.map.lat}
|
|
384
|
+
lon={result.map.lon}
|
|
385
|
+
zoom={result.map.zoom}
|
|
386
|
+
markers={result.map.markers}
|
|
402
387
|
/>
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
388
|
+
</div>
|
|
389
|
+
{:else if !forceJson && resultKind == 'png'}
|
|
390
|
+
<div class="h-full">
|
|
391
|
+
<img
|
|
392
|
+
alt="png rendered"
|
|
393
|
+
class="w-auto h-full"
|
|
394
|
+
src="data:image/png;base64,{contentOrRootString(result.png)}"
|
|
395
|
+
/>
|
|
396
|
+
</div>
|
|
397
|
+
{:else if !forceJson && resultKind == 'jpeg'}
|
|
398
|
+
<div class="h-full">
|
|
399
|
+
<img
|
|
400
|
+
alt="jpeg rendered"
|
|
401
|
+
class="w-auto h-full"
|
|
402
|
+
src="data:image/jpeg;base64,{contentOrRootString(result.jpeg)}"
|
|
403
|
+
/>
|
|
404
|
+
</div>
|
|
405
|
+
{:else if !forceJson && resultKind == 'svg'}
|
|
406
|
+
<div
|
|
407
|
+
><a download="windmill.svg" href="data:text/plain;base64,{btoa(result.svg)}">Download</a
|
|
408
|
+
>
|
|
409
|
+
</div>
|
|
410
|
+
<div class="h-full overflow-auto">{@html result.svg} </div>
|
|
411
|
+
{:else if !forceJson && resultKind == 'gif'}
|
|
412
|
+
<div class="h-full">
|
|
413
|
+
<img
|
|
414
|
+
alt="gif rendered"
|
|
415
|
+
class="w-auto h-full"
|
|
416
|
+
src="data:image/gif;base64,{contentOrRootString(result.gif)}"
|
|
417
|
+
/>
|
|
418
|
+
</div>
|
|
419
|
+
{:else if !forceJson && resultKind == 'plain'}<div class="h-full text-2xs"
|
|
420
|
+
><pre>{typeof result == 'string' ? result : result?.['result']}</pre>{#if !noControls}
|
|
421
|
+
<div class="flex">
|
|
422
|
+
<Button
|
|
423
|
+
on:click={() =>
|
|
424
|
+
copyToClipboard(typeof result == 'string' ? result : result?.['result'])}
|
|
425
|
+
color="light"
|
|
426
|
+
size="xs"
|
|
423
427
|
>
|
|
424
|
-
|
|
428
|
+
<div class="flex gap-2 items-center">Copy <ClipboardCopy size={12} /> </div>
|
|
429
|
+
</Button>
|
|
430
|
+
</div>
|
|
425
431
|
{/if}
|
|
426
432
|
</div>
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
433
|
+
{:else if !forceJson && resultKind == 'file'}
|
|
434
|
+
<div>
|
|
435
|
+
<a
|
|
436
|
+
download={result.filename ?? result.file?.filename ?? 'windmill.file'}
|
|
437
|
+
href="data:application/octet-stream;base64,{contentOrRootString(result.file)}"
|
|
438
|
+
>Download</a
|
|
439
|
+
>
|
|
440
|
+
</div>
|
|
441
|
+
{:else if !forceJson && resultKind == 'error' && result?.error}
|
|
442
|
+
<div class="flex flex-col items-start">
|
|
443
|
+
<span class="text-red-500 font-semibold text-sm whitespace-pre-wrap"
|
|
444
|
+
>{#if result.error.name || result.error.message}{result.error.name}: {result.error
|
|
445
|
+
.message}{:else}{JSON.stringify(result.error, null, 4)}{/if}</span
|
|
446
|
+
>
|
|
447
|
+
<pre class="text-sm whitespace-pre-wrap text-primary">{result.error.stack ?? ''}</pre>
|
|
448
|
+
<slot />
|
|
449
|
+
</div>
|
|
450
|
+
{:else if !forceJson && resultKind == 'approval'}<div class="flex flex-col gap-3 mt-2 mx-4">
|
|
451
|
+
<Button
|
|
452
|
+
color="green"
|
|
453
|
+
variant="border"
|
|
454
|
+
on:click={() =>
|
|
455
|
+
fetch(result['resume'], {
|
|
456
|
+
method: 'POST',
|
|
457
|
+
body: JSON.stringify({}),
|
|
458
|
+
headers: { 'Content-Type': 'application/json' }
|
|
459
|
+
})}
|
|
460
|
+
>
|
|
461
|
+
Resume</Button
|
|
462
|
+
>
|
|
463
|
+
<Button color="red" variant="border" on:click={() => fetch(result['cancel'])}
|
|
464
|
+
>Cancel</Button
|
|
465
|
+
>
|
|
466
|
+
<div class="center-center"
|
|
467
|
+
><a rel="noreferrer" target="_blank" href={result['approvalPage']}>Approval Page</a
|
|
468
|
+
></div
|
|
469
|
+
>
|
|
470
|
+
</div>
|
|
471
|
+
{:else if !forceJson && resultKind == 's3object'}
|
|
472
|
+
<div
|
|
473
|
+
class="h-full w-full {typeof result?.s3 == 'string' && result?.s3?.endsWith('.parquet')
|
|
474
|
+
? 'h-min-[600px]'
|
|
475
|
+
: ''}"
|
|
476
|
+
>
|
|
477
|
+
<div class="flex flex-col gap-2">
|
|
478
|
+
<Toggle
|
|
479
|
+
class="flex"
|
|
480
|
+
bind:checked={s3FileDisplayRawMode}
|
|
481
|
+
size="xs"
|
|
482
|
+
options={{ right: 'Raw S3 object' }}
|
|
483
|
+
/>
|
|
484
|
+
|
|
441
485
|
{#if s3FileDisplayRawMode}
|
|
442
486
|
<Highlight
|
|
443
487
|
class=""
|
|
444
488
|
language={json}
|
|
445
|
-
code={toJsonStr(
|
|
489
|
+
code={toJsonStr(result).replace(/\\n/g, '\n')}
|
|
446
490
|
/>
|
|
447
491
|
<button
|
|
448
|
-
class="text-secondary text-2xs whitespace-nowrap"
|
|
492
|
+
class="text-secondary underline text-2xs whitespace-nowrap"
|
|
449
493
|
on:click={() => {
|
|
450
|
-
s3FileViewer?.open?.(
|
|
494
|
+
s3FileViewer?.open?.(result)
|
|
451
495
|
}}
|
|
452
496
|
><span class="flex items-center gap-1"
|
|
453
|
-
><PanelRightOpen size={12} />
|
|
497
|
+
><PanelRightOpen size={12} />object store explorer<Tooltip
|
|
498
|
+
>Require admin privilege or "S3 resource details and content can be accessed
|
|
499
|
+
by all users of this workspace" of S3 Storage to be set in the workspace
|
|
500
|
+
settings</Tooltip
|
|
501
|
+
></span
|
|
502
|
+
>
|
|
503
|
+
</button>
|
|
504
|
+
{:else if !result?.disable_download}
|
|
505
|
+
<FileDownload s3object={result} />
|
|
506
|
+
<button
|
|
507
|
+
class="text-secondary underline text-2xs whitespace-nowrap"
|
|
508
|
+
on:click={() => {
|
|
509
|
+
s3FileViewer?.open?.(result)
|
|
510
|
+
}}
|
|
511
|
+
><span class="flex items-center gap-1"
|
|
512
|
+
><PanelRightOpen size={12} />object store explorer<Tooltip
|
|
513
|
+
>Require admin privilege or "S3 resource details and content can be accessed
|
|
514
|
+
by all users of this workspace" of S3 Storage to be set in the workspace
|
|
515
|
+
settings</Tooltip
|
|
516
|
+
></span
|
|
454
517
|
>
|
|
455
518
|
</button>
|
|
456
|
-
{:else}
|
|
457
|
-
<FileDownload {s3object} />
|
|
458
519
|
{/if}
|
|
459
|
-
|
|
520
|
+
</div>
|
|
521
|
+
{#if typeof result?.s3 == 'string' && (result?.s3?.endsWith('.parquet') || result?.s3?.endsWith('.csv'))}
|
|
522
|
+
{#key result.s3}
|
|
523
|
+
<ParqetTableRenderer
|
|
524
|
+
disable_download={result?.disable_download}
|
|
525
|
+
{workspaceId}
|
|
526
|
+
s3resource={result?.s3}
|
|
527
|
+
storage={result?.storage}
|
|
528
|
+
/>
|
|
529
|
+
{/key}
|
|
530
|
+
{/if}
|
|
460
531
|
</div>
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
532
|
+
{:else if !forceJson && resultKind == 's3object-list'}
|
|
533
|
+
<div class="h-full w-full">
|
|
534
|
+
<div class="flex flex-col gap-2">
|
|
535
|
+
<Toggle
|
|
536
|
+
class="flex mt-1"
|
|
537
|
+
bind:checked={s3FileDisplayRawMode}
|
|
538
|
+
size="xs"
|
|
539
|
+
options={{ right: 'Raw S3 object' }}
|
|
540
|
+
/>
|
|
541
|
+
{#each result as s3object}
|
|
542
|
+
{#if s3FileDisplayRawMode}
|
|
543
|
+
<Highlight
|
|
544
|
+
class=""
|
|
545
|
+
language={json}
|
|
546
|
+
code={toJsonStr(s3object).replace(/\\n/g, '\n')}
|
|
547
|
+
/>
|
|
548
|
+
<button
|
|
549
|
+
class="text-secondary text-2xs whitespace-nowrap"
|
|
550
|
+
on:click={() => {
|
|
551
|
+
s3FileViewer?.open?.(s3object)
|
|
552
|
+
}}
|
|
553
|
+
><span class="flex items-center gap-1"
|
|
554
|
+
><PanelRightOpen size={12} />open preview</span
|
|
555
|
+
>
|
|
556
|
+
</button>
|
|
557
|
+
{:else if !s3object?.disable_download}
|
|
558
|
+
<FileDownload {s3object} />
|
|
559
|
+
{:else}
|
|
560
|
+
<div class="flex text-secondary pt-2">{s3object?.s3} (download disabled)</div>
|
|
561
|
+
{/if}
|
|
562
|
+
{#if s3object?.s3?.endsWith('.parquet') || s3object?.s3?.endsWith('.csv')}
|
|
563
|
+
{#if seeS3PreviewFileFromList == s3object?.s3}
|
|
564
|
+
<ParqetTableRenderer
|
|
565
|
+
disable_download={s3object?.disable_download}
|
|
566
|
+
{workspaceId}
|
|
567
|
+
s3resource={s3object?.s3}
|
|
568
|
+
storage={s3object?.storage}
|
|
569
|
+
/>{:else}
|
|
570
|
+
<button
|
|
571
|
+
class="text-secondary whitespace-nowrap flex gap-2 items-center"
|
|
572
|
+
on:click={() => {
|
|
573
|
+
seeS3PreviewFileFromList = s3object?.s3
|
|
574
|
+
}}
|
|
575
|
+
>open table preview <ArrowDownFromLine />
|
|
576
|
+
</button>
|
|
577
|
+
{/if}
|
|
578
|
+
{/if}
|
|
579
|
+
{/each}
|
|
580
|
+
</div>
|
|
476
581
|
</div>
|
|
477
|
-
{:else}
|
|
478
|
-
<div class="
|
|
479
|
-
|
|
480
|
-
download="{filename ?? 'result'}.json"
|
|
481
|
-
href={workspaceId && jobId
|
|
482
|
-
? `/api/w/${workspaceId}/jobs_u/completed/get_result/${jobId}`
|
|
483
|
-
: `data:text/json;charset=utf-8,${encodeURIComponent(toJsonStr(result))}`}
|
|
484
|
-
>
|
|
485
|
-
Download {filename ? '' : 'as JSON'}
|
|
486
|
-
</a>
|
|
582
|
+
{:else if !forceJson && resultKind == 'markdown'}
|
|
583
|
+
<div class="prose-xs dark:prose-invert !list-disc !list-outside">
|
|
584
|
+
<Markdown md={result?.md ?? result?.markdown} />
|
|
487
585
|
</div>
|
|
586
|
+
{:else if largeObject}
|
|
587
|
+
{#if result && typeof result == 'object' && 'file' in result}
|
|
588
|
+
<div
|
|
589
|
+
><a
|
|
590
|
+
download={result.filename ?? result.file?.filename ?? 'windmill.file'}
|
|
591
|
+
href="data:application/octet-stream;base64,{contentOrRootString(result.file)}"
|
|
592
|
+
>Download</a
|
|
593
|
+
>
|
|
594
|
+
</div>
|
|
595
|
+
{:else}
|
|
596
|
+
<div class="text-sm text-tertiary"
|
|
597
|
+
><a
|
|
598
|
+
download="{filename ?? 'result'}.json"
|
|
599
|
+
href={workspaceId && jobId
|
|
600
|
+
? `/api/w/${workspaceId}/jobs_u/completed/get_result/${jobId}`
|
|
601
|
+
: `data:text/json;charset=utf-8,${encodeURIComponent(toJsonStr(result))}`}
|
|
602
|
+
>
|
|
603
|
+
Download {filename ? '' : 'as JSON'}
|
|
604
|
+
</a>
|
|
605
|
+
{#if download_as_csv}
|
|
606
|
+
<DownloadCsv
|
|
607
|
+
getContent={() => convertJsonToCsv(result)}
|
|
608
|
+
customText="Download as CSV"
|
|
609
|
+
/>
|
|
610
|
+
{/if}
|
|
611
|
+
</div>
|
|
488
612
|
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
613
|
+
<div class="mt-1 mb-2">
|
|
614
|
+
<Alert
|
|
615
|
+
size="xs"
|
|
616
|
+
title="Large result detected"
|
|
617
|
+
type="warning"
|
|
618
|
+
tooltip="We recommend using persistent object storage for large result. See docs for setting up an object storage service integration using s3 or any other s3 compatible services."
|
|
619
|
+
documentationLink="https://www.windmill.dev/docs/core_concepts/persistent_storage#object-storage-for-large-data-s3-r2-minio-azure-blob"
|
|
620
|
+
/>
|
|
621
|
+
</div>
|
|
622
|
+
{#if result && result != 'WINDMILL_TOO_BIG'}
|
|
623
|
+
<ObjectViewer json={result} />
|
|
624
|
+
{/if}
|
|
500
625
|
{/if}
|
|
626
|
+
{:else if typeof result == 'string' && result.length > 0}
|
|
627
|
+
<pre class="text-sm">{result}</pre>{#if !noControls}<div class="flex">
|
|
628
|
+
<Button on:click={() => copyToClipboard(result)} color="light" size="xs">
|
|
629
|
+
<div class="flex gap-2 items-center">Copy <ClipboardCopy size={12} /> </div>
|
|
630
|
+
</Button>
|
|
631
|
+
</div>
|
|
632
|
+
{/if}
|
|
633
|
+
{:else}
|
|
634
|
+
<Highlight
|
|
635
|
+
class={forceJson ? '' : 'h-full w-full'}
|
|
636
|
+
language={json}
|
|
637
|
+
code={toJsonStr(result).replace(/\\n/g, '\n')}
|
|
638
|
+
/>
|
|
501
639
|
{/if}
|
|
502
|
-
|
|
503
|
-
<pre class="text-sm">{result}</pre>{#if !noControls}<div class="flex">
|
|
504
|
-
<Button on:click={() => copyToClipboard(result)} color="light" size="xs">
|
|
505
|
-
<div class="flex gap-2 items-center">Copy <ClipboardCopy size={12} /> </div>
|
|
506
|
-
</Button>
|
|
507
|
-
</div>
|
|
508
|
-
{/if}
|
|
509
|
-
{:else}
|
|
510
|
-
<Highlight
|
|
511
|
-
class={forceJson ? '' : 'h-full w-full'}
|
|
512
|
-
language={json}
|
|
513
|
-
code={toJsonStr(result).replace(/\\n/g, '\n')}
|
|
514
|
-
/>
|
|
515
|
-
{/if}
|
|
640
|
+
</div>
|
|
516
641
|
{:else if typeof result == 'string' && resultKind == 'plain'}
|
|
517
642
|
<div class="h-full text-xs">
|
|
518
643
|
<pre>{result}</pre>
|
|
@@ -530,46 +655,44 @@ let globalForceJson = false;
|
|
|
530
655
|
</div>
|
|
531
656
|
|
|
532
657
|
{#if !disableExpand && !noControls}
|
|
533
|
-
<
|
|
534
|
-
<
|
|
535
|
-
<
|
|
536
|
-
<
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
</Drawer>
|
|
572
|
-
</Portal>
|
|
658
|
+
<Drawer bind:this={jsonViewer} bind:open={drawerOpen} size="900px">
|
|
659
|
+
<DrawerContent title="Expanded Result" on:close={jsonViewer.closeDrawer}>
|
|
660
|
+
<svelte:fragment slot="actions">
|
|
661
|
+
<Button
|
|
662
|
+
download="{filename ?? 'result'}.json"
|
|
663
|
+
href={workspaceId && jobId
|
|
664
|
+
? `/api/w/${workspaceId}/jobs_u/completed/get_result/${jobId}`
|
|
665
|
+
: `data:text/json;charset=utf-8,${encodeURIComponent(toJsonStr(result))}`}
|
|
666
|
+
startIcon={{ icon: Download }}
|
|
667
|
+
color="light"
|
|
668
|
+
size="xs"
|
|
669
|
+
>
|
|
670
|
+
Download
|
|
671
|
+
</Button>
|
|
672
|
+
<Button
|
|
673
|
+
on:click={() => copyToClipboard(toJsonStr(result))}
|
|
674
|
+
color="light"
|
|
675
|
+
size="xs"
|
|
676
|
+
startIcon={{
|
|
677
|
+
icon: ClipboardCopy
|
|
678
|
+
}}
|
|
679
|
+
>
|
|
680
|
+
Copy to clipboard
|
|
681
|
+
</Button>
|
|
682
|
+
</svelte:fragment>
|
|
683
|
+
<svelte:self
|
|
684
|
+
{noControls}
|
|
685
|
+
{result}
|
|
686
|
+
{requireHtmlApproval}
|
|
687
|
+
{filename}
|
|
688
|
+
{jobId}
|
|
689
|
+
{workspaceId}
|
|
690
|
+
{hideAsJson}
|
|
691
|
+
{forceJson}
|
|
692
|
+
disableExpand={true}
|
|
693
|
+
/>
|
|
694
|
+
</DrawerContent>
|
|
695
|
+
</Drawer>
|
|
573
696
|
|
|
574
697
|
<Portal>
|
|
575
698
|
<S3FilePicker bind:this={s3FileViewer} readOnlyMode={true} />
|