diff --git a/apps/desktop/src/components/grid/DataGrid.vue b/apps/desktop/src/components/grid/DataGrid.vue index f60b834648..d509c66931 100644 --- a/apps/desktop/src/components/grid/DataGrid.vue +++ b/apps/desktop/src/components/grid/DataGrid.vue @@ -214,6 +214,12 @@ console.info("[DBX][DataGrid:setup]", { loading: props.loading, }); +const transposeRowIndex = ref(null); +const showTranspose = ref(false); +const multiRowTranspose = ref(false); +const preserveTransposeOnNextResult = ref(false); +const autoTransposedForResult = ref(false); + watch( () => props.result, (result) => { @@ -227,6 +233,17 @@ watch( loading: props.loading, elapsedSinceSetup: dataGridElapsed(), }); + // Auto-transpose when a new result has exactly 1 row with multiple columns. + if (result.rows.length === 1 && result.columns.length > 1 && !preserveTransposeOnNextResult.value) { + autoTransposedForResult.value = true; + nextTick(() => { + showTranspose.value = true; + transposeRowIndex.value = 0; + }); + } else { + autoTransposedForResult.value = false; + } + nextTick(() => { console.info("[DBX][DataGrid:result:nextTick]", { traceId: dataGridTraceId, @@ -367,10 +384,6 @@ const sideGeometryCanvas = ref(null); const dialogGeometryCanvas = ref(null); const previewDialogOpen = ref(false); const previewDialogConfig = shallowRef<{ component: any; props: Record } | null>(null); -const transposeRowIndex = ref(null); -const showTranspose = ref(false); -const multiRowTranspose = ref(false); -const preserveTransposeOnNextResult = ref(false); const transposeScrollRef = ref(); const transposeScrollLeft = ref(0); const transposeViewportWidth = ref(0); @@ -5230,6 +5243,7 @@ function currentTransposeViewportRowIndex(): number { } function closeTranspose(scrollToCurrentRecord = true) { + autoTransposedForResult.value = false; const rowIndex = currentTransposeViewportRowIndex(); showTranspose.value = false; transposeRowIndex.value = null; @@ -5260,6 +5274,7 @@ function openContextTranspose() { } function toggleTranspose(rowIndex: number) { + autoTransposedForResult.value = false; const next = nextTransposeState(showTranspose.value, transposeRowIndex.value, rowIndex); transposeRowIndex.value = next.transposeRowIndex; showTranspose.value = next.showTranspose; @@ -6676,8 +6691,8 @@ const gridContextMenuItems = computed(() => {