From ea468c987848c452efd0e44022aa74adb31002cd Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Mon, 22 Dec 2025 14:54:51 +0100 Subject: [PATCH] Improve conditionLabel method in BranchView component to handle edge cases and ensure accurate state representation. Added checks for null and undefined values, and clarified the return value for zero or negative conditions. --- ...00-add-may-repair-vehicles-to-director.cjs | 32 +++++++++++++++++++ backend/models/falukant/data/director.js | 4 +++ backend/services/falukantService.js | 1 + .../src/components/falukant/DirectorInfo.vue | 8 +++++ frontend/src/i18n/locales/de/falukant.json | 1 + frontend/src/i18n/locales/en/falukant.json | 3 +- frontend/src/views/falukant/BranchView.vue | 7 ++-- 7 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 backend/migrations/20251222001000-add-may-repair-vehicles-to-director.cjs diff --git a/backend/migrations/20251222001000-add-may-repair-vehicles-to-director.cjs b/backend/migrations/20251222001000-add-may-repair-vehicles-to-director.cjs new file mode 100644 index 0000000..5baec6e --- /dev/null +++ b/backend/migrations/20251222001000-add-may-repair-vehicles-to-director.cjs @@ -0,0 +1,32 @@ +/* eslint-disable */ +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.sequelize.query(` + ALTER TABLE falukant_data.director + ADD COLUMN IF NOT EXISTS may_repair_vehicles boolean; + `); + await queryInterface.sequelize.query(` + UPDATE falukant_data.director + SET may_repair_vehicles = true + WHERE may_repair_vehicles IS NULL; + `); + await queryInterface.sequelize.query(` + ALTER TABLE falukant_data.director + ALTER COLUMN may_repair_vehicles SET DEFAULT true; + `); + await queryInterface.sequelize.query(` + ALTER TABLE falukant_data.director + ALTER COLUMN may_repair_vehicles SET NOT NULL; + `); + }, + + async down(queryInterface, Sequelize) { + // optional rollback: drop column + await queryInterface.sequelize.query(` + ALTER TABLE falukant_data.director + DROP COLUMN IF EXISTS may_repair_vehicles; + `); + }, +}; + + diff --git a/backend/models/falukant/data/director.js b/backend/models/falukant/data/director.js index dcd3d6e..cf6276e 100644 --- a/backend/models/falukant/data/director.js +++ b/backend/models/falukant/data/director.js @@ -29,6 +29,10 @@ Director.init({ type: DataTypes.BOOLEAN, allowNull: false, defaultValue: true}, + mayRepairVehicles: { + type: DataTypes.BOOLEAN, + allowNull: false, + defaultValue: true}, lastSalaryPayout: { type: DataTypes.DATE, allowNull: false, diff --git a/backend/services/falukantService.js b/backend/services/falukantService.js index 674d2d6..45e0fcb 100644 --- a/backend/services/falukantService.js +++ b/backend/services/falukantService.js @@ -2645,6 +2645,7 @@ class FalukantService extends BaseService { mayProduce: director.mayProduce, maySell: director.maySell, mayStartTransport: director.mayStartTransport, + mayRepairVehicles: director.mayRepairVehicles, region: director.character.region?.name || null, wishedIncome, }, diff --git a/frontend/src/components/falukant/DirectorInfo.vue b/frontend/src/components/falukant/DirectorInfo.vue index 446081c..6144579 100644 --- a/frontend/src/components/falukant/DirectorInfo.vue +++ b/frontend/src/components/falukant/DirectorInfo.vue @@ -104,6 +104,14 @@ /> {{ $t('falukant.branch.director.starttransport') }} +
diff --git a/frontend/src/i18n/locales/de/falukant.json b/frontend/src/i18n/locales/de/falukant.json index e2a643a..50b1f92 100644 --- a/frontend/src/i18n/locales/de/falukant.json +++ b/frontend/src/i18n/locales/de/falukant.json @@ -232,6 +232,7 @@ "produce": "Darf produzieren", "sell": "Darf verkaufen", "starttransport": "Darf Transporte veranlassen", + "repairVehicles": "Darf Fahrzeuge reparieren", "emptyTransport": { "title": "Transport ohne Produkte", "description": "Bewege Transportmittel von dieser Niederlassung zu einer anderen, um sie besser zu nutzen.", diff --git a/frontend/src/i18n/locales/en/falukant.json b/frontend/src/i18n/locales/en/falukant.json index 455c8e8..3bee28d 100644 --- a/frontend/src/i18n/locales/en/falukant.json +++ b/frontend/src/i18n/locales/en/falukant.json @@ -163,7 +163,8 @@ }, "director": { "income": "Income", - "incomeUpdated": "Salary has been successfully updated." + "incomeUpdated": "Salary has been successfully updated.", + "repairVehicles": "May repair vehicles" }, "vehicles": { "cargo_cart": "Cargo cart", diff --git a/frontend/src/views/falukant/BranchView.vue b/frontend/src/views/falukant/BranchView.vue index 5542cd8..303e670 100644 --- a/frontend/src/views/falukant/BranchView.vue +++ b/frontend/src/views/falukant/BranchView.vue @@ -692,7 +692,10 @@ export default { }, conditionLabel(value) { - const v = Number(value) || 0; + // 0 ist ein gültiger Zustand (z.B. komplett kaputt) und darf nicht als "Unbekannt" enden. + if (value === null || value === undefined) return 'Unbekannt'; + const v = Number(value); + if (!Number.isFinite(v)) return 'Unbekannt'; if (v >= 95) return 'Ausgezeichnet'; // 95–100 if (v >= 72) return 'Sehr gut'; // 72–94 if (v >= 54) return 'Gut'; // 54–71 @@ -700,7 +703,7 @@ export default { if (v >= 22) return 'Schlecht'; // 22–38 if (v >= 6) return 'Sehr schlecht'; // 6–21 if (v >= 1) return 'Katastrophal'; // 1–5 - return 'Unbekannt'; + return 'Katastrophal'; // 0 oder kleiner }, speedLabel(value) {