windmill-components 1.269.4 → 1.291.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/ata/apis.d.ts +8 -5
- package/package/ata/apis.js +20 -9
- package/package/ata/edgeCases.js +5 -1
- package/package/ata/index.d.ts +3 -3
- package/package/ata/index.js +51 -28
- package/package/common.d.ts +1 -0
- package/package/components/AddUser.svelte +15 -6
- package/package/components/ApiConnectForm.svelte +1 -1
- package/package/components/ArgEnum.svelte +1 -1
- package/package/components/ArgEnum.svelte.d.ts +1 -1
- package/package/components/ArgInfo.svelte +2 -1
- package/package/components/ArgInput.svelte +7 -6
- package/package/components/ArgInput.svelte.d.ts +1 -1
- package/package/components/ArrayTypeNarrowing.svelte +2 -0
- package/package/components/CenteredModal.svelte +5 -2
- package/package/components/ChangeInstanceUsername.svelte +123 -0
- package/package/components/ChangeInstanceUsername.svelte.d.ts +20 -0
- package/package/components/ContentSearch.svelte +3 -4
- package/package/components/ContentSearch.svelte.d.ts +0 -3
- package/package/components/DateTimeInput.svelte +73 -9
- package/package/components/DateTimeInput.svelte.d.ts +8 -1
- package/package/components/DefaultScripts.svelte +26 -0
- package/package/components/DefaultScripts.svelte.d.ts +14 -0
- package/package/components/DefaultScriptsInner.svelte +75 -0
- package/package/components/DefaultScriptsInner.svelte.d.ts +14 -0
- package/package/components/Dev.svelte +59 -17
- package/package/components/DisplayResult.svelte +73 -67
- package/package/components/DurationMs.svelte +9 -8
- package/package/components/DurationMs.svelte.d.ts +1 -0
- package/package/components/Editor.svelte +23 -7
- package/package/components/FieldHeader.svelte +7 -7
- package/package/components/FlowBuilder.svelte +24 -13
- package/package/components/FlowBuilder.svelte.d.ts +0 -3
- package/package/components/FlowLoopIterationPreview.svelte +6 -5
- package/package/components/FlowMetadata.svelte +6 -2
- package/package/components/FlowPreviewContent.svelte +5 -5
- package/package/components/FolderEditor.svelte +20 -39
- package/package/components/GroupEditor.svelte +1 -1
- package/package/components/HighlightCode.svelte +7 -5
- package/package/components/IconedResourceType.svelte +5 -3
- package/package/components/IconedResourceType.svelte.d.ts +21 -7
- package/package/components/InputTransformForm.svelte +6 -1
- package/package/components/InstanceSettings.svelte +29 -17
- package/package/components/InstanceSettings.svelte.d.ts +3 -0
- package/package/components/InviteGlobalUser.svelte +1 -1
- package/package/components/JobArgs.svelte +20 -7
- package/package/components/JobStatus.svelte +8 -2
- package/package/components/LightweightArgInput.svelte +30 -14
- package/package/components/LightweightSchemaForm.svelte +1 -0
- package/package/components/LogViewer.svelte +21 -6
- package/package/components/ModulePreview.svelte +19 -11
- package/package/components/ModulePreview.svelte.d.ts +3 -2
- package/package/components/ObjectResourceInput.svelte +2 -0
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/Password.svelte +5 -2
- package/package/components/Password.svelte.d.ts +1 -0
- package/package/components/Path.svelte +10 -11
- package/package/components/ResourcePicker.svelte +28 -9
- package/package/components/ResourcePicker.svelte.d.ts +1 -0
- package/package/components/RunChart.svelte +1 -0
- package/package/components/RunForm.svelte +9 -17
- package/package/components/RunFormAdvancedPopup.svelte +11 -12
- package/package/components/S3FilePicker.svelte +1 -0
- package/package/components/ScheduleEditorInner.svelte +10 -9
- package/package/components/ScheduleEditorInner.svelte.d.ts +2 -2
- package/package/components/SchemaEditor.svelte +12 -1
- package/package/components/SchemaForm.svelte +1 -2
- package/package/components/SchemaModal.svelte +2 -2
- package/package/components/ScriptBuilder.svelte +152 -79
- package/package/components/ScriptBuilder.svelte.d.ts +1 -1
- package/package/components/ScriptEditor.svelte +8 -9
- package/package/components/ScriptSchedules.svelte +99 -0
- package/package/components/ScriptSchedules.svelte.d.ts +20 -0
- package/package/components/ShareModal.svelte +1 -0
- package/package/components/StringTypeNarrowing.svelte +9 -3
- package/package/components/SuperadminSettings.svelte +114 -10
- package/package/components/TestJobLoader.svelte +8 -0
- package/package/components/TestJobLoader.svelte.d.ts +1 -0
- package/package/components/TimeAgo.svelte +2 -2
- package/package/components/TimelineBar.svelte +5 -2
- package/package/components/Toggle.svelte +5 -2
- package/package/components/Toggle.svelte.d.ts +1 -0
- package/package/components/Tooltip.svelte +13 -2
- package/package/components/Tooltip.svelte.d.ts +1 -0
- package/package/components/Uptodate.svelte +12 -6
- package/package/components/UserSettings.svelte +87 -73
- package/package/components/WorkerTagPicker.svelte +4 -2
- package/package/components/WorkflowTimeline.svelte +106 -0
- package/package/components/WorkflowTimeline.svelte.d.ts +18 -0
- package/package/components/WorkspaceGroup.svelte +1 -0
- package/package/components/apps/components/buttons/AppButton.svelte +9 -19
- package/package/components/apps/components/display/AppCustomComponent.svelte +2 -4
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +246 -94
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte.d.ts +0 -3
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +17 -5
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte.d.ts +6 -2
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte +6 -4
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte.d.ts +3 -3
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +55 -37
- package/package/components/apps/components/display/dbtable/InsertRow.svelte.d.ts +17 -1
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +4 -3
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte.d.ts +2 -2
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte +5 -4
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte.d.ts +3 -3
- package/package/components/apps/components/display/dbtable/queries/count.d.ts +4 -0
- package/package/components/apps/components/display/dbtable/queries/count.js +140 -0
- package/package/components/apps/components/display/dbtable/queries/delete.d.ts +3 -0
- package/package/components/apps/components/display/dbtable/queries/delete.js +68 -0
- package/package/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
- package/package/components/apps/components/display/dbtable/queries/insert.js +121 -0
- package/package/components/apps/components/display/dbtable/queries/select.d.ts +7 -0
- package/package/components/apps/components/display/dbtable/queries/select.js +196 -0
- package/package/components/apps/components/display/dbtable/queries/update.d.ts +3 -0
- package/package/components/apps/components/display/dbtable/queries/update.js +75 -0
- package/package/components/apps/components/display/dbtable/utils.d.ts +79 -0
- package/package/components/apps/components/display/dbtable/utils.js +284 -309
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +39 -19
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +0 -2
- package/package/components/apps/components/display/table/AppAggridTable.svelte +4 -1
- package/package/components/apps/components/display/table/AppTable.svelte +4 -0
- package/package/components/apps/components/display/table/AppTable.svelte.d.ts +2 -2
- package/package/components/apps/components/display/table/utils.js +42 -0
- package/package/components/apps/components/helpers/InputValue.svelte +10 -8
- package/package/components/apps/components/helpers/InputValue.svelte.d.ts +1 -0
- package/package/components/apps/components/helpers/RefreshButton.svelte +1 -1
- package/package/components/apps/components/helpers/ResolveConfig.svelte +2 -0
- package/package/components/apps/components/helpers/RunnableComponent.svelte +6 -2
- package/package/components/apps/components/helpers/eval.d.ts +2 -2
- package/package/components/apps/components/helpers/eval.js +33 -11
- package/package/components/apps/components/inputs/AppCheckbox.svelte +4 -0
- package/package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppDateInput.svelte +2 -2
- package/package/components/apps/components/inputs/AppDateTimeInput.svelte +121 -0
- package/package/components/apps/components/inputs/AppDateTimeInput.svelte.d.ts +22 -0
- package/package/components/apps/components/inputs/AppSelect.svelte +5 -0
- package/package/components/apps/components/inputs/AppSelect.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppTimeInput.svelte +103 -0
- package/package/components/apps/components/inputs/AppTimeInput.svelte.d.ts +21 -0
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte +0 -1
- package/package/components/apps/components/layout/AppDecisionTree.svelte +12 -0
- package/package/components/apps/components/layout/AppStepper.svelte +4 -2
- package/package/components/apps/editor/AppEditor.svelte +19 -4
- package/package/components/apps/editor/AppEditorHeader.svelte +42 -14
- package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +2 -0
- package/package/components/apps/editor/AppTimeline.svelte +4 -4
- package/package/components/apps/editor/DecisionTreeDebug.svelte +1 -1
- package/package/components/apps/editor/DeploymentHistory.svelte +1 -1
- package/package/components/apps/editor/GridEditorMenu.svelte +3 -3
- package/package/components/apps/editor/RecomputeAllComponents.svelte +1 -1
- package/package/components/apps/editor/SettingsPanel.svelte +2 -0
- package/package/components/apps/editor/TabsDebug.svelte +2 -2
- package/package/components/apps/editor/appUtils.js +8 -0
- package/package/components/apps/editor/component/Component.svelte +21 -0
- package/package/components/apps/editor/component/components.d.ts +168 -9
- package/package/components/apps/editor/component/components.js +203 -10
- package/package/components/apps/editor/component/sets.js +2 -0
- package/package/components/apps/editor/componentsPanel/ComponentList.svelte +3 -3
- package/package/components/apps/editor/componentsPanel/ThemeList.svelte +1 -0
- package/package/components/apps/editor/componentsPanel/ThemeList.svelte.d.ts +2 -0
- package/package/components/apps/editor/componentsPanel/ThemeRow.svelte +8 -4
- package/package/components/apps/editor/componentsPanel/componentControlUtils.js +2 -0
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
- package/package/components/apps/editor/contextPanel/DebugPanel.svelte +178 -0
- package/package/components/apps/editor/contextPanel/DebugPanel.svelte.d.ts +14 -0
- package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +3 -1
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +9 -18
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +11 -16
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptHiddenRunnable.svelte +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/RunButton.svelte +4 -12
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +27 -4
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +3 -1
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +68 -28
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/GridCondition.svelte +57 -43
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +15 -12
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +9 -3
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +4 -0
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +8 -0
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +2 -0
- package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +6 -0
- package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte.d.ts +2 -0
- package/package/components/apps/editor/settingsPanel/Recompute.svelte +4 -5
- package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +3 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +4 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/DBTableSelect.svelte +42 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/DBTableSelect.svelte.d.ts +19 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +24 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte.d.ts +2 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +25 -15
- package/package/components/apps/editor/settingsPanel/script/BackgroundScriptSettings.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/script/ComponentScriptSettings.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingHeader.svelte +8 -1
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingHeader.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptTriggers.svelte +13 -0
- package/package/components/apps/inputType.d.ts +2 -2
- package/package/components/apps/svelte-select/lib/Select.svelte +2 -1
- package/package/components/apps/types.d.ts +5 -3
- package/package/components/build_workers.js +9 -13
- package/package/components/common/button/Button.svelte +78 -36
- package/package/components/common/button/Button.svelte.d.ts +7 -0
- package/package/components/common/button/model.d.ts +0 -1
- package/package/components/common/button/model.js +0 -8
- package/package/components/common/calendarPicker/CalendarPicker.svelte +11 -37
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +11 -10
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +5 -12
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte.d.ts +0 -3
- package/package/components/common/table/ScriptRow.svelte +28 -1
- package/package/components/common/tabs/Tab.svelte +6 -4
- package/package/components/common/tabs/Tab.svelte.d.ts +1 -0
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +4 -2
- package/package/components/copilot/IteratorGen.svelte +10 -5
- package/package/components/copilot/MetadataGen.svelte +6 -1
- package/package/components/copilot/PredicateGen.svelte +3 -4
- package/package/components/copilot/ScriptFix.svelte +1 -1
- package/package/components/copilot/StepGen.svelte +2 -1
- package/package/components/copilot/StepGen.svelte.d.ts +1 -0
- package/package/components/copilot/StepInputGen.svelte +13 -7
- package/package/components/copilot/StepInputsGen.svelte +12 -7
- package/package/components/copilot/lib.d.ts +1 -1
- package/package/components/copilot/lib.js +2 -2
- package/package/components/details/Menu.svelte +11 -6
- package/package/components/details/Menu.svelte.d.ts +1 -3
- package/package/components/details/WebhooksPanel.svelte +1 -1
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +11 -10
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +11 -9
- package/package/components/flows/content/FlowInputs.svelte +84 -238
- package/package/components/flows/content/FlowLoop.svelte +25 -16
- package/package/components/flows/content/FlowModuleComponent.svelte +17 -2
- package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowModuleWrapper.svelte +5 -0
- package/package/components/flows/content/FlowSchedules.svelte +75 -1
- package/package/components/flows/content/FlowSettings.svelte +5 -0
- package/package/components/flows/content/SuspendDrawer.svelte +1 -1
- package/package/components/flows/flowStateUtils.d.ts +1 -1
- package/package/components/flows/flowStateUtils.js +2 -2
- package/package/components/flows/idUtils.js +12 -1
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +2 -2
- package/package/components/flows/map/InsertModuleButton.svelte +1 -3
- package/package/components/flows/map/MapItem.svelte +1 -1
- package/package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
- package/package/components/flows/scheduleUtils.d.ts +2 -1
- package/package/components/flows/scheduleUtils.js +2 -1
- package/package/components/home/ItemsList.svelte +10 -9
- package/package/components/icons/AsanaIcon.svelte +5 -0
- package/package/components/icons/AsanaIcon.svelte.d.ts +17 -0
- package/package/components/icons/BitbucketIcon.svelte +19 -0
- package/package/components/icons/BitbucketIcon.svelte.d.ts +17 -0
- package/package/components/icons/CACertificate.svelte +7 -0
- package/package/components/icons/CACertificate.svelte.d.ts +17 -0
- package/package/components/icons/CurrencyApiIcon.svelte +24 -0
- package/package/components/icons/CurrencyApiIcon.svelte.d.ts +17 -0
- package/package/components/icons/DynatraceIcon.svelte +26 -0
- package/package/components/icons/DynatraceIcon.svelte.d.ts +17 -0
- package/package/components/icons/EdgeDbIcon.svelte +25 -0
- package/package/components/icons/EdgeDbIcon.svelte.d.ts +17 -0
- package/package/components/icons/GitIcon.svelte +7 -0
- package/package/components/icons/GitIcon.svelte.d.ts +17 -0
- package/package/components/icons/GoogleCloudIcon.svelte +20 -0
- package/package/components/icons/GoogleCloudIcon.svelte.d.ts +17 -0
- package/package/components/icons/IpinfoIcon.svelte +8 -0
- package/package/components/icons/IpinfoIcon.svelte.d.ts +17 -0
- package/package/components/icons/MSTeamsIcon.svelte +5 -0
- package/package/components/icons/MSTeamsIcon.svelte.d.ts +17 -0
- package/package/components/icons/MailgunIcon.svelte +11 -0
- package/package/components/icons/MailgunIcon.svelte.d.ts +17 -0
- package/package/components/icons/PushoverIcon.svelte +8 -0
- package/package/components/icons/PushoverIcon.svelte.d.ts +17 -0
- package/package/components/icons/QuickbooksIcon.svelte +5 -0
- package/package/components/icons/QuickbooksIcon.svelte.d.ts +17 -0
- package/package/components/icons/ResendIcon.svelte +7 -0
- package/package/components/icons/ResendIcon.svelte.d.ts +17 -0
- package/package/components/icons/TrelloIcon.svelte +5 -0
- package/package/components/icons/TrelloIcon.svelte.d.ts +17 -0
- package/package/components/icons/TwilioIcon.svelte +11 -0
- package/package/components/icons/TwilioIcon.svelte.d.ts +17 -0
- package/package/components/icons/ZendeskIcon.svelte +11 -0
- package/package/components/icons/ZendeskIcon.svelte.d.ts +17 -0
- package/package/components/icons/index.d.ts +36 -1
- package/package/components/icons/index.js +37 -2
- package/package/components/instanceSettings.js +38 -1
- package/package/components/jobs/JobPreview.svelte +4 -1
- package/package/components/runs/JobLoader.svelte +6 -4
- package/package/components/runs/JobPreview.svelte +15 -1
- package/package/components/runs/ManuelDatePicker.svelte +1 -1
- package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -3
- package/package/components/runs/RunRow.svelte +5 -19
- package/package/components/runs/RunsFilter.svelte +1 -1
- package/package/components/runs/RunsTable.svelte +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +12 -0
- package/package/components/settings/PremiumInfo.svelte +92 -31
- package/package/components/settings/WorkspaceUserSettings.svelte +42 -6
- package/package/components/sidebar/changelogs.js +20 -0
- package/package/components/table/AutoDataTable.svelte +18 -4
- package/package/consts.d.ts +0 -3
- package/package/consts.js +0 -3
- package/package/enterpriseUtils.d.ts +1 -0
- package/package/enterpriseUtils.js +17 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/index.d.ts +5 -2
- package/package/gen/models/LargeFileStorage.d.ts +3 -1
- package/package/gen/models/LargeFileStorage.js +2 -0
- package/package/gen/models/User.d.ts +0 -2
- package/package/gen/models/UserUsage.d.ts +4 -0
- package/package/gen/models/WorkflowStatus.d.ts +6 -0
- package/package/gen/models/WorkflowStatusRecord.d.ts +2 -0
- package/package/gen/models/WorkflowStatusRecord.js +5 -0
- package/package/gen/models/WorkflowTask.d.ts +4 -0
- package/package/gen/models/WorkflowTask.js +5 -0
- package/package/gen/models/WorkspaceDefaultScripts.d.ts +5 -0
- package/package/gen/models/WorkspaceDefaultScripts.js +5 -0
- package/package/gen/services/AdminService.d.ts +6 -9
- package/package/gen/services/AdminService.js +6 -7
- package/package/gen/services/FolderService.d.ts +3 -2
- package/package/gen/services/JobService.d.ts +27 -2
- package/package/gen/services/JobService.js +22 -2
- package/package/gen/services/SettingService.d.ts +11 -0
- package/package/gen/services/SettingService.js +13 -0
- package/package/gen/services/UserService.d.ts +14 -9
- package/package/gen/services/UserService.js +20 -7
- package/package/gen/services/WorkspaceService.d.ts +62 -0
- package/package/gen/services/WorkspaceService.js +76 -0
- package/package/infer.d.ts +20 -1
- package/package/infer.js +39 -19
- package/package/script_helpers.d.ts +7 -6
- package/package/script_helpers.js +24 -7
- package/package/scripts.d.ts +11 -0
- package/package/scripts.js +38 -1
- package/package/stores.d.ts +2 -1
- package/package/stores.js +2 -0
- package/package/utils.d.ts +1 -1
- package/package/utils.js +3 -3
- package/package.json +3 -4
- package/package/components/common/confirmationModal/model.d.ts +0 -9
- package/package/components/common/confirmationModal/model.js +0 -1
- package/package/gen/models/NewUser.d.ts +0 -5
- package/package/gen/models/Usage.d.ts +0 -3
- /package/package/gen/models/{NewUser.js → UserUsage.js} +0 -0
- /package/package/gen/models/{Usage.js → WorkflowStatus.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script>import { components } from '../../../editor/component';
|
|
2
2
|
import ResolveConfig from '../../helpers/ResolveConfig.svelte';
|
|
3
3
|
import { findGridItem, initConfig, initOutput } from '../../../editor/appUtils';
|
|
4
|
-
import {
|
|
4
|
+
import { getDbSchemas, loadTableMetaData, getPrimaryKeys, getTablesByResource } from './utils';
|
|
5
5
|
import { getContext, tick } from 'svelte';
|
|
6
6
|
import UpdateCell from './UpdateCell.svelte';
|
|
7
7
|
import { workspaceStore } from '../../../../../stores';
|
|
@@ -17,29 +17,66 @@ import { RunnableWrapper } from '../../helpers';
|
|
|
17
17
|
import InsertRowRunnable from './InsertRowRunnable.svelte';
|
|
18
18
|
import DeleteRow from './DeleteRow.svelte';
|
|
19
19
|
import InitializeComponent from '../../helpers/InitializeComponent.svelte';
|
|
20
|
+
import { getSelectInput } from './queries/select';
|
|
21
|
+
import DebouncedInput from '../../helpers/DebouncedInput.svelte';
|
|
20
22
|
export let id;
|
|
21
23
|
export let configuration;
|
|
22
24
|
export let customCss = undefined;
|
|
23
25
|
export let render;
|
|
24
26
|
export let initializing = true;
|
|
27
|
+
$: table = resolvedConfig.type.configuration?.[resolvedConfig.type?.selected]?.table;
|
|
28
|
+
$: table !== null && render && clearColumns();
|
|
29
|
+
function clearColumns() {
|
|
30
|
+
// We only want to clear the columns if the table has changed
|
|
31
|
+
if (!(lastTable && table && lastTable !== table) && !(lastTable && !table)) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (lastTable && !table) {
|
|
35
|
+
lastTable = undefined;
|
|
36
|
+
}
|
|
37
|
+
const gridItem = findGridItem($app, id);
|
|
38
|
+
if (!gridItem) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// @ts-ignore
|
|
42
|
+
gridItem.data.configuration.columnDefs = { value: [], type: 'static', loading: false };
|
|
43
|
+
$app = {
|
|
44
|
+
...$app
|
|
45
|
+
};
|
|
46
|
+
}
|
|
25
47
|
const resolvedConfig = initConfig(components['dbexplorercomponent'].initialData.configuration, configuration);
|
|
48
|
+
$: resolvedConfig.type.selected &&
|
|
49
|
+
render &&
|
|
50
|
+
computeInput(resolvedConfig.columnDefs, resolvedConfig.whereClause, resolvedConfig.type.configuration[resolvedConfig.type.selected].resource);
|
|
51
|
+
let timeoutInput = undefined;
|
|
52
|
+
function computeInput(columnDefs, whereClause, resource) {
|
|
53
|
+
if (timeoutInput) {
|
|
54
|
+
clearTimeout(timeoutInput);
|
|
55
|
+
}
|
|
56
|
+
timeoutInput = setTimeout(() => {
|
|
57
|
+
timeoutInput = undefined;
|
|
58
|
+
console.log('compute input');
|
|
59
|
+
input = getSelectInput(resource, resolvedConfig.type.configuration[resolvedConfig.type.selected].table, columnDefs, whereClause, resolvedConfig.type.selected);
|
|
60
|
+
}, 1000);
|
|
61
|
+
}
|
|
26
62
|
const { app, worldStore, mode, selectedComponent } = getContext('AppViewerContext');
|
|
27
63
|
const editorContext = getContext('AppEditorContext');
|
|
28
64
|
let input = undefined;
|
|
29
65
|
let quicksearch = '';
|
|
30
66
|
let aggrid;
|
|
31
|
-
$:
|
|
32
|
-
function computeInput(columnDefs, whereClause, resource) {
|
|
33
|
-
aggrid?.clearRows();
|
|
34
|
-
input = createPostgresInput(resource, resolvedConfig.type.configuration.postgresql.table, columnDefs, whereClause);
|
|
35
|
-
}
|
|
36
|
-
$: editorContext != undefined && $mode == 'dnd' && resolvedConfig.type && listTableIfAvailable();
|
|
67
|
+
$: editorContext != undefined && $mode == 'dnd' && resolvedConfig.type && listTables();
|
|
37
68
|
$: editorContext != undefined &&
|
|
38
69
|
$mode == 'dnd' &&
|
|
39
|
-
resolvedConfig.type.configuration?.
|
|
70
|
+
resolvedConfig.type.configuration?.[resolvedConfig?.type?.selected]?.table &&
|
|
40
71
|
listColumnsIfAvailable();
|
|
41
|
-
|
|
42
|
-
|
|
72
|
+
let firstQuicksearch = true;
|
|
73
|
+
$: if (quicksearch !== undefined) {
|
|
74
|
+
if (firstQuicksearch) {
|
|
75
|
+
firstQuicksearch = false;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
aggrid?.clearRows();
|
|
79
|
+
}
|
|
43
80
|
}
|
|
44
81
|
initializing = false;
|
|
45
82
|
let updateCell;
|
|
@@ -49,7 +86,7 @@ let componentContainerHeight = undefined;
|
|
|
49
86
|
let buttonContainerHeight = undefined;
|
|
50
87
|
function onUpdate(e) {
|
|
51
88
|
const { columnDef, value, data, oldValue } = e.detail;
|
|
52
|
-
updateCell?.triggerUpdate(resolvedConfig.type.configuration.
|
|
89
|
+
updateCell?.triggerUpdate(resolvedConfig.type.configuration[resolvedConfig.type.selected].resource, resolvedConfig.type.configuration[resolvedConfig.type.selected].table ?? 'unknown', columnDef, resolvedConfig.columnDefs, value, data, oldValue, resolvedConfig.type.selected);
|
|
53
90
|
}
|
|
54
91
|
let args = {};
|
|
55
92
|
let outputs = initOutput($worldStore, id, {
|
|
@@ -63,8 +100,23 @@ let outputs = initOutput($worldStore, id, {
|
|
|
63
100
|
ready: undefined
|
|
64
101
|
});
|
|
65
102
|
let lastResource = undefined;
|
|
66
|
-
|
|
67
|
-
|
|
103
|
+
function updateOneOfConfiguration(oneOfConfiguration, resolvedConfig, patch) {
|
|
104
|
+
const selectedConfig = oneOfConfiguration.configuration[resolvedConfig.selected];
|
|
105
|
+
if (!selectedConfig) {
|
|
106
|
+
console.warn(`Selected configuration '${resolvedConfig.selected}' does not exist.`);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
Object.keys(patch).forEach((key) => {
|
|
110
|
+
oneOfConfiguration.configuration[resolvedConfig.selected][key] = {
|
|
111
|
+
...oneOfConfiguration.configuration[resolvedConfig.selected][key],
|
|
112
|
+
...patch[key]
|
|
113
|
+
};
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
async function listTables() {
|
|
117
|
+
let resource = resolvedConfig.type.configuration?.[resolvedConfig.type.selected]?.resource;
|
|
118
|
+
if (!resource)
|
|
119
|
+
return;
|
|
68
120
|
if (lastResource === resource)
|
|
69
121
|
return;
|
|
70
122
|
lastResource = resource;
|
|
@@ -72,100 +124,140 @@ async function listTableIfAvailable() {
|
|
|
72
124
|
if (!gridItem) {
|
|
73
125
|
return;
|
|
74
126
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
127
|
+
updateOneOfConfiguration(gridItem.data.configuration.type, resolvedConfig.type, {
|
|
128
|
+
table: {
|
|
129
|
+
selectOptions: [],
|
|
130
|
+
loading: true
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
if (!resolvedConfig.type?.configuration?.[resolvedConfig.type.selected]?.resource) {
|
|
80
134
|
$app = {
|
|
81
135
|
...$app
|
|
82
136
|
};
|
|
83
137
|
return;
|
|
84
138
|
}
|
|
85
|
-
if ('configuration' in gridItem.data?.configuration?.type &&
|
|
86
|
-
gridItem.data.configuration.type.configuration.postgresql.table) {
|
|
87
|
-
gridItem.data.configuration.type.configuration.postgresql.table.loading = true;
|
|
88
|
-
}
|
|
89
139
|
try {
|
|
90
140
|
const dbSchemas = {};
|
|
91
|
-
await getDbSchemas(
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
141
|
+
await getDbSchemas(resolvedConfig?.type?.selected, resolvedConfig.type.configuration[resolvedConfig?.type?.selected].resource.split(':')[1], $workspaceStore, dbSchemas, (message) => { });
|
|
142
|
+
updateOneOfConfiguration(gridItem.data.configuration.type, resolvedConfig.type, {
|
|
143
|
+
table: {
|
|
144
|
+
selectOptions: dbSchemas
|
|
145
|
+
? getTablesByResource(dbSchemas, resolvedConfig?.type?.selected)
|
|
146
|
+
: [],
|
|
147
|
+
loading: false
|
|
148
|
+
}
|
|
149
|
+
});
|
|
98
150
|
$app = {
|
|
99
151
|
...$app
|
|
100
152
|
};
|
|
101
153
|
}
|
|
102
154
|
catch (e) { }
|
|
103
|
-
if ('configuration' in gridItem.data?.configuration?.type &&
|
|
104
|
-
gridItem.data.configuration.type.configuration.postgresql.table) {
|
|
105
|
-
gridItem.data.configuration.type.configuration.postgresql.table.loading = false;
|
|
106
|
-
}
|
|
107
155
|
}
|
|
108
156
|
let datasource = {
|
|
109
157
|
rowCount: 0,
|
|
110
158
|
getRows: async function (params) {
|
|
111
|
-
|
|
112
|
-
let uuid = await runnableComponent?.runComponent(undefined, undefined, undefined, {
|
|
159
|
+
const currentParams = {
|
|
113
160
|
offset: params.startRow,
|
|
114
161
|
limit: params.endRow - params.startRow,
|
|
115
162
|
quicksearch,
|
|
116
|
-
|
|
163
|
+
order_by: params.sortModel?.[0]?.colId ?? resolvedConfig.columnDefs?.[0]?.field,
|
|
117
164
|
is_desc: params.sortModel?.[0]?.sort === 'desc'
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
165
|
+
};
|
|
166
|
+
if (!render) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
runnableComponent?.runComponent(undefined, undefined, undefined, currentParams, {
|
|
170
|
+
done: (items) => {
|
|
171
|
+
let lastRow = -1;
|
|
172
|
+
if (datasource?.rowCount && datasource.rowCount <= params.endRow) {
|
|
173
|
+
lastRow = datasource.rowCount;
|
|
174
|
+
}
|
|
175
|
+
if (items && Array.isArray(items)) {
|
|
176
|
+
// MsSql response have an outer array, we need to flatten it
|
|
177
|
+
if (resolvedConfig.type.selected === 'ms_sql_server') {
|
|
178
|
+
items = items?.[0];
|
|
179
|
+
}
|
|
180
|
+
let processedData = items.map((item) => {
|
|
122
181
|
let primaryKeys = getPrimaryKeys(resolvedConfig.columnDefs);
|
|
123
182
|
let o = {};
|
|
124
183
|
primaryKeys.forEach((pk) => {
|
|
125
|
-
o[pk] =
|
|
184
|
+
o[pk] = item[pk];
|
|
126
185
|
});
|
|
127
|
-
|
|
128
|
-
return
|
|
129
|
-
})
|
|
186
|
+
item['__index'] = JSON.stringify(o);
|
|
187
|
+
return item;
|
|
188
|
+
});
|
|
189
|
+
if (items.length < params.endRow - params.startRow) {
|
|
190
|
+
lastRow = params.startRow + items.length;
|
|
191
|
+
}
|
|
192
|
+
params.successCallback(processedData, lastRow);
|
|
130
193
|
}
|
|
131
194
|
else {
|
|
132
195
|
params.failCallback();
|
|
133
196
|
}
|
|
134
197
|
},
|
|
135
198
|
cancel: () => {
|
|
136
|
-
console.log('cancel datasource request');
|
|
137
199
|
params.failCallback();
|
|
138
200
|
},
|
|
139
201
|
error: () => {
|
|
140
|
-
console.log('error datasource request');
|
|
141
202
|
params.failCallback();
|
|
142
203
|
}
|
|
143
204
|
});
|
|
144
|
-
console.log('asking for ' + params.startRow + ' to ' + params.endRow, uuid);
|
|
145
205
|
}
|
|
146
206
|
};
|
|
147
207
|
let lastTable = undefined;
|
|
208
|
+
let timeout = undefined;
|
|
209
|
+
function isSubset(subset, superset) {
|
|
210
|
+
return Object.keys(subset).every((key) => {
|
|
211
|
+
return superset[key] === subset[key];
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
function shouldReturnEarly(subset, superset) {
|
|
215
|
+
const subsetKeys = Object.keys(subset);
|
|
216
|
+
const supersetKeys = Object.keys(superset);
|
|
217
|
+
if (supersetKeys.length === 0)
|
|
218
|
+
return false;
|
|
219
|
+
if (subsetKeys.length !== supersetKeys.length) {
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
if (JSON.stringify(supersetKeys.sort()) === JSON.stringify(subsetKeys.sort()) &&
|
|
223
|
+
!subsetKeys.every((key) => isSubset(subset[key], superset[key]))) {
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
148
228
|
async function listColumnsIfAvailable() {
|
|
149
|
-
|
|
229
|
+
const selected = resolvedConfig.type.selected;
|
|
230
|
+
let table = resolvedConfig.type.configuration?.[resolvedConfig.type.selected]?.table;
|
|
150
231
|
if (lastTable === table)
|
|
151
232
|
return;
|
|
152
233
|
lastTable = table;
|
|
153
|
-
let tableMetadata = await loadTableMetaData(resolvedConfig.type.configuration.postgresql.resource, $workspaceStore, resolvedConfig.type.configuration.postgresql.table);
|
|
154
|
-
if (!tableMetadata)
|
|
155
|
-
return;
|
|
156
234
|
const gridItem = findGridItem($app, id);
|
|
157
235
|
if (!gridItem)
|
|
158
236
|
return;
|
|
159
237
|
let columnDefs = gridItem.data.configuration.columnDefs;
|
|
238
|
+
if (columnDefs.type !== 'static')
|
|
239
|
+
return;
|
|
240
|
+
//@ts-ignore
|
|
241
|
+
gridItem.data.configuration.columnDefs.loading = true;
|
|
242
|
+
gridItem.data = gridItem.data;
|
|
243
|
+
$app = $app;
|
|
244
|
+
let tableMetadata = await loadTableMetaData(resolvedConfig.type.configuration[selected].resource, $workspaceStore, resolvedConfig.type.configuration[selected].table, selected);
|
|
245
|
+
if (!tableMetadata)
|
|
246
|
+
return;
|
|
160
247
|
let old = columnDefs?.value ?? [];
|
|
161
248
|
if (!Array.isArray(old)) {
|
|
162
249
|
console.log('old is not an array RESET');
|
|
163
250
|
old = [];
|
|
164
251
|
}
|
|
165
|
-
// console.log('OLD', old)
|
|
166
|
-
// console.log(tableMetadata)
|
|
167
252
|
const oldMap = Object.fromEntries(old.filter((x) => x != undefined).map((x) => [x.field, x]));
|
|
168
253
|
const newMap = Object.fromEntries(tableMetadata?.map((x) => [x.field, x]) ?? []);
|
|
254
|
+
if (shouldReturnEarly(newMap, oldMap)) {
|
|
255
|
+
//@ts-ignore
|
|
256
|
+
gridItem.data.configuration.columnDefs.loading = false;
|
|
257
|
+
gridItem.data = gridItem.data;
|
|
258
|
+
$app = $app;
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
169
261
|
let ncols = [];
|
|
170
262
|
Object.entries(oldMap).forEach(([key, value]) => {
|
|
171
263
|
if (newMap[key]) {
|
|
@@ -180,9 +272,30 @@ async function listColumnsIfAvailable() {
|
|
|
180
272
|
ncols.push(value);
|
|
181
273
|
}
|
|
182
274
|
});
|
|
275
|
+
// Mysql capitalizes the column names, so we make sure to lowercase them
|
|
276
|
+
ncols = ncols.map((x) => {
|
|
277
|
+
let o = {};
|
|
278
|
+
Object.keys(x).forEach((k) => {
|
|
279
|
+
if ([
|
|
280
|
+
'field',
|
|
281
|
+
'datatype',
|
|
282
|
+
'defaultvalue',
|
|
283
|
+
'isprimarykey',
|
|
284
|
+
'isidentity',
|
|
285
|
+
'isnullable',
|
|
286
|
+
'isenum'
|
|
287
|
+
].includes(k.toLocaleLowerCase())) {
|
|
288
|
+
o[k.toLowerCase()] = x[k];
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
o[k] = x[k];
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
return o;
|
|
295
|
+
});
|
|
183
296
|
state = undefined;
|
|
184
297
|
//@ts-ignore
|
|
185
|
-
gridItem.data.configuration.columnDefs = { value: ncols, type: 'static' };
|
|
298
|
+
gridItem.data.configuration.columnDefs = { value: ncols, type: 'static', loading: false };
|
|
186
299
|
gridItem.data = gridItem.data;
|
|
187
300
|
$app = $app;
|
|
188
301
|
let oldS = $selectedComponent;
|
|
@@ -191,18 +304,41 @@ async function listColumnsIfAvailable() {
|
|
|
191
304
|
$selectedComponent = oldS;
|
|
192
305
|
//@ts-ignore
|
|
193
306
|
resolvedConfig.columnDefs = ncols;
|
|
194
|
-
|
|
307
|
+
timeout && clearTimeout(timeout);
|
|
308
|
+
timeout = setTimeout(() => {
|
|
309
|
+
timeout = undefined;
|
|
310
|
+
renderCount += 1;
|
|
311
|
+
}, 1500);
|
|
195
312
|
}
|
|
196
313
|
let isInsertable = false;
|
|
197
|
-
$: $worldStore && connectToComponents();
|
|
314
|
+
$: $worldStore && render && connectToComponents();
|
|
198
315
|
function connectToComponents() {
|
|
199
|
-
if ($worldStore) {
|
|
316
|
+
if ($worldStore && datasource !== undefined) {
|
|
200
317
|
const outputs = $worldStore.outputsById[`${id}_count`];
|
|
201
318
|
if (outputs) {
|
|
202
319
|
outputs.result.subscribe({
|
|
203
320
|
id: 'dbexplorer-count-' + id,
|
|
204
321
|
next: (value) => {
|
|
205
|
-
|
|
322
|
+
if (value?.error) {
|
|
323
|
+
const message = value?.error?.message ?? value?.error;
|
|
324
|
+
sendUserToast(message, true);
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
// MsSql response have an outer array, we need to flatten it
|
|
328
|
+
if (Array.isArray(value) &&
|
|
329
|
+
value.length === 1 &&
|
|
330
|
+
resolvedConfig.type.selected === 'ms_sql_server') {
|
|
331
|
+
// @ts-ignore
|
|
332
|
+
datasource.rowCount = value?.[0]?.[0]?.count;
|
|
333
|
+
}
|
|
334
|
+
else if (resolvedConfig.type.selected === 'snowflake') {
|
|
335
|
+
// @ts-ignore
|
|
336
|
+
datasource.rowCount = value?.[0]?.COUNT;
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
// @ts-ignore
|
|
340
|
+
datasource.rowCount = value?.[0]?.count;
|
|
341
|
+
}
|
|
206
342
|
}
|
|
207
343
|
}, datasource.rowCount);
|
|
208
344
|
}
|
|
@@ -210,7 +346,8 @@ function connectToComponents() {
|
|
|
210
346
|
}
|
|
211
347
|
async function insert() {
|
|
212
348
|
try {
|
|
213
|
-
|
|
349
|
+
const selected = resolvedConfig.type.selected;
|
|
350
|
+
await insertRowRunnable?.insertRow(resolvedConfig.type.configuration[selected].resource, $workspaceStore, resolvedConfig.type.configuration[selected].table, resolvedConfig.columnDefs, args, selected);
|
|
214
351
|
insertDrawer?.closeDrawer();
|
|
215
352
|
renderCount++;
|
|
216
353
|
}
|
|
@@ -226,11 +363,12 @@ let deleteRow;
|
|
|
226
363
|
function onDelete(e) {
|
|
227
364
|
const data = { ...e.detail };
|
|
228
365
|
delete data['__index'];
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
deleteRow?.triggerDelete(resolvedConfig.type.configuration.postgresql.resource, resolvedConfig.type.configuration.postgresql.table ?? 'unknown', getPrimaryKeysresolvedConfig, data);
|
|
366
|
+
const selected = resolvedConfig.type.selected;
|
|
367
|
+
deleteRow?.triggerDelete(resolvedConfig.type.configuration[selected].resource, resolvedConfig.type.configuration[selected].table ?? 'unknown', resolvedConfig.columnDefs, data, selected);
|
|
232
368
|
}
|
|
233
369
|
let refreshCount = 0;
|
|
370
|
+
$: hideSearch = resolvedConfig.hideSearch;
|
|
371
|
+
$: hideInsert = resolvedConfig.hideInsert;
|
|
234
372
|
</script>
|
|
235
373
|
|
|
236
374
|
{#each Object.keys(components['dbexplorercomponent'].initialData.configuration) as key (key)}
|
|
@@ -262,13 +400,18 @@ let refreshCount = 0;
|
|
|
262
400
|
/>
|
|
263
401
|
{/if}
|
|
264
402
|
<UpdateCell {id} bind:this={updateCell} />
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
403
|
+
{#if render}
|
|
404
|
+
<DbExplorerCount
|
|
405
|
+
renderCount={refreshCount}
|
|
406
|
+
{id}
|
|
407
|
+
{quicksearch}
|
|
408
|
+
{table}
|
|
409
|
+
resource={resolvedConfig?.type?.configuration?.[resolvedConfig?.type?.selected]?.resource}
|
|
410
|
+
resourceType={resolvedConfig?.type?.selected}
|
|
411
|
+
columnDefs={resolvedConfig?.columnDefs}
|
|
412
|
+
whereClause={resolvedConfig?.whereClause}
|
|
413
|
+
/>
|
|
414
|
+
{/if}
|
|
272
415
|
|
|
273
416
|
<InitializeComponent {id} />
|
|
274
417
|
|
|
@@ -283,31 +426,35 @@ let refreshCount = 0;
|
|
|
283
426
|
{outputs}
|
|
284
427
|
>
|
|
285
428
|
<div class="h-full" bind:clientHeight={componentContainerHeight}>
|
|
286
|
-
|
|
287
|
-
<
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
429
|
+
{#if !(hideSearch === true && hideInsert === true)}
|
|
430
|
+
<div class="flex p-2 justify-between gap-4" bind:clientHeight={buttonContainerHeight}>
|
|
431
|
+
{#if hideSearch !== true}
|
|
432
|
+
<DebouncedInput
|
|
433
|
+
class="w-full max-w-[300px]"
|
|
434
|
+
type="text"
|
|
435
|
+
bind:value={quicksearch}
|
|
436
|
+
placeholder="Quicksearch"
|
|
437
|
+
/>
|
|
438
|
+
{/if}
|
|
439
|
+
{#if hideInsert !== true}
|
|
440
|
+
<Button
|
|
441
|
+
startIcon={{ icon: Plus }}
|
|
442
|
+
color="dark"
|
|
443
|
+
size="xs"
|
|
444
|
+
on:click={() => {
|
|
445
|
+
args = {}
|
|
446
|
+
insertDrawer?.openDrawer()
|
|
447
|
+
}}
|
|
448
|
+
>
|
|
449
|
+
Insert
|
|
450
|
+
</Button>
|
|
451
|
+
{/if}
|
|
452
|
+
</div>
|
|
453
|
+
{/if}
|
|
454
|
+
{#if resolvedConfig.type.configuration?.[resolvedConfig?.type?.selected]?.resource && resolvedConfig.type.configuration?.[resolvedConfig?.type?.selected]?.table}
|
|
308
455
|
<!-- {JSON.stringify(lastInput)} -->
|
|
309
456
|
<!-- <span class="text-xs">{JSON.stringify(configuration.columnDefs)}</span> -->
|
|
310
|
-
{#key renderCount}
|
|
457
|
+
{#key renderCount && render}
|
|
311
458
|
<!-- {JSON.stringify(resolvedConfig.columnDefs)} -->
|
|
312
459
|
<AppAggridExplorerTable
|
|
313
460
|
bind:this={aggrid}
|
|
@@ -318,7 +465,7 @@ let refreshCount = 0;
|
|
|
318
465
|
{customCss}
|
|
319
466
|
{outputs}
|
|
320
467
|
allowDelete={resolvedConfig.allowDelete ?? false}
|
|
321
|
-
containerHeight={componentContainerHeight - buttonContainerHeight}
|
|
468
|
+
containerHeight={componentContainerHeight - (buttonContainerHeight ?? 0)}
|
|
322
469
|
on:update={onUpdate}
|
|
323
470
|
on:delete={onDelete}
|
|
324
471
|
/>
|
|
@@ -333,7 +480,12 @@ let refreshCount = 0;
|
|
|
333
480
|
<Button color="dark" size="xs" on:click={insert} disabled={!isInsertable}>Insert</Button>
|
|
334
481
|
</svelte:fragment>
|
|
335
482
|
|
|
336
|
-
<InsertRow
|
|
483
|
+
<InsertRow
|
|
484
|
+
bind:args
|
|
485
|
+
bind:isInsertable
|
|
486
|
+
columnDefs={resolvedConfig.columnDefs}
|
|
487
|
+
dbType={resolvedConfig.type.selected}
|
|
488
|
+
/>
|
|
337
489
|
</DrawerContent>
|
|
338
490
|
</Drawer>
|
|
339
491
|
</Portal>
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
<script>import { getContext, tick } from 'svelte';
|
|
2
2
|
import RunnableWrapper from '../../helpers/RunnableWrapper.svelte';
|
|
3
3
|
import { initOutput } from '../../../editor/appUtils';
|
|
4
|
-
import {
|
|
4
|
+
import {} from './utils';
|
|
5
|
+
import { getCountInput } from './queries/count';
|
|
5
6
|
export let id;
|
|
6
7
|
export let table;
|
|
7
8
|
export let resource;
|
|
8
9
|
export let renderCount;
|
|
9
10
|
export let quicksearch;
|
|
11
|
+
export let resourceType;
|
|
12
|
+
export let columnDefs;
|
|
13
|
+
export let whereClause;
|
|
10
14
|
const { worldStore } = getContext('AppViewerContext');
|
|
11
15
|
let outputs = initOutput($worldStore, `${id}_count`, {
|
|
12
16
|
result: undefined,
|
|
@@ -16,16 +20,24 @@ let outputs = initOutput($worldStore, `${id}_count`, {
|
|
|
16
20
|
let runnableComponent;
|
|
17
21
|
let loading = false;
|
|
18
22
|
let input = undefined;
|
|
19
|
-
|
|
20
|
-
let lastTableCount = '';
|
|
23
|
+
let lastTableCount = undefined;
|
|
21
24
|
let renderCountLast = -1;
|
|
22
25
|
let quicksearchLast = undefined;
|
|
26
|
+
let localColumnDefs = columnDefs;
|
|
27
|
+
let lastTable = table;
|
|
28
|
+
$: {
|
|
29
|
+
if (table !== lastTable) {
|
|
30
|
+
localColumnDefs = [];
|
|
31
|
+
lastTable = table;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
$: table && renderCount != undefined && quicksearch != undefined && computeCount();
|
|
23
35
|
async function computeCount() {
|
|
24
36
|
if (lastTableCount === table &&
|
|
25
37
|
renderCount == renderCountLast &&
|
|
26
38
|
quicksearch == quicksearchLast)
|
|
27
39
|
return;
|
|
28
|
-
if (table !=
|
|
40
|
+
if (table != undefined && resource !== undefined) {
|
|
29
41
|
renderCountLast = renderCount;
|
|
30
42
|
lastTableCount = table;
|
|
31
43
|
quicksearchLast = quicksearch;
|
|
@@ -33,7 +45,7 @@ async function computeCount() {
|
|
|
33
45
|
}
|
|
34
46
|
}
|
|
35
47
|
async function getCount(resource, table, quicksearch) {
|
|
36
|
-
input =
|
|
48
|
+
input = getCountInput(resource, table, resourceType, localColumnDefs, whereClause);
|
|
37
49
|
await tick();
|
|
38
50
|
if (runnableComponent) {
|
|
39
51
|
await runnableComponent?.runComponent(undefined, undefined, undefined, {
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
|
+
import { type ColumnDef } from './utils';
|
|
2
3
|
declare const __propDef: {
|
|
3
4
|
props: {
|
|
4
5
|
id: string;
|
|
5
|
-
table: string;
|
|
6
|
-
resource: string;
|
|
6
|
+
table: string | undefined;
|
|
7
|
+
resource: string | undefined;
|
|
7
8
|
renderCount: number;
|
|
8
9
|
quicksearch: string;
|
|
10
|
+
resourceType: string;
|
|
11
|
+
columnDefs: ColumnDef[];
|
|
12
|
+
whereClause: string | undefined;
|
|
9
13
|
};
|
|
10
14
|
events: {
|
|
11
15
|
[evt: string]: CustomEvent<any>;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<script>import { createEventDispatcher, getContext, tick } from 'svelte';
|
|
2
2
|
import RunnableWrapper from '../../helpers/RunnableWrapper.svelte';
|
|
3
3
|
import { initOutput } from '../../../editor/appUtils';
|
|
4
|
-
import {
|
|
4
|
+
import { getPrimaryKeys } from './utils';
|
|
5
5
|
import { sendUserToast } from '../../../../../toast';
|
|
6
|
+
import { getDeleteInput } from './queries/delete';
|
|
6
7
|
export let id;
|
|
7
8
|
const { worldStore } = getContext('AppViewerContext');
|
|
8
9
|
let outputs = initOutput($worldStore, `${id}_delete`, {
|
|
@@ -14,9 +15,10 @@ let runnableComponent;
|
|
|
14
15
|
let loading = false;
|
|
15
16
|
let input = undefined;
|
|
16
17
|
const dispatch = createEventDispatcher();
|
|
17
|
-
export async function triggerDelete(resource, table,
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
export async function triggerDelete(resource, table, allColumns, data, dbType) {
|
|
19
|
+
let primaryColumns = getPrimaryKeys(allColumns);
|
|
20
|
+
let columns = allColumns?.filter((x) => primaryColumns.includes(x.field));
|
|
21
|
+
input = getDeleteInput(resource, table, columns, dbType);
|
|
20
22
|
await tick();
|
|
21
23
|
if (runnableComponent) {
|
|
22
24
|
let ndata = {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
|
-
import { type
|
|
2
|
+
import { type ColumnDef, type DbType } from './utils';
|
|
3
3
|
declare const __propDef: {
|
|
4
4
|
props: {
|
|
5
5
|
id: string;
|
|
6
|
-
triggerDelete?: ((resource: string, table: string,
|
|
6
|
+
triggerDelete?: ((resource: string, table: string, allColumns: ColumnDef[], data: Record<string, any>, dbType: DbType) => Promise<void>) | undefined;
|
|
7
7
|
};
|
|
8
8
|
events: {
|
|
9
9
|
deleted: CustomEvent<any>;
|
|
@@ -16,6 +16,6 @@ export type DeleteRowProps = typeof __propDef.props;
|
|
|
16
16
|
export type DeleteRowEvents = typeof __propDef.events;
|
|
17
17
|
export type DeleteRowSlots = typeof __propDef.slots;
|
|
18
18
|
export default class DeleteRow extends SvelteComponent<DeleteRowProps, DeleteRowEvents, DeleteRowSlots> {
|
|
19
|
-
get triggerDelete(): (resource: string, table: string,
|
|
19
|
+
get triggerDelete(): (resource: string, table: string, allColumns: ColumnDef[], data: Record<string, any>, dbType: DbType) => Promise<void>;
|
|
20
20
|
}
|
|
21
21
|
export {};
|