Merge branch 'develop' into feature/shopping-ui

# Conflicts:
#	vue/src/locales/en.json
This commit is contained in:
vabene1111
2024-01-03 15:09:30 +01:00
30 changed files with 1098 additions and 803 deletions

View File

@@ -506,7 +506,6 @@
<input
class="form-control"
maxlength="256"
style="height: 100%;"
v-model="ingredient.note"
v-bind:placeholder="$t('Note')"
v-on:keydown.tab="

View File

@@ -1,8 +1,8 @@
<template>
<div id="app">
<div class="row mt-2">
<div class="col col-12">
<b-row class="mt-2">
<b-col cols="12">
<div v-if="space !== undefined">
<h6><i class="fas fa-book"></i> {{ $t('Recipes') }}</h6>
<b-progress height="1.5rem" :max="space.max_recipes" variant="success" :striped="true">
@@ -32,13 +32,13 @@
</b-progress>
</div>
</div>
</div>
</b-col>
</b-row>
<div class="row mt-4">
<div class="col col-12">
<b-row class="mt-4">
<b-col cols="12">
<div v-if="user_spaces !== undefined">
<h4 class="mt-2"><i class="fas fa-users"></i> {{ $t('Users') }}</h4>
<h4><i class="fas fa-users"></i> {{ $t('Users') }}</h4>
<table class="table">
<thead>
<tr>
@@ -51,14 +51,14 @@
<td>{{ us.user.display_name }}</td>
<td>
<generic-multiselect
class="input-group-text m-0 p-0"
@change="us.groups = $event.val; updateUserSpace(us)"
label="name"
:initial_selection="us.groups"
:model="Models.GROUP"
style="flex-grow: 1; flex-shrink: 1; flex-basis: 0"
:limit="10"
:multiple="true"
class="input-group-text m-0 p-0"
@change="us.groups = $event.val; updateUserSpace(us)"
label="name"
:initial_selection="us.groups"
:model="Models.GROUP"
style="flex-grow: 1; flex-shrink: 1; flex-basis: 0"
:limit="10"
:multiple="true"
/>
</td>
<td>
@@ -67,12 +67,12 @@
</tr>
</table>
</div>
</div>
</div>
</b-col>
</b-row>
<div class="row mt-2">
<div class="col col-12">
<b-row class="mt-2">
<b-col cols="12">
<div v-if="invite_links !== undefined">
<h4 class="mt-2"><i class="fas fa-users"></i> {{ $t('Invites') }}</h4>
<table class="table">
@@ -90,14 +90,14 @@
<td>{{ il.email }}</td>
<td>
<generic-multiselect
class="input-group-text m-0 p-0"
@change="il.group = $event.val;"
label="name"
:initial_single_selection="il.group"
:model="Models.GROUP"
style="flex-grow: 1; flex-shrink: 1; flex-basis: 0"
:limit="10"
:multiple="false"
class="input-group-text m-0 p-0"
@change="il.group = $event.val;"
label="name"
:initial_single_selection="il.group"
:model="Models.GROUP"
style="flex-grow: 1; flex-shrink: 1; flex-basis: 0"
:limit="10"
:multiple="false"
/>
</td>
<td><input type="date" v-model="il.valid_until" class="form-control"></td>
@@ -131,43 +131,102 @@
</table>
<b-button variant="primary" @click="show_invite_create = true">{{ $t('Create') }}</b-button>
</div>
</div>
</div>
</b-col>
</b-row>
<div class="row mt-4" v-if="space !== undefined">
<div class="col col-12">
<h4 class="mt-2"><i class="fas fa-cogs"></i> {{ $t('Settings') }}</h4>
<b-row class="mt-4" v-if="space !== undefined">
<b-col cols="12">
<h4>{{ $t('Cosmetic') }}</h4>
<b-alert variant="warning" show><i class="fas fa-exclamation-triangle"></i> {{ $t('Space_Cosmetic_Settings') }}</b-alert>
<label>{{ $t('Message') }}</label>
<b-form-textarea v-model="space.message"></b-form-textarea>
<b-form-group :label="$t('Image')" :description="$t('CustomImageHelp')">
<generic-multiselect :initial_single_selection="space.image"
:model="Models.USERFILE"
:multiple="false"
@change="space.image = $event.val;"></generic-multiselect>
</b-form-group>
<label>{{ $t('Image') }}</label>
<generic-multiselect :initial_single_selection="space.image"
:model="Models.USERFILE"
:multiple="false"
@change="space.image = $event.val;"></generic-multiselect>
<br/>
<b-form-group :label="$t('Logo')" :description="$t('CustomNavLogoHelp')">
<generic-multiselect :initial_single_selection="space.nav_logo"
:model="Models.USERFILE"
:multiple="false"
@change="space.nav_logo = $event.val;"></generic-multiselect>
</b-form-group>
<label>{{ $t('FoodInherit') }}</label>
<generic-multiselect :initial_selection="space.food_inherit"
:model="Models.FOOD_INHERIT_FIELDS"
@change="space.food_inherit = $event.val;">
</generic-multiselect>
<span class="text-muted small">{{ $t('food_inherit_info') }}</span><br/>
<b-form-group :label="$t('Theme')">
<b-form-select v-model="space.space_theme">
<b-form-select-option value="BLANK">----</b-form-select-option>
<b-form-select-option value="TANDOOR">Tandoor</b-form-select-option>
<b-form-select-option value="TANDOOR_DARK">Tandoor Dark (Beta)</b-form-select-option>
<b-form-select-option value="BOOTSTRAP">Bootstrap</b-form-select-option>
<b-form-select-option value="DARKLY">Darkly</b-form-select-option>
<b-form-select-option value="FLATLY">Flatly</b-form-select-option>
<b-form-select-option value="SUPERHERO">Superhero</b-form-select-option>
</b-form-select>
</b-form-group>
<a class="btn btn-success" @click="updateSpace()">{{ $t('Update') }}</a><br/>
<a class="btn btn-warning mt-1" @click="resetInheritance()">{{ $t('reset_food_inheritance') }}</a><br/>
<span class="text-muted small">{{ $t('reset_food_inheritance_info') }}</span>
</div>
</div>
<div class="row">
<div class="col-md-12">
<b-form-group :label="$t('CustomTheme')" :description="$t('CustomThemeHelp')">
<generic-multiselect :initial_single_selection="space.custom_space_theme"
:model="Models.USERFILE"
:multiple="false"
@change="space.custom_space_theme = $event.val;"></generic-multiselect>
</b-form-group>
<b-form-group :label="$t('Nav_Color')" :description="$t('Nav_Color_Help')">
<b-input-group>
<b-form-input type="color" v-model="space.nav_bg_color"></b-form-input>
<b-input-group-append>
<b-button @click="space.nav_bg_color = ''">{{ $t('Reset') }}</b-button>
</b-input-group-append>
</b-input-group>
</b-form-group>
<b-form-group :label="$t('Nav_Text_Mode')" :description="$t('Nav_Text_Mode_Help')">
<b-form-select v-model="space.nav_text_color">
<b-form-select-option value="BLANK">----</b-form-select-option>
<b-form-select-option value="LIGHT">Light</b-form-select-option>
<b-form-select-option value="DARK">Dark</b-form-select-option>
</b-form-select>
</b-form-group>
<b-button variant="success" @click="updateSpace()">{{ $t('Update') }}</b-button>
</b-col>
</b-row>
<b-row class="mt-4" v-if="space !== undefined">
<b-col cols="12">
<h4><i class="fas fa-cogs"></i> {{ $t('Settings') }}</h4>
<b-form-group :label="$t('Message')">
<b-form-textarea v-model="space.message"></b-form-textarea>
</b-form-group>
<b-form-group :label="$t('FoodInherit')" :description="$t('food_inherit_info')">
<generic-multiselect :initial_selection="space.food_inherit"
:model="Models.FOOD_INHERIT_FIELDS"
@change="space.food_inherit = $event.val;">
</generic-multiselect>
</b-form-group>
<b-form-group :description="$t('reset_food_inheritance_info')">
<b-button-group class="mt-2">
<b-button variant="success" @click="updateSpace()">{{ $t('Update') }}</b-button>
<b-button variant="warning" @click="resetInheritance()">{{ $t('reset_food_inheritance') }}</b-button>
</b-button-group>
</b-form-group>
</b-col>
</b-row>
<b-row class="mt-4">
<b-col cols="12">
<h4>{{ $t('Open_Data_Import') }}</h4>
<open-data-import-component></open-data-import-component>
</div>
</b-col>
</div>
</b-row>
<div class="row mt-4">

View File

@@ -227,11 +227,18 @@ export default {
async autoPlanThread(autoPlan, mealTypeIndex) {
let apiClient = new ApiApiFactory()
let keyword_ids = []
for (const index in autoPlan.keywords[mealTypeIndex]){
let keyword = autoPlan.keywords[mealTypeIndex][index]
keyword_ids.push(keyword.id)
}
let data = {
"start_date": moment(autoPlan.startDay).format("YYYY-MM-DD"),
"end_date": moment(autoPlan.endDay).format("YYYY-MM-DD"),
"meal_type_id": autoPlan.meal_types[mealTypeIndex].id,
"keywords": autoPlan.keywords[mealTypeIndex],
"keyword_ids": keyword_ids,
"servings": autoPlan.servings,
"shared": autoPlan.shared,
"addshopping": autoPlan.addshopping

View File

@@ -49,34 +49,47 @@
</b-form-select>
</b-form-group>
<b-alert variant="warning" show><i class="fas fa-exclamation-triangle"></i> {{ $t('Space_Cosmetic_Settings') }}</b-alert>
<b-form-group :label="$t('Theme')">
<b-form-select v-model="user_preferences.theme" @change="updateSettings(true);">
<b-form-select-option value="TANDOOR">Tandoor</b-form-select-option>
<b-form-select-option value="TANDOOR_DARK">Tandoor Dark (Beta)</b-form-select-option>
<b-form-select-option value="BOOTSTRAP">Bootstrap</b-form-select-option>
<b-form-select-option value="DARKLY">Darkly</b-form-select-option>
<b-form-select-option value="FLATLY">Flatly</b-form-select-option>
<b-form-select-option value="SUPERHERO">Superhero</b-form-select-option>
<b-form-select-option value="TANDOOR_DARK">Tandoor Dark (INCOMPLETE)</b-form-select-option>
</b-form-select>
</b-form-group>
<b-form-group :description="$t('Sticky_Nav_Help')">
<b-form-checkbox v-model="user_preferences.sticky_navbar" @change="updateSettings(true);">
{{ $t('Sticky_Nav') }}
</b-form-checkbox>
</b-form-group>
<b-form-group :label="$t('Nav_Color')" :description="$t('Nav_Color_Help')">
<b-form-select v-model="user_preferences.nav_color" @change="updateSettings(true);">
<b-form-select-option value="PRIMARY">Primary</b-form-select-option>
<b-form-select-option value="SECONDARY">Secondary</b-form-select-option>
<b-form-select-option value="SUCCESS">Success</b-form-select-option>
<b-form-select-option value="INFO">Info</b-form-select-option>
<b-form-select-option value="WARNING">Warning</b-form-select-option>
<b-form-select-option value="DANGER">Danger</b-form-select-option>
<b-input-group>
<b-form-input type="color" v-model="user_preferences.nav_bg_color" @change="updateSettings(true);"></b-form-input>
<b-input-group-append>
<b-button @click="user_preferences.nav_bg_color = '#ddbf86'; updateSettings(true);">{{ $t('Reset') }}</b-button>
</b-input-group-append>
</b-input-group>
</b-form-group>
<b-form-group :label="$t('Nav_Text_Mode')" :description="$t('Nav_Text_Mode_Help')">
<b-form-select v-model="user_preferences.nav_text_color" @change="updateSettings(true);">
<b-form-select-option value="LIGHT">Light</b-form-select-option>
<b-form-select-option value="DARK">Dark</b-form-select-option>
</b-form-select>
</b-form-group>
<b-form-group :description="$t('Show_Logo_Help')">
<b-form-checkbox v-model="user_preferences.nav_show_logo" @change="updateSettings(true);">
{{ $t('Show_Logo') }}
</b-form-checkbox>
</b-form-group>
<b-form-group :description="$t('Sticky_Nav_Help')">
<b-form-checkbox v-model="user_preferences.nav_sticky" @change="updateSettings(true);">
{{ $t('Sticky_Nav') }}
</b-form-checkbox>
</b-form-group>

View File

@@ -535,5 +535,6 @@
"Never_Unit": "Nie Einheit",
"Unit_Replace": "Einheit Ersetzen",
"quart": "\"Quart\" [qt] (US, Volumen)",
"imperial_quart": "Engl. \"Quart\" [imp qt] (UK, Volumen)"
"imperial_quart": "Engl. \"Quart\" [imp qt] (UK, Volumen)",
"err_importing_recipe": "Beim Importieren des Rezeptes ist ein Fehler aufgetreten!"
}

File diff suppressed because it is too large Load Diff

View File

@@ -263,9 +263,9 @@
"Current_Period": "תקופה נוכחית",
"Next_Day": "היום הבא",
"Previous_Day": "יום קודם",
"Inherit": "",
"InheritFields": "",
"FoodInherit": "",
"Inherit": "ירושה",
"InheritFields": "ירושת ערכי שדות",
"FoodInherit": "ערכי מזון",
"ShowUncategorizedFood": "הצג לא מוגדר",
"GroupBy": "אסוף לפי",
"Language": "שפה",
@@ -317,14 +317,14 @@
"CategoryName": "שם קטגוריה",
"SupermarketName": "שם סופרמרקט",
"CategoryInstruction": "גרור קטגוריות לשינוי הסדר שבו הן מופיעות ברשימת הקניות.",
"shopping_recent_days_desc": "",
"shopping_recent_days": "",
"download_pdf": "",
"download_csv": "",
"shopping_recent_days_desc": "מספר ימי קניות להציג.",
"shopping_recent_days": "מספר ימים",
"download_pdf": "הורד PDF",
"download_csv": "הורד CSV",
"csv_delim_help": "",
"csv_delim_label": "",
"SuccessClipboard": "",
"copy_to_clipboard": "",
"SuccessClipboard": "רשימת קניות הועתקה",
"copy_to_clipboard": "העתק",
"csv_prefix_help": "תחילית להוספה כאשר מעתיקים את הרשימה ללוח הכתיבה.",
"csv_prefix_label": "רשימת תחיליות",
"copy_markdown_table": "העתק כטבלת Markdown",
@@ -521,5 +521,15 @@
"Alignment": "יישור",
"StartDate": "תאריך התחלה",
"EndDate": "תאריך סיום",
"OrderInformation": "המוצרים מוצגים מהמספר הקטן לגדול."
"OrderInformation": "המוצרים מוצגים מהמספר הקטן לגדול.",
"FDC_ID_help": "מספר FDC",
"FDC_ID": "מספר FDC",
"show_step_ingredients_setting": "הצג חומרי גלם בתוך שלבי המרשם",
"err_importing_recipe": "שגיאה בעת יבוא המרשם!",
"FDC_Search": "חפש FDC",
"property_type_fdc_hint": "רק תכונות עם מספר FDC ימשכו מבסיס נתוני FDC",
"Property_Editor": "עורך ערכים",
"show_step_ingredients_setting_help": "הצג טבלת חומרי גלם לצדי שלבי המרשם. ניתן לשנות בזמן עריכת המרשם.",
"show_step_ingredients": "הראה חומרי גלם בשלבי המרשם",
"hide_step_ingredients": "הסתר חומרי גלם בשלבי המרשם"
}

View File

@@ -345,5 +345,6 @@
"GroupBy": "Сгруппировать по",
"food_inherit_info": "Поля для продуктов питания, которые должны наследоваться по умолчанию.",
"warning_space_delete": "Вы можете удалить свое пространство, включая все рецепты, списки покупок, планы питания и все остальное, что вы создали. Этого нельзя отменить! Вы уверены, что хотите это сделать?",
"Description_Replace": "Изменить описание"
"Description_Replace": "Изменить описание",
"err_importing_recipe": "Произошла ошибка при импортировании рецепта!"
}

View File

@@ -4537,6 +4537,18 @@ export interface Space {
* @memberof Space
*/
image?: RecipeFile | null;
/**
*
* @type {RecipeFile}
* @memberof Space
*/
nav_logo?: RecipeFile | null;
/**
*
* @type {RecipeFile}
* @memberof Space
*/
space_theme?: RecipeFile | null;
/**
*
* @type {boolean}
@@ -5124,7 +5136,19 @@ export interface UserPreference {
* @type {string}
* @memberof UserPreference
*/
nav_color?: UserPreferenceNavColorEnum;
nav_bg_color?: string;
/**
*
* @type {string}
* @memberof UserPreference
*/
nav_text_color?: UserPreferenceNavTextColorEnum;
/**
*
* @type {boolean}
* @memberof UserPreference
*/
nav_show_logo?: boolean;
/**
*
* @type {string}
@@ -5160,7 +5184,7 @@ export interface UserPreference {
* @type {boolean}
* @memberof UserPreference
*/
sticky_navbar?: boolean;
nav_sticky?: boolean;
/**
*
* @type {number}
@@ -5281,13 +5305,7 @@ export enum UserPreferenceThemeEnum {
* @export
* @enum {string}
*/
export enum UserPreferenceNavColorEnum {
Primary = 'PRIMARY',
Secondary = 'SECONDARY',
Success = 'SUCCESS',
Info = 'INFO',
Warning = 'WARNING',
Danger = 'DANGER',
export enum UserPreferenceNavTextColorEnum {
Light = 'LIGHT',
Dark = 'DARK'
}