Fix insights filtering (#16139)

* Parse string filter as JSON

* Parse content as JSON when toggling raw editor

* Refactor missing Dashboard type

* Convert filter to gql format

* Disable alias field filter selection in insights

* Use parseJSON util

* Refactor to allow selectivity of relational field for GraphQL filters

* Emit variables

* Skip emitting invalid JSON

* Add unit tests
This commit is contained in:
ian
2023-01-19 03:31:59 +08:00
committed by GitHub
parent d42de82bcd
commit 025bb7c053
12 changed files with 211 additions and 15 deletions

View File

@@ -1,7 +1,7 @@
<template>
<v-list-group
v-if="field.children || supportedFunctions.length > 0"
:clickable="!field.disabled"
:clickable="!field.disabled && (relationalFieldSelectable || !field.relatedCollection)"
:value="field.path"
@click="$emit('add', field.key)"
>
@@ -39,6 +39,7 @@
:field="childField"
:search="search"
:include-functions="includeFunctions"
:relational-field-selectable="relationalFieldSelectable"
@add="$emit('add', $event)"
/>
</v-list-group>
@@ -72,11 +73,13 @@ interface Props {
field: FieldInfo;
search?: string;
includeFunctions?: boolean;
relationalFieldSelectable?: boolean;
}
const props = withDefaults(defineProps<Props>(), {
search: undefined,
includeFunctions: false,
relationalFieldSelectable: true,
});
defineEmits(['add']);

View File

@@ -17,6 +17,7 @@
:field="fieldNode"
:search="search"
:include-functions="includeFunctions"
:relational-field-selectable="relationalFieldSelectable"
@add="$emit('select-field', $event)"
/>
</v-list>
@@ -37,6 +38,7 @@ interface Props {
disabledFields?: string[];
includeFunctions?: boolean;
includeRelations?: boolean;
relationalFieldSelectable?: boolean;
}
const props = withDefaults(defineProps<Props>(), {
@@ -44,6 +46,7 @@ const props = withDefaults(defineProps<Props>(), {
disabledFields: () => [],
includeFunctions: false,
includeRelations: true,
relationalFieldSelectable: true,
});
defineEmits(['select-field']);