-
Notifications
You must be signed in to change notification settings - Fork 268
/
App.svelte
183 lines (172 loc) · 7.65 KB
/
App.svelte
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
<script lang="ts">
import './app.css';
import '@patternfly/patternfly/patternfly.css';
import '@patternfly/patternfly/patternfly-addons.css';
import '@patternfly/patternfly/patternfly-theme-dark.css';
import './override.css';
import { router } from 'tinro';
import Route from './Route.svelte';
import ContainerList from './lib/ContainerList.svelte';
import ImagesList from './lib/ImagesList.svelte';
import ProviderList from './lib/ProviderList.svelte';
import PreferencesPage from './lib/preferences/PreferencesPage.svelte';
import BuildImageFromContainerfile from './lib/image/BuildImageFromContainerfile.svelte';
import PullImage from './lib/image/PullImage.svelte';
import DockerExtension from './lib/docker-extension/DockerExtension.svelte';
import ContainerDetails from './lib/container/ContainerDetails.svelte';
import WelcomePage from './lib/welcome/WelcomePage.svelte';
import DashboardPage from './lib/dashboard/DashboardPage.svelte';
import HelpPage from './lib/help/HelpPage.svelte';
import StatusBar from './lib/statusbar/StatusBar.svelte';
import ImageDetails from './lib/image/ImageDetails.svelte';
import PodsList from './lib/pod/PodsList.svelte';
import PreferencesNavigation from './PreferencesNavigation.svelte';
import AppNavigation from './AppNavigation.svelte';
import VolumesList from './lib/volume/VolumesList.svelte';
import VolumeDetails from './lib/volume/VolumeDetails.svelte';
import KubePlayYAML from './lib/kube/KubePlayYAML.svelte';
import PodDetails from './lib/pod/PodDetails.svelte';
import ComposeDetails from './lib/compose/ComposeDetails.svelte';
import PodCreateFromContainers from './lib/pod/PodCreateFromContainers.svelte';
import DeployPodToKube from './lib/pod/DeployPodToKube.svelte';
import RunImage from './lib/image/RunImage.svelte';
import SendFeedback from './lib/feedback/SendFeedback.svelte';
import ToastHandler from './lib/toast/ToastHandler.svelte';
import QuickPickInput from './lib/dialogs/QuickPickInput.svelte';
import TaskManager from './lib/task-manager/TaskManager.svelte';
import MessageBox from './lib/dialogs/MessageBox.svelte';
import TitleBar from './lib/ui/TitleBar.svelte';
import TroubleshootingPage from './lib/troubleshooting/TroubleshootingPage.svelte';
import IconsStyle from './lib/style/IconsStyle.svelte';
import CustomPick from './lib/dialogs/CustomPick.svelte';
import ContextKey from './lib/context/ContextKey.svelte';
import CreateVolume from './lib/volume/CreateVolume.svelte';
router.mode.hash();
//remember from where we come to preference pages
let nonSettingsPage = '/';
router.subscribe(function (navigation) {
if (navigation.url !== undefined && !navigation.url.startsWith('/preferences')) {
nonSettingsPage = navigation.url;
}
});
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
window.events?.receive('display-help', () => {
router.goto('/help');
});
window.events?.receive('display-troubleshooting', () => {
router.goto('/troubleshooting');
});
</script>
<Route path="/*" breadcrumb="Home" let:meta>
<main class="flex flex-col w-screen h-screen overflow-hidden bg-charcoal-800">
<IconsStyle />
<TitleBar />
<ContextKey />
<WelcomePage />
<div class="flex flex-row w-full h-full overflow-hidden">
<MessageBox />
<QuickPickInput />
<CustomPick />
<AppNavigation meta="{meta}" exitSettingsCallback="{() => router.goto(nonSettingsPage)}" />
{#if meta.url.startsWith('/preferences')}
<PreferencesNavigation meta="{meta}" />
{/if}
<div
class="flex flex-col w-full h-full overflow-hidden"
class:bg-charcoal-700="{!meta.url.startsWith('/preferences')}"
class:bg-charcoal-800="{meta.url.startsWith('/preferences')}">
<TaskManager />
<SendFeedback />
<ToastHandler />
<Route path="/" breadcrumb="Dashboard Page">
<DashboardPage />
</Route>
<Route path="/containers" breadcrumb="Containers" navigationHint="root">
<ContainerList searchTerm="{meta.query.filter || ''}" />
</Route>
<Route path="/containers/:id/*" breadcrumb="Container Details" let:meta navigationHint="details">
<ContainerDetails containerID="{meta.params.id}" />
</Route>
<Route path="/kube/play" breadcrumb="Play Kubernetes YAML">
<KubePlayYAML />
</Route>
<Route path="/images" breadcrumb="Images" navigationHint="root">
<ImagesList />
</Route>
<Route
path="/images/:id/:engineId/:base64RepoTag/*"
breadcrumb="Image Details"
let:meta
navigationHint="details">
<ImageDetails
imageID="{meta.params.id}"
engineId="{decodeURI(meta.params.engineId)}"
base64RepoTag="{meta.params.base64RepoTag}" />
</Route>
<Route path="/images/build" breadcrumb="Build an Image">
<BuildImageFromContainerfile />
</Route>
<Route path="/images/run/*" breadcrumb="Run Image">
<RunImage />
</Route>
<Route path="/images/pull" breadcrumb="Pull an Image">
<PullImage />
</Route>
<Route path="/pods" breadcrumb="Pods" navigationHint="root">
<PodsList />
</Route>
<Route path="/deploy-to-kube/:resourceId/:engineId/*" breadcrumb="Deploy to Kubernetes" let:meta>
<DeployPodToKube
resourceId="{decodeURI(meta.params.resourceId)}"
engineId="{decodeURI(meta.params.engineId)}"
type="container" />
</Route>
<!-- Same DeployPodToKube route, but instead we pass in the compose group name, then redirect to DeployPodToKube -->
<Route path="/compose/deploy-to-kube/:composeGroupName/:engineId/*" breadcrumb="Deploy to Kubernetes" let:meta>
<DeployPodToKube
resourceId="{decodeURI(meta.params.composeGroupName)}"
engineId="{decodeURI(meta.params.engineId)}"
type="compose" />
</Route>
<Route path="/compose/:name/:engineId/*" breadcrumb="Compose Details" let:meta navigationHint="details">
<ComposeDetails composeName="{decodeURI(meta.params.name)}" engineId="{decodeURI(meta.params.engineId)}" />
</Route>
<Route path="/pods/:kind/:name/:engineId/*" breadcrumb="Pod Details" let:meta navigationHint="details">
<PodDetails
podName="{decodeURI(meta.params.name)}"
engineId="{decodeURI(meta.params.engineId)}"
kind="{decodeURI(meta.params.kind)}" />
</Route>
<Route path="/pod-create-from-containers" breadcrumb="Create Pod">
<PodCreateFromContainers />
</Route>
<Route path="/volumes" breadcrumb="Volumes" navigationHint="root">
<VolumesList />
</Route>
<Route path="/volumes/create" breadcrumb="Create a Volume">
<CreateVolume />
</Route>
<Route path="/volumes/:name/:engineId/*" breadcrumb="Volume Details" let:meta navigationHint="details">
<VolumeDetails volumeName="{decodeURI(meta.params.name)}" engineId="{decodeURI(meta.params.engineId)}" />
</Route>
<Route path="/providers" breadcrumb="Providers">
<ProviderList />
</Route>
<Route path="/preferences/*" breadcrumb="Settings">
<PreferencesPage />
</Route>
<Route path="/contribs/:name/*" breadcrumb="Extension" let:meta>
<DockerExtension name="{decodeURI(meta.params.name)}" />
</Route>
<Route path="/help" breadcrumb="Help">
<HelpPage />
</Route>
<Route path="/troubleshooting" breadcrumb="Troubleshooting">
<TroubleshootingPage />
</Route>
</div>
</div>
<StatusBar />
</main>
</Route>