feat(grid): keep filter editor expanded
This commit is contained in:
19 files changed
+157
-45
No files matched your search
@@ -1199,6 +1199,15 @@ const filteredFilterBuilderColumnOptions = filterBuilder.filteredColumns;
|
||||
const appliedStructuredWhereInput = filterBuilder.appliedWhereInput;
|
||||
const draftStructuredWhereInput = ref("");
|
||||
const filterEditorView = computed(() => settingsStore.editorSettings.dataGridFilterEditorView);
|
||||
const isPersistentFilterView = computed(() => filterEditorView.value === "conditions" || filterEditorView.value === "text");
|
||||
const isFilterEditorPinnedOpen = computed(() => isPersistentFilterView.value && settingsStore.editorSettings.dataGridKeepFilterEditorExpanded);
|
||||
const effectiveFilterBuilderOpen = computed({
|
||||
get: () => isFilterEditorPinnedOpen.value || filterBuilderOpen.value,
|
||||
set: (open: boolean) => {
|
||||
if (isFilterEditorPinnedOpen.value) return;
|
||||
filterBuilderOpen.value = open;
|
||||
},
|
||||
});
|
||||
const structuredFilterCount = computed(() => structuredFilterRules.value.filter((rule) => !rule.disabled && !!rule.columnName && filterModeHasCompleteValue(rule.mode, rule.rawValue, rule.rawEndValue)).length);
|
||||
const hasStructuredFilters = computed(() => !!combineWhereInputs(undefined, appliedStructuredWhereInput.value));
|
||||
interface ForeignKeyDisplayLabelState {
|
||||
@@ -1553,7 +1562,7 @@ function buildGroupedWhere(conditions: string[], rules: StructuredFilterRule[]):
|
||||
async function applyStructuredFilters() {
|
||||
if (!canUseWhereSearch.value) return;
|
||||
appliedStructuredWhereInput.value = await buildStructuredWhereFromRules(structuredFilterRules.value);
|
||||
if (settingsStore.editorSettings.dataGridAutoHideFilterBuilder) filterBuilderOpen.value = false;
|
||||
if (!isFilterEditorPinnedOpen.value) filterBuilderOpen.value = false;
|
||||
await applyWhereFilter();
|
||||
}
|
||||
|
||||
@@ -11127,7 +11136,7 @@ function openGridSnapshot() {
|
||||
<DataGridQueryControls
|
||||
v-model:where-input="whereFilterInput"
|
||||
v-model:order-by-input="orderByInput"
|
||||
v-model:filter-builder-open="filterBuilderOpen"
|
||||
v-model:filter-builder-open="effectiveFilterBuilderOpen"
|
||||
:filter-editor-view="filterEditorView"
|
||||
:columns="props.tableMeta?.columns.map((column) => column.name) ?? props.result.columns"
|
||||
:condition-columns="conditionColumns"
|
||||
@@ -11278,7 +11287,7 @@ function openGridSnapshot() {
|
||||
</DataGridToolbar>
|
||||
</div>
|
||||
<DataGridFilterWorkbench
|
||||
v-if="canUseWhereSearch && filterEditorView === 'conditions' && filterBuilderOpen"
|
||||
v-if="canUseWhereSearch && filterEditorView === 'conditions' && effectiveFilterBuilderOpen"
|
||||
:sql-preview="filterSqlPreview"
|
||||
:rules="structuredFilterRules"
|
||||
:columns="filterBuilderColumnOptions"
|
||||
@@ -11298,7 +11307,7 @@ function openGridSnapshot() {
|
||||
@update-rule="updateStructuredFilterRule"
|
||||
/>
|
||||
<DataGridTextFilterWorkbench
|
||||
v-if="canUseWhereSearch && filterEditorView === 'text' && filterBuilderOpen"
|
||||
v-if="canUseWhereSearch && filterEditorView === 'text' && effectiveFilterBuilderOpen"
|
||||
:height="settingsStore.editorSettings.dataGridTextFilterPanelHeight"
|
||||
:sql-preview="filterSqlPreview"
|
||||
:rules="structuredFilterRules"
|
||||
|
||||
@@ -138,6 +138,16 @@ beforeEach(() => {
|
||||
localStorage.removeItem("dbx-filter-builder-value-shortcut-hint-days");
|
||||
});
|
||||
describe("DataGrid canvas surfaces", () => {
|
||||
it("keeps condition and text filter editors open when persistent expansion is enabled", () => {
|
||||
expect(dataGridSource).toContain('const isPersistentFilterView = computed(() => filterEditorView.value === "conditions" || filterEditorView.value === "text");');
|
||||
expect(dataGridSource).toContain("const isFilterEditorPinnedOpen = computed(() => isPersistentFilterView.value && settingsStore.editorSettings.dataGridKeepFilterEditorExpanded);");
|
||||
expect(dataGridSource).toContain("get: () => isFilterEditorPinnedOpen.value || filterBuilderOpen.value,");
|
||||
expect(dataGridSource).toContain("if (!isFilterEditorPinnedOpen.value) filterBuilderOpen.value = false;");
|
||||
expect(dataGridSource).toContain('v-model:filter-builder-open="effectiveFilterBuilderOpen"');
|
||||
expect(dataGridSource).toContain("filterEditorView === 'conditions' && effectiveFilterBuilderOpen");
|
||||
expect(dataGridSource).toContain("filterEditorView === 'text' && effectiveFilterBuilderOpen");
|
||||
});
|
||||
|
||||
it("asks before an expensive Elasticsearch cursor jump", () => {
|
||||
expect(dataGridSource).toContain("requestCount >= ELASTICSEARCH_PAGE_JUMP_WARNING_REQUESTS");
|
||||
expect(dataGridSource).toContain('t("grid.esDeepPageJumpConfirmMessage"');
|
||||
|
||||
Reference in new issue
Block a user