windmill-components 1.339.2 → 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 +0 -12
- package/package/ata/index.js +1 -0
- package/package/autosize.js +1 -1
- package/package/common.d.ts +6 -2
- package/package/common.js +2 -1
- package/package/components/AppConnectDrawer.svelte +1 -1
- package/package/components/AppConnectInner.svelte +9 -15
- package/package/components/ArgEnum.svelte +4 -1
- package/package/components/ArgEnum.svelte.d.ts +3 -1
- package/package/components/ArgInput.svelte +184 -141
- package/package/components/ArgInput.svelte.d.ts +7 -7
- package/package/components/ArrayTypeNarrowing.svelte +29 -27
- package/package/components/CenteredPage.svelte +2 -2
- package/package/components/DefaultTagsInner.svelte +1 -1
- package/package/components/Dev.svelte +2 -1
- package/package/components/DiffDrawer.svelte +1 -2
- package/package/components/DisplayResult.svelte +293 -233
- package/package/components/DurationMs.svelte +11 -3
- package/package/components/DurationMs.svelte.d.ts +2 -0
- package/package/components/EditableSchemaForm.svelte +447 -103
- package/package/components/EditableSchemaForm.svelte.d.ts +16 -6
- package/package/components/Editor.svelte +3 -1
- package/package/components/EditorBar.svelte +2 -2
- package/package/components/FlowBuilder.svelte +14 -6
- package/package/components/FlowGraphViewer.svelte +1 -1
- package/package/components/FlowGraphViewerStep.svelte +37 -9
- package/package/components/FlowGraphViewerStep.svelte.d.ts +2 -7
- package/package/components/FlowJobResult.svelte +1 -3
- package/package/components/FlowMetadata.svelte +1 -1
- package/package/components/FlowPreviewContent.svelte +5 -3
- package/package/components/FlowStatusViewer.svelte +4 -0
- package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
- package/package/components/FlowStatusViewerInner.svelte +50 -17
- package/package/components/FlowStatusViewerInner.svelte.d.ts +3 -0
- package/package/components/FlowTimeline.svelte +13 -0
- package/package/components/FlowTimeline.svelte.d.ts +2 -0
- package/package/components/FlowViewer.svelte +0 -5
- package/package/components/FolderEditor.svelte +25 -0
- package/package/components/FolderEditor.svelte.d.ts +2 -0
- package/package/components/GroupEditor.svelte +36 -91
- package/package/components/GroupInfo.svelte +1 -1
- package/package/components/InputTransformForm.svelte +16 -1
- package/package/components/InputTransformForm.svelte.d.ts +2 -0
- package/package/components/InputTransformSchemaForm.svelte +6 -0
- package/package/components/InputTransformSchemaForm.svelte.d.ts +2 -0
- package/package/components/InstanceSettings.svelte +36 -3
- package/package/components/InstanceSettings.svelte.d.ts +2 -0
- package/package/components/JobStatus.svelte +2 -2
- package/package/components/LightweightArgInput.svelte +66 -14
- package/package/components/LightweightArgInput.svelte.d.ts +3 -2
- package/package/components/LightweightSchemaForm.svelte +24 -15
- package/package/components/ModulePreviewForm.svelte +1 -0
- package/package/components/NumberTypeNarrowing.svelte +71 -44
- package/package/components/ObjectResourceInput.svelte +2 -0
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/ObjectTypeNarrowing.svelte +0 -1
- package/package/components/ParqetCsvTableRenderer.svelte +181 -0
- package/package/components/ParqetCsvTableRenderer.svelte.d.ts +21 -0
- package/package/components/Path.svelte +2 -2
- package/package/components/PersistentScriptDrawer.svelte +6 -3
- package/package/components/Range.svelte +88 -286
- package/package/components/Range.svelte.d.ts +9 -23
- package/package/components/ResourceEditor.svelte +138 -141
- package/package/components/ResourceEditor.svelte.d.ts +9 -2
- package/package/components/ResourceEditorDrawer.svelte +45 -0
- package/package/components/ResourceEditorDrawer.svelte.d.ts +21 -0
- package/package/components/ResourcePicker.svelte +5 -2
- package/package/components/ResourceTypePicker.svelte +88 -36
- package/package/components/RunChart.svelte +55 -5
- package/package/components/RunChart.svelte.d.ts +1 -0
- package/package/components/RunForm.svelte +1 -1
- package/package/components/S3FilePicker.svelte +20 -8
- package/package/components/S3FilePicker.svelte.d.ts +2 -0
- package/package/components/ScheduleEditorInner.svelte +40 -37
- package/package/components/SchemaForm.svelte +192 -103
- package/package/components/SchemaForm.svelte.d.ts +16 -2
- package/package/components/ScriptBuilder.svelte +13 -8
- package/package/components/ScriptSchedules.svelte +11 -8
- package/package/components/ScriptSchema.svelte +3 -21
- package/package/components/ScriptVersionHistory.svelte +1 -1
- package/package/components/StringTypeNarrowing.svelte +217 -174
- package/package/components/StringTypeNarrowing.svelte.d.ts +5 -1
- package/package/components/Toggle.svelte +6 -3
- package/package/components/Toggle.svelte.d.ts +1 -0
- package/package/components/UserSettings.svelte +24 -1
- package/package/components/WorkspaceGroup.svelte +11 -13
- package/package/components/apps/components/buttons/AppButton.svelte +2 -0
- package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
- package/package/components/apps/components/display/AppFlowStatusComponent.svelte +13 -70
- package/package/components/apps/components/display/AppFlowStatusComponent.svelte.d.ts +1 -9
- package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +21 -8
- package/package/components/apps/components/display/AppJobIdFlowStatus.svelte.d.ts +1 -3
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte +19 -7
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte.d.ts +1 -3
- package/package/components/apps/components/display/AppLogsComponent.svelte +13 -70
- package/package/components/apps/components/display/AppLogsComponent.svelte.d.ts +1 -9
- package/package/components/apps/components/display/charts/AppAgCharts.svelte +25 -15
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +2 -0
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte +1 -1
- package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +18 -8
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -0
- package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -0
- package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
- package/package/components/apps/components/helpers/eval.js +1 -36
- package/package/components/apps/components/inputs/AppFileInput.svelte +3 -1
- package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppS3FileInput.svelte +3 -1
- package/package/components/apps/components/inputs/AppS3FileInput.svelte.d.ts +1 -0
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte +3 -1
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte.d.ts +1 -0
- package/package/components/apps/components/layout/AppStepper.svelte +5 -1
- package/package/components/apps/components/layout/AppStepper.svelte.d.ts +2 -0
- package/package/components/apps/components/layout/AppTabs.svelte +3 -1
- package/package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -0
- package/package/components/apps/editor/AppEditorHeader.svelte +6 -7
- package/package/components/apps/editor/SettingsPanel.svelte +13 -3
- package/package/components/apps/editor/component/Component.svelte +8 -16
- package/package/components/apps/editor/component/components.d.ts +11 -2
- package/package/components/apps/editor/component/components.js +2 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +5 -34
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +3 -41
- package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte +33 -0
- package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte.d.ts +19 -0
- package/package/components/apps/editor/settingsPanel/EventHandlers.svelte +103 -0
- package/package/components/apps/editor/settingsPanel/EventHandlers.svelte.d.ts +18 -0
- package/package/components/apps/editor/settingsPanel/GridCondition.svelte +21 -45
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +3 -23
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +5 -1
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +0 -2
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +0 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +7 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +7 -14
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +0 -1
- package/package/components/common/button/ButtonDropdown.svelte +1 -0
- package/package/components/common/drawer/Disposable.svelte +3 -2
- package/package/components/common/drawer/Disposable.svelte.d.ts +1 -0
- package/package/components/common/drawer/Drawer.svelte +12 -2
- package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
- package/package/components/common/fileDownload/FileDownload.svelte +4 -2
- package/package/components/common/fileUpload/FileUpload.svelte +4 -3
- package/package/components/common/modal/Modal.svelte +4 -1
- package/package/components/common/modal/Modal.svelte.d.ts +1 -0
- package/package/components/common/popup/Popup.svelte +1 -1
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +4 -1
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
- package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte +79 -0
- package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte.d.ts +18 -0
- package/package/components/flows/content/FlowEditorPanel.svelte +16 -2
- package/package/components/flows/content/FlowInput.svelte +63 -53
- package/package/components/flows/content/FlowModuleComponent.svelte +26 -3
- package/package/components/flows/content/FlowModuleScript.svelte +40 -1
- package/package/components/flows/content/FlowModuleScript.svelte.d.ts +2 -0
- package/package/components/flows/content/FlowModuleSuspend.svelte +99 -59
- package/package/components/flows/content/FlowModuleWrapper.svelte +16 -1
- package/package/components/flows/content/FlowSchedules.svelte +11 -8
- package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -4
- package/package/components/flows/flowStateUtils.js +4 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +16 -1
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +6 -1
- package/package/components/flows/types.d.ts +4 -0
- package/package/components/flows/utils.d.ts +5 -1
- package/package/components/flows/utils.js +36 -0
- package/package/components/graph/FlowGraph.svelte +5 -2
- package/package/components/graph/FlowGraph.svelte.d.ts +2 -0
- package/package/components/graph/svelvet/container/models/index.d.ts +0 -5
- package/package/components/graph/svelvet/container/models/index.js +1 -1
- package/package/components/graph/svelvet/container/views/Svelvet.svelte +2 -5
- package/package/components/graph/util.d.ts +1 -37
- package/package/components/graph/util.js +0 -34
- package/package/components/instanceSettings.js +2 -1
- package/package/components/jobs/JobPreview.svelte +1 -1
- package/package/components/multiselect/MultiSelect.svelte +4 -3
- package/package/components/multiselect/MultiSelect.svelte.d.ts +1 -0
- package/package/components/multiselect/MultiSelectWrapper.svelte +89 -0
- package/package/components/multiselect/MultiSelectWrapper.svelte.d.ts +20 -0
- package/package/components/propertyPicker/ObjectViewer.svelte +6 -2
- package/package/components/runs/JobPreview.svelte +5 -1
- package/package/components/runs/RunRow.svelte +22 -3
- package/package/components/runs/RunRow.svelte.d.ts +2 -1
- package/package/components/runs/RunsTable.svelte +22 -9
- package/package/components/runs/RunsTable.svelte.d.ts +2 -1
- package/package/components/schema/AddProperty.svelte +149 -0
- package/package/components/schema/AddProperty.svelte.d.ts +23 -0
- package/package/components/schema/AddPropertyForm.svelte +33 -0
- package/package/components/schema/AddPropertyForm.svelte.d.ts +16 -0
- package/package/components/schema/EditableSchemaDrawer.svelte +198 -0
- package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +21 -0
- package/package/components/schema/EditableSchemaWrapper.svelte +31 -0
- package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +22 -0
- package/package/components/schema/FlowPropertyEditor.svelte +393 -0
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +47 -0
- package/package/components/schema/PropertyEditor.svelte +185 -0
- package/package/components/schema/PropertyEditor.svelte.d.ts +46 -0
- package/package/components/schema/SchemaFormDND.svelte +75 -0
- package/package/components/schema/SchemaFormDND.svelte.d.ts +28 -0
- package/package/components/table/AutoDataTable.svelte +90 -104
- package/package/components/table/Cell.svelte +4 -1
- package/package/components/table/Cell.svelte.d.ts +1 -0
- package/package/components/table/DownloadCsv.svelte +30 -0
- package/package/components/table/DownloadCsv.svelte.d.ts +17 -0
- package/package/components/table/tableUtils.d.ts +8 -0
- package/package/components/table/tableUtils.js +37 -0
- package/package/consts.js +3 -1
- package/package/deno_fetch.d.ts.txt +6 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +76 -0
- package/package/gen/schemas.gen.js +76 -0
- package/package/gen/services.gen.d.ts +100 -5
- package/package/gen/services.gen.js +216 -16
- package/package/gen/types.gen.d.ts +378 -5
- package/package/inferArgSig.d.ts +10 -0
- package/package/inferArgSig.js +59 -2
- package/package/scripts.d.ts +2 -0
- package/package/scripts.js +6 -3
- package/package/utils.d.ts +4 -3
- package/package/utils.js +9 -4
- package/package/workspace_settings.d.ts +15 -0
- package/package/workspace_settings.js +81 -0
- package/package.json +16 -7
- package/package/components/ParqetTableRenderer.svelte +0 -117
- package/package/components/ParqetTableRenderer.svelte.d.ts +0 -18
- package/package/components/PropertyRow.svelte +0 -88
- package/package/components/PropertyRow.svelte.d.ts +0 -23
- package/package/components/SchemaEditor.svelte +0 -346
- package/package/components/SchemaEditor.svelte.d.ts +0 -25
- package/package/components/SchemaModal.svelte +0 -443
- package/package/components/SchemaModal.svelte.d.ts +0 -33
- package/package/components/apps/editor/settingsPanel/Recompute.svelte +0 -55
- package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +0 -20
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<script>import { createEventDispatcher } from 'svelte';
|
|
2
|
+
import { dragHandle } from '@windmill-labs/svelte-dnd-action';
|
|
3
|
+
import SchemaForm from '../SchemaForm.svelte';
|
|
4
|
+
import { GripVertical } from 'lucide-svelte';
|
|
5
|
+
import { deepEqual } from 'fast-equals';
|
|
6
|
+
export let dndType = undefined;
|
|
7
|
+
export let schema;
|
|
8
|
+
export let args = {};
|
|
9
|
+
export let prettifyHeader = false;
|
|
10
|
+
export let lightweightMode = false;
|
|
11
|
+
export let onlyMaskPassword = false;
|
|
12
|
+
export let disablePortal = false;
|
|
13
|
+
export let disabled = false;
|
|
14
|
+
const dispatch = createEventDispatcher();
|
|
15
|
+
const flipDurationMs = 200;
|
|
16
|
+
let items = computeItems();
|
|
17
|
+
let dragDisabled = true;
|
|
18
|
+
$: schema && dragDisabled && updateItems();
|
|
19
|
+
function computeItems() {
|
|
20
|
+
return ((schema?.order ?? Object.keys(schema?.properties ?? {}) ?? []).map((key) => ({
|
|
21
|
+
id: key,
|
|
22
|
+
value: key
|
|
23
|
+
})) ?? []);
|
|
24
|
+
}
|
|
25
|
+
function updateItems() {
|
|
26
|
+
const newItems = computeItems();
|
|
27
|
+
if (!deepEqual(newItems, items)) {
|
|
28
|
+
items = newItems;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function handleConsider(e) {
|
|
32
|
+
dragDisabled = false;
|
|
33
|
+
const { items: newItems } = e.detail;
|
|
34
|
+
items = newItems;
|
|
35
|
+
}
|
|
36
|
+
function handleFinalize(e) {
|
|
37
|
+
const { items: newItems } = e.detail;
|
|
38
|
+
dragDisabled = true;
|
|
39
|
+
items = newItems;
|
|
40
|
+
dispatch('reorder', items.map((item) => item.value));
|
|
41
|
+
}
|
|
42
|
+
</script>
|
|
43
|
+
|
|
44
|
+
<!-- {JSON.stringify(schema)}
|
|
45
|
+
{dragDisabled} -->
|
|
46
|
+
<!-- {JSON.stringify(items)} -->
|
|
47
|
+
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
48
|
+
<!-- svelte-ignore a11y-no-noninteractive-tabindex -->
|
|
49
|
+
<SchemaForm
|
|
50
|
+
on:click
|
|
51
|
+
on:change
|
|
52
|
+
on:reorder
|
|
53
|
+
on:consider={handleConsider}
|
|
54
|
+
on:finalize={handleFinalize}
|
|
55
|
+
{lightweightMode}
|
|
56
|
+
{args}
|
|
57
|
+
{prettifyHeader}
|
|
58
|
+
{onlyMaskPassword}
|
|
59
|
+
{disablePortal}
|
|
60
|
+
{disabled}
|
|
61
|
+
bind:schema
|
|
62
|
+
dndConfig={{
|
|
63
|
+
items,
|
|
64
|
+
flipDurationMs,
|
|
65
|
+
dropTargetStyle: {},
|
|
66
|
+
type: dndType ?? 'top-level'
|
|
67
|
+
}}
|
|
68
|
+
{items}
|
|
69
|
+
>
|
|
70
|
+
<svelte:fragment slot="actions">
|
|
71
|
+
<div class="w-4 h-8 cursor-move ml-2 handle" aria-label="drag-handle" use:dragHandle>
|
|
72
|
+
<GripVertical size={16} />
|
|
73
|
+
</div>
|
|
74
|
+
</svelte:fragment>
|
|
75
|
+
</SchemaForm>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
import type { Schema } from '../../common';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
dndType?: string | undefined;
|
|
6
|
+
schema: Schema;
|
|
7
|
+
args?: Record<string, any> | undefined;
|
|
8
|
+
prettifyHeader?: boolean | undefined;
|
|
9
|
+
lightweightMode?: boolean | undefined;
|
|
10
|
+
onlyMaskPassword?: boolean | undefined;
|
|
11
|
+
disablePortal?: boolean | undefined;
|
|
12
|
+
disabled?: boolean | undefined;
|
|
13
|
+
};
|
|
14
|
+
events: {
|
|
15
|
+
click: CustomEvent<any>;
|
|
16
|
+
change: CustomEvent<any>;
|
|
17
|
+
reorder: CustomEvent<any>;
|
|
18
|
+
} & {
|
|
19
|
+
[evt: string]: CustomEvent<any>;
|
|
20
|
+
};
|
|
21
|
+
slots: {};
|
|
22
|
+
};
|
|
23
|
+
export type SchemaFormDndProps = typeof __propDef.props;
|
|
24
|
+
export type SchemaFormDndEvents = typeof __propDef.events;
|
|
25
|
+
export type SchemaFormDndSlots = typeof __propDef.slots;
|
|
26
|
+
export default class SchemaFormDnd extends SvelteComponent<SchemaFormDndProps, SchemaFormDndEvents, SchemaFormDndSlots> {
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -4,46 +4,22 @@ import Cell from './Cell.svelte';
|
|
|
4
4
|
import DataTable from './DataTable.svelte';
|
|
5
5
|
import Head from './Head.svelte';
|
|
6
6
|
import Row from './Row.svelte';
|
|
7
|
-
import { pluralize
|
|
7
|
+
import { pluralize } from '../../utils';
|
|
8
8
|
import Badge from '../common/badge/Badge.svelte';
|
|
9
|
-
import { isEmail, isLink } from './tableUtils';
|
|
9
|
+
import { computeStructuredObjectsAndHeaders, convertJsonToCsv, isEmail, isLink } from './tableUtils';
|
|
10
10
|
import Popover from '../Popover.svelte';
|
|
11
11
|
import DarkModeObserver from '../DarkModeObserver.svelte';
|
|
12
|
-
import
|
|
13
|
-
import { Parser } from '@json2csv/plainjs';
|
|
12
|
+
import DownloadCsv from './DownloadCsv.svelte';
|
|
14
13
|
export let objects = [];
|
|
15
14
|
let currentPage = 1;
|
|
16
15
|
let perPage = 25;
|
|
17
16
|
let search = '';
|
|
18
|
-
|
|
17
|
+
let structuredObjects = [];
|
|
19
18
|
let headers = [];
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
let objs = objects.map((obj) => {
|
|
25
|
-
let rowData = obj && typeof obj == 'object' ? obj : {};
|
|
26
|
-
if (Array.isArray(rowData)) {
|
|
27
|
-
rowData = Object.fromEntries(rowData.map((x, i) => ['col' + i, x]));
|
|
28
|
-
}
|
|
29
|
-
let ks = Object.keys(rowData);
|
|
30
|
-
ks.forEach((x) => {
|
|
31
|
-
if (!hds.includes(x)) {
|
|
32
|
-
hds.push(x);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
return {
|
|
36
|
-
_id: nextId++,
|
|
37
|
-
rowData
|
|
38
|
-
};
|
|
39
|
-
});
|
|
40
|
-
headers = hds;
|
|
41
|
-
return objs;
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
headers = [];
|
|
45
|
-
return [];
|
|
46
|
-
}
|
|
19
|
+
$: recomputeObjectsAndHeaders(objects);
|
|
20
|
+
function recomputeObjectsAndHeaders(objects) {
|
|
21
|
+
;
|
|
22
|
+
[headers, structuredObjects] = computeStructuredObjectsAndHeaders(objects);
|
|
47
23
|
}
|
|
48
24
|
function adjustCurrentPage() {
|
|
49
25
|
const totalItems = objects.length;
|
|
@@ -53,32 +29,39 @@ function adjustCurrentPage() {
|
|
|
53
29
|
}
|
|
54
30
|
}
|
|
55
31
|
$: perPage && adjustCurrentPage();
|
|
56
|
-
$: data = structuredObjects
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
return 0;
|
|
63
|
-
const valA = a.rowData[activeSorting.column];
|
|
64
|
-
const valB = b.rowData[activeSorting.column];
|
|
65
|
-
const isAsc = activeSorting.direction === 'asc';
|
|
66
|
-
if (valA == undefined || valA == null) {
|
|
67
|
-
return isAsc ? -1 : 1;
|
|
68
|
-
}
|
|
69
|
-
if (valB == undefined || valB == null) {
|
|
70
|
-
return isAsc ? 1 : -1;
|
|
71
|
-
}
|
|
72
|
-
if (isAsc) {
|
|
73
|
-
return valA > valB ? 1 : -1;
|
|
32
|
+
$: data = computeData(structuredObjects, activeSorting, search);
|
|
33
|
+
let activeSorting = undefined;
|
|
34
|
+
function computeData(structuredObjects, activeSorting, search) {
|
|
35
|
+
let objects = structuredObjects;
|
|
36
|
+
if (search != undefined && search != '') {
|
|
37
|
+
objects = objects.filter((obj) => Object.values(obj.rowData).some((value) => JSON.stringify(value).toLowerCase().includes(search.toLowerCase())));
|
|
74
38
|
}
|
|
75
|
-
|
|
76
|
-
|
|
39
|
+
if (activeSorting) {
|
|
40
|
+
objects = objects.sort((a, b) => {
|
|
41
|
+
if (!activeSorting)
|
|
42
|
+
return 0;
|
|
43
|
+
const valA = a.rowData[activeSorting.column];
|
|
44
|
+
const valB = b.rowData[activeSorting.column];
|
|
45
|
+
const isAsc = activeSorting.direction === 'asc';
|
|
46
|
+
if (valA == undefined || valA == null) {
|
|
47
|
+
return isAsc ? -1 : 1;
|
|
48
|
+
}
|
|
49
|
+
if (valB == undefined || valB == null) {
|
|
50
|
+
return isAsc ? 1 : -1;
|
|
51
|
+
}
|
|
52
|
+
if (isAsc) {
|
|
53
|
+
return valA > valB ? 1 : -1;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return valA > valB ? -1 : 1;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
77
59
|
}
|
|
78
|
-
|
|
60
|
+
return objects;
|
|
61
|
+
}
|
|
79
62
|
$: slicedData = data.slice((currentPage - 1) * perPage, currentPage * perPage);
|
|
80
|
-
let activeSorting = undefined;
|
|
81
63
|
let selection = [];
|
|
64
|
+
let colSelection = [];
|
|
82
65
|
// Function to handle individual row checkbox change
|
|
83
66
|
function handleCheckboxChange(rowId) {
|
|
84
67
|
if (selection.includes(rowId)) {
|
|
@@ -92,15 +75,18 @@ function handleCheckboxChange(rowId) {
|
|
|
92
75
|
}
|
|
93
76
|
// Function to handle select all checkbox change
|
|
94
77
|
function handleSelectAllChange() {
|
|
95
|
-
if (selection.length === 0 ||
|
|
78
|
+
if (selection.length === 0 ||
|
|
79
|
+
(selection.length < slicedData.length &&
|
|
80
|
+
(colSelection.length === 0 || colSelection.length < headers.length))) {
|
|
96
81
|
// Select all rows
|
|
97
82
|
selection = slicedData.map((row) => row._id);
|
|
83
|
+
colSelection = [...headers];
|
|
98
84
|
}
|
|
99
85
|
else {
|
|
100
86
|
// Deselect all rows
|
|
101
87
|
selection = [];
|
|
88
|
+
colSelection = [];
|
|
102
89
|
}
|
|
103
|
-
selection = [...selection];
|
|
104
90
|
}
|
|
105
91
|
let renderCount = 0;
|
|
106
92
|
const badgeColors = ['gray', 'blue', 'green', 'yellow', 'indigo'];
|
|
@@ -118,14 +104,14 @@ let wrapperWidth = 0;
|
|
|
118
104
|
// let typof = typeof value
|
|
119
105
|
// return (value != undefined && typof === 'string') || typof === 'number' || typof === 'boolean'
|
|
120
106
|
// }
|
|
121
|
-
function
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return csv;
|
|
107
|
+
function handleColumnSelected(key) {
|
|
108
|
+
if (colSelection.includes(key)) {
|
|
109
|
+
// Remove the id from the colSelection array
|
|
110
|
+
colSelection = colSelection.filter((id) => id !== key);
|
|
126
111
|
}
|
|
127
|
-
|
|
128
|
-
|
|
112
|
+
else {
|
|
113
|
+
// Add the id to the colSelection array
|
|
114
|
+
colSelection = [...colSelection, key];
|
|
129
115
|
}
|
|
130
116
|
}
|
|
131
117
|
</script>
|
|
@@ -144,45 +130,34 @@ function convertJsonToCsv(arr) {
|
|
|
144
130
|
{/if}
|
|
145
131
|
</div>
|
|
146
132
|
<div class="flex flex-row items-center gap-2">
|
|
147
|
-
<
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
link.style.visibility = 'hidden'
|
|
171
|
-
document.body.appendChild(link)
|
|
172
|
-
link.click()
|
|
173
|
-
|
|
174
|
-
document.body.removeChild(link)
|
|
175
|
-
} catch (err) {
|
|
176
|
-
sendUserToast(err, true)
|
|
177
|
-
}
|
|
133
|
+
<DownloadCsv
|
|
134
|
+
getContent={() => {
|
|
135
|
+
return convertJsonToCsv(
|
|
136
|
+
selection.length > 0
|
|
137
|
+
? structuredObjects
|
|
138
|
+
.filter(({ _id }) => selection.includes(_id))
|
|
139
|
+
.map((obj) =>
|
|
140
|
+
colSelection.length == 0
|
|
141
|
+
? obj.rowData
|
|
142
|
+
: Object.fromEntries(
|
|
143
|
+
Object.entries(obj.rowData).filter(([key, _]) =>
|
|
144
|
+
colSelection.includes(key)
|
|
145
|
+
)
|
|
146
|
+
)
|
|
147
|
+
)
|
|
148
|
+
: colSelection.length == 0
|
|
149
|
+
? objects
|
|
150
|
+
: objects.map((obj) =>
|
|
151
|
+
Object.fromEntries(
|
|
152
|
+
Object.entries(obj).filter(([key, _]) => colSelection.includes(key))
|
|
153
|
+
)
|
|
154
|
+
)
|
|
155
|
+
)
|
|
178
156
|
}}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
Download as CSV
|
|
184
|
-
{/if}
|
|
185
|
-
</Button>
|
|
157
|
+
customText={selection.length > 0 || colSelection.length > 0
|
|
158
|
+
? 'Download selected as CSV'
|
|
159
|
+
: undefined}
|
|
160
|
+
/>
|
|
186
161
|
<Dropdown
|
|
187
162
|
items={() => {
|
|
188
163
|
const actions = [
|
|
@@ -211,6 +186,7 @@ function convertJsonToCsv(arr) {
|
|
|
211
186
|
displayName: 'Clear selection',
|
|
212
187
|
icon: Columns,
|
|
213
188
|
action: () => {
|
|
189
|
+
colSelection = []
|
|
214
190
|
selection = []
|
|
215
191
|
renderCount++
|
|
216
192
|
}
|
|
@@ -294,14 +270,20 @@ function convertJsonToCsv(arr) {
|
|
|
294
270
|
<MoveVertical size="16" class=" hover:text-gray-600 text-gray-400" />
|
|
295
271
|
</button>
|
|
296
272
|
{/if}
|
|
273
|
+
<input
|
|
274
|
+
type="checkbox"
|
|
275
|
+
class="!w-4 !h-4"
|
|
276
|
+
checked={colSelection.includes(key)}
|
|
277
|
+
on:change={() => handleColumnSelected(key)}
|
|
278
|
+
/>
|
|
297
279
|
</div>
|
|
298
280
|
</Cell>
|
|
299
281
|
{/each}
|
|
300
282
|
</tr>
|
|
301
283
|
</Head>
|
|
302
284
|
<tbody class="divide-y">
|
|
303
|
-
{#each slicedData as { _id, rowData }, index (index)}
|
|
304
|
-
<Row dividable selected={selection.includes(_id)}>
|
|
285
|
+
{#each slicedData.filter((x) => x) as { _id, rowData }, index (index)}
|
|
286
|
+
<Row dividable selected={selection.includes(_id) && colSelection.length == 0}>
|
|
305
287
|
<Cell first={true} last={false} class="w-6">
|
|
306
288
|
<input
|
|
307
289
|
type="checkbox"
|
|
@@ -312,7 +294,11 @@ function convertJsonToCsv(arr) {
|
|
|
312
294
|
</Cell>
|
|
313
295
|
{#each headers as key, index}
|
|
314
296
|
{@const value = rowData[key]}
|
|
315
|
-
<Cell
|
|
297
|
+
<Cell
|
|
298
|
+
selected={colSelection.includes(key) &&
|
|
299
|
+
(selection.length == 0 || selection.includes(_id))}
|
|
300
|
+
last={index == Object.values(rowData ?? {}).length - 1}
|
|
301
|
+
>
|
|
316
302
|
{#if Array.isArray(value) && value.length === 0}
|
|
317
303
|
<div />
|
|
318
304
|
{:else if Array.isArray(value) && typeof value?.[0] === 'string'}
|
|
@@ -5,6 +5,7 @@ export let last = false;
|
|
|
5
5
|
export let numeric = false;
|
|
6
6
|
export let head = false;
|
|
7
7
|
export let shouldStopPropagation = false;
|
|
8
|
+
export let selected = false;
|
|
8
9
|
export let sticky = false;
|
|
9
10
|
let Tag = head ? 'th' : 'td';
|
|
10
11
|
const { size } = getContext('datatable');
|
|
@@ -31,7 +32,9 @@ const { size } = getContext('datatable');
|
|
|
31
32
|
sticky ? `!p-0 sticky ${first ? 'left-0' : 'right-0'}` : 'px-2 py-3.5',
|
|
32
33
|
size === 'sm' ? 'px-1.5 py-2.5' : '',
|
|
33
34
|
size === 'lg' ? 'px-3 py-4' : '',
|
|
34
|
-
size === 'xs' ? 'px-1 py-1.5' : ''
|
|
35
|
+
size === 'xs' ? 'px-1 py-1.5' : '',
|
|
36
|
+
selected ? 'bg-blue-50 dark:bg-blue-900/50' : '',
|
|
37
|
+
'transition-all'
|
|
35
38
|
)}
|
|
36
39
|
>
|
|
37
40
|
{#if sticky}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<script>import { Download } from 'lucide-svelte';
|
|
2
|
+
import { Button } from '../common';
|
|
3
|
+
import { sendUserToast } from '../../toast';
|
|
4
|
+
export let getContent;
|
|
5
|
+
export let customText = undefined;
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<Button
|
|
9
|
+
size="xs"
|
|
10
|
+
color="light"
|
|
11
|
+
startIcon={{ icon: Download }}
|
|
12
|
+
on:click={() => {
|
|
13
|
+
try {
|
|
14
|
+
const blob = new Blob([getContent()], { type: 'text/csv;charset=utf-8;' })
|
|
15
|
+
const url = URL.createObjectURL(blob)
|
|
16
|
+
const link = document.createElement('a')
|
|
17
|
+
link.setAttribute('href', url)
|
|
18
|
+
link.setAttribute('download', 'data.csv')
|
|
19
|
+
link.style.visibility = 'hidden'
|
|
20
|
+
document.body.appendChild(link)
|
|
21
|
+
link.click()
|
|
22
|
+
|
|
23
|
+
document.body.removeChild(link)
|
|
24
|
+
} catch (err) {
|
|
25
|
+
sendUserToast(err, true)
|
|
26
|
+
}
|
|
27
|
+
}}
|
|
28
|
+
>
|
|
29
|
+
{customText || 'Download as CSV'}
|
|
30
|
+
</Button>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
getContent: () => string;
|
|
5
|
+
customText?: string | undefined;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export type DownloadCsvProps = typeof __propDef.props;
|
|
13
|
+
export type DownloadCsvEvents = typeof __propDef.events;
|
|
14
|
+
export type DownloadCsvSlots = typeof __propDef.slots;
|
|
15
|
+
export default class DownloadCsv extends SvelteComponent<DownloadCsvProps, DownloadCsvEvents, DownloadCsvSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -1,2 +1,10 @@
|
|
|
1
1
|
export declare function isLink(value: string): boolean;
|
|
2
2
|
export declare function isEmail(value: string): boolean;
|
|
3
|
+
export declare function computeStructuredObjectsAndHeaders(objects: Array<Record<string, any>>): [
|
|
4
|
+
string[],
|
|
5
|
+
{
|
|
6
|
+
_id: number;
|
|
7
|
+
rowData: Record<string, any>;
|
|
8
|
+
}[]
|
|
9
|
+
];
|
|
10
|
+
export declare function convertJsonToCsv(arr: Array<Record<string, any>>): string;
|
|
@@ -1,6 +1,43 @@
|
|
|
1
|
+
import { Parser } from '@json2csv/plainjs';
|
|
1
2
|
export function isLink(value) {
|
|
2
3
|
return value?.startsWith('http://') || value?.startsWith('https://');
|
|
3
4
|
}
|
|
4
5
|
export function isEmail(value) {
|
|
5
6
|
return value?.includes('@');
|
|
6
7
|
}
|
|
8
|
+
export function computeStructuredObjectsAndHeaders(objects) {
|
|
9
|
+
if (Array.isArray(objects)) {
|
|
10
|
+
let nextId = 1;
|
|
11
|
+
let hds = [];
|
|
12
|
+
let objs = objects.map((obj) => {
|
|
13
|
+
let rowData = obj && typeof obj == 'object' ? obj : {};
|
|
14
|
+
if (Array.isArray(rowData)) {
|
|
15
|
+
rowData = Object.fromEntries(rowData.map((x, i) => ['col' + i, x]));
|
|
16
|
+
}
|
|
17
|
+
let ks = Object.keys(rowData);
|
|
18
|
+
ks.forEach((x) => {
|
|
19
|
+
if (!hds.includes(x)) {
|
|
20
|
+
hds.push(x);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
_id: nextId++,
|
|
25
|
+
rowData
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
return [hds, objs];
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
return [[], []];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function convertJsonToCsv(arr) {
|
|
35
|
+
try {
|
|
36
|
+
const parser = new Parser({});
|
|
37
|
+
const csv = parser.parse(arr);
|
|
38
|
+
return csv;
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
throw new Error('An error occured when generating CSV:' + err);
|
|
42
|
+
}
|
|
43
|
+
}
|
package/package/consts.js
CHANGED
|
@@ -410,6 +410,12 @@ interface Console {
|
|
|
410
410
|
log(...data: any[]): void;
|
|
411
411
|
}
|
|
412
412
|
|
|
413
|
+
|
|
414
|
+
declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): number;
|
|
415
|
+
declare function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): number;
|
|
416
|
+
declare function clearTimeout(timeoutId: number): void;
|
|
417
|
+
declare function clearInterval(intervalId: number): void;
|
|
418
|
+
|
|
413
419
|
declare var console: Console;
|
|
414
420
|
|
|
415
421
|
declare var process: Process
|
|
@@ -407,6 +407,12 @@ export declare const $QueuedJob: {
|
|
|
407
407
|
readonly priority: {
|
|
408
408
|
readonly type: "integer";
|
|
409
409
|
};
|
|
410
|
+
readonly self_wait_time_ms: {
|
|
411
|
+
readonly type: "number";
|
|
412
|
+
};
|
|
413
|
+
readonly aggregate_wait_time_ms: {
|
|
414
|
+
readonly type: "number";
|
|
415
|
+
};
|
|
410
416
|
};
|
|
411
417
|
readonly required: readonly ["id", "running", "canceled", "job_kind", "permissioned_as", "is_flow_step", "email", "visible_to_owner", "tag"];
|
|
412
418
|
};
|
|
@@ -517,6 +523,12 @@ export declare const $CompletedJob: {
|
|
|
517
523
|
readonly type: "string";
|
|
518
524
|
};
|
|
519
525
|
};
|
|
526
|
+
readonly self_wait_time_ms: {
|
|
527
|
+
readonly type: "number";
|
|
528
|
+
};
|
|
529
|
+
readonly aggregate_wait_time_ms: {
|
|
530
|
+
readonly type: "number";
|
|
531
|
+
};
|
|
520
532
|
};
|
|
521
533
|
readonly required: readonly ["id", "created_by", "duration_ms", "created_at", "started_at", "success", "canceled", "job_kind", "permissioned_as", "is_flow_step", "is_skipped", "email", "visible_to_owner", "tag"];
|
|
522
534
|
};
|
|
@@ -1078,6 +1090,13 @@ export declare const $Resource: {
|
|
|
1078
1090
|
readonly type: "boolean";
|
|
1079
1091
|
};
|
|
1080
1092
|
};
|
|
1093
|
+
readonly created_by: {
|
|
1094
|
+
readonly type: "string";
|
|
1095
|
+
};
|
|
1096
|
+
readonly edited_at: {
|
|
1097
|
+
readonly type: "string";
|
|
1098
|
+
readonly format: "date-time";
|
|
1099
|
+
};
|
|
1081
1100
|
};
|
|
1082
1101
|
readonly required: readonly ["path", "resource_type", "is_oauth"];
|
|
1083
1102
|
};
|
|
@@ -1121,6 +1140,13 @@ export declare const $ListableResource: {
|
|
|
1121
1140
|
readonly account: {
|
|
1122
1141
|
readonly type: "number";
|
|
1123
1142
|
};
|
|
1143
|
+
readonly created_by: {
|
|
1144
|
+
readonly type: "string";
|
|
1145
|
+
};
|
|
1146
|
+
readonly edited_at: {
|
|
1147
|
+
readonly type: "string";
|
|
1148
|
+
readonly format: "date-time";
|
|
1149
|
+
};
|
|
1124
1150
|
};
|
|
1125
1151
|
readonly required: readonly ["path", "resource_type", "is_oauth", "is_linked", "is_refreshed"];
|
|
1126
1152
|
};
|
|
@@ -1137,6 +1163,13 @@ export declare const $ResourceType: {
|
|
|
1137
1163
|
readonly description: {
|
|
1138
1164
|
readonly type: "string";
|
|
1139
1165
|
};
|
|
1166
|
+
readonly created_by: {
|
|
1167
|
+
readonly type: "string";
|
|
1168
|
+
};
|
|
1169
|
+
readonly edited_at: {
|
|
1170
|
+
readonly type: "string";
|
|
1171
|
+
readonly format: "date-time";
|
|
1172
|
+
};
|
|
1140
1173
|
};
|
|
1141
1174
|
readonly required: readonly ["name"];
|
|
1142
1175
|
};
|
|
@@ -1432,6 +1465,16 @@ export declare const $Folder: {
|
|
|
1432
1465
|
readonly type: "boolean";
|
|
1433
1466
|
};
|
|
1434
1467
|
};
|
|
1468
|
+
readonly summary: {
|
|
1469
|
+
readonly type: "string";
|
|
1470
|
+
};
|
|
1471
|
+
readonly created_by: {
|
|
1472
|
+
readonly type: "string";
|
|
1473
|
+
};
|
|
1474
|
+
readonly edited_at: {
|
|
1475
|
+
readonly type: "string";
|
|
1476
|
+
readonly format: "date-time";
|
|
1477
|
+
};
|
|
1435
1478
|
};
|
|
1436
1479
|
readonly required: readonly ["name", "owners", "extra_perms"];
|
|
1437
1480
|
};
|
|
@@ -1478,6 +1521,18 @@ export declare const $WorkerPing: {
|
|
|
1478
1521
|
readonly occupancy_rate: {
|
|
1479
1522
|
readonly type: "number";
|
|
1480
1523
|
};
|
|
1524
|
+
readonly memory: {
|
|
1525
|
+
readonly type: "number";
|
|
1526
|
+
};
|
|
1527
|
+
readonly vcpus: {
|
|
1528
|
+
readonly type: "number";
|
|
1529
|
+
};
|
|
1530
|
+
readonly memory_usage: {
|
|
1531
|
+
readonly type: "number";
|
|
1532
|
+
};
|
|
1533
|
+
readonly wm_memory_usage: {
|
|
1534
|
+
readonly type: "number";
|
|
1535
|
+
};
|
|
1481
1536
|
};
|
|
1482
1537
|
readonly required: readonly ["worker", "worker_instance", "ping_at", "started_at", "ip", "jobs_executed", "worker_group", "wm_version"];
|
|
1483
1538
|
};
|
|
@@ -1960,6 +2015,27 @@ export declare const $LargeFileStorage: {
|
|
|
1960
2015
|
readonly public_resource: {
|
|
1961
2016
|
readonly type: "boolean";
|
|
1962
2017
|
};
|
|
2018
|
+
readonly secondary_storage: {
|
|
2019
|
+
readonly type: "object";
|
|
2020
|
+
readonly additionalProperties: {
|
|
2021
|
+
readonly type: "object";
|
|
2022
|
+
readonly properties: {
|
|
2023
|
+
readonly type: {
|
|
2024
|
+
readonly type: "string";
|
|
2025
|
+
readonly enum: readonly ["S3Storage", "AzureBlobStorage", "AzureWorkloadIdentity", "S3AwsOidc"];
|
|
2026
|
+
};
|
|
2027
|
+
readonly s3_resource_path: {
|
|
2028
|
+
readonly type: "string";
|
|
2029
|
+
};
|
|
2030
|
+
readonly azure_blob_resource_path: {
|
|
2031
|
+
readonly type: "string";
|
|
2032
|
+
};
|
|
2033
|
+
readonly public_resource: {
|
|
2034
|
+
readonly type: "boolean";
|
|
2035
|
+
};
|
|
2036
|
+
};
|
|
2037
|
+
};
|
|
2038
|
+
};
|
|
1963
2039
|
};
|
|
1964
2040
|
};
|
|
1965
2041
|
export declare const $WindmillLargeFile: {
|