fix(query): show selected chart Y-axis fields

This commit is contained in:
ptma 2026-08-06 16:30:20 +08:00 committed by GitHub
parent f36c280d6d
commit 15cdbcb8a8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 6 deletions

View File

@ -60,12 +60,12 @@ watch(
{ immediate: true },
);
function toggleYColumn(index: number) {
const idx = yColumnIndexes.value.indexOf(index);
if (idx >= 0) {
yColumnIndexes.value = yColumnIndexes.value.filter((selected) => selected !== index);
} else {
function setYColumn(index: number, selected: boolean | "indeterminate") {
const isSelected = yColumnIndexes.value.includes(index);
if (selected === true && !isSelected) {
yColumnIndexes.value = [...yColumnIndexes.value, index];
} else if (selected !== true && isSelected) {
yColumnIndexes.value = yColumnIndexes.value.filter((selected) => selected !== index);
}
}
@ -163,7 +163,7 @@ const hasData = computed(() => props.result.rows.length > 0 && numericColumnInde
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent class="w-56" align="start" @close-auto-focus.prevent>
<DropdownMenuCheckboxItem v-for="col in numericColumnOptions" :key="col.index" :checked="yColumnIndexes.includes(col.index)" class="text-xs" @select.prevent @click="toggleYColumn(col.index)">
<DropdownMenuCheckboxItem v-for="col in numericColumnOptions" :key="col.index" :model-value="yColumnIndexes.includes(col.index)" :class="['text-xs', yColumnIndexes.includes(col.index) ? 'bg-primary/10' : '']" @select.prevent @update:model-value="setYColumn(col.index, $event)">
<span class="truncate">{{ col.label }}</span>
</DropdownMenuCheckboxItem>
</DropdownMenuContent>

View File

@ -0,0 +1,14 @@
import { readFileSync } from "node:fs";
import { describe, expect, it } from "vitest";
const queryChartSource = readFileSync(new URL("../QueryChart.vue", import.meta.url), "utf8");
describe("QueryChart Y-axis selection", () => {
it("binds the visible checkbox state to the selected Y columns", () => {
expect(queryChartSource).toContain(':model-value="yColumnIndexes.includes(col.index)"');
expect(queryChartSource).toContain('@update:model-value="setYColumn(col.index, $event)"');
expect(queryChartSource).not.toContain(':checked="yColumnIndexes.includes(col.index)"');
expect(queryChartSource).not.toContain('@click="toggleYColumn(col.index)"');
expect(queryChartSource).not.toContain("CheckIcon");
});
});