windmill-components 1.306.13 → 1.309.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/autosize.js +6 -1
- package/package/common.d.ts +2 -2
- package/package/components/ApiConnectForm.svelte +2 -1
- package/package/components/AppConnect.svelte +1 -1
- package/package/components/DeployWorkspace.svelte +2 -2
- package/package/components/DeployWorkspace.svelte.d.ts +1 -1
- package/package/components/DeployWorkspaceDrawer.svelte.d.ts +2 -2
- package/package/components/Dev.svelte +2 -1
- package/package/components/DropdownV2.svelte +4 -1
- package/package/components/DropdownV2.svelte.d.ts +2 -2
- package/package/components/Editor.svelte +1 -1
- package/package/components/Editor.svelte.d.ts +2 -2
- package/package/components/EditorBar.svelte +25 -23
- package/package/components/EditorBar.svelte.d.ts +2 -3
- package/package/components/ErrorOrRecoveryHandler.svelte +2 -2
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +1 -1
- package/package/components/FlowBuilder.svelte +5 -5
- package/package/components/FlowBuilder.svelte.d.ts +0 -1
- package/package/components/FlowLoopIterationPreview.svelte +1 -1
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
- package/package/components/FlowPreviewContent.svelte +1 -1
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowStatusViewerInner.svelte +13 -15
- package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -1
- package/package/components/FlowStatusWaitingForEvents.svelte +3 -3
- package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +1 -1
- package/package/components/HighlightCode.svelte.d.ts +1 -1
- package/package/components/InstanceSettings.svelte +4 -2
- package/package/components/LogViewer.svelte +65 -20
- package/package/components/ModulePreview.svelte +2 -2
- package/package/components/ModulePreview.svelte.d.ts +2 -2
- package/package/components/ModuleStatus.svelte +6 -7
- package/package/components/ModuleStatus.svelte.d.ts +2 -2
- package/package/components/MoveDrawer.svelte.d.ts +2 -2
- package/package/components/ParqetTableRenderer.svelte +3 -3
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/ResultJobLoader.svelte.d.ts +1 -1
- package/package/components/SavedInputs.svelte +6 -5
- package/package/components/ScheduleEditorInner.svelte +6 -6
- package/package/components/ScriptBuilder.svelte +9 -9
- package/package/components/ScriptBuilder.svelte.d.ts +1 -1
- package/package/components/ScriptEditor.svelte +1 -1
- package/package/components/ScriptEditor.svelte.d.ts +4 -4
- package/package/components/ScriptPicker.svelte +2 -2
- package/package/components/ScriptPicker.svelte.d.ts +2 -3
- package/package/components/ShareModal.svelte +1 -2
- package/package/components/ShareModal.svelte.d.ts +2 -2
- package/package/components/SuperadminSettings.svelte +1 -1
- package/package/components/TestConnection.svelte +2 -2
- package/package/components/TestJobLoader.svelte +1 -1
- package/package/components/TestJobLoader.svelte.d.ts +4 -4
- package/package/components/WorkspaceGroup.svelte +2 -2
- package/package/components/apps/components/display/AppText.svelte +2 -2
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +4 -0
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte.d.ts +2 -0
- package/package/components/apps/components/display/dbtable/queries/count.js +1 -2
- package/package/components/apps/components/display/dbtable/queries/delete.js +20 -12
- package/package/components/apps/components/display/dbtable/queries/select.js +2 -1
- package/package/components/apps/components/display/dbtable/queries/update.js +20 -12
- package/package/components/apps/components/display/dbtable/utils.d.ts +2 -1
- package/package/components/apps/components/display/dbtable/utils.js +14 -13
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +75 -1
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +2 -1
- package/package/components/apps/components/display/table/AppAggridTable.svelte +10 -28
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +2 -2
- package/package/components/apps/components/display/table/utils.js +0 -1
- package/package/components/apps/components/inputs/AppTextInput.svelte +1 -1
- package/package/components/apps/editor/AppEditorHeader.svelte +60 -45
- package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -1
- package/package/components/apps/editor/AppEditorTutorial.svelte +10 -6
- package/package/components/apps/editor/AppInputs.svelte +1 -1
- package/package/components/apps/editor/AppReportsDrawer.svelte +6 -4
- package/package/components/apps/editor/DeploymentHistory.svelte +1 -1
- package/package/components/apps/editor/PreviewToggle.svelte +10 -1
- package/package/components/apps/editor/SettingsPanel.svelte +6 -2
- package/package/components/apps/editor/appUtils.js +19 -7
- package/package/components/apps/editor/component/Component.svelte +1 -0
- package/package/components/apps/editor/component/ComponentCallbacks.svelte +4 -1
- package/package/components/apps/editor/component/components.d.ts +77 -70
- package/package/components/apps/editor/component/components.js +7 -1
- package/package/components/apps/editor/componentsPanel/CustomComponentRow.svelte +24 -21
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +6 -2
- package/package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +5 -4
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +2 -3
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +20 -18
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.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/ComponentPanel.svelte +2 -0
- package/package/components/apps/editor/settingsPanel/mainInput/WorkspaceScriptList.svelte +1 -1
- package/package/components/apps/svelte-select/lib/Select.svelte.d.ts +2 -2
- package/package/components/apps/types.d.ts +1 -1
- package/package/components/apps/utils.js +3 -1
- package/package/components/auditLogs/AuditLogDetails.svelte +6 -4
- package/package/components/auditLogs/AuditLogDetails.svelte.d.ts +1 -1
- package/package/components/auditLogs/AuditLogsFilters.svelte +1 -1
- package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
- package/package/components/common/languageIcons/LanguageIcon.svelte +13 -12
- package/package/components/common/table/AppRow.svelte +1 -1
- package/package/components/common/table/Row.svelte.d.ts +1 -1
- package/package/components/copilot/FlowCopilotDrawer.svelte +6 -4
- package/package/components/copilot/ScriptGen.svelte +5 -5
- package/package/components/copilot/ScriptGen.svelte.d.ts +1 -1
- package/package/components/copilot/StepGen.svelte +1 -1
- package/package/components/copilot/flow.d.ts +3 -3
- package/package/components/copilot/flow.js +1 -1
- package/package/components/copilot/lib.d.ts +2 -2
- package/package/components/copilot/lib.js +1 -1
- package/package/components/details/WebhooksPanel.svelte +1 -1
- package/package/components/details/utils.d.ts +1 -1
- package/package/components/details/utils.js +1 -1
- package/package/components/flows/FlowProgressBar.svelte +3 -4
- package/package/components/flows/FlowProgressBar.svelte.d.ts +1 -1
- package/package/components/flows/content/FlowInputs.svelte +5 -8
- package/package/components/flows/content/FlowLoop.svelte.d.ts +1 -1
- package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -1
- package/package/components/flows/content/FlowModuleWrapper.svelte +5 -5
- package/package/components/flows/content/FlowWhileLoop.svelte +10 -3
- package/package/components/flows/content/FlowWhileLoop.svelte.d.ts +1 -1
- package/package/components/flows/content/ScriptEditorDrawer.svelte +2 -1
- package/package/components/flows/content/SuspendDrawer.svelte +5 -6
- package/package/components/flows/dfs.d.ts +1 -1
- package/package/components/flows/flowStateUtils.d.ts +2 -2
- package/package/components/flows/flowStateUtils.js +1 -1
- package/package/components/graph/FlowGraph.svelte +3 -3
- package/package/components/graph/model.d.ts +1 -1
- package/package/components/graph/util.d.ts +2 -2
- package/package/components/graph/util.js +5 -6
- package/package/components/home/ItemsList.svelte +1 -1
- package/package/components/home/ItemsList.svelte.d.ts +1 -1
- package/package/components/icons/VismaIcon.svelte +10 -0
- package/package/components/icons/VismaIcon.svelte.d.ts +17 -0
- package/package/components/icons/index.d.ts +2 -0
- package/package/components/icons/index.js +3 -1
- package/package/components/jobs/JobPreview.svelte +2 -2
- package/package/components/runs/JobLoader.svelte +26 -8
- package/package/components/runs/JobLoader.svelte.d.ts +1 -1
- package/package/components/runs/JobPreview.svelte +3 -3
- package/package/components/runs/QueuePopover.svelte +1 -1
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +2 -2
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -2
- package/package/components/tutorials/FlowErrorHandler.svelte +1 -2
- package/package/components/tutorials/utils.js +1 -1
- package/package/gen/core/ApiError.d.ts +1 -1
- package/package/gen/core/ApiRequestOptions.d.ts +5 -5
- package/package/gen/core/ApiResult.d.ts +3 -3
- package/package/gen/core/CancelablePromise.d.ts +10 -4
- package/package/gen/core/CancelablePromise.js +38 -39
- package/package/gen/core/OpenAPI.d.ts +17 -6
- package/package/gen/core/OpenAPI.js +25 -5
- package/package/gen/core/request.d.ts +6 -7
- package/package/gen/core/request.js +77 -57
- package/package/gen/enums.gen.d.ts +149 -0
- package/package/gen/enums.gen.js +150 -0
- package/package/gen/index.d.ts +5 -178
- package/package/gen/index.js +5 -52
- package/package/gen/models/AppWithLastVersionWDraft.d.ts +2 -2
- package/package/gen/models/Flow.d.ts +1 -1
- package/package/gen/models/FlowModuleValue.d.ts +1 -1
- package/package/gen/models/FlowStatus.d.ts +2 -2
- package/package/gen/models/InputTransform.d.ts +1 -1
- package/package/gen/models/Job.d.ts +2 -2
- package/package/gen/models/MainArgSignature.d.ts +4 -4
- package/package/gen/models/NewScriptWithDraft.d.ts +2 -2
- package/package/gen/models/OpenFlowWPath.d.ts +2 -2
- package/package/gen/models/ScheduleWJobs.d.ts +2 -2
- package/package/gen/schemas.gen.d.ts +3155 -0
- package/package/gen/schemas.gen.js +3217 -0
- package/package/gen/services/AdminService.d.ts +3 -3
- package/package/gen/services/AdminService.js +12 -12
- package/package/gen/services/AppService.d.ts +16 -16
- package/package/gen/services/AppService.js +69 -69
- package/package/gen/services/AuditService.d.ts +2 -2
- package/package/gen/services/AuditService.js +15 -15
- package/package/gen/services/CaptureService.d.ts +3 -3
- package/package/gen/services/CaptureService.js +13 -13
- package/package/gen/services/ConcurrencyGroupsService.d.ts +1 -1
- package/package/gen/services/ConcurrencyGroupsService.js +4 -4
- package/package/gen/services/ConfigService.d.ts +3 -3
- package/package/gen/services/ConfigService.js +10 -10
- package/package/gen/services/DraftService.d.ts +2 -2
- package/package/gen/services/DraftService.js +8 -8
- package/package/gen/services/FavoriteService.d.ts +2 -2
- package/package/gen/services/FavoriteService.js +6 -6
- package/package/gen/services/FlowService.d.ts +21 -21
- package/package/gen/services/FlowService.js +58 -58
- package/package/gen/services/FolderService.d.ts +9 -9
- package/package/gen/services/FolderService.js +36 -36
- package/package/gen/services/GranularAclService.d.ts +3 -3
- package/package/gen/services/GranularAclService.js +15 -15
- package/package/gen/services/GroupService.d.ts +14 -14
- package/package/gen/services/GroupService.js +50 -50
- package/package/gen/services/HelpersService.d.ts +14 -14
- package/package/gen/services/HelpersService.js +70 -70
- package/package/gen/services/InputService.d.ts +5 -5
- package/package/gen/services/InputService.js +26 -26
- package/package/gen/services/IntegrationService.d.ts +1 -1
- package/package/gen/services/IntegrationService.js +3 -3
- package/package/gen/services/JobService.d.ts +51 -42
- package/package/gen/services/JobService.js +326 -311
- package/package/gen/services/MetricsService.d.ts +1 -1
- package/package/gen/services/MetricsService.js +4 -4
- package/package/gen/services/OauthService.d.ts +6 -6
- package/package/gen/services/OauthService.js +22 -22
- package/package/gen/services/OidcService.d.ts +1 -1
- package/package/gen/services/OidcService.js +4 -4
- package/package/gen/services/RawAppService.d.ts +6 -6
- package/package/gen/services/RawAppService.js +30 -30
- package/package/gen/services/ResourceService.d.ts +19 -19
- package/package/gen/services/ResourceService.js +77 -77
- package/package/gen/services/ScheduleService.d.ts +10 -10
- package/package/gen/services/ScheduleService.js +41 -41
- package/package/gen/services/ScriptService.d.ts +23 -23
- package/package/gen/services/ScriptService.js +104 -104
- package/package/gen/services/SettingService.d.ts +6 -6
- package/package/gen/services/SettingService.js +16 -16
- package/package/gen/services/SettingsService.js +4 -4
- package/package/gen/services/UserService.d.ts +26 -26
- package/package/gen/services/UserService.js +85 -85
- package/package/gen/services/VariableService.d.ts +9 -9
- package/package/gen/services/VariableService.js +36 -36
- package/package/gen/services/WorkerService.d.ts +2 -2
- package/package/gen/services/WorkerService.js +11 -11
- package/package/gen/services/WorkspaceService.d.ts +39 -39
- package/package/gen/services/WorkspaceService.js +118 -118
- package/package/gen/services.gen.d.ts +1928 -0
- package/package/gen/services.gen.js +5309 -0
- package/package/gen/types.gen.d.ts +6898 -0
- package/package/gen/types.gen.js +2 -0
- package/package/hub.d.ts +1 -1
- package/package/infer.d.ts +1 -1
- package/package/infer.js +2 -2
- package/package/script_helpers.d.ts +3 -3
- package/package/script_helpers.js +2 -2
- package/package/scripts.d.ts +2 -2
- package/package/scripts.js +20 -16
- package/package/stores.d.ts +1 -2
- package/package/utils.d.ts +1 -1
- package/package/utils.js +1 -1
- package/package.json +6 -6
|
@@ -25,6 +25,7 @@ export let configuration;
|
|
|
25
25
|
export let customCss = undefined;
|
|
26
26
|
export let render;
|
|
27
27
|
export let initializing = true;
|
|
28
|
+
export let actions = [];
|
|
28
29
|
$: table = resolvedConfig.type.configuration?.[resolvedConfig.type?.selected]?.table;
|
|
29
30
|
$: table !== null && render && clearColumns();
|
|
30
31
|
function clearColumns() {
|
|
@@ -95,6 +96,7 @@ let outputs = initOutput($worldStore, id, {
|
|
|
95
96
|
selectedRow: {},
|
|
96
97
|
selectedRows: [],
|
|
97
98
|
result: [],
|
|
99
|
+
inputs: {},
|
|
98
100
|
loading: false,
|
|
99
101
|
page: 0,
|
|
100
102
|
newChange: { row: 0, column: '', value: undefined },
|
|
@@ -414,6 +416,7 @@ $: hideInsert = resolvedConfig.hideInsert;
|
|
|
414
416
|
bind:this={deleteRow}
|
|
415
417
|
/>
|
|
416
418
|
{/if}
|
|
419
|
+
|
|
417
420
|
<UpdateCell {id} bind:this={updateCell} />
|
|
418
421
|
{#if render}
|
|
419
422
|
<DbExplorerCount
|
|
@@ -484,6 +487,7 @@ $: hideInsert = resolvedConfig.hideInsert;
|
|
|
484
487
|
containerHeight={componentContainerHeight - (buttonContainerHeight ?? 0)}
|
|
485
488
|
on:update={onUpdate}
|
|
486
489
|
on:delete={onDelete}
|
|
490
|
+
{actions}
|
|
487
491
|
/>
|
|
488
492
|
{/key}
|
|
489
493
|
{/if}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
2
|
import type { ComponentCustomCSS, RichConfigurations } from '../../../types';
|
|
3
|
+
import { type TableAction } from '../../../editor/component';
|
|
3
4
|
declare const __propDef: {
|
|
4
5
|
props: {
|
|
5
6
|
id: string;
|
|
@@ -7,6 +8,7 @@ declare const __propDef: {
|
|
|
7
8
|
customCss?: ComponentCustomCSS<'dbexplorercomponent'> | undefined;
|
|
8
9
|
render: boolean;
|
|
9
10
|
initializing?: boolean | undefined;
|
|
11
|
+
actions?: TableAction[] | undefined;
|
|
10
12
|
};
|
|
11
13
|
events: {
|
|
12
14
|
[evt: string]: CustomEvent<any>;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Preview } from '../../../../../../gen';
|
|
2
1
|
import { buildParameters } from '../utils';
|
|
3
2
|
import { getLanguageByResourceType, buildVisibleFieldList } from '../utils';
|
|
4
3
|
function makeCountQuery(dbType, table, whereClause = undefined, columnDefs) {
|
|
@@ -89,7 +88,7 @@ function makeCountQuery(dbType, table, whereClause = undefined, columnDefs) {
|
|
|
89
88
|
query += quicksearchCondition;
|
|
90
89
|
}
|
|
91
90
|
if (!whereClause &&
|
|
92
|
-
(dbType ===
|
|
91
|
+
(dbType === 'mysql' ||
|
|
93
92
|
dbType === 'postgresql' ||
|
|
94
93
|
dbType === 'snowflake' ||
|
|
95
94
|
dbType === 'bigquery')) {
|
|
@@ -1,32 +1,40 @@
|
|
|
1
1
|
import { getLanguageByResourceType, buildParameters } from '../utils';
|
|
2
2
|
function deleteWithAllValues(table, columns, dbType) {
|
|
3
|
-
let query = buildParameters(columns, dbType);
|
|
3
|
+
let query = buildParameters(dbType === 'snowflake' ? columns.flatMap((c) => [c, c]) : columns, dbType);
|
|
4
4
|
switch (dbType) {
|
|
5
5
|
case 'postgresql': {
|
|
6
6
|
const conditions = columns
|
|
7
|
-
.map((c, i) =>
|
|
8
|
-
.join('
|
|
9
|
-
query += `\nDELETE FROM ${table}
|
|
7
|
+
.map((c, i) => `($${i + 1}::${c.datatype} IS NULL AND ${c.field} IS NULL OR ${c.field} = $${i + 1}::${c.datatype})`)
|
|
8
|
+
.join('\n AND ');
|
|
9
|
+
query += `\nDELETE FROM ${table} \nWHERE ${conditions} RETURNING 1;`;
|
|
10
10
|
return query;
|
|
11
11
|
}
|
|
12
12
|
case 'mysql': {
|
|
13
|
-
const conditions = columns
|
|
14
|
-
|
|
13
|
+
const conditions = columns
|
|
14
|
+
.map((c) => `(:${c.field} IS NULL AND ${c.field} IS NULL OR ${c.field} = :${c.field})`)
|
|
15
|
+
.join('\n AND ');
|
|
16
|
+
query += `\nDELETE FROM ${table} \nWHERE ${conditions}`;
|
|
15
17
|
return query;
|
|
16
18
|
}
|
|
17
19
|
case 'ms_sql_server': {
|
|
18
|
-
const conditions = columns
|
|
19
|
-
|
|
20
|
+
const conditions = columns
|
|
21
|
+
.map((c, i) => `(@p${i + 1} IS NULL AND ${c.field} IS NULL OR ${c.field} = @p${i + 1})`)
|
|
22
|
+
.join('\n AND ');
|
|
23
|
+
query += `\nDELETE FROM ${table} \nWHERE ${conditions}`;
|
|
20
24
|
return query;
|
|
21
25
|
}
|
|
22
26
|
case 'snowflake': {
|
|
23
|
-
const conditions = columns
|
|
24
|
-
|
|
27
|
+
const conditions = columns
|
|
28
|
+
.map((c, i) => `(? = 'null' AND ${c.field} IS NULL OR ${c.field} = ?)`)
|
|
29
|
+
.join('\n AND ');
|
|
30
|
+
query += `\nDELETE FROM ${table} \nWHERE ${conditions}`;
|
|
25
31
|
return query;
|
|
26
32
|
}
|
|
27
33
|
case 'bigquery': {
|
|
28
|
-
const conditions = columns
|
|
29
|
-
|
|
34
|
+
const conditions = columns
|
|
35
|
+
.map((c, i) => `(CAST(@${c.field} AS STRING) = 'null' AND ${c.field} IS NULL OR ${c.field} = @${c.field})`)
|
|
36
|
+
.join('\n AND ');
|
|
37
|
+
query += `\nDELETE FROM ${table} \nWHERE ${conditions}`;
|
|
30
38
|
return query;
|
|
31
39
|
}
|
|
32
40
|
default:
|
|
@@ -5,35 +5,43 @@ function updateWithAllValues(table, column, columns, dbType) {
|
|
|
5
5
|
field: 'value_to_update',
|
|
6
6
|
datatype: column.datatype
|
|
7
7
|
},
|
|
8
|
-
...columns
|
|
8
|
+
...(dbType === 'snowflake' ? columns.flatMap((c) => [c, c]) : columns)
|
|
9
9
|
], dbType);
|
|
10
10
|
query += `\n`;
|
|
11
11
|
switch (dbType) {
|
|
12
12
|
case 'postgresql': {
|
|
13
13
|
const conditions = columns
|
|
14
|
-
.map((c, i) =>
|
|
15
|
-
.join('
|
|
16
|
-
query += `\nUPDATE ${table} SET ${column.field} = $1
|
|
14
|
+
.map((c, i) => `($${i + 2}::${c.datatype} IS NULL AND ${c.field} IS NULL OR ${c.field} = $${i + 2}::${c.datatype})`)
|
|
15
|
+
.join('\n AND ');
|
|
16
|
+
query += `\nUPDATE ${table} SET ${column.field} = $1::${column.datatype} \nWHERE ${conditions} RETURNING 1`;
|
|
17
17
|
return query;
|
|
18
18
|
}
|
|
19
19
|
case 'mysql': {
|
|
20
|
-
const conditions = columns
|
|
21
|
-
|
|
20
|
+
const conditions = columns
|
|
21
|
+
.map((c) => `(:${c.field} IS NULL AND ${c.field} IS NULL OR ${c.field} = :${c.field})`)
|
|
22
|
+
.join('\n AND ');
|
|
23
|
+
query += `\nUPDATE ${table} SET ${column.field} = :value_to_update \nWHERE ${conditions}`;
|
|
22
24
|
return query;
|
|
23
25
|
}
|
|
24
26
|
case 'ms_sql_server': {
|
|
25
|
-
const conditions = columns
|
|
26
|
-
|
|
27
|
+
const conditions = columns
|
|
28
|
+
.map((c, i) => `(@p${i + 2} IS NULL AND ${c.field} IS NULL OR ${c.field} = @p${i + 2})`)
|
|
29
|
+
.join('\n AND ');
|
|
30
|
+
query += `\nUPDATE ${table} SET ${column.field} = @p1 \nWHERE ${conditions}`;
|
|
27
31
|
return query;
|
|
28
32
|
}
|
|
29
33
|
case 'snowflake': {
|
|
30
|
-
const conditions = columns
|
|
31
|
-
|
|
34
|
+
const conditions = columns
|
|
35
|
+
.map((c, i) => `(? = 'null' AND ${c.field} IS NULL OR ${c.field} = ?)`)
|
|
36
|
+
.join('\n AND ');
|
|
37
|
+
query += `\nUPDATE ${table} SET ${column.field} = ? \nWHERE ${conditions}`;
|
|
32
38
|
return query;
|
|
33
39
|
}
|
|
34
40
|
case 'bigquery': {
|
|
35
|
-
const conditions = columns
|
|
36
|
-
|
|
41
|
+
const conditions = columns
|
|
42
|
+
.map((c, i) => `(CAST(@${c.field} AS STRING) = 'null' AND ${c.field} IS NULL OR ${c.field} = @${c.field})`)
|
|
43
|
+
.join('\n AND ');
|
|
44
|
+
query += `\nUPDATE ${table} SET ${column.field} = @value_to_update \nWHERE ${conditions}`;
|
|
37
45
|
return query;
|
|
38
46
|
}
|
|
39
47
|
default:
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Preview } from '../../../../../gen';
|
|
1
2
|
import type { DBSchema, DBSchemas, SQLSchema } from '../../../../../stores';
|
|
2
3
|
import { type IntrospectionQuery } from 'graphql';
|
|
3
4
|
export declare enum ColumnIdentity {
|
|
@@ -75,7 +76,7 @@ export declare function formatGraphqlSchema(schema: IntrospectionQuery): string;
|
|
|
75
76
|
export declare function getFieldType(type: string, databaseType: DbType): "number" | "text" | "date" | "checkbox";
|
|
76
77
|
export type DbType = 'mysql' | 'ms_sql_server' | 'postgresql' | 'snowflake' | 'bigquery';
|
|
77
78
|
export declare function buildVisibleFieldList(columnDefs: ColumnDef[], dbType: DbType): string[];
|
|
78
|
-
export declare function getLanguageByResourceType(name: string):
|
|
79
|
+
export declare function getLanguageByResourceType(name: string): Preview['language'];
|
|
79
80
|
export declare function buildParameters(columns: Array<{
|
|
80
81
|
field: string;
|
|
81
82
|
datatype: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { JobService,
|
|
1
|
+
import { JobService, ResourceService } from '../../../../../gen';
|
|
2
2
|
import { buildClientSchema, getIntrospectionQuery, printSchema } from 'graphql';
|
|
3
3
|
import { tryEvery } from '../../../../../utils';
|
|
4
4
|
import { stringifySchema } from '../../../../copilot/lib';
|
|
@@ -14,10 +14,10 @@ export async function loadTableMetaData(resource, workspace, table, resourceType
|
|
|
14
14
|
}
|
|
15
15
|
let code = '';
|
|
16
16
|
if (resourceType === 'mysql') {
|
|
17
|
-
const resourceObj = await ResourceService.getResourceValue({
|
|
17
|
+
const resourceObj = (await ResourceService.getResourceValue({
|
|
18
18
|
workspace,
|
|
19
19
|
path: resource.split(':')[1]
|
|
20
|
-
});
|
|
20
|
+
}));
|
|
21
21
|
code = `
|
|
22
22
|
SELECT
|
|
23
23
|
COLUMN_NAME as field,
|
|
@@ -135,10 +135,10 @@ order by c.ORDINAL_POSITION;`;
|
|
|
135
135
|
}
|
|
136
136
|
});
|
|
137
137
|
await new Promise((resolve) => setTimeout(resolve, 3000));
|
|
138
|
-
const testResult = await JobService.getCompletedJob({
|
|
138
|
+
const testResult = (await JobService.getCompletedJob({
|
|
139
139
|
workspace: workspace,
|
|
140
140
|
id: job
|
|
141
|
-
});
|
|
141
|
+
}));
|
|
142
142
|
if (testResult.success) {
|
|
143
143
|
attempts = maxRetries;
|
|
144
144
|
if (resourceType === 'ms_sql_server') {
|
|
@@ -379,7 +379,8 @@ export async function getDbSchemas(resourceType, resourcePath, workspace, dbSche
|
|
|
379
379
|
};
|
|
380
380
|
}
|
|
381
381
|
else {
|
|
382
|
-
if (typeof testResult.result !== 'object' ||
|
|
382
|
+
if (typeof testResult.result !== 'object' ||
|
|
383
|
+
!('__schema' in (testResult?.result ?? {}))) {
|
|
383
384
|
console.error('Invalid GraphQL schema');
|
|
384
385
|
errorCallback('Invalid GraphQL schema');
|
|
385
386
|
}
|
|
@@ -538,11 +539,11 @@ export function buildVisibleFieldList(columnDefs, dbType) {
|
|
|
538
539
|
}
|
|
539
540
|
export function getLanguageByResourceType(name) {
|
|
540
541
|
const language = {
|
|
541
|
-
postgresql:
|
|
542
|
-
mysql:
|
|
543
|
-
ms_sql_server:
|
|
544
|
-
snowflake:
|
|
545
|
-
bigquery:
|
|
542
|
+
postgresql: 'postgresql',
|
|
543
|
+
mysql: 'mysql',
|
|
544
|
+
ms_sql_server: 'mssql',
|
|
545
|
+
snowflake: 'snowflake',
|
|
546
|
+
bigquery: 'bigquery'
|
|
546
547
|
};
|
|
547
548
|
return language[name];
|
|
548
549
|
}
|
|
@@ -586,10 +587,10 @@ export async function getTablesByResource(schema, dbType, resourcePath, workspac
|
|
|
586
587
|
return paths;
|
|
587
588
|
}
|
|
588
589
|
case 'mysql': {
|
|
589
|
-
const resourceObj = await ResourceService.getResourceValue({
|
|
590
|
+
const resourceObj = (await ResourceService.getResourceValue({
|
|
590
591
|
workspace,
|
|
591
592
|
path: resourcePath
|
|
592
|
-
});
|
|
593
|
+
}));
|
|
593
594
|
const paths = [];
|
|
594
595
|
for (const key in s?.schema) {
|
|
595
596
|
for (const subKey in s.schema[key]) {
|
|
@@ -11,6 +11,7 @@ import ResolveStyle from '../../helpers/ResolveStyle.svelte';
|
|
|
11
11
|
import { Button } from '../../../../common';
|
|
12
12
|
import { cellRendererFactory } from './utils';
|
|
13
13
|
import { Trash2 } from 'lucide-svelte';
|
|
14
|
+
import AppAggridTableActions from './AppAggridTableActions.svelte';
|
|
14
15
|
// import 'ag-grid-community/dist/styles/ag-theme-alpine-dark.css'
|
|
15
16
|
export let id;
|
|
16
17
|
export let customCss = undefined;
|
|
@@ -20,7 +21,10 @@ export let datasource;
|
|
|
20
21
|
export let state = undefined;
|
|
21
22
|
export let outputs;
|
|
22
23
|
export let allowDelete;
|
|
23
|
-
|
|
24
|
+
export let actions = [];
|
|
25
|
+
let inputs = {};
|
|
26
|
+
const context = getContext('AppViewerContext');
|
|
27
|
+
const { app, selectedComponent, componentControl, darkMode } = context;
|
|
24
28
|
let css = initCss($app.css?.aggridcomponent, customCss);
|
|
25
29
|
// let result: any[] | undefined = undefined
|
|
26
30
|
// $: result && setValues()
|
|
@@ -95,6 +99,51 @@ function onCellValueChanged(event) {
|
|
|
95
99
|
let api = undefined;
|
|
96
100
|
let eGui;
|
|
97
101
|
$: eGui && mountGrid();
|
|
102
|
+
function refreshActions(actions) {
|
|
103
|
+
if (!deepEqual(actions, lastActions)) {
|
|
104
|
+
lastActions = [...actions];
|
|
105
|
+
updateOptions();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
let lastActions = undefined;
|
|
109
|
+
$: actions && refreshActions(actions);
|
|
110
|
+
const tableActionsFactory = cellRendererFactory((c, p) => {
|
|
111
|
+
const rowIndex = p.node.rowIndex ?? 0;
|
|
112
|
+
const row = p.data;
|
|
113
|
+
new AppAggridTableActions({
|
|
114
|
+
target: c.eGui,
|
|
115
|
+
props: {
|
|
116
|
+
id: id,
|
|
117
|
+
actions,
|
|
118
|
+
rowIndex,
|
|
119
|
+
row,
|
|
120
|
+
render: true,
|
|
121
|
+
wrapActions: resolvedConfig.wrapActions,
|
|
122
|
+
onSet: (id, value) => {
|
|
123
|
+
if (!inputs[id]) {
|
|
124
|
+
inputs[id] = { [rowIndex]: value };
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
inputs[id] = { ...inputs[id], [rowIndex]: value };
|
|
128
|
+
}
|
|
129
|
+
outputs?.inputs.set(inputs, true);
|
|
130
|
+
},
|
|
131
|
+
onRemove: (id) => {
|
|
132
|
+
if (inputs?.[id] == undefined) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
delete inputs[id][rowIndex];
|
|
136
|
+
inputs[id] = { ...inputs[id] };
|
|
137
|
+
if (Object.keys(inputs?.[id] ?? {}).length == 0) {
|
|
138
|
+
delete inputs[id];
|
|
139
|
+
inputs = { ...inputs };
|
|
140
|
+
}
|
|
141
|
+
outputs?.inputs.set(inputs, true);
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
context: new Map([['AppViewerContext', context]])
|
|
145
|
+
});
|
|
146
|
+
});
|
|
98
147
|
function transformColumnDefs(columnDefs) {
|
|
99
148
|
const { isValid, errors } = validateColumnDefs(columnDefs);
|
|
100
149
|
if (!isValid) {
|
|
@@ -132,6 +181,17 @@ function transformColumnDefs(columnDefs) {
|
|
|
132
181
|
width: 100
|
|
133
182
|
});
|
|
134
183
|
}
|
|
184
|
+
if (actions && actions.length > 0) {
|
|
185
|
+
r.push({
|
|
186
|
+
headerName: 'Actions',
|
|
187
|
+
cellRenderer: tableActionsFactory,
|
|
188
|
+
autoHeight: true,
|
|
189
|
+
cellStyle: { textAlign: 'center' },
|
|
190
|
+
cellClass: 'grid-cell-centered',
|
|
191
|
+
lockPosition: 'right',
|
|
192
|
+
...(!resolvedConfig?.wrapActions ? { minWidth: 130 * actions?.length } : {})
|
|
193
|
+
});
|
|
194
|
+
}
|
|
135
195
|
return r;
|
|
136
196
|
}
|
|
137
197
|
let firstRow = 0;
|
|
@@ -165,6 +225,13 @@ function mountGrid() {
|
|
|
165
225
|
cacheBlockSize: 100,
|
|
166
226
|
cacheOverflowSize: 10,
|
|
167
227
|
maxBlocksInCache: 20,
|
|
228
|
+
...(resolvedConfig?.wrapActions
|
|
229
|
+
? {
|
|
230
|
+
rowHeight: Math.max(44, actions.length * 48)
|
|
231
|
+
}
|
|
232
|
+
: {
|
|
233
|
+
rowHeight: 44
|
|
234
|
+
}),
|
|
168
235
|
suppressColumnMoveAnimation: true,
|
|
169
236
|
rowSelection: resolvedConfig?.multipleSelectable ? 'multiple' : 'single',
|
|
170
237
|
rowMultiSelectWithClick: resolvedConfig?.multipleSelectable
|
|
@@ -240,6 +307,13 @@ function updateOptions() {
|
|
|
240
307
|
editable: resolvedConfig?.allEditable,
|
|
241
308
|
onCellValueChanged
|
|
242
309
|
},
|
|
310
|
+
...(resolvedConfig?.wrapActions
|
|
311
|
+
? {
|
|
312
|
+
rowHeight: Math.max(44, actions.length * 48)
|
|
313
|
+
}
|
|
314
|
+
: {
|
|
315
|
+
rowHeight: 44
|
|
316
|
+
}),
|
|
243
317
|
rowSelection: resolvedConfig?.multipleSelectable ? 'multiple' : 'single',
|
|
244
318
|
rowMultiSelectWithClick: resolvedConfig?.multipleSelectable
|
|
245
319
|
? resolvedConfig.rowMultiselectWithClick
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
2
|
import { type IDatasource } from 'ag-grid-community';
|
|
3
3
|
import type { ComponentCustomCSS } from '../../../types';
|
|
4
|
-
import type { components } from '../../../editor/component';
|
|
4
|
+
import type { TableAction, components } from '../../../editor/component';
|
|
5
5
|
import 'ag-grid-community/styles/ag-grid.css';
|
|
6
6
|
import 'ag-grid-community/styles/ag-theme-alpine.css';
|
|
7
7
|
import type { Output } from '../../../rx';
|
|
@@ -16,6 +16,7 @@ declare const __propDef: {
|
|
|
16
16
|
state?: any;
|
|
17
17
|
outputs: Record<string, Output<any>>;
|
|
18
18
|
allowDelete: boolean;
|
|
19
|
+
actions?: TableAction[] | undefined;
|
|
19
20
|
clearRows?: (() => void) | undefined;
|
|
20
21
|
};
|
|
21
22
|
events: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script>import { GridApi, createGrid } from 'ag-grid-community';
|
|
2
2
|
import { isObject, sendUserToast } from '../../../../../utils';
|
|
3
|
-
import {
|
|
3
|
+
import { getContext, onDestroy } from 'svelte';
|
|
4
4
|
import RunnableWrapper from '../../helpers/RunnableWrapper.svelte';
|
|
5
5
|
import { initConfig, initOutput } from '../../../editor/appUtils';
|
|
6
6
|
import { components } from '../../../editor/component';
|
|
@@ -14,6 +14,7 @@ import { twMerge } from 'tailwind-merge';
|
|
|
14
14
|
import { initCss } from '../../../utils';
|
|
15
15
|
import ResolveStyle from '../../helpers/ResolveStyle.svelte';
|
|
16
16
|
import AppAggridTableActions from './AppAggridTableActions.svelte';
|
|
17
|
+
import { cellRendererFactory } from './utils';
|
|
17
18
|
// import 'ag-grid-community/dist/styles/ag-theme-alpine-dark.css'
|
|
18
19
|
export let id;
|
|
19
20
|
export let componentInput;
|
|
@@ -125,33 +126,20 @@ let api = undefined;
|
|
|
125
126
|
let eGui;
|
|
126
127
|
let state = undefined;
|
|
127
128
|
$: loaded && eGui && mountGrid();
|
|
128
|
-
const cachedDivs = new Map();
|
|
129
129
|
function refreshActions(actions) {
|
|
130
130
|
if (!deepEqual(actions, lastActions)) {
|
|
131
131
|
lastActions = [...actions];
|
|
132
|
-
cachedDivs.forEach((cachedDiv) => {
|
|
133
|
-
cachedDiv.svelteComponent.$destroy();
|
|
134
|
-
cachedDiv.div.remove();
|
|
135
|
-
});
|
|
136
|
-
cachedDivs.clear();
|
|
137
132
|
updateOptions();
|
|
138
133
|
}
|
|
139
134
|
}
|
|
140
135
|
let lastActions = undefined;
|
|
141
136
|
$: actions && refreshActions(actions);
|
|
142
137
|
let inputs = {};
|
|
143
|
-
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
if (cachedDivs.has(rowIndex)) {
|
|
149
|
-
return cachedDivs.get(rowIndex)?.div;
|
|
150
|
-
}
|
|
151
|
-
const div = document.createElement('div');
|
|
152
|
-
div.classList.add('flex', 'flex-row', 'items-center', 'w-full', 'h-full');
|
|
153
|
-
const svelteComponent = new AppAggridTableActions({
|
|
154
|
-
target: div,
|
|
138
|
+
const tableActionsFactory = cellRendererFactory((c, p) => {
|
|
139
|
+
const rowIndex = p.node.rowIndex ?? 0;
|
|
140
|
+
const row = p.data;
|
|
141
|
+
new AppAggridTableActions({
|
|
142
|
+
target: c.eGui,
|
|
155
143
|
props: {
|
|
156
144
|
id: id,
|
|
157
145
|
actions,
|
|
@@ -183,13 +171,7 @@ function actionRenderer(params) {
|
|
|
183
171
|
},
|
|
184
172
|
context: new Map([['AppViewerContext', context]])
|
|
185
173
|
});
|
|
186
|
-
|
|
187
|
-
div,
|
|
188
|
-
actions,
|
|
189
|
-
svelteComponent
|
|
190
|
-
});
|
|
191
|
-
return div;
|
|
192
|
-
}
|
|
174
|
+
});
|
|
193
175
|
function mountGrid() {
|
|
194
176
|
if (eGui) {
|
|
195
177
|
try {
|
|
@@ -200,7 +182,7 @@ function mountGrid() {
|
|
|
200
182
|
if (actions && actions.length > 0) {
|
|
201
183
|
columnDefs.push({
|
|
202
184
|
headerName: 'Actions',
|
|
203
|
-
cellRenderer:
|
|
185
|
+
cellRenderer: tableActionsFactory,
|
|
204
186
|
autoHeight: true,
|
|
205
187
|
cellStyle: { textAlign: 'center' },
|
|
206
188
|
cellClass: 'grid-cell-centered',
|
|
@@ -311,7 +293,7 @@ function updateOptions() {
|
|
|
311
293
|
if (actions && actions.length > 0) {
|
|
312
294
|
columnDefs.push({
|
|
313
295
|
headerName: 'Actions',
|
|
314
|
-
cellRenderer:
|
|
296
|
+
cellRenderer: tableActionsFactory,
|
|
315
297
|
autoHeight: true,
|
|
316
298
|
cellStyle: { textAlign: 'center' },
|
|
317
299
|
cellClass: 'grid-cell-centered',
|
|
@@ -24,8 +24,8 @@ const { selectedComponent, hoverStore, mode, connectingInput } = getContext('App
|
|
|
24
24
|
<RowWrapper value={row} index={rowIndex} {onSet} {onRemove}>
|
|
25
25
|
<div
|
|
26
26
|
class={twMerge(
|
|
27
|
-
'flex flex-row justify-center items-center gap-4 h-full px-4 py-1',
|
|
28
|
-
|
|
27
|
+
'flex flex-row justify-center items-center gap-4 h-full px-4 py-1 w-full',
|
|
28
|
+
wrapActions ? 'flex-wrap' : ''
|
|
29
29
|
)}
|
|
30
30
|
>
|
|
31
31
|
{#each actions as action, actionIndex}
|
|
@@ -146,7 +146,7 @@ async function handleAfterIcon() {
|
|
|
146
146
|
<input
|
|
147
147
|
class={twMerge(
|
|
148
148
|
classInput,
|
|
149
|
-
resolvedConfig.beforeIcon
|
|
149
|
+
resolvedConfig.beforeIcon ? '!pl-8' : '',
|
|
150
150
|
resolvedConfig.afterIcon ? '!pr-8' : ''
|
|
151
151
|
)}
|
|
152
152
|
style={css?.input?.style ?? ''}
|