- Boolean filter
-
+
+
+
+ {{ props.config.label }}
+
+
+ True
+
+
+ False
+
@@ -9,12 +17,19 @@
import {
defineProps, defineEmits, computed, onMounted,
} from 'vue';
-import { BooleanFilterValue, BooleanFilterOptions } from '@/shared/modules/filters/types/filterTypes/BooleanFilterConfig';
+import {
+ BooleanFilterValue,
+ BooleanFilterOptions,
+ BooleanFilterConfig,
+} from '@/shared/modules/filters/types/filterTypes/BooleanFilterConfig';
import { required } from '@vuelidate/validators';
import useVuelidate from '@vuelidate/core';
+import CrFilterIncludeSwitch from '@/shared/modules/filters/components/partials/FilterIncludeSwitch.vue';
+import CrFilterSelectOption from '@/shared/modules/filters/components/partials/select/FilterSelectOption.vue';
const props = defineProps<{
- modelValue: BooleanFilterValue
+ modelValue: BooleanFilterValue,
+ config: BooleanFilterConfig,
} & BooleanFilterOptions>();
const emit = defineEmits<{(e: 'update:modelValue', value: BooleanFilterValue)}>();
diff --git a/frontend/src/shared/modules/filters/components/filterTypes/DateFilter.vue b/frontend/src/shared/modules/filters/components/filterTypes/DateFilter.vue
index 2578a007d8..eb4453d4ec 100644
--- a/frontend/src/shared/modules/filters/components/filterTypes/DateFilter.vue
+++ b/frontend/src/shared/modules/filters/components/filterTypes/DateFilter.vue
@@ -9,12 +9,17 @@
import {
defineProps, defineEmits, computed, onMounted,
} from 'vue';
-import { DateFilterValue, DateFilterOptions } from '@/shared/modules/filters/types/filterTypes/DateFilterConfig';
+import {
+ DateFilterValue,
+ DateFilterOptions,
+ DateFilterConfig,
+} from '@/shared/modules/filters/types/filterTypes/DateFilterConfig';
import { required } from '@vuelidate/validators';
import useVuelidate from '@vuelidate/core';
const props = defineProps<{
- modelValue: DateFilterValue
+ modelValue: DateFilterValue,
+ config: DateFilterConfig
} & DateFilterOptions>();
const emit = defineEmits<{(e: 'update:modelValue', value: DateFilterValue)}>();
diff --git a/frontend/src/shared/modules/filters/components/filterTypes/MultiSelectFilter.vue b/frontend/src/shared/modules/filters/components/filterTypes/MultiSelectFilter.vue
index 8a2869bb7b..e6676d2c9e 100644
--- a/frontend/src/shared/modules/filters/components/filterTypes/MultiSelectFilter.vue
+++ b/frontend/src/shared/modules/filters/components/filterTypes/MultiSelectFilter.vue
@@ -11,13 +11,14 @@ import {
} from 'vue';
import {
MultiSelectFilterValue,
- MultiSelectFilterOptions,
-} from '@/shared/modules/filters/types/filterTypes/MultiSelectFilterConfig';
+ MultiSelectFilterOptions, MultiSelectFilterConfig
+} from "@/shared/modules/filters/types/filterTypes/MultiSelectFilterConfig";
import { required } from '@vuelidate/validators';
import useVuelidate from '@vuelidate/core';
const props = defineProps<{
- modelValue: MultiSelectFilterValue
+ modelValue: MultiSelectFilterValue,
+ config: MultiSelectFilterConfig
} & MultiSelectFilterOptions>();
const emit = defineEmits<{(e: 'update:modelValue', value: MultiSelectFilterValue)}>();
diff --git a/frontend/src/shared/modules/filters/components/filterTypes/NumberFilter.vue b/frontend/src/shared/modules/filters/components/filterTypes/NumberFilter.vue
index b89632308b..a5d1fb5dd0 100644
--- a/frontend/src/shared/modules/filters/components/filterTypes/NumberFilter.vue
+++ b/frontend/src/shared/modules/filters/components/filterTypes/NumberFilter.vue
@@ -9,12 +9,17 @@
import {
defineProps, defineEmits, computed, onMounted,
} from 'vue';
-import { NumberFilterOptions, NumberFilterValue } from '@/shared/modules/filters/types/filterTypes/NumberFilterConfig';
+import {
+ NumberFilterConfig,
+ NumberFilterOptions,
+ NumberFilterValue
+} from "@/shared/modules/filters/types/filterTypes/NumberFilterConfig";
import useVuelidate from '@vuelidate/core';
import { required } from '@vuelidate/validators';
const props = defineProps<{
- modelValue: NumberFilterValue
+ modelValue: NumberFilterValue,
+ config: NumberFilterConfig
} & NumberFilterOptions>();
const emit = defineEmits<{(e: 'update:modelValue', value: NumberFilterValue)}>();
diff --git a/frontend/src/shared/modules/filters/components/filterTypes/SelectFilter.vue b/frontend/src/shared/modules/filters/components/filterTypes/SelectFilter.vue
index ca05cc412c..7e488dc34d 100644
--- a/frontend/src/shared/modules/filters/components/filterTypes/SelectFilter.vue
+++ b/frontend/src/shared/modules/filters/components/filterTypes/SelectFilter.vue
@@ -10,14 +10,16 @@ import {
defineProps, defineEmits, computed, onMounted,
} from 'vue';
import {
+ SelectFilterConfig,
SelectFilterOptions,
- SelectFilterValue,
-} from '@/shared/modules/filters/types/filterTypes/SelectFilterConfig';
+ SelectFilterValue
+} from "@/shared/modules/filters/types/filterTypes/SelectFilterConfig";
import { required } from '@vuelidate/validators';
import useVuelidate from '@vuelidate/core';
const props = defineProps<{
modelValue: SelectFilterValue,
+ config: SelectFilterConfig
} & SelectFilterOptions>();
const emit = defineEmits<{(e: 'update:modelValue', value: SelectFilterValue)}>();
diff --git a/frontend/src/shared/modules/filters/components/filterTypes/StringFilter.vue b/frontend/src/shared/modules/filters/components/filterTypes/StringFilter.vue
index d4242825c2..4a17b4df5a 100644
--- a/frontend/src/shared/modules/filters/components/filterTypes/StringFilter.vue
+++ b/frontend/src/shared/modules/filters/components/filterTypes/StringFilter.vue
@@ -10,10 +10,15 @@ import {
} from 'vue';
import useVuelidate from '@vuelidate/core';
import { required } from '@vuelidate/validators';
-import { StringFilterOptions, StringFilterValue } from '@/shared/modules/filters/types/filterTypes/StringFilterConfig';
+import {
+ StringFilterConfig,
+ StringFilterOptions,
+ StringFilterValue
+} from "@/shared/modules/filters/types/filterTypes/StringFilterConfig";
const props = defineProps<{
- modelValue: StringFilterValue
+ modelValue: StringFilterValue,
+ config: StringFilterConfig
} & StringFilterOptions>();
const emit = defineEmits<{(e: 'update:modelValue', value: StringFilterValue)}>();
diff --git a/frontend/src/shared/modules/filters/components/partials/FilterIncludeSwitch.vue b/frontend/src/shared/modules/filters/components/partials/FilterIncludeSwitch.vue
new file mode 100644
index 0000000000..270536af15
--- /dev/null
+++ b/frontend/src/shared/modules/filters/components/partials/FilterIncludeSwitch.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/shared/modules/filters/components/partials/select/FilterSelectOption.vue b/frontend/src/shared/modules/filters/components/partials/select/FilterSelectOption.vue
new file mode 100644
index 0000000000..4b57ba9453
--- /dev/null
+++ b/frontend/src/shared/modules/filters/components/partials/select/FilterSelectOption.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/shared/modules/filters/config/apiFilterRenderer/boolean.filter.renderer.ts b/frontend/src/shared/modules/filters/config/apiFilterRenderer/boolean.filter.renderer.ts
index 1317b82551..ec8a6453d4 100644
--- a/frontend/src/shared/modules/filters/config/apiFilterRenderer/boolean.filter.renderer.ts
+++ b/frontend/src/shared/modules/filters/config/apiFilterRenderer/boolean.filter.renderer.ts
@@ -1,7 +1,9 @@
import { BooleanFilterValue } from '@/shared/modules/filters/types/filterTypes/BooleanFilterConfig';
-export const booleanApiFilterRenderer = (property: string, { value }: BooleanFilterValue): any[] => [
- {
- [property]: value,
- },
+export const booleanApiFilterRenderer = (property: string, { value, include }: BooleanFilterValue): any[] => [
+ (include ? {
+ [property]: { eq: value },
+ } : {
+ [property]: { not: { eq: value } },
+ }),
];
diff --git a/frontend/src/shared/modules/filters/config/itemLabelRenderer/boolean.label.renderer.ts b/frontend/src/shared/modules/filters/config/itemLabelRenderer/boolean.label.renderer.ts
index 433f90aef8..a48aafe094 100644
--- a/frontend/src/shared/modules/filters/config/itemLabelRenderer/boolean.label.renderer.ts
+++ b/frontend/src/shared/modules/filters/config/itemLabelRenderer/boolean.label.renderer.ts
@@ -1,6 +1,7 @@
import { BooleanFilterValue } from '@/shared/modules/filters/types/filterTypes/BooleanFilterConfig';
-export const booleanItemLabelRenderer = (property: string, { value }: BooleanFilterValue): string => {
- console.log(value);
- return `
${property}: ${value ? 'True' : 'False'}`;
+export const booleanItemLabelRenderer = (property: string, { value, include }: BooleanFilterValue): string => {
+ const excludeText = !include ? ' (exclude)' : '';
+ const valueText = value ? 'True' : 'False';
+ return `
${property}${excludeText}: ${valueText}`;
};