diff --git a/.github/labeler.yml b/.github/labeler.yml
index e47f5f5b9bb..bca8b139d67 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -43,7 +43,7 @@ User dashboard:
⚙️ Settings:
- changed-files:
- - any-glob-to-any-file: 'src/views/UserSettings.vue'
+ - any-glob-to-any-file: 'src/views/Settings.vue'
Action menus:
- changed-files:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fdf47d10caa..5b3986fd8d4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,19 @@
# Changelog
+## [1.112.2](https://github.com/openfoodfacts/open-prices-frontend/compare/v1.112.1...v1.112.2) (2025-01-15)
+
+
+### Bug Fixes
+
+* **Price add multiple:** fix hide ProofCard close button in the top-right. ref [#1254](https://github.com/openfoodfacts/open-prices-frontend/issues/1254) ([d2a94d5](https://github.com/openfoodfacts/open-prices-frontend/commit/d2a94d5fde7969020af6d80b2f3c58e01c56a3c1))
+
+
+### Technical
+
+* **Contribution assistant:** button block on mobile. Small fixes. ref [#1271](https://github.com/openfoodfacts/open-prices-frontend/issues/1271) ([ae34c0a](https://github.com/openfoodfacts/open-prices-frontend/commit/ae34c0a787c9bf657c040899431ffa6c91b0a131))
+* **User dashboard:** remove unused UserSettings page. ref [#950](https://github.com/openfoodfacts/open-prices-frontend/issues/950) ([c78bb03](https://github.com/openfoodfacts/open-prices-frontend/commit/c78bb03b4f265b3ff392b313855faf3d49183795))
+* **User dashboard:** Use 'My dashboard' wording instead of 'Dashboard' ([dea64ba](https://github.com/openfoodfacts/open-prices-frontend/commit/dea64bacd9cadf234f0839be28a7de2b9c64799c))
+
## [1.112.1](https://github.com/openfoodfacts/open-prices-frontend/compare/v1.112.0...v1.112.1) (2025-01-15)
diff --git a/src/components/Header.vue b/src/components/Header.vue
index 0028c201961..5f79c5e07d3 100644
--- a/src/components/Header.vue
+++ b/src/components/Header.vue
@@ -23,8 +23,8 @@
-
-
+
+
{{ username }}
diff --git a/src/components/PriceAlreadyUploadedListCard.vue b/src/components/PriceAlreadyUploadedListCard.vue
index 4f5bef09af6..8aebfb78686 100644
--- a/src/components/PriceAlreadyUploadedListCard.vue
+++ b/src/components/PriceAlreadyUploadedListCard.vue
@@ -77,7 +77,7 @@ export default {
},
proofPriceUploadedListSum() {
return this.proofPriceUploadedList.reduce((acc, priceUploaded) => {
- return acc + parseFloat(priceUploaded.price)*parseInt(priceUploaded.receipt_quantity)
+ return acc + parseFloat(priceUploaded.price)*parseFloat(priceUploaded.receipt_quantity)
}, 0)
}
},
diff --git a/src/components/PriceInputRow.vue b/src/components/PriceInputRow.vue
index 3c3fbcefce0..afd3b2453df 100644
--- a/src/components/PriceInputRow.vue
+++ b/src/components/PriceInputRow.vue
@@ -64,7 +64,7 @@
density="compact"
:label="$t('Common.QuantityBought')"
type="text"
- inputmode="numeric"
+ inputmode="decimal"
:rules="receiptQuantityRules"
:prepend-inner-icon="PROOF_TYPE_RECEIPT_ICON"
hide-details="auto"
@@ -143,7 +143,8 @@ export default {
if (!this.priceForm.receipt_quantity) return [() => true] // optional field
return [
value => !isNaN(value) || this.$t('PriceRules.Number'),
- value => Number(value) >= 1 || this.$t('PriceRules.Positive'),
+ value => Number(value) >= 0 || this.$t('PriceRules.Positive'),
+ value => !value.match(/\.\d{3}/) || this.$t('PriceRules.TwoDecimals'),
]
},
productIsTypeCategory() {
diff --git a/src/components/PricePriceRow.vue b/src/components/PricePriceRow.vue
index bd55b7450a5..99eff78bb87 100644
--- a/src/components/PricePriceRow.vue
+++ b/src/components/PricePriceRow.vue
@@ -9,7 +9,7 @@
{{ $t('PriceCard.FullPrice') }} {{ getPriceValueDisplay(price.price_without_discount) }}
-
+
x{{ price.receipt_quantity }}
diff --git a/src/router.js b/src/router.js
index 0beb0eb4bba..19ec9ef46ed 100644
--- a/src/router.js
+++ b/src/router.js
@@ -6,10 +6,9 @@ import localeManager from './i18n/localeManager.js'
const routes = [
{ path: '/', name: 'home', component: () => import('./views/Home.vue'), meta: { title: 'Home', icon: 'mdi-home', drawerMenu: true } },
{ path: '/sign-in', name: 'sign-in', component: () => import('./views/SignIn.vue'), meta: { title: 'SignIn', icon: 'mdi-login', drawerMenu: true, requiresAuth: false, breadcrumbs: [{title: 'SignIn', disabled: true }] } },
- { path: '/dashboard', name: 'dashboard', component: () => import('./views/UserDashboard.vue'), meta: { title: 'Dashboard', icon: 'mdi-account-circle', drawerMenu: true, requiresAuth: true, breadcrumbs: [{title: 'Dashboard', disabled: true }] } },
- { path: '/dashboard/prices', name: 'dashboard-prices', component: () => import('./views/UserDashboardPriceList.vue'), meta: { title: 'MyPrices', requiresAuth: true, breadcrumbs: [{title: 'Dashboard', disabled: false, to: '/dashboard' }, {title: 'MyPrices', disabled: true}] } },
- { path: '/dashboard/proofs', name: 'dashboard-proofs', component: () => import('./views/UserDashboardProofList.vue'), meta: { title: 'MyProofs', requiresAuth: true, breadcrumbs: [{title: 'Dashboard', disabled: false, to: '/dashboard' }, {title: 'MyProofs', disabled: true}] } },
- { path: '/dashboard/settings', name: 'dashboard-settings', component: () => import('./views/UserSettings.vue'), meta: { title: 'Settings', requiresAuth: true, breadcrumbs: [{title: 'Settings', disabled: true }] } }, // not used anymore
+ { path: '/dashboard', name: 'dashboard', component: () => import('./views/UserDashboard.vue'), meta: { title: 'MyDashboard', icon: 'mdi-account-circle', drawerMenu: true, requiresAuth: true, breadcrumbs: [{title: 'MyDashboard', disabled: true }] } },
+ { path: '/dashboard/prices', name: 'dashboard-prices', component: () => import('./views/UserDashboardPriceList.vue'), meta: { title: 'MyPrices', requiresAuth: true, breadcrumbs: [{title: 'MyDashboard', disabled: false, to: '/dashboard' }, {title: 'MyPrices', disabled: true}] } },
+ { path: '/dashboard/proofs', name: 'dashboard-proofs', component: () => import('./views/UserDashboardProofList.vue'), meta: { title: 'MyProofs', requiresAuth: true, breadcrumbs: [{title: 'MyDashboard', disabled: false, to: '/dashboard' }, {title: 'MyProofs', disabled: true}] } },
{ path: '/prices/add', name: 'add-price', component: () => import('./views/PriceAddHome.vue'), meta: { title: 'AddPrice', requiresAuth: true, breadcrumbs: [{title: 'AddPrice', disabled: true }] }}, // not used anymore
{ path: '/prices/add/single', name: 'price-add-single', component: () => import('./views/PriceAddSingle.vue'), meta: { title: 'Add a single price (price tag)', icon: 'mdi-tag-plus-outline', requiresAuth: true, breadcrumbs: [{title: 'Experiments', disabled: false, to: '/experiments' }, {title: 'PriceAddSingle', disabled: true }] }},
{ path: '/prices/add/multiple', name: 'price-add-multiple', component: () => import('./views/PriceAddMultiple.vue'), meta: { title: 'AddPrices', icon: 'mdi-tag-plus-outline', drawerMenu: true, requiresAuth: true, breadcrumbs: [{title: 'AddPrices', disabled: true }] }},
diff --git a/src/views/ContributionAssistant.vue b/src/views/ContributionAssistant.vue
index 211748b582e..dac910da129 100644
--- a/src/views/ContributionAssistant.vue
+++ b/src/views/ContributionAssistant.vue
@@ -57,11 +57,11 @@
-
+
{{ $t('ContributionAssistant.LabelsExtractionSteps.SendLabels') }}
-
+
{{ $t('ContributionAssistant.LabelsExtractionSteps.SendLabelsButton') }}
@@ -106,7 +106,7 @@
{{ $t('ContributionAssistant.PriceAddConfirmationMessage', { numberOfPricesAdded: productPriceFormsWithoutPriceId.length, date: proofObject.date, locationName: locationName }) }}
-
+
{{ $t('Common.UploadMultiplePrices', productPriceFormsWithoutPriceId.length) }}
@@ -129,19 +129,29 @@
>
{{ $t('ContributionAssistant.PriceAddProgress', { numberOfPricesAdded: numberOfPricesAdded, totalNumberOfPrices: productPriceFormsWithoutPriceId.length }) }}
-
- {{ $t('ContributionAssistant.GoToDashboard') }}
-
-
+
+
+
+
+
{{ $t('ContributionAssistant.GoToProof') }}
-
+
+
+
{{ $t('ContributionAssistant.AddNewProof') }}
-
+
+
+
{{ $t('ContributionAssistant.NextProof') }}
+
+
+ {{ $t('ContributionAssistant.GoToDashboard') }}
+
+
diff --git a/src/views/PriceAddMultiple.vue b/src/views/PriceAddMultiple.vue
index f8d1b047f83..f7f6add34b4 100644
--- a/src/views/PriceAddMultiple.vue
+++ b/src/views/PriceAddMultiple.vue
@@ -22,7 +22,7 @@
-
+
@@ -129,9 +129,9 @@
color="primary"
:block="!$vuetify.display.smAndUp"
prepend-icon="mdi-account-circle"
- @click="goToDashboard"
+ @click="goToUserDashboard"
>
- {{ $t('Common.Dashboard') }}
+ {{ $t('Common.MyDashboard') }}
@@ -316,7 +316,7 @@ export default {
reloadPage() {
window.location.reload()
},
- goToDashboard() {
+ goToUserDashboard() {
this.$router.push({ path: '/dashboard', query: { multipleSuccess: 'true' } })
}
}
diff --git a/src/views/PriceAddSingle.vue b/src/views/PriceAddSingle.vue
index a9f2fb31bff..dfc0490e369 100644
--- a/src/views/PriceAddSingle.vue
+++ b/src/views/PriceAddSingle.vue
@@ -130,7 +130,7 @@ export default {
if (!data['id']) {
alert(`Form error: ${JSON.stringify(data)}`)
} else {
- this.goToDashboard()
+ this.goToUserDashboard()
}
this.loading = false
})
@@ -140,7 +140,7 @@ export default {
this.loading = false
})
},
- goToDashboard() {
+ goToUserDashboard() {
this.$router.push({ path: '/dashboard', query: { singleSuccess: 'true' } })
}
}
diff --git a/src/views/ProofAddMultiple.vue b/src/views/ProofAddMultiple.vue
index 3b7a88160bb..29d5d9ce64b 100644
--- a/src/views/ProofAddMultiple.vue
+++ b/src/views/ProofAddMultiple.vue
@@ -55,9 +55,9 @@
color="primary"
:block="!$vuetify.display.smAndUp"
prepend-icon="mdi-account-circle"
- @click="goToDashboard"
+ @click="goToUserDashboard"
>
- {{ $t('Common.Dashboard') }}
+ {{ $t('Common.MyDashboard') }}
@@ -101,7 +101,7 @@ export default {
reloadPage() {
window.location.reload()
},
- goToDashboard() {
+ goToUserDashboard() {
this.$router.push({ path: '/dashboard', query: { proofSingleSuccess: 'true' } })
}
}
diff --git a/src/views/ProofAddSingle.vue b/src/views/ProofAddSingle.vue
index 0d97fd64f73..86fb908ff7a 100644
--- a/src/views/ProofAddSingle.vue
+++ b/src/views/ProofAddSingle.vue
@@ -41,9 +41,9 @@
color="primary"
:block="!$vuetify.display.smAndUp"
prepend-icon="mdi-account-circle"
- @click="goToDashboard"
+ @click="goToUserDashboard"
>
- {{ $t('Common.Dashboard') }}
+ {{ $t('Common.MyDashboard') }}
@@ -84,7 +84,7 @@ export default {
reloadPage() {
window.location.reload()
},
- goToDashboard() {
+ goToUserDashboard() {
this.$router.push({ path: '/dashboard', query: { proofSingleSuccess: 'true' } })
}
}
diff --git a/src/views/UserSettings.vue b/src/views/UserSettings.vue
deleted file mode 100644
index 2f8a3317e38..00000000000
--- a/src/views/UserSettings.vue
+++ /dev/null
@@ -1,185 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- {{ $t('Common.Country') }}
-
-
-
-
- {{ $t('Common.Language') }}
-
-
-
-
-
- {{ languageTranslationCompletion }}
-
-
-
-
- {{ $t('UserSettings.TranslationHelp') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $t('UserSettings.FavoriteCurrencies') }}
-
-
-
-
-
-
-
-
-
-
- {{ $t('UserSettings.Save') }}
-
-
-
-
-
-
-