diff --git a/api/rates.go b/api/rates.go index 59891322c..f5baa8997 100644 --- a/api/rates.go +++ b/api/rates.go @@ -10,12 +10,12 @@ import ( type Rate struct { Start time.Time `json:"start"` End time.Time `json:"end"` - Price float64 `json:"price"` + Value float64 `json:"value"` } // IsZero returns is the rate is the zero value func (r Rate) IsZero() bool { - return r.Start.IsZero() && r.End.IsZero() && r.Price == 0 + return r.Start.IsZero() && r.End.IsZero() && r.Value == 0 } // Rates is a slice of (future) tariff rates diff --git a/api/rates_test.go b/api/rates_test.go index 97baa1313..bdda2b087 100644 --- a/api/rates_test.go +++ b/api/rates_test.go @@ -14,7 +14,7 @@ func TestRates(t *testing.T) { return Rate{ Start: clock.Now().Add(time.Duration(start) * time.Hour), End: clock.Now().Add(time.Duration(start+1) * time.Hour), - Price: val, + Value: val, } } @@ -26,11 +26,11 @@ func TestRates(t *testing.T) { for i := 1; i <= 4; i++ { r, err := rr.At(clock.Now().Add(time.Duration(i) * time.Hour)) assert.NoError(t, err) - assert.Equal(t, float64(i), r.Price) + assert.Equal(t, float64(i), r.Value) r, err = rr.At(clock.Now().Add(time.Duration(i)*time.Hour + 30*time.Minute)) assert.NoError(t, err) - assert.Equal(t, float64(i), r.Price) + assert.Equal(t, float64(i), r.Value) } _, err = rr.At(clock.Now().Add(5 * time.Hour)) diff --git a/assets/js/components/ChargingPlans/PlansSettings.vue b/assets/js/components/ChargingPlans/PlansSettings.vue index 9f181cf48..8716838a0 100644 --- a/assets/js/components/ChargingPlans/PlansSettings.vue +++ b/assets/js/components/ChargingPlans/PlansSettings.vue @@ -75,9 +75,9 @@ import collector from "../../mixins/collector.js"; import api, { allowClientError } from "../../api.js"; import CustomSelect from "../Helper/CustomSelect.vue"; import deepEqual from "../../utils/deepEqual.js"; +import convertRates from "../../utils/convertRates"; import { defineComponent, type PropType } from "vue"; import type { Vehicle, PartialBy, Timeout, Tariff, SelectOption, CURRENCY } from "../../types/evcc"; - import type { StaticPlan, RepeatingPlan, @@ -316,10 +316,10 @@ export default defineComponent({ return; } - const tariffRes = await api.get(`tariff/planner`, allowClientError); + const res = await api.get(`tariff/planner`, allowClientError); this.tariff = { - rates: tariffRes.status === 404 ? [] : tariffRes.data.result.rates, + rates: res.status === 404 ? [] : convertRates(res.data.result.rates), lastUpdate: new Date(), }; }, diff --git a/assets/js/components/ChargingPlans/Preview.stories.ts b/assets/js/components/ChargingPlans/Preview.stories.ts index a27047c56..ed4e69017 100644 --- a/assets/js/components/ChargingPlans/Preview.stories.ts +++ b/assets/js/components/ChargingPlans/Preview.stories.ts @@ -10,7 +10,7 @@ function createDate(hoursFromNow: number) { return result; } -function createRate(price: number, hoursFromNow: number, durationHours = 1): Rate { +function createRate(value: number, hoursFromNow: number, durationHours = 1): Rate { const start = new Date(now.getTime()); start.setHours(start.getHours() + hoursFromNow); start.setMinutes(0); @@ -21,7 +21,7 @@ function createRate(price: number, hoursFromNow: number, durationHours = 1): Rat end.setMinutes(0); end.setSeconds(0); end.setMilliseconds(0); - return { start, end, price }; + return { start, end, value }; } // Scenario data @@ -30,7 +30,7 @@ const co2Data = { 545, 518, 545, 518, 0, 545, 527, 527, 536, 518, 400, 336, 336, 339, 344, 336, 336, 336, 372, 400, 555, 555, 545, 555, 564, 545, 555, 545, 536, 545, 527, 536, 518, 545, 509, 336, 336, 336, - ].map((price, i) => createRate(price, i)), + ].map((value, i) => createRate(value, i)), duration: 8695, plan: [createRate(213, 4), createRate(336, 11), createRate(336, 12)], smartCostType: "co2", @@ -72,7 +72,7 @@ const unknownData = { const dynamicData = { rates: [ 0.12, 0.15, 0, -0.05, -0.11, -0.24, -0.08, 0.12, 0.25, 0.29, 0.22, 0.31, 0.31, 0.33, - ].map((price, i) => createRate(price, i)), + ].map((value, i) => createRate(value, i)), duration: 8695, plan: [createRate(0.23, 2, 5)], smartCostType: "price", diff --git a/assets/js/components/ChargingPlans/Preview.test.ts b/assets/js/components/ChargingPlans/Preview.test.ts index 629133e1d..e17454277 100644 --- a/assets/js/components/ChargingPlans/Preview.test.ts +++ b/assets/js/components/ChargingPlans/Preview.test.ts @@ -1,7 +1,7 @@ import { mount, config } from "@vue/test-utils"; import { beforeAll, describe, expect, test } from "vitest"; import Preview from "./Preview.vue"; -import type { Slot } from "./types"; +import type { Slot } from "../../types/evcc.js"; config.global.mocks["$i18n"] = { locale: "de-DE" }; config.global.mocks["$t"] = (a: any) => a; @@ -13,14 +13,14 @@ describe("basics", () => { { start: new Date("2023-01-11T11:00:00+01:00"), end: new Date("2023-01-22T00:00:00+01:00"), - price: 0.4, + value: 0.4, }, ]; const PLAN = [ { start: new Date("2023-01-11T12:00:00+01:00"), end: new Date("2023-01-11T13:00:00+01:00"), - price: 0.2, + value: 0.2, }, ]; @@ -75,8 +75,8 @@ describe("basics", () => { expect(result[3].charging).eq(false); }); - test("all slots have the same fixed price", () => { - result.forEach((slot) => expect(slot.price).eq(0.4)); + test("all slots have the same fixed value", () => { + result.forEach((slot) => expect(slot.value).eq(0.4)); }); }); @@ -87,24 +87,24 @@ describe("zoned tariffs", () => { { start: new Date("2023-01-11T11:00:00+01:00"), end: new Date("2023-01-11T12:00:00+01:00"), - price: 0.2, + value: 0.2, }, { start: new Date("2023-01-11T12:00:00+01:00"), end: new Date("2023-01-22T00:00:00+01:00"), - price: 0.4, + value: 0.4, }, ]; const PLAN = [ { start: new Date("2023-01-11T11:30:00+01:00"), end: new Date("2023-01-11T13:00:00+01:00"), - price: 0.3, + value: 0.3, }, { start: new Date("2023-01-11T14:30:00+01:00"), end: new Date("2023-01-11T16:00:00+01:00"), - price: 0.2, + value: 0.2, }, ]; @@ -134,7 +134,7 @@ describe("zoned tariffs", () => { test("first slot is cheap, others are expensive", () => { const [first, ...others] = result; - expect(first.price).eq(0.2); - others.forEach((slot) => expect(slot.price).eq(0.4)); + expect(first.value).eq(0.2); + others.forEach((slot) => expect(slot.value).eq(0.4)); }); }); diff --git a/assets/js/components/ChargingPlans/Preview.vue b/assets/js/components/ChargingPlans/Preview.vue index 2f59b4f54..ee6833008 100644 --- a/assets/js/components/ChargingPlans/Preview.vue +++ b/assets/js/components/ChargingPlans/Preview.vue @@ -21,7 +21,7 @@ {{ $t("main.targetChargePlan.priceLabel") }}