From affca89e3a138517e412f19e7b9076db0bfc071a Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Thu, 23 Apr 2026 18:40:48 +0200 Subject: [PATCH] feat(frontend): top-up, stop and start ufo --- .../src/lib/components/icons/IconUfo.svelte | 2 +- .../src/lib/components/modals/Modals.svelte | 5 +++ .../modals/cycles/top-up/UfoTopUpModal.svelte | 45 +++++++++++++++++++ .../canister/lifecycle/CanisterStart.svelte | 2 +- .../canister/lifecycle/CanisterStop.svelte | 2 +- .../lifecycle/CanisterStopStart.svelte | 2 +- .../modules/canister/top-up/TopUp.svelte | 6 +-- .../ufos/overview/UfoOverview.svelte | 3 +- .../ufos/overview/UfoOverviewActions.svelte | 2 +- .../ufos/overview/UfoRuntimeActions.svelte | 36 +++++++++++++++ src/frontend/src/lib/i18n/en.json | 1 + src/frontend/src/lib/i18n/zh-cn.json | 1 + src/frontend/src/lib/types/i18n.d.ts | 1 + src/frontend/src/lib/types/modal.ts | 7 +++ 14 files changed, 106 insertions(+), 9 deletions(-) create mode 100644 src/frontend/src/lib/components/modals/cycles/top-up/UfoTopUpModal.svelte create mode 100644 src/frontend/src/lib/components/ufos/overview/UfoRuntimeActions.svelte diff --git a/src/frontend/src/lib/components/icons/IconUfo.svelte b/src/frontend/src/lib/components/icons/IconUfo.svelte index 3698dc8d18..3637922ab0 100644 --- a/src/frontend/src/lib/components/icons/IconUfo.svelte +++ b/src/frontend/src/lib/components/icons/IconUfo.svelte @@ -22,7 +22,7 @@ d="M303.091 78.884c80.693 0 152.794 81.242 152.794 143.757s-70.254-1.555-147.941-.607c-75.14.916-149.762 63.79-149.762 1.275S222.399 78.884 303.091 78.884" transform="translate(14 10)" /> diff --git a/src/frontend/src/lib/components/modals/Modals.svelte b/src/frontend/src/lib/components/modals/Modals.svelte index fff7e8e607..7936204d4f 100644 --- a/src/frontend/src/lib/components/modals/Modals.svelte +++ b/src/frontend/src/lib/components/modals/Modals.svelte @@ -10,6 +10,7 @@ import MissionControlTopUpModal from '$lib/components/modals/cycles/top-up/MissionControlTopUpModal.svelte'; import OrbiterTopUpModal from '$lib/components/modals/cycles/top-up/OrbiterTopUpModal.svelte'; import SatelliteTopUpModal from '$lib/components/modals/cycles/top-up/SatelliteTopUpModal.svelte'; + import UfoTopUpModal from '$lib/components/modals/cycles/top-up/UfoTopUpModal.svelte'; import MissionControlTransferCyclesModal from '$lib/components/modals/cycles/transfer/MissionControlTransferCyclesModal.svelte'; import OrbiterTransferCyclesModal from '$lib/components/modals/cycles/transfer/OrbiterTransferCyclesModal.svelte'; import SatelliteTransferCyclesModal from '$lib/components/modals/cycles/transfer/SatelliteTransferCyclesModal.svelte'; @@ -72,6 +73,10 @@ {/if} +{#if modal?.type === 'topup_ufo' && nonNullish(modal.detail)} + +{/if} + {#if modal?.type === 'add_custom_domain' && nonNullish(modal.detail)} {/if} diff --git a/src/frontend/src/lib/components/modals/cycles/top-up/UfoTopUpModal.svelte b/src/frontend/src/lib/components/modals/cycles/top-up/UfoTopUpModal.svelte new file mode 100644 index 0000000000..4390469328 --- /dev/null +++ b/src/frontend/src/lib/components/modals/cycles/top-up/UfoTopUpModal.svelte @@ -0,0 +1,45 @@ + + + + {#snippet intro()} +

+ +

+ {/snippet} + + {#snippet outro()} + +

{$i18n.canisters.top_up_ufo_done}

+ {/snippet} +
diff --git a/src/frontend/src/lib/components/modules/canister/lifecycle/CanisterStart.svelte b/src/frontend/src/lib/components/modules/canister/lifecycle/CanisterStart.svelte index be9d4916a2..5ac7edcf9b 100644 --- a/src/frontend/src/lib/components/modules/canister/lifecycle/CanisterStart.svelte +++ b/src/frontend/src/lib/components/modules/canister/lifecycle/CanisterStart.svelte @@ -17,7 +17,7 @@ interface Props { canister: CanisterSyncData; - segment: 'satellite' | 'orbiter'; + segment: 'satellite' | 'orbiter' | 'ufo'; onstart: () => void; } diff --git a/src/frontend/src/lib/components/modules/canister/lifecycle/CanisterStop.svelte b/src/frontend/src/lib/components/modules/canister/lifecycle/CanisterStop.svelte index 7d7f17b6ee..5b94e78dd8 100644 --- a/src/frontend/src/lib/components/modules/canister/lifecycle/CanisterStop.svelte +++ b/src/frontend/src/lib/components/modules/canister/lifecycle/CanisterStop.svelte @@ -16,7 +16,7 @@ interface Props { canister: CanisterSyncData; monitoringEnabled: boolean; - segment: 'satellite' | 'orbiter'; + segment: 'satellite' | 'orbiter' | 'ufo'; onstop: () => void; } diff --git a/src/frontend/src/lib/components/modules/canister/lifecycle/CanisterStopStart.svelte b/src/frontend/src/lib/components/modules/canister/lifecycle/CanisterStopStart.svelte index ceb8c2756e..a4a90068c4 100644 --- a/src/frontend/src/lib/components/modules/canister/lifecycle/CanisterStopStart.svelte +++ b/src/frontend/src/lib/components/modules/canister/lifecycle/CanisterStopStart.svelte @@ -8,7 +8,7 @@ interface Props { canister?: CanisterSyncData | undefined; monitoringEnabled: boolean; - segment: 'satellite' | 'orbiter'; + segment: 'satellite' | 'orbiter' | 'ufo'; onstart: () => void; onstop: () => void; } diff --git a/src/frontend/src/lib/components/modules/canister/top-up/TopUp.svelte b/src/frontend/src/lib/components/modules/canister/top-up/TopUp.svelte index 199fde5f8f..b091bba162 100644 --- a/src/frontend/src/lib/components/modules/canister/top-up/TopUp.svelte +++ b/src/frontend/src/lib/components/modules/canister/top-up/TopUp.svelte @@ -3,12 +3,12 @@ import { missionControlIdNotLoaded } from '$lib/derived/console/account.mission-control.derived'; import { i18n } from '$lib/stores/app/i18n.store'; import { toasts } from '$lib/stores/app/toasts.store'; - import type { JunoModalWithSatellite } from '$lib/types/modal'; + import type { JunoModalTopUpUfoDetail, JunoModalWithSatellite } from '$lib/types/modal'; import { emit } from '$lib/utils/events.utils'; interface Props { - type: 'topup_satellite' | 'topup_mission_control' | 'topup_orbiter'; - detail?: JunoModalWithSatellite | undefined; + type: 'topup_satellite' | 'topup_mission_control' | 'topup_orbiter' | 'topup_ufo'; + detail?: JunoModalWithSatellite | JunoModalTopUpUfoDetail | undefined; onclose: () => void; } diff --git a/src/frontend/src/lib/components/ufos/overview/UfoOverview.svelte b/src/frontend/src/lib/components/ufos/overview/UfoOverview.svelte index ce8d778df4..dcd05a3aec 100644 --- a/src/frontend/src/lib/components/ufos/overview/UfoOverview.svelte +++ b/src/frontend/src/lib/components/ufos/overview/UfoOverview.svelte @@ -7,6 +7,7 @@ import SegmentWithMetadataName from '$lib/components/modules/segments/SegmentWithMetadataName.svelte'; import SegmentWithMetadataTags from '$lib/components/modules/segments/SegmentWithMetadataTags.svelte'; import UfoOverviewActions from '$lib/components/ufos/overview/UfoOverviewActions.svelte'; + import UfoRuntimeActions from '$lib/components/ufos/overview/UfoRuntimeActions.svelte'; import Identifier from '$lib/components/ui/Identifier.svelte'; import Value from '$lib/components/ui/Value.svelte'; import { i18n } from '$lib/stores/app/i18n.store'; @@ -69,7 +70,7 @@ -TODO +