Chore: Typescript: Rewrite GlobalSettings (#20837)

Co-authored-by: Michael Geers <michael@geers.tv>
This commit is contained in:
Maschga 2025-04-28 23:01:20 +02:00 • committed by GitHub
parent 617c06b376
commit e0421cc7d8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
118 changed files with 252 additions and 241 deletions

View file

@ -60,9 +60,9 @@
<script lang="ts">
import GenericModal from "../Helper/GenericModal.vue";
import Modal from "bootstrap/js/dist/modal";
import api from "../../api.js";
import api from "@/api";
import { updateAuthStatus, getAndClearNextUrl, getAndClearNextModal, isLoggedIn } from "./auth";
import { docsPrefix } from "../../i18n.js";
import { docsPrefix } from "@/i18n";
import { defineComponent } from "vue";
export default defineComponent({

View file

@ -88,7 +88,7 @@
<script type="ts">
import GenericModal from "../Helper/GenericModal.vue";
import FormRow from "../Helper/FormRow.vue";
import api from "../../api.js";
import api from "@/api";
import { updateAuthStatus, isConfigured } from "./auth";
import { defineComponent } from "vue";

View file

@ -1,8 +1,8 @@
import { reactive, watch } from "vue";
import api from "../../api.js";
import store from "../../store.js";
import api from "@/api";
import store from "@/store";
import Modal from "bootstrap/js/dist/modal";
import { isSystemError } from "../../utils/fatal.js";
import { isSystemError } from "@/utils/fatal.js";
const auth = reactive({
configured: true,

View file

@ -257,12 +257,12 @@ import "@h2d2/shopicons/es/regular/home";
import SmartCostLimit from "../Tariff/SmartCostLimit.vue";
import CustomSelect from "../Helper/CustomSelect.vue";
import GenericModal from "../Helper/GenericModal.vue";
import formatter, { POWER_UNIT } from "../../mixins/formatter.js";
import collector from "../../mixins/collector.js";
import api from "../../api.js";
import smartCostAvailable from "../../utils/smartCostAvailable.js";
import formatter, { POWER_UNIT } from "@/mixins/formatter";
import collector from "@/mixins/collector";
import api from "@/api";
import smartCostAvailable from "@/utils/smartCostAvailable";
import { defineComponent, type PropType } from "vue";
import type { Battery, SelectOption } from "../../types/evcc.js";
import type { Battery, SelectOption } from "@/types/evcc";
export default defineComponent({
name: "BatterySettingsModal",

View file

@ -60,9 +60,9 @@
</template>
<script lang="ts">
import { distanceUnit } from "../../units.js";
import formatter from "../../mixins/formatter.js";
import type { SelectOption } from "../../types/evcc";
import { distanceUnit } from "@/units";
import formatter from "@/mixins/formatter";
import type { SelectOption } from "@/types/evcc";
import { defineComponent } from "vue";
export default defineComponent({

View file

@ -108,14 +108,14 @@ import LabelAndValue from "../Helper/LabelAndValue.vue";
import PlansSettings from "./PlansSettings.vue";
import Arrival from "./Arrival.vue";
import formatter from "../../mixins/formatter.js";
import collector from "../../mixins/collector.js";
import api from "../../api.js";
import { optionStep, fmtEnergy } from "../../utils/energyOptions.js";
import formatter from "@/mixins/formatter";
import collector from "@/mixins/collector";
import api from "@/api";
import { optionStep, fmtEnergy } from "@/utils/energyOptions";
import { defineComponent, type PropType } from "vue";
import type { CURRENCY, Timeout, Vehicle } from "../../types/evcc.js";
import type { StaticPlan, StaticSocPlan, StaticEnergyPlan, RepeatingPlan } from "./types.js";
import type { Forecast } from "../../types/evcc.ts";
import type { CURRENCY, Timeout, Vehicle } from "@/types/evcc";
import type { StaticPlan, StaticSocPlan, StaticEnergyPlan, RepeatingPlan } from "./types";
import type { Forecast } from "@/types/evcc.ts";
const ONE_MINUTE = 60 * 1000;
export default defineComponent({

View file

@ -166,12 +166,12 @@
<script lang="ts">
import "@h2d2/shopicons/es/regular/trash";
import { distanceUnit } from "../../units.js";
import { distanceUnit } from "@/units";
import MultiSelect from "../Helper/MultiSelect.vue";
import formatter from "../../mixins/formatter.js";
import deepEqual from "../../utils/deepEqual.js";
import formatter from "@/mixins/formatter";
import deepEqual from "@/utils/deepEqual";
import PreconditionSelect from "./PreconditionSelect.vue";
import type { SelectOption } from "../../types/evcc";
import type { SelectOption } from "@/types/evcc";
import { defineComponent, type PropType } from "vue";
export default defineComponent({

View file

@ -179,10 +179,10 @@
<script lang="ts">
import "@h2d2/shopicons/es/regular/checkmark";
import { distanceUnit } from "../../units.js";
import { distanceUnit } from "@/units";
import formatter from "../../mixins/formatter.js";
import { energyOptions } from "../../utils/energyOptions.js";
import formatter from "@/mixins/formatter";
import { energyOptions } from "@/utils/energyOptions";
import { defineComponent } from "vue";
import PreconditionSelect from "./PreconditionSelect.vue";

View file

@ -30,10 +30,10 @@
<script lang="ts">
import PlanRepeatingSettings from "./PlanRepeatingSettings.vue";
import deepEqual from "../../utils/deepEqual.js";
import formatter from "../../mixins/formatter.js";
import deepEqual from "@/utils/deepEqual";
import formatter from "@/mixins/formatter";
import { defineComponent, type PropType } from "vue";
import type { RepeatingPlan } from "./types.js";
import type { RepeatingPlan } from "./types";
const DEFAULT_WEEKDAYS = [1, 2, 3, 4, 5];
const DEFAULT_TARGET_TIME = "07:00";

View file

@ -72,14 +72,14 @@ import Preview from "./Preview.vue";
import PlanStaticSettings from "./PlanStaticSettings.vue";
import RepeatingSettings from "./PlansRepeatingSettings.vue";
import Warnings from "./Warnings.vue";
import formatter from "../../mixins/formatter.js";
import collector from "../../mixins/collector.js";
import api from "../../api.js";
import formatter from "@/mixins/formatter";
import collector from "@/mixins/collector";
import api from "@/api";
import CustomSelect from "../Helper/CustomSelect.vue";
import deepEqual from "../../utils/deepEqual.js";
import convertRates from "../../utils/convertRates";
import deepEqual from "@/utils/deepEqual";
import convertRates from "@/utils/convertRates";
import { defineComponent, type PropType } from "vue";
import type { Vehicle, PartialBy, Timeout, SelectOption, CURRENCY } from "../../types/evcc";
import type { Vehicle, PartialBy, Timeout, SelectOption, CURRENCY, Forecast } from "@/types/evcc";
import type {
StaticPlan,
RepeatingPlan,
@ -87,8 +87,7 @@ import type {
StaticSocPlan,
StaticEnergyPlan,
PlanResponse,
} from "./types.js";
import type { Forecast } from "../../types/evcc.ts";
} from "./types";
export default defineComponent({
name: "ChargingPlansSettings",

View file

@ -60,7 +60,7 @@
<script lang="ts">
import { defineComponent } from "vue";
import CustomSelect from "../Helper/CustomSelect.vue";
import formatter from "../../mixins/formatter.js";
import formatter from "@/mixins/formatter";
export default defineComponent({
name: "PreconditionSelect",

View file

@ -1,4 +1,4 @@
import { CURRENCY, type Rate } from "../../types/evcc.js";
import { CURRENCY, type Rate } from "@/types/evcc";
import Preview from "./Preview.vue";
import type { StoryFn } from "@storybook/vue3";

View file

@ -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/evcc.js";
import type { Slot } from "@/types/evcc";
config.global.mocks["$i18n"] = { locale: "de-DE" };
config.global.mocks["$t"] = (a: any) => a;

View file

@ -36,10 +36,10 @@
<script lang="ts">
import { defineComponent, type PropType } from "vue";
import formatter from "../../mixins/formatter.js";
import { CO2_TYPE } from "../../units.js";
import formatter from "@/mixins/formatter";
import { CO2_TYPE } from "@/units";
import TariffChart from "../Tariff/TariffChart.vue";
import type { CURRENCY, Rate, Slot } from "../../types/evcc.js";
import type { CURRENCY, Rate, Slot } from "@/types/evcc";
export default defineComponent({
name: "ChargingPlanPreview",

View file

@ -20,9 +20,9 @@
<script lang="ts">
import { defineComponent, type PropType } from "vue";
import formatter from "../../mixins/formatter.js";
import type { PlanWrapper } from "./types.js";
import type { Tariff } from "../../types/evcc.js";
import formatter from "@/mixins/formatter";
import type { PlanWrapper } from "./types";
import type { Tariff } from "@/types/evcc";
export default defineComponent({
name: "ChargingPlanWarnings",

View file

@ -1,4 +1,4 @@
import type { Rate } from "../../types/evcc";
import type { Rate } from "@/types/evcc";
export interface RepeatingPlan {
weekdays: number[];

View file

@ -167,7 +167,7 @@ import FormRow from "./FormRow.vue";
import PropertyEntry from "./PropertyEntry.vue";
import PropertyCollapsible from "./PropertyCollapsible.vue";
import TestResult from "./TestResult.vue";
import api from "../../api";
import api from "@/api";
import test from "./mixins/test";
import Modbus from "./Modbus.vue";
import GenericModal from "../Helper/GenericModal.vue";

View file

@ -82,8 +82,8 @@
<script>
import GenericModal from "../Helper/GenericModal.vue";
import FormRow from "./FormRow.vue";
import store from "../../store";
import api from "../../api";
import store from "@/store";
import api from "@/api";
export default {
name: "ControlModal",

View file

@ -25,7 +25,7 @@
</div>
</template>
<script>
import formatter, { POWER_UNIT } from "../../mixins/formatter";
import formatter, { POWER_UNIT } from "@/mixins/formatter";
const NO_TRUNCATE = ["phasePowers", "phaseVoltages", "phaseCurrents"];

View file

@ -34,7 +34,7 @@
</template>
<script>
import { docsPrefix } from "../../i18n";
import { docsPrefix } from "@/i18n";
import Markdown from "./Markdown.vue";
export default {

View file

@ -109,10 +109,10 @@
import Modal from "bootstrap/js/dist/modal";
import TitleModal from "./TitleModal.vue";
import EditIcon from "../MaterialIcon/Edit.vue";
import api from "../../api";
import settings from "../../settings";
import store from "../../store";
import formatter from "../../mixins/formatter";
import api from "@/api";
import settings from "@/settings";
import store from "@/store";
import formatter from "@/mixins/formatter";
export default {
name: "GeneralConfig",

View file

@ -64,9 +64,9 @@
<script>
import GenericModal from "../Helper/GenericModal.vue";
import api from "../../api";
import { docsPrefix } from "../../i18n";
import store from "../../store";
import api from "@/api";
import { docsPrefix } from "@/i18n";
import store from "@/store";
export default {
name: "JsonModal",

View file

@ -552,11 +552,11 @@
import FormRow from "./FormRow.vue";
import PropertyField from "./PropertyField.vue";
import SelectGroup from "../Helper/SelectGroup.vue";
import api from "../../api";
import api from "@/api";
import GenericModal from "../Helper/GenericModal.vue";
import deepClone from "../../utils/deepClone";
import deepEqual from "../../utils/deepEqual";
import formatter, { POWER_UNIT } from "../../mixins/formatter";
import deepClone from "@/utils/deepClone";
import deepEqual from "@/utils/deepEqual";
import formatter, { POWER_UNIT } from "@/mixins/formatter";
import EditIcon from "../MaterialIcon/Edit.vue";
const nsPerMin = 60 * 1e9;

View file

@ -181,7 +181,7 @@ import FormRow from "./FormRow.vue";
import PropertyEntry from "./PropertyEntry.vue";
import PropertyCollapsible from "./PropertyCollapsible.vue";
import TestResult from "./TestResult.vue";
import api from "../../api";
import api from "@/api";
import test from "./mixins/test";
import NewDeviceButton from "./NewDeviceButton.vue";
import Modbus from "./Modbus.vue";

View file

@ -93,7 +93,7 @@
import "@h2d2/shopicons/es/regular/minus";
import VehicleIcon from "../VehicleIcon";
import SelectGroup from "../Helper/SelectGroup.vue";
import formatter from "../../mixins/formatter";
import formatter from "@/mixins/formatter";
const NS_PER_SECOND = 1000000000;

View file

@ -66,9 +66,9 @@ import JsonModal from "./JsonModal.vue";
import FormRow from "./FormRow.vue";
import Sponsor, { VICTRON_DEVICE } from "../Savings/Sponsor.vue";
import SponsorTokenExpires from "../Savings/SponsorTokenExpires.vue";
import store from "../../store";
import { docsPrefix } from "../../i18n";
import { cleanYaml } from "../../utils/cleanYaml";
import store from "@/store";
import { docsPrefix } from "@/i18n";
import { cleanYaml } from "@/utils/cleanYaml";
export default {
name: "SponsorModal",
components: { FormRow, JsonModal, Sponsor, SponsorTokenExpires },

View file

@ -248,7 +248,7 @@ import PropertyEntry from "./PropertyEntry.vue";
import PropertyCollapsible from "./PropertyCollapsible.vue";
import GenericModal from "../Helper/GenericModal.vue";
import Markdown from "./Markdown.vue";
import api from "../../api";
import api from "@/api";
import test from "./mixins/test";
const initialValues = { type: "template", icon: "car" };

View file

@ -25,7 +25,7 @@
<script>
import { VueMonacoEditor, loader } from "@guolao/vue-monaco-editor";
import { cleanYaml } from "../../utils/cleanYaml";
import { cleanYaml } from "@/utils/cleanYaml.js";
const $html = document.querySelector("html");
export default {

View file

@ -46,8 +46,8 @@
<script>
import GenericModal from "../Helper/GenericModal.vue";
import api from "../../api";
import { docsPrefix } from "../../i18n";
import api from "@/api";
import { docsPrefix } from "@/i18n";
import YamlEditor from "./YamlEditor.vue";
export default {

View file

@ -21,7 +21,7 @@
<script lang="ts">
import { defineComponent } from "vue";
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default defineComponent({
name: "BatteryIcon",

View file

@ -1,6 +1,6 @@
import type { Meta, StoryFn } from "@storybook/vue3";
import Energyflow from "./Energyflow.vue";
import { CURRENCY } from "../../types/evcc";
import { CURRENCY } from "@/types/evcc";
export default {
title: "Energyflow/Energyflow",

View file

@ -284,13 +284,13 @@ import "@h2d2/shopicons/es/filled/square";
import Modal from "bootstrap/js/dist/modal";
import Visualization from "./Visualization.vue";
import Entry from "./Entry.vue";
import formatter, { POWER_UNIT } from "../../mixins/formatter";
import formatter, { POWER_UNIT } from "@/mixins/formatter";
import AnimatedNumber from "../Helper/AnimatedNumber.vue";
import settings from "../../settings";
import { CO2_TYPE } from "../../units";
import collector from "../../mixins/collector";
import settings from "@/settings";
import { CO2_TYPE } from "@/units";
import collector from "@/mixins/collector";
import { defineComponent, type PropType } from "vue";
import type { Battery, CURRENCY, Forecast, LoadpointCompact } from "../../types/evcc";
import type { Battery, CURRENCY, Forecast, LoadpointCompact } from "@/types/evcc";
export default defineComponent({
name: "Energyflow",

View file

@ -74,7 +74,7 @@ import "@h2d2/shopicons/es/regular/home";
import "@h2d2/shopicons/es/regular/arrowdropdown";
import Tooltip from "bootstrap/js/dist/tooltip";
import BatteryIcon from "./BatteryIcon.vue";
import formatter, { POWER_UNIT } from "../../mixins/formatter";
import formatter, { POWER_UNIT } from "@/mixins/formatter";
import AnimatedNumber from "../Helper/AnimatedNumber.vue";
import VehicleIcon from "../VehicleIcon";
import ForecastIcon from "../MaterialIcon/Forecast.vue";

View file

@ -107,7 +107,7 @@
</template>
<script lang="ts">
import formatter, { POWER_UNIT } from "../../mixins/formatter";
import formatter, { POWER_UNIT } from "@/mixins/formatter";
import BatteryIcon from "./BatteryIcon.vue";
import LabelBar from "./LabelBar.vue";
import AnimatedNumber from "../Helper/AnimatedNumber.vue";
@ -116,7 +116,7 @@ import QuestionIcon from "../MaterialIcon/Question.vue";
import "@h2d2/shopicons/es/regular/sun";
import "@h2d2/shopicons/es/regular/home";
import { defineComponent, type PropType } from "vue";
import type { LoadpointCompact } from "../../types/evcc";
import type { LoadpointCompact } from "@/types/evcc";
export default defineComponent({
name: "Visualization",

View file

@ -77,8 +77,8 @@ import { defineComponent, type PropType } from "vue";
import "@h2d2/shopicons/es/regular/car1";
import CloudOffline from "../MaterialIcon/CloudOffline.vue";
import Sync from "../MaterialIcon/Sync.vue";
import restart, { performRestart, restartComplete } from "../../restart.js";
import type { FatalError } from "assets/js/types/evcc.js";
import restart, { performRestart, restartComplete } from "@/restart";
import type { FatalError } from "@/types/evcc";
export default defineComponent({
name: "OfflineIndicator",

View file

@ -129,7 +129,7 @@
import Modal from "bootstrap/js/dist/modal";
import "@h2d2/shopicons/es/regular/gift";
import "@h2d2/shopicons/es/regular/moonstars";
import api from "../../api.js";
import api from "@/api";
import Logo from "./Logo.vue";
import { defineComponent } from "vue";

View file

@ -10,8 +10,8 @@
<script lang="ts">
import { defineComponent, type PropType } from "vue";
import formatter from "../../mixins/formatter";
import { isForecastSlot, type ForecastSlot, type TimeseriesEntry } from "./types.js";
import formatter from "@/mixins/formatter";
import { isForecastSlot, type ForecastSlot, type TimeseriesEntry } from "./types";
export default defineComponent({
name: "ForecastActiveSlot",

View file

@ -33,11 +33,11 @@ import {
import ChartDataLabels, { type Context } from "chartjs-plugin-datalabels";
import "chartjs-adapter-dayjs-4/dist/chartjs-adapter-dayjs-4.esm";
import { registerChartComponents, commonOptions } from "../Sessions/chartConfig";
import formatter, { POWER_UNIT } from "../../mixins/formatter.ts";
import colors, { lighterColor } from "../../colors.ts";
import type { CURRENCY } from "../../types/evcc.ts";
import { ForecastType, highestSlotIndexByDay } from "../../utils/forecast.ts";
import type { ForecastSlot, SolarDetails, TimeseriesEntry } from "./types.ts";
import formatter, { POWER_UNIT } from "@/mixins/formatter";
import colors, { lighterColor } from "@/colors";
import type { CURRENCY } from "@/types/evcc";
import { ForecastType, highestSlotIndexByDay } from "@/utils/forecast";
import type { ForecastSlot, SolarDetails, TimeseriesEntry } from "./types";
registerChartComponents([
BarController,

View file

@ -64,11 +64,11 @@
<script lang="ts">
import { defineComponent, type PropType } from "vue";
import formatter, { POWER_UNIT } from "../../mixins/formatter.ts";
import formatter, { POWER_UNIT } from "@/mixins/formatter";
import AnimatedNumber from "../Helper/AnimatedNumber.vue";
import type { CURRENCY, Timeout } from "../../types/evcc.ts";
import { ForecastType } from "../../utils/forecast.ts";
import type { ForecastSlot, SolarDetails } from "./types.ts";
import type { CURRENCY, Timeout } from "@/types/evcc";
import { ForecastType } from "@/utils/forecast";
import type { ForecastSlot, SolarDetails } from "./types";
const LOCALES_WITHOUT_DAY_AFTER_TOMORROW = ["en", "tr"];
export interface Energy {

View file

@ -59,11 +59,11 @@ import TypeSelect from "./TypeSelect.vue";
import Details from "./Details.vue";
import ActiveSlot from "./ActiveSlot.vue";
import formatter from "../../mixins/formatter.ts";
import settings from "../../settings";
import type { CURRENCY, Forecast } from "../../types/evcc.ts";
import { ForecastType, adjustedSolar } from "../../utils/forecast.ts";
import type { ForecastSlot, TimeseriesEntry } from "./types.ts";
import formatter from "@/mixins/formatter";
import settings from "@/settings";
import type { CURRENCY, Forecast } from "@/types/evcc";
import { ForecastType, adjustedSolar } from "@/utils/forecast";
import type { ForecastSlot, TimeseriesEntry } from "./types";
export default defineComponent({
name: "ForecastModal",
components: {

View file

@ -21,7 +21,7 @@ import { defineComponent } from "vue";
import IconSelectItem from "../Helper/IconSelectItem.vue";
import IconSelectGroup from "../Helper/IconSelectGroup.vue";
import DynamicPriceIcon from "../MaterialIcon/DynamicPrice.vue";
import { ForecastType } from "../../utils/forecast.ts";
import { ForecastType } from "@/utils/forecast";
export default defineComponent({
name: "ForecastTypeSelect",

View file

@ -28,14 +28,16 @@
</Teleport>
</template>
<script>
<script lang="ts">
import { defineComponent, type PropType } from "vue";
import UserInterfaceSettings from "./UserInterfaceSettings.vue";
import type { Sponsor } from "@/types/evcc";
export default {
export default defineComponent({
name: "GlobalSettingsModal",
components: { UserInterfaceSettings },
props: {
sponsor: { type: Object, default: () => ({}) },
sponsor: { type: Object as PropType<Sponsor>, default: () => ({}) },
},
};
});
</script>

View file

@ -22,7 +22,7 @@
class="form-select form-select-sm w-75"
>
<option value="">{{ $t("settings.language.auto") }}</option>
<option v-for="option in languageOptions" :key="option" :value="option.value">
<option v-for="option in languageOptions" :key="option.value" :value="option.value">
{{ option.name }}
</option>
</select>
@ -43,7 +43,7 @@
/>
</FormRow>
<FormRow id="telemetryEnabled" :label="$t('settings.telemetry.label')">
<TelemetrySettings :sponsorActive="!!sponsor.name" class="mt-1 mb-0" />
<TelemetrySettings :sponsorActive="sponsor && !!sponsor.name" class="mt-1 mb-0" />
</FormRow>
<FormRow id="hiddenFeaturesEnabled" :label="`${$t('settings.hiddenFeatures.label')} 🧪`">
<div class="form-check form-switch my-1">
@ -76,26 +76,23 @@
</div>
</template>
<script>
<script lang="ts">
import TelemetrySettings from "../TelemetrySettings.vue";
import FormRow from "../Helper/FormRow.vue";
import SelectGroup from "../Helper/SelectGroup.vue";
import {
getLocalePreference,
setLocalePreference,
LOCALES,
removeLocalePreference,
} from "../../i18n.js";
import { getThemePreference, setThemePreference, THEMES } from "../../theme.js";
import { getUnits, setUnits, UNITS } from "../../units.js";
import { getHiddenFeatures, setHiddenFeatures } from "../../featureflags.js";
import { isApp } from "../../utils/native.js";
import { getLocalePreference, setLocalePreference, LOCALES, removeLocalePreference } from "@/i18n";
import { getThemePreference, setThemePreference, THEMES } from "@/theme";
import { getUnits, setUnits, UNITS } from "@/units";
import { getHiddenFeatures, setHiddenFeatures } from "@/featureflags";
import { isApp } from "@/utils/native";
import { defineComponent, type PropType } from "vue";
import type { Sponsor } from "@/types/evcc";
export default {
export default defineComponent({
name: "UserInterfaceSettings",
components: { TelemetrySettings, FormRow, SelectGroup },
props: {
sponsor: Object,
sponsor: Object as PropType<Sponsor>,
},
data() {
return {
@ -120,7 +117,8 @@ export default {
fullscreenAvailable: () => {
const isSupported = document.fullscreenEnabled;
const isPwa =
navigator.standalone || window.matchMedia("(display-mode: standalone)").matches;
(navigator as any).standalone ||
window.matchMedia("(display-mode: standalone)").matches;
return isSupported && !isPwa && !isApp();
},
},
@ -135,7 +133,7 @@ export default {
setHiddenFeatures(value);
},
language(value) {
const i18n = this.$root.$i18n;
const i18n = this.$root?.$i18n;
if (value) {
setLocalePreference(i18n, value);
} else {
@ -160,5 +158,5 @@ export default {
this.fullscreenActive = !!document.fullscreenElement;
},
},
};
});
</script>

View file

@ -138,8 +138,8 @@
<script>
import Modal from "bootstrap/js/dist/modal";
import { docsPrefix } from "../i18n.js";
import { performRestart } from "../restart.js";
import { docsPrefix } from "../i18n";
import { performRestart } from "../restart";
import { isLoggedIn, openLoginModal } from "./Auth/auth";
export default {

View file

@ -15,7 +15,7 @@
</template>
<script lang="ts">
import type { SelectOption } from "../../types/evcc";
import type { SelectOption } from "@/types/evcc";
import { defineComponent, type PropType } from "vue";
export default defineComponent({

View file

@ -50,9 +50,9 @@
<script lang="ts">
import Dropdown from "bootstrap/js/dist/dropdown";
import deepEqual from "../../utils/deepEqual.js";
import deepEqual from "@/utils/deepEqual";
import { defineComponent, type PropType } from "vue";
import type { SelectOption } from "assets/js/types/evcc.js";
import type { SelectOption } from "@/types/evcc";
export default defineComponent({
name: "MultiSelect",

View file

@ -1,7 +1,7 @@
<script setup lang="ts">
import { reactive } from "vue";
import SelectGroup from "./SelectGroup.vue";
import type { SelectOption } from "assets/js/types/evcc";
import type { SelectOption } from "@/types/evcc";
const state = reactive({
value: "orange",

View file

@ -18,7 +18,7 @@
</template>
<script lang="ts">
import type { SelectOption } from "assets/js/types/evcc";
import type { SelectOption } from "@/types/evcc";
import { defineComponent, type PropType } from "vue";
export default defineComponent({

View file

@ -93,18 +93,18 @@
<script>
import "@h2d2/shopicons/es/regular/lightning";
import "@h2d2/shopicons/es/regular/adjust";
import api from "../../api.js";
import api from "@/api";
import Mode from "./Mode.vue";
import Vehicle from "../Vehicles/Vehicle.vue";
import Phases from "./Phases.vue";
import LabelAndValue from "../Helper/LabelAndValue.vue";
import formatter, { POWER_UNIT } from "../../mixins/formatter.js";
import collector from "../../mixins/collector.js";
import formatter, { POWER_UNIT } from "@/mixins/formatter";
import collector from "@/mixins/collector";
import SettingsButton from "./SettingsButton.vue";
import SettingsModal from "./SettingsModal.vue";
import VehicleIcon from "../VehicleIcon/index.js";
import VehicleIcon from "../VehicleIcon";
import SessionInfo from "./SessionInfo.vue";
import smartCostAvailable from "../../utils/smartCostAvailable.js";
import smartCostAvailable from "@/utils/smartCostAvailable";
import Modal from "bootstrap/js/dist/modal";
export default {

View file

@ -29,8 +29,8 @@
<script>
import LabelAndValue from "../Helper/LabelAndValue.vue";
import CustomSelect from "../Helper/CustomSelect.vue";
import formatter from "../../mixins/formatter.ts";
import { getSessionInfo, setSessionInfo } from "./session.ts";
import formatter from "@/mixins/formatter";
import { getSessionInfo, setSessionInfo } from "./session";
export default {
name: "LoadpointSessionInfo",

View file

@ -38,7 +38,7 @@
</template>
<script>
import formatter from "../../mixins/formatter.js";
import formatter from "@/mixins/formatter";
export default {
mixins: [formatter],

View file

@ -156,10 +156,10 @@
</template>
<script>
import collector from "../../mixins/collector.js";
import formatter from "../../mixins/formatter.js";
import collector from "@/mixins/collector";
import formatter from "@/mixins/formatter";
import SmartCostLimit from "../Tariff/SmartCostLimit.vue";
import smartCostAvailable from "../../utils/smartCostAvailable.js";
import smartCostAvailable from "@/utils/smartCostAvailable";
import SettingsBatteryBoost from "./SettingsBatteryBoost.vue";
const V = 230;

View file

@ -1,4 +1,4 @@
import settings from "../../settings.js";
import settings from "@/settings";
export function getSessionInfo(index: number, fallback: string) {
return settings.sessionInfo[index - 1] || fallback;

View file

@ -5,7 +5,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Add",

View file

@ -14,7 +14,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "BatteryBoost",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Circuits",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Climater",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "CloudOffline",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Dropdown",

View file

@ -15,7 +15,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "DynamicPrice",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Edit",

View file

@ -12,7 +12,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Eebus",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Forecast",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Hems",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Influx",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Loadpoint",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "ModbusProxy",

View file

@ -24,7 +24,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Mqtt",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Notification",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "PlanEnd",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "PlanStart",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Play",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Question",

View file

@ -12,7 +12,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Reconnect",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Record",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Restart",

View file

@ -12,7 +12,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "RfidWait",

View file

@ -13,7 +13,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "SunDown",

View file

@ -13,7 +13,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "SunUp",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Sync",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "TempLimit",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Total",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "VehicleLimit",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "VehicleLimitReached",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "VehicleLimitWarning",

View file

@ -14,7 +14,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "VehicleMinSoc",

View file

@ -8,7 +8,7 @@
</template>
<script>
import icon from "../../mixins/icon";
import icon from "@/mixins/icon";
export default {
name: "Welcome",

View file

@ -38,8 +38,8 @@
<script>
import Tile from "./Tile.vue";
import formatter from "../../mixins/formatter.js";
import communityApi from "./communityApi.js";
import formatter from "@/mixins/formatter";
import communityApi from "./communityApi";
const UPDATE_INTERVAL_SECONDS = 10;

View file

@ -203,16 +203,16 @@
<script>
import Modal from "bootstrap/js/dist/modal";
import formatter from "../../mixins/formatter.js";
import formatter from "@/mixins/formatter";
import Sponsor from "./Sponsor.vue";
import Tile from "./Tile.vue";
import LiveCommunity from "./LiveCommunity.vue";
import TelemetrySettings from "../TelemetrySettings.vue";
import CustomSelect from "../Helper/CustomSelect.vue";
import co2Reference from "./co2Reference.js";
import settings from "../../settings.js";
import api, { allowClientError } from "../../api.js";
import { docsPrefix } from "../../i18n.js";
import co2Reference from "./co2Reference";
import settings from "@/settings";
import api, { allowClientError } from "@/api";
import { docsPrefix } from "@/i18n";
export default {
name: "Savings",

View file

@ -66,7 +66,7 @@ import confetti from "canvas-confetti";
import "@h2d2/shopicons/es/regular/heart";
import "@h2d2/shopicons/es/regular/stars";
import "@h2d2/shopicons/es/regular/clock";
import { docsPrefix } from "../../i18n.js";
import { docsPrefix } from "@/i18n";
export const TRIAL = "trial";
export const VICTRON_DEVICE = "victron";

View file

@ -18,7 +18,7 @@
</template>
<script>
import formatter from "../../mixins/formatter.js";
import formatter from "@/mixins/formatter";
import { TRIAL } from "./Sponsor.vue";
export default {

View file

@ -39,7 +39,7 @@ import "@h2d2/shopicons/es/regular/receivepayment";
import "@h2d2/shopicons/es/regular/car3";
import "@h2d2/shopicons/es/regular/eco1";
import AnimatedNumber from "../Helper/AnimatedNumber.vue";
import formatter from "../../mixins/formatter.js";
import formatter from "@/mixins/formatter";
export default {
name: "SavingsTile",

View file

@ -13,8 +13,8 @@
import { PolarArea } from "vue-chartjs";
import { RadialLinearScale, ArcElement, Legend, Tooltip } from "chart.js";
import { registerChartComponents, commonOptions, tooltipLabelColor } from "./chartConfig";
import formatter from "../../mixins/formatter";
import colors, { dimColor } from "../../colors";
import formatter from "@/mixins/formatter";
import colors, { dimColor } from "@/colors";
import { TYPES, GROUPS } from "./types";
import LegendList from "./LegendList.vue";

View file

@ -14,8 +14,8 @@ import { Doughnut } from "vue-chartjs";
import { DoughnutController, ArcElement, LinearScale, Legend, Tooltip } from "chart.js";
import LegendList from "./LegendList.vue";
import { registerChartComponents, commonOptions, tooltipLabelColor } from "./chartConfig";
import formatter from "../../mixins/formatter";
import colors from "../../colors";
import formatter from "@/mixins/formatter";
import colors from "@/colors";
import { TYPES, GROUPS } from "./types";
registerChartComponents([DoughnutController, ArcElement, LinearScale, Legend, Tooltip]);

View file

@ -21,8 +21,8 @@ import {
} from "chart.js";
import { registerChartComponents, commonOptions, tooltipLabelColor } from "./chartConfig";
import LegendList from "./LegendList.vue";
import formatter from "../../mixins/formatter";
import colors from "../../colors";
import formatter from "@/mixins/formatter";
import colors from "@/colors";
import { TYPES, GROUPS, PERIODS } from "./types";
registerChartComponents([

View file

@ -96,7 +96,7 @@
<script>
import CustomSelect from "../Helper/CustomSelect.vue";
import DateNavigatorButton from "./DateNavigatorButton.vue";
import formatter from "../../mixins/formatter";
import formatter from "@/mixins/formatter";
export default {
name: "DateNavigator",

View file

@ -14,8 +14,8 @@ import { Doughnut } from "vue-chartjs";
import { DoughnutController, ArcElement, LinearScale, Legend, Tooltip } from "chart.js";
import LegendList from "./LegendList.vue";
import { registerChartComponents, commonOptions, tooltipLabelColor } from "./chartConfig";
import formatter, { POWER_UNIT } from "../../mixins/formatter";
import colors from "../../colors";
import formatter, { POWER_UNIT } from "@/mixins/formatter";
import colors from "@/colors";
import { GROUPS } from "./types";
registerChartComponents([DoughnutController, ArcElement, LinearScale, Legend, Tooltip]);

View file

@ -12,8 +12,8 @@ import { Bar } from "vue-chartjs";
import { BarController, BarElement, CategoryScale, LinearScale, Legend, Tooltip } from "chart.js";
import { registerChartComponents, commonOptions, tooltipLabelColor } from "./chartConfig";
import LegendList from "./LegendList.vue";
import formatter, { POWER_UNIT } from "../../mixins/formatter";
import colors from "../../colors";
import formatter, { POWER_UNIT } from "@/mixins/formatter";
import colors from "@/colors";
import { GROUPS, PERIODS } from "./types";
registerChartComponents([BarController, BarElement, CategoryScale, LinearScale, Legend, Tooltip]);

View file

@ -197,11 +197,11 @@
<script>
import "@h2d2/shopicons/es/regular/checkmark";
import Modal from "bootstrap/js/dist/modal";
import formatter from "../../mixins/formatter";
import formatter from "@/mixins/formatter";
import Options from "../Vehicles/Options.vue";
import CustomSelect from "../Helper/CustomSelect.vue";
import { distanceUnit, distanceValue } from "../../units";
import api from "../../api";
import { distanceUnit, distanceValue } from "@/units";
import api from "@/api";
export default {
name: "SessionDetailsModal",

View file

@ -158,9 +158,9 @@
<script>
import CustomSelect from "../Helper/CustomSelect.vue";
import formatter, { POWER_UNIT } from "../../mixins/formatter";
import breakpoint from "../../mixins/breakpoint";
import settings from "../../settings";
import formatter, { POWER_UNIT } from "@/mixins/formatter";
import breakpoint from "@/mixins/breakpoint";
import settings from "@/settings";
const COLUMNS_PER_BREAKPOINT = {
xs: 1,

Some files were not shown because too many files have changed in this diff Show more