mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-01 04:10:06 -05:00
implemented all filters in frontend
This commit is contained in:
@@ -158,9 +158,8 @@ import {useUserPreferenceStore} from "@/stores/UserPreferenceStore";
|
||||
import {useRouteQuery} from "@vueuse/router";
|
||||
import {routeQueryDateTransformer, stringToBool, toNumberArray} from "@/utils/utils";
|
||||
import RandomIcon from "@/components/display/RandomIcon.vue";
|
||||
import {VRating, VSelect, VTextField} from "vuetify/components";
|
||||
import {VSelect, VTextField} from "vuetify/components";
|
||||
import RatingField from "@/components/inputs/RatingField.vue";
|
||||
import {DateTime} from "luxon";
|
||||
|
||||
const {t} = useI18n()
|
||||
const router = useRouter()
|
||||
@@ -170,278 +169,6 @@ const query = useRouteQuery('query', "")
|
||||
const page = useRouteQuery('page', 1, {transform: Number})
|
||||
const pageSize = useRouteQuery('pageSize', useUserPreferenceStore().deviceSettings.general_tableItemsPerPage, {transform: Number})
|
||||
|
||||
/**
|
||||
* all filters available to enable
|
||||
*/
|
||||
const filters = ref({
|
||||
keywords: {
|
||||
id: 'keywords',
|
||||
label: 'Keyword (any)',
|
||||
hint: 'Any of the given keywords',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Keyword',
|
||||
modelValue: useRouteQuery('keywords', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
keywordsAnd: {
|
||||
id: 'keywordsAnd',
|
||||
label: 'Keyword (all)',
|
||||
hint: 'All of the given keywords',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Keyword',
|
||||
modelValue: useRouteQuery('keywordsAnd', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
keywordsOrNot: {
|
||||
id: 'keywordsOrNot',
|
||||
label: 'Keyword exclude (any)',
|
||||
hint: 'Exclude recipes with any of the given keywords',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Keyword',
|
||||
modelValue: useRouteQuery('keywordsOrNot', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
keywordsAndNot: {
|
||||
id: 'keywordsAndNot',
|
||||
label: 'Keyword exclude (all)',
|
||||
hint: 'Exclude recipes with all of the given keywords',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Keyword',
|
||||
modelValue: useRouteQuery('keywordsAndNot', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
foods: {
|
||||
id: 'foods',
|
||||
label: 'Foods (any)',
|
||||
hint: 'Any of the given foods',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Food',
|
||||
modelValue: useRouteQuery('foods', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
foodsAnd: {
|
||||
id: 'foodsAnd',
|
||||
label: 'Food (all)',
|
||||
hint: 'All of the given foods',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Food',
|
||||
modelValue: useRouteQuery('foodsAnd', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
foodsOrNot: {
|
||||
id: 'foodsOrNot',
|
||||
label: 'Food exclude (any)',
|
||||
hint: 'Exclude recipes with any of the given foods',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Food',
|
||||
modelValue: useRouteQuery('foodsOrNot', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
foodsAndNot: {
|
||||
id: 'foodsAndNot',
|
||||
label: 'Food exclude (all)',
|
||||
hint: 'Exclude recipes with all of the given foods',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Food',
|
||||
modelValue: useRouteQuery('foodsAndNot', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
books: {
|
||||
id: 'books',
|
||||
label: 'Book (any)',
|
||||
hint: 'Recipes that are in any of the given books',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'RecipeBook',
|
||||
modelValue: useRouteQuery('books', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
booksAnd: {
|
||||
id: 'booksAnd',
|
||||
label: 'Book (all)',
|
||||
hint: 'Recipes that are in all of the given books',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'RecipeBook',
|
||||
modelValue: useRouteQuery('booksAnd', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
booksOrNot: {
|
||||
id: 'booksOrNot',
|
||||
label: 'Book exclude (any)',
|
||||
hint: 'Exclude recipes with any of the given books',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'RecipeBook',
|
||||
modelValue: useRouteQuery('booksOrNot', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
booksAndNot: {
|
||||
id: 'booksAndNot',
|
||||
label: 'Book exclude (all)',
|
||||
hint: 'Exclude recipes with all of the given books',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'RecipeBook',
|
||||
modelValue: useRouteQuery('booksAndNot', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
createdby: {
|
||||
id: 'createdby',
|
||||
label: 'Created By',
|
||||
hint: 'Recipes created by the selected user',
|
||||
enabled: false,
|
||||
default: undefined,
|
||||
is: ModelSelect,
|
||||
model: 'User',
|
||||
modelValue: useRouteQuery('createdby', undefined, {transform: Number}),
|
||||
mode: 'single',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
units: {
|
||||
id: 'units',
|
||||
label: 'Unit (any)',
|
||||
hint: 'Recipes that contain any of the given units',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Unit',
|
||||
modelValue: useRouteQuery('units', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
internal: {
|
||||
id: 'internal',
|
||||
label: 'Hide External',
|
||||
hint: 'Hide external recipes',
|
||||
enabled: false,
|
||||
default: "false",
|
||||
is: VSelect,
|
||||
items: [{value: "true", title: 'Yes'}, {value: "false", title: 'No'}],
|
||||
modelValue: useRouteQuery('internal', "false"),
|
||||
},
|
||||
rating: {
|
||||
id: 'rating',
|
||||
label: 'Rating (exact)',
|
||||
hint: 'Recipes with the exact rating',
|
||||
enabled: false,
|
||||
default: undefined,
|
||||
is: RatingField,
|
||||
modelValue: useRouteQuery('rating', undefined, {transform: Number}),
|
||||
},
|
||||
ratingGte: {
|
||||
id: 'ratingGte',
|
||||
label: 'Rating (>=)',
|
||||
hint: 'Recipes with the given or a greater rating',
|
||||
enabled: false,
|
||||
default: undefined,
|
||||
is: RatingField,
|
||||
modelValue: useRouteQuery('ratingGte', undefined, {transform: Number}),
|
||||
},
|
||||
ratingLte: {
|
||||
id: 'ratingLte',
|
||||
label: 'Rating (<=)',
|
||||
hint: 'Recipes with the given or a smaller rating',
|
||||
enabled: false,
|
||||
default: undefined,
|
||||
is: RatingField,
|
||||
modelValue: useRouteQuery('ratingLte', undefined, {transform: Number}),
|
||||
},
|
||||
timescookedGte: {
|
||||
id: 'timescookedGte',
|
||||
label: 'Times Cooked (>=)',
|
||||
hint: 'Recipes that were cooked at least X times',
|
||||
enabled: false,
|
||||
default: undefined,
|
||||
is: VNumberInput,
|
||||
modelValue: useRouteQuery('timescookedGte', undefined, {transform: Number}),
|
||||
},
|
||||
timescookedLte: {
|
||||
id: 'timescookedLte',
|
||||
label: 'Times Cooked (<=)',
|
||||
hint: 'Recipes that were cooked at most X times',
|
||||
enabled: false,
|
||||
default: undefined,
|
||||
is: VNumberInput,
|
||||
modelValue: useRouteQuery('timescookedLte', undefined, {transform: Number}),
|
||||
},
|
||||
makenow: {
|
||||
id: 'makenow',
|
||||
label: 'Foods on Hand',
|
||||
hint: 'Only recipes were all foods (or its substitutes) are marked as on hand',
|
||||
enabled: false,
|
||||
default: "false",
|
||||
is: VSelect,
|
||||
items: [{value: "true", title: 'Yes'}, {value: "false", title: 'No'}],
|
||||
modelValue: useRouteQuery('makenow', "false"),
|
||||
},
|
||||
|
||||
cookedonGte: {
|
||||
id: 'cookedonGte',
|
||||
label: 'Cooked after',
|
||||
hint: 'Only recipes that were cooked on or after the given date.',
|
||||
enabled: false,
|
||||
default: null,
|
||||
is: VDateInput,
|
||||
modelValue: useRouteQuery('cookedonGte', null, {transform: routeQueryDateTransformer}),
|
||||
},
|
||||
cookedonLte: {
|
||||
id: 'cookedonLte',
|
||||
label: 'Cooked before',
|
||||
hint: 'Only recipes that were cooked on or before the given date.',
|
||||
enabled: false,
|
||||
default: null,
|
||||
is: VDateInput,
|
||||
modelValue: useRouteQuery('cookedonLte', null, {transform: routeQueryDateTransformer}),
|
||||
},
|
||||
})
|
||||
|
||||
/**
|
||||
* filters that are not yet enabled
|
||||
*/
|
||||
@@ -885,6 +612,351 @@ function apiRecipeListRequestToCustomFilter() {
|
||||
return customFilterParams
|
||||
}
|
||||
|
||||
/**
|
||||
* all filters available to enable
|
||||
*/
|
||||
const filters = ref({
|
||||
keywords: {
|
||||
id: 'keywords',
|
||||
label: 'Keyword (any)',
|
||||
hint: 'Any of the given keywords',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Keyword',
|
||||
modelValue: useRouteQuery('keywords', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
keywordsAnd: {
|
||||
id: 'keywordsAnd',
|
||||
label: 'Keyword (all)',
|
||||
hint: 'All of the given keywords',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Keyword',
|
||||
modelValue: useRouteQuery('keywordsAnd', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
keywordsOrNot: {
|
||||
id: 'keywordsOrNot',
|
||||
label: 'Keyword exclude (any)',
|
||||
hint: 'Exclude recipes with any of the given keywords',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Keyword',
|
||||
modelValue: useRouteQuery('keywordsOrNot', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
keywordsAndNot: {
|
||||
id: 'keywordsAndNot',
|
||||
label: 'Keyword exclude (all)',
|
||||
hint: 'Exclude recipes with all of the given keywords',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Keyword',
|
||||
modelValue: useRouteQuery('keywordsAndNot', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
foods: {
|
||||
id: 'foods',
|
||||
label: 'Foods (any)',
|
||||
hint: 'Any of the given foods',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Food',
|
||||
modelValue: useRouteQuery('foods', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
foodsAnd: {
|
||||
id: 'foodsAnd',
|
||||
label: 'Food (all)',
|
||||
hint: 'All of the given foods',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Food',
|
||||
modelValue: useRouteQuery('foodsAnd', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
foodsOrNot: {
|
||||
id: 'foodsOrNot',
|
||||
label: 'Food exclude (any)',
|
||||
hint: 'Exclude recipes with any of the given foods',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Food',
|
||||
modelValue: useRouteQuery('foodsOrNot', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
foodsAndNot: {
|
||||
id: 'foodsAndNot',
|
||||
label: 'Food exclude (all)',
|
||||
hint: 'Exclude recipes with all of the given foods',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Food',
|
||||
modelValue: useRouteQuery('foodsAndNot', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
books: {
|
||||
id: 'books',
|
||||
label: 'Book (any)',
|
||||
hint: 'Recipes that are in any of the given books',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'RecipeBook',
|
||||
modelValue: useRouteQuery('books', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
booksAnd: {
|
||||
id: 'booksAnd',
|
||||
label: 'Book (all)',
|
||||
hint: 'Recipes that are in all of the given books',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'RecipeBook',
|
||||
modelValue: useRouteQuery('booksAnd', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
booksOrNot: {
|
||||
id: 'booksOrNot',
|
||||
label: 'Book exclude (any)',
|
||||
hint: 'Exclude recipes with any of the given books',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'RecipeBook',
|
||||
modelValue: useRouteQuery('booksOrNot', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
booksAndNot: {
|
||||
id: 'booksAndNot',
|
||||
label: 'Book exclude (all)',
|
||||
hint: 'Exclude recipes with all of the given books',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'RecipeBook',
|
||||
modelValue: useRouteQuery('booksAndNot', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
createdby: {
|
||||
id: 'createdby',
|
||||
label: 'Created By',
|
||||
hint: 'Recipes created by the selected user',
|
||||
enabled: false,
|
||||
default: undefined,
|
||||
is: ModelSelect,
|
||||
model: 'User',
|
||||
modelValue: useRouteQuery('createdby', undefined, {transform: Number}),
|
||||
mode: 'single',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
units: {
|
||||
id: 'units',
|
||||
label: 'Unit (any)',
|
||||
hint: 'Recipes that contain any of the given units',
|
||||
enabled: false,
|
||||
default: [],
|
||||
is: ModelSelect,
|
||||
model: 'Unit',
|
||||
modelValue: useRouteQuery('units', [], {transform: toNumberArray}),
|
||||
mode: 'tags',
|
||||
object: false,
|
||||
searchOnLoad: true
|
||||
},
|
||||
internal: {
|
||||
id: 'internal',
|
||||
label: 'Hide External',
|
||||
hint: 'Hide external recipes',
|
||||
enabled: false,
|
||||
default: "false",
|
||||
is: VSelect,
|
||||
items: [{value: "true", title: 'Yes'}, {value: "false", title: 'No'}],
|
||||
modelValue: useRouteQuery('internal', "false"),
|
||||
},
|
||||
rating: {
|
||||
id: 'rating',
|
||||
label: 'Rating (exact)',
|
||||
hint: 'Recipes with the exact rating',
|
||||
enabled: false,
|
||||
default: undefined,
|
||||
is: RatingField,
|
||||
modelValue: useRouteQuery('rating', undefined, {transform: Number}),
|
||||
},
|
||||
ratingGte: {
|
||||
id: 'ratingGte',
|
||||
label: 'Rating (>=)',
|
||||
hint: 'Recipes with the given or a greater rating',
|
||||
enabled: false,
|
||||
default: undefined,
|
||||
is: RatingField,
|
||||
modelValue: useRouteQuery('ratingGte', undefined, {transform: Number}),
|
||||
},
|
||||
ratingLte: {
|
||||
id: 'ratingLte',
|
||||
label: 'Rating (<=)',
|
||||
hint: 'Recipes with the given or a smaller rating',
|
||||
enabled: false,
|
||||
default: undefined,
|
||||
is: RatingField,
|
||||
modelValue: useRouteQuery('ratingLte', undefined, {transform: Number}),
|
||||
},
|
||||
timescookedGte: {
|
||||
id: 'timescookedGte',
|
||||
label: 'Times Cooked (>=)',
|
||||
hint: 'Recipes that were cooked at least X times',
|
||||
enabled: false,
|
||||
default: undefined,
|
||||
is: VNumberInput,
|
||||
modelValue: useRouteQuery('timescookedGte', undefined, {transform: Number}),
|
||||
},
|
||||
timescookedLte: {
|
||||
id: 'timescookedLte',
|
||||
label: 'Times Cooked (<=)',
|
||||
hint: 'Recipes that were cooked at most X times',
|
||||
enabled: false,
|
||||
default: undefined,
|
||||
is: VNumberInput,
|
||||
modelValue: useRouteQuery('timescookedLte', undefined, {transform: Number}),
|
||||
},
|
||||
makenow: {
|
||||
id: 'makenow',
|
||||
label: 'Foods on Hand',
|
||||
hint: 'Only recipes were all foods (or its substitutes) are marked as on hand',
|
||||
enabled: false,
|
||||
default: "false",
|
||||
is: VSelect,
|
||||
items: [{value: "true", title: 'Yes'}, {value: "false", title: 'No'}],
|
||||
modelValue: useRouteQuery('makenow', "false"),
|
||||
},
|
||||
|
||||
cookedonGte: {
|
||||
id: 'cookedonGte',
|
||||
label: 'Cooked after',
|
||||
hint: 'Only recipes that were cooked on or after the given date.',
|
||||
enabled: false,
|
||||
default: null,
|
||||
is: VDateInput,
|
||||
modelValue: useRouteQuery('cookedonGte', null, {transform: routeQueryDateTransformer}),
|
||||
},
|
||||
cookedonLte: {
|
||||
id: 'cookedonLte',
|
||||
label: 'Cooked before',
|
||||
hint: 'Only recipes that were cooked on or before the given date.',
|
||||
enabled: false,
|
||||
default: null,
|
||||
is: VDateInput,
|
||||
modelValue: useRouteQuery('cookedonLte', null, {transform: routeQueryDateTransformer}),
|
||||
},
|
||||
viewedonGte: {
|
||||
id: 'viewedonGte',
|
||||
label: 'Viewed after',
|
||||
hint: 'Only recipes that were viewed on or after the given date.',
|
||||
enabled: false,
|
||||
default: null,
|
||||
is: VDateInput,
|
||||
modelValue: useRouteQuery('viewedonGte', null, {transform: routeQueryDateTransformer}),
|
||||
},
|
||||
viewedonLte: {
|
||||
id: 'viewedonLte',
|
||||
label: 'Viewed before',
|
||||
hint: 'Only recipes that were viewed on or before the given date.',
|
||||
enabled: false,
|
||||
default: null,
|
||||
is: VDateInput,
|
||||
modelValue: useRouteQuery('viewedonLte', null, {transform: routeQueryDateTransformer}),
|
||||
},
|
||||
|
||||
createdon: {
|
||||
id: 'createdon',
|
||||
label: 'Created on',
|
||||
hint: 'Only recipes that were created on the given date.',
|
||||
enabled: false,
|
||||
default: null,
|
||||
is: VDateInput,
|
||||
modelValue: useRouteQuery('createdon', null, {transform: routeQueryDateTransformer}),
|
||||
},
|
||||
createdonGte: {
|
||||
id: 'createdonGte',
|
||||
label: 'Created on/after',
|
||||
hint: 'Only recipes that were created on or after the given date.',
|
||||
enabled: false,
|
||||
default: null,
|
||||
is: VDateInput,
|
||||
modelValue: useRouteQuery('createdonGte', null, {transform: routeQueryDateTransformer}),
|
||||
},
|
||||
createdonLte: {
|
||||
id: 'createdonLte',
|
||||
label: 'Created on/before',
|
||||
hint: 'Only recipes that were created on or before the given date.',
|
||||
enabled: false,
|
||||
default: null,
|
||||
is: VDateInput,
|
||||
modelValue: useRouteQuery('createdonLte', null, {transform: routeQueryDateTransformer}),
|
||||
},
|
||||
updatedon: {
|
||||
id: 'updatedon',
|
||||
label: 'Updated on',
|
||||
hint: 'Only recipes that were updated on the given date.',
|
||||
enabled: false,
|
||||
default: null,
|
||||
is: VDateInput,
|
||||
modelValue: useRouteQuery('updatedon', null, {transform: routeQueryDateTransformer}),
|
||||
},
|
||||
updatedonGte: {
|
||||
id: 'updatedonGte',
|
||||
label: 'Updated on/after',
|
||||
hint: 'Only recipes that were updated on or after the given date.',
|
||||
enabled: false,
|
||||
default: null,
|
||||
is: VDateInput,
|
||||
modelValue: useRouteQuery('updatedonGte', null, {transform: routeQueryDateTransformer}),
|
||||
},
|
||||
updatedonLte: {
|
||||
id: 'updatedonLte',
|
||||
label: 'Updated on/before',
|
||||
hint: 'Only recipes that were updated on or before the given date.',
|
||||
enabled: false,
|
||||
default: null,
|
||||
is: VDateInput,
|
||||
modelValue: useRouteQuery('updatedonLte', null, {transform: routeQueryDateTransformer}),
|
||||
},
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
Reference in New Issue
Block a user