diff --git a/backend/ee-repo-ref.txt b/backend/ee-repo-ref.txt
index 44f64cda0d..09b8cf2491 100644
--- a/backend/ee-repo-ref.txt
+++ b/backend/ee-repo-ref.txt
@@ -1 +1 @@
-76f66b0a9738d8c0f676ebf808ee82fa5073d77d
\ No newline at end of file
+38883ef6510db7d87d78e7f8fc74ab3e6f944447
\ No newline at end of file
diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml
index b4f03e227b..4168431900 100644
--- a/backend/windmill-api/openapi.yaml
+++ b/backend/windmill-api/openapi.yaml
@@ -7949,6 +7949,10 @@ paths:
in: query
schema:
type: string
+ - name: csv_separator
+ in: query
+ schema:
+ type: string
responses:
"200":
description: Csv Preview
diff --git a/frontend/src/lib/components/ParqetCsvTableRenderer.svelte b/frontend/src/lib/components/ParqetCsvTableRenderer.svelte
index 7967ab18ed..53b90a55f8 100644
--- a/frontend/src/lib/components/ParqetCsvTableRenderer.svelte
+++ b/frontend/src/lib/components/ParqetCsvTableRenderer.svelte
@@ -17,11 +17,14 @@
export let workspaceId: string | undefined
export let disable_download: boolean = false
+ let csvSeparatorChar: string = ','
let datasource: IDatasource = {
rowCount: 0,
getRows: async function (params) {
try {
const searchCol = params.filterModel ? Object.keys(params.filterModel)?.[0] : undefined
+ const csv = s3resource.endsWith('.csv')
+
const requestBody = {
workspace: workspaceId ?? $workspaceStore!,
path: s3resource,
@@ -31,9 +34,9 @@
sortDesc: params.sortModel?.[0]?.sort == 'desc',
searchCol: searchCol,
searchTerm: searchCol ? params.filterModel?.[searchCol]?.filter : undefined,
- storage: storage
+ storage: storage,
+ csvSeparator: csv ? csvSeparatorChar : undefined
}
- const csv = s3resource.endsWith('.csv')
const res = (
csv
? await HelpersService.loadCsvPreview(requestBody)
@@ -77,59 +80,67 @@
$: eGui && mountGrid()
+ let error: string | undefined = undefined
async function mountGrid() {
if (eGui) {
- const csv = s3resource.endsWith('.csv')
+ try {
+ const csv = s3resource.endsWith('.csv')
- const res = csv
- ? await HelpersService.loadCsvPreview({
- workspace: $workspaceStore!,
- path: s3resource,
- limit: 0,
- storage: storage
- })
- : await HelpersService.loadParquetPreview({
- workspace: $workspaceStore!,
- path: s3resource,
- limit: 0,
- storage: storage
- })
+ const res = csv
+ ? await HelpersService.loadCsvPreview({
+ workspace: $workspaceStore!,
+ path: s3resource,
+ limit: 0,
+ storage: storage,
+ csvSeparator: csvSeparatorChar
+ })
+ : await HelpersService.loadParquetPreview({
+ workspace: $workspaceStore!,
+ path: s3resource,
+ limit: 0,
+ storage: storage
+ })
- createGrid(
- eGui,
- {
- rowModelType: 'infinite',
- datasource,
- // @ts-ignore
- columnDefs: res.columns.map((c) => {
- return {
- field: c,
- sortable: true,
- filter: true,
- filterParams: {
- filterOptions: ['contains'],
- maxNumConditions: 1
+ createGrid(
+ eGui,
+ {
+ rowModelType: 'infinite',
+ datasource,
+ // @ts-ignore
+ columnDefs: res.columns.map((c) => {
+ return {
+ field: c,
+ sortable: true,
+ filter: true,
+ filterParams: {
+ filterOptions: ['contains'],
+ maxNumConditions: 1
+ }
}
- }
- }),
- pagination: false,
- // defaultColDef: {
- // flex: 1
- // },
- suppressColumnMoveAnimation: true,
- rowSelection: 'multiple',
- rowMultiSelectWithClick: true,
- suppressRowDeselection: true,
+ }),
+ pagination: false,
+ // defaultColDef: {
+ // flex: 1
+ // },
+ suppressColumnMoveAnimation: true,
+ rowSelection: 'multiple',
+ rowMultiSelectWithClick: true,
+ suppressRowDeselection: true,
- onSelectionChanged: (e) => {
- onSelectionChanged(e.api)
+ onSelectionChanged: (e) => {
+ onSelectionChanged(e.api)
+ },
+ getRowId: (data) => {
+ return (data as any).data['__index']
+ }
},
- getRowId: (data) => {
- return (data as any).data['__index']
- }
- },
- {}
- )
+ {}
+ )
+ error = undefined
+ } catch (e) {
+ error = e.body
+ console.error(e)
+ }
}
}
@@ -146,6 +157,22 @@