recipe view enhancements

This commit is contained in:
vabene1111
2021-04-28 11:27:20 +02:00
parent ae3eb6cfe5
commit be84e44e43
4 changed files with 94 additions and 28 deletions

View File

@ -22,10 +22,10 @@ def search_recipes(request, queryset, params):
search_last_viewed = int(params.get('last_viewed', 0))
if search_last_viewed > 0:
last_viewed_recipes = ViewLog.objects.filter(created_by=request.user, space=request.space).order_by(
'-created_at').values('recipe').distinct().all()[:search_last_viewed]
return queryset.filter(pk__in=last_viewed_recipes)
last_viewed_recipes = ViewLog.objects.filter(created_by=request.user, space=request.space).values_list('recipe__pk', flat=True).distinct()
# TODO filter by created by in last two weeks and re add limit to recipe selection (after reversing the order)
# Distinct does not work with order by
return queryset.filter(pk__in=list(set(last_viewed_recipes)))
if settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2',
'django.db.backends.postgresql']:

View File

@ -51,8 +51,46 @@
</div>
</div>
<button id="id_settings_button" class="btn btn-primary"><i class="fas fa-cog"></i></button>
<b-popover
target="id_settings_button"
triggers="click"
placement="bottom"
:title="$t('Settings')">
<div>
<b-form-group
v-bind:label="$t('Recently_Viewed')"
label-for="popover-input-1"
label-cols="3"
class="mb-1">
<b-form-input
type="number"
v-model="settings.recently_viewed"
id="popover-input-1"
size="sm"
></b-form-input>
</b-form-group>
<b-form-group
v-bind:label="$t('Meal_Plan')"
label-for="popover-input-2"
label-cols="3"
class="mb-1">
<b-form-checkbox
switch
v-model="settings.show_meal_plan"
id="popover-input-2"
size="sm"
></b-form-checkbox>
</b-form-group>
</div>
<div class="row" style="margin-top: 1vh">
<div class="col-12" style="text-align: right">
<b-button size="sm" variant="secondary" style="margin-right:8px">Cancel
</b-button>
<b-button size="sm" variant="primary">Ok</b-button>
</div>
</div>
</b-popover>
<div class="row">
<div class="col-12">
@ -224,23 +262,33 @@ export default {
},
mounted() {
this.$nextTick(function () {
if (this.$cookies.isKey('search_settings')) {
console.log('loaded cookie settings')
console.log('loaded cookie settings', this.$cookies.get("search_settings"))
this.settings = this.$cookies.get("search_settings")
}
this.refreshData()
this.loadMealPlan()
this.loadRecentlyViewed()
})
this.loadSpecialData()
this.refreshData()
},
watch: {
settings: {
handler(val) {
console.log('saved cookie settings', val)
handler() {
this.$cookies.set("search_settings", this.settings, -1)
},
deep: true
}
},
'settings.show_meal_plan': function () {
console.log('Test')
this.loadMealPlan()
},
'settings.recently_viewed': function () {
console.log('RV')
this.loadRecentlyViewed()
},
},
methods: {
refreshData: function () {
@ -271,9 +319,10 @@ export default {
this.pagination_count = result.data.count
})
},
loadSpecialData: function () {
loadMealPlan: function () {
let apiClient = new ApiApiFactory()
if (this.settings.show_meal_plan) {
apiClient.listMealPlans({
query: {
from_date: moment().format('YYYY-MM-DD'),
@ -282,10 +331,21 @@ export default {
}).then(result => {
this.meal_plans = result.data
})
} else {
this.meal_plans = []
}
apiClient.listRecipes({query: {last_viewed: 5}}).then(result => {
},
loadRecentlyViewed: function () {
let apiClient = new ApiApiFactory()
if (this.settings.recently_viewed > 0) {
apiClient.listRecipes({query: {last_viewed: this.settings.recently_viewed}}).then(result => {
this.last_viewed_recipes = result.data.results
})
} else {
this.last_viewed_recipes = []
}
},
genericSelectChanged: function (obj) {
this[obj.var] = obj.val

View File

@ -3,12 +3,17 @@
"all_fields_optional": "All fields are optional and can be left empty.",
"convert_internal": "Convert to internal recipe",
"show_only_internal": "Show only internal recipes",
"Log_Recipe_Cooking": "Log Recipe Cooking",
"External_Recipe_Image": "External Recipe Image",
"Add_to_Book": "Add to Book",
"Add_to_Shopping": "Add to Shopping",
"Add_to_Plan": "Add to Plan",
"Step_start_time": "Step start time",
"Meal_Plan": "Meal Plan",
"Select_Book": "Select Book",
"Recipe_Image": "Recipe Image",
"Import_finished": "Import finished",
@ -18,6 +23,7 @@
"Url_Import": "Url Import",
"Reset_Search": "Reset Search",
"Recently_Viewed": "Recently Viewed",
"Keywords": "Keywords",
"Books": "Books",
"Proteins": "Proteins",

View File

@ -1 +1 @@
{"status":"done","chunks":{"recipe_search_view":["js/chunk-vendors.js","js/recipe_search_view.js","recipe_search_view.84ec50602e1246c3fe35.hot-update.js"],"recipe_view":["js/chunk-vendors.js","js/recipe_view.js"],"offline_view":["js/chunk-vendors.js","js/offline_view.js"],"import_response_view":["js/chunk-vendors.js","js/import_response_view.js"]},"publicPath":"http://localhost:8080/","assets":{"js/chunk-vendors.js":{"name":"js/chunk-vendors.js","path":"js\\chunk-vendors.js","publicPath":"http://localhost:8080/js/chunk-vendors.js"},"js/import_response_view.js":{"name":"js/import_response_view.js","path":"js\\import_response_view.js","publicPath":"http://localhost:8080/js/import_response_view.js"},"js/offline_view.js":{"name":"js/offline_view.js","path":"js\\offline_view.js","publicPath":"http://localhost:8080/js/offline_view.js"},"js/recipe_search_view.js":{"name":"js/recipe_search_view.js","path":"js\\recipe_search_view.js","publicPath":"http://localhost:8080/js/recipe_search_view.js"},"js/recipe_view.js":{"name":"js/recipe_view.js","path":"js\\recipe_view.js","publicPath":"http://localhost:8080/js/recipe_view.js"},"recipe_search_view.84ec50602e1246c3fe35.hot-update.js":{"name":"recipe_search_view.84ec50602e1246c3fe35.hot-update.js","path":"recipe_search_view.84ec50602e1246c3fe35.hot-update.js","publicPath":"http://localhost:8080/recipe_search_view.84ec50602e1246c3fe35.hot-update.js"},"84ec50602e1246c3fe35.hot-update.json":{"name":"84ec50602e1246c3fe35.hot-update.json","path":"84ec50602e1246c3fe35.hot-update.json","publicPath":"http://localhost:8080/84ec50602e1246c3fe35.hot-update.json"},"recipe_search_view.html":{"name":"recipe_search_view.html","path":"recipe_search_view.html","publicPath":"http://localhost:8080/recipe_search_view.html"},"recipe_view.html":{"name":"recipe_view.html","path":"recipe_view.html","publicPath":"http://localhost:8080/recipe_view.html"},"offline_view.html":{"name":"offline_view.html","path":"offline_view.html","publicPath":"http://localhost:8080/offline_view.html"},"import_response_view.html":{"name":"import_response_view.html","path":"import_response_view.html","publicPath":"http://localhost:8080/import_response_view.html"},"manifest.json":{"name":"manifest.json","path":"manifest.json","publicPath":"http://localhost:8080/manifest.json"}}}
{"status":"done","chunks":{"recipe_search_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/recipe_search_view.js"],"recipe_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/recipe_view.js"],"offline_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/offline_view.js"],"import_response_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/import_response_view.js"]},"assets":{"../../templates/sw.js":{"name":"../../templates/sw.js","path":"..\\..\\templates\\sw.js"},"css/chunk-vendors.css":{"name":"css/chunk-vendors.css","path":"css\\chunk-vendors.css"},"js/chunk-vendors.js":{"name":"js/chunk-vendors.js","path":"js\\chunk-vendors.js"},"js/import_response_view.js":{"name":"js/import_response_view.js","path":"js\\import_response_view.js"},"js/offline_view.js":{"name":"js/offline_view.js","path":"js\\offline_view.js"},"js/recipe_search_view.js":{"name":"js/recipe_search_view.js","path":"js\\recipe_search_view.js"},"js/recipe_view.js":{"name":"js/recipe_view.js","path":"js\\recipe_view.js"},"recipe_search_view.html":{"name":"recipe_search_view.html","path":"recipe_search_view.html"},"recipe_view.html":{"name":"recipe_view.html","path":"recipe_view.html"},"offline_view.html":{"name":"offline_view.html","path":"offline_view.html"},"import_response_view.html":{"name":"import_response_view.html","path":"import_response_view.html"},"manifest.json":{"name":"manifest.json","path":"manifest.json"}}}