diff --git a/vue3/src/apps/tandoor/Tandoor.vue b/vue3/src/apps/tandoor/Tandoor.vue
index 6d3b438f0..0f8476974 100644
--- a/vue3/src/apps/tandoor/Tandoor.vue
+++ b/vue3/src/apps/tandoor/Tandoor.vue
@@ -18,18 +18,18 @@
- Settings
- Database
- Admin
- Help
+ {{$t('Settings')}}
+ {{$t('Database')}}
+
+
Spaces
Space 1
Space 2
Space 3
- Messages
- Logout
+ {{$t('Messages')}}
+ {{$t('Logout')}}
diff --git a/vue3/src/components/dialogs/ModelEditorDialog.vue b/vue3/src/components/dialogs/ModelEditDialog.vue
similarity index 100%
rename from vue3/src/components/dialogs/ModelEditorDialog.vue
rename to vue3/src/components/dialogs/ModelEditDialog.vue
diff --git a/vue3/src/components/inputs/ModelSelect.vue b/vue3/src/components/inputs/ModelSelect.vue
index 3fc0c7068..a5cdb9c20 100644
--- a/vue3/src/components/inputs/ModelSelect.vue
+++ b/vue3/src/components/inputs/ModelSelect.vue
@@ -1,7 +1,7 @@
-
+
@@ -28,6 +28,7 @@
:placeholder="label"
:noOptionsText="$t('No_Results')"
:noResultsText="$t('No_Results')"
+ :loading="loading"
/>
@@ -81,7 +82,8 @@ const props = defineProps({
})
const model = defineModel()
-const modelClass = ref({} as GenericModel)
+const modelClass = ref({} as GenericModel)
+const loading = ref(false)
/**
* create instance of model class when mounted
@@ -95,16 +97,17 @@ onMounted(() => {
* @param query input to search for on the API
*/
function search(query: string) {
- return modelClass.value.list({query: query}).then((r) => {
+ loading.value = true
+ return modelClass.value.list({query: query, page: 1, pageSize: 25}).then((r: any) => {
if (modelClass.value.model.isPaginated) {
return r.results
} else {
return r
}
- }).catch((err) => {
+ }).catch((err: any) => {
useMessageStore().addError(ErrorMessageType.FETCH_ERROR, err)
}).finally(() => {
-
+ loading.value = false
})
}
@@ -115,11 +118,11 @@ function search(query: string) {
* @param select$ reference to multiselect instance
*/
async function createObject(object: any, select$: Multiselect) {
- return await modelClass.value.create({name: object[props.itemLabel]}).then((createdObj) => {
+ return await modelClass.value.create({name: object[props.itemLabel]}).then((createdObj : any) => {
useMessageStore().addMessage(MessageType.SUCCESS, 'Created', 5000, createdObj)
emit('create', object)
return createdObj
- }).catch((err) => {
+ }).catch((err: any) => {
useMessageStore().addError(ErrorMessageType.CREATE_ERROR, err)
})
}
diff --git a/vue3/src/components/model_editors/FoodEditor.vue b/vue3/src/components/model_editors/FoodEditor.vue
index d7eb8ed8c..200f4fe91 100644
--- a/vue3/src/components/model_editors/FoodEditor.vue
+++ b/vue3/src/components/model_editors/FoodEditor.vue
@@ -1,10 +1,10 @@
-
+
{{ $t(OBJ_LOCALIZATION_KEY) }} {{ editingObj.name }}
-
+
{{ $t('Food') }}
{{ $t('Properties') }}
{{ $t('Conversion') }}
@@ -14,7 +14,7 @@
-
+
@@ -64,7 +64,7 @@
-
+
@@ -88,7 +88,7 @@
-
+
@@ -138,7 +138,7 @@
-
+
{{ $t('Delete') }}
@@ -156,7 +156,7 @@ import {useI18n} from "vue-i18n";
import {ErrorMessageType, PreparedMessage, useMessageStore} from "@/stores/MessageStore";
import ModelSelect from "@/components/inputs/ModelSelect.vue";
import {VNumberInput} from 'vuetify/labs/VNumberInput'
-import ModelEditorDialog from "@/components/dialogs/ModelEditorDialog.vue"; //TODO remove once component is out of labs
+import ModelEditDialog from "@/components/dialogs/ModelEditDialog.vue";
const {t} = useI18n()
@@ -173,7 +173,7 @@ const editingObj = ref({} as Food)
const loading = ref(false)
// object specific data (for selects/display)
-const tab = ref("misc")
+const tab = ref("food")
const unitConversions = ref([] as UnitConversion[])
@@ -196,7 +196,7 @@ const isUpdate = computed(() => {
* display name for object in headers/delete dialog/...
*/
const objectName = computed(() => {
- return isUpdate ? `${t(OBJ_LOCALIZATION_KEY)} ${editingObj.value.token}` : `${t(OBJ_LOCALIZATION_KEY)} (${t('New')})`
+ return isUpdate ? `${t(OBJ_LOCALIZATION_KEY)} ${editingObj.value.name}` : `${t(OBJ_LOCALIZATION_KEY)} (${t('New')})`
})
onMounted(() => {
@@ -204,10 +204,13 @@ onMounted(() => {
editingObj.value = props.item
} else if (props.itemId != null) {
const api = new ApiApi()
+ loading.value = true
api.apiFoodRetrieve({id: props.itemId}).then(r => {
editingObj.value = r
}).catch(err => {
useMessageStore().addError(ErrorMessageType.FETCH_ERROR, err)
+ }).finally(() => {
+ loading.value = false
})
} else {
// functions to populate defaults for new item
diff --git a/vue3/src/components/settings/ApiSettings.vue b/vue3/src/components/settings/ApiSettings.vue
index 5679e49eb..8cb7e434b 100644
--- a/vue3/src/components/settings/ApiSettings.vue
+++ b/vue3/src/components/settings/ApiSettings.vue
@@ -26,7 +26,7 @@
Make sure to save your token after creation as they cannot be viewed afterwards.
{{ $t('New') }}
-
+
@@ -39,7 +39,7 @@
Expired
-
+
@@ -53,14 +53,12 @@
diff --git a/vue3/src/pages/ModelListPage.vue b/vue3/src/pages/ModelListPage.vue
index faf52bea9..200a202ce 100644
--- a/vue3/src/pages/ModelListPage.vue
+++ b/vue3/src/pages/ModelListPage.vue
@@ -31,8 +31,7 @@
:items-length="itemCount"
:loading="loading"
:search="searchQuery"
-
- :headers="tableHeaders"
+ :headers="genericModel.getTableHeaders()"
:items-per-page-options="itemsPerPageOptions"
:show-select="tableShowSelect"
>
@@ -44,10 +43,7 @@
-
-
-