From 10e68510c4024ee293b06b39409f56620a94efaf Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 16 Jul 2020 17:48:31 +0300 Subject: [PATCH] handle initial loading without clusters Signed-off-by: Roman --- locales/en/messages.po | 64 +++++++++++++++++++-------------- locales/fi/messages.po | 64 +++++++++++++++++++-------------- locales/ru/messages.po | 64 +++++++++++++++++++-------------- src/main/cluster.ts | 2 +- src/main/index.ts | 2 +- src/main/lens-proxy.ts | 4 +++ src/main/router.ts | 29 ++++++++------- src/main/window-manager.ts | 30 ++++++++-------- src/renderer/components/app.tsx | 22 ++++++++---- src/renderer/config.store.ts | 3 ++ 10 files changed, 167 insertions(+), 117 deletions(-) diff --git a/locales/en/messages.po b/locales/en/messages.po index d9ea796593..fd430beb58 100644 --- a/locales/en/messages.po +++ b/locales/en/messages.po @@ -45,7 +45,7 @@ msgstr "<0>{0} successfully created" msgid "API Group" msgstr "API Group" -#: src/renderer/components/layout/sidebar.tsx:88 +#: src/renderer/components/layout/sidebar.tsx:94 msgid "Access Control" msgstr "Access Control" @@ -199,7 +199,7 @@ msgstr "App crash at <0>{pageUrl}" msgid "Applying.." msgstr "Applying.." -#: src/renderer/components/layout/sidebar.tsx:87 +#: src/renderer/components/layout/sidebar.tsx:93 msgid "Apps" msgstr "Apps" @@ -211,7 +211,7 @@ msgstr "Are you sure you want to drain <0>{nodeName}?" msgid "Arguments" msgstr "Arguments" -#: src/renderer/components/+workspaces/clusters-menu.tsx:64 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:74 msgid "Associate clusters and choose the ones you want to access via quick launch menu by clicking the + button." msgstr "Associate clusters and choose the ones you want to access via quick launch menu by clicking the + button." @@ -219,7 +219,7 @@ msgstr "Associate clusters and choose the ones you want to access via quick laun msgid "Auth App Role" msgstr "Auth App Role" -#: src/renderer/components/error-boundary/error-boundary.tsx:54 +#: src/renderer/components/error-boundary/error-boundary.tsx:53 #: src/renderer/components/wizard/wizard.tsx:130 msgid "Back" msgstr "Back" @@ -242,8 +242,8 @@ msgid "Bindings" msgstr "Bindings" #: src/renderer/components/error-boundary/error-boundary.tsx:37 -msgid "Build version" -msgstr "Build version" +#~ msgid "Build version" +#~ msgstr "Build version" #: src/renderer/components/+workloads-pods/container-charts.tsx:74 #: src/renderer/components/+workloads-pods/pod-charts.tsx:100 @@ -385,7 +385,7 @@ msgid "Cloud API Token Secret" msgstr "Cloud API Token Secret" #: src/renderer/components/+namespaces/namespace-select.tsx:43 -#: src/renderer/components/layout/sidebar.tsx:79 +#: src/renderer/components/layout/sidebar.tsx:85 msgid "Cluster" msgstr "Cluster" @@ -407,7 +407,7 @@ msgstr "Command" msgid "Common Name" msgstr "Common Name" -#: src/renderer/components/layout/sidebar.tsx:76 +#: src/renderer/components/layout/sidebar.tsx:80 msgid "Compact view" msgstr "Compact view" @@ -416,7 +416,7 @@ msgstr "Compact view" msgid "Completions" msgstr "Completions" -#: src/renderer/components/error-boundary/error-boundary.tsx:46 +#: src/renderer/components/error-boundary/error-boundary.tsx:45 msgid "Component stack" msgstr "Component stack" @@ -451,7 +451,7 @@ msgstr "ConfigMap <0>{0} successfully updated." msgid "ConfigMaps" msgstr "ConfigMaps" -#: src/renderer/components/layout/sidebar.tsx:82 +#: src/renderer/components/layout/sidebar.tsx:88 msgid "Configuration" msgstr "Configuration" @@ -614,7 +614,7 @@ msgid "Currently applied filters:" msgstr "Currently applied filters:" #: src/renderer/components/+custom-resources/crd-list.tsx:55 -#: src/renderer/components/layout/sidebar.tsx:89 +#: src/renderer/components/layout/sidebar.tsx:95 msgid "Custom Resources" msgstr "Custom Resources" @@ -678,7 +678,7 @@ msgstr "Description" msgid "Desired number of replicas" msgstr "Desired number of replicas" -#: src/renderer/components/+workspaces/clusters-menu.tsx:40 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:49 msgid "Disconnect" msgstr "Disconnect" @@ -759,14 +759,14 @@ msgstr "Enter a name" msgid "Environment" msgstr "Environment" -#: src/renderer/components/error-boundary/error-boundary.tsx:50 +#: src/renderer/components/error-boundary/error-boundary.tsx:49 msgid "Error stack" msgstr "Error stack" #: src/renderer/components/+events/events.tsx:56 #: src/renderer/components/+events/kube-event-details.tsx:34 #: src/renderer/components/+events/kube-event-details.tsx:39 -#: src/renderer/components/layout/sidebar.tsx:86 +#: src/renderer/components/layout/sidebar.tsx:92 msgid "Events" msgstr "Events" @@ -784,8 +784,8 @@ msgid "Exit full size mode" msgstr "Exit full size mode" #: src/renderer/components/layout/sidebar.tsx:76 -msgid "Extended view" -msgstr "Extended view" +#~ msgid "Extended view" +#~ msgstr "Extended view" #: src/renderer/components/+network-services/services.tsx:49 msgid "External IP" @@ -844,6 +844,10 @@ msgstr "From <0>{from} to <1>{to}" msgid "Fs Group" msgstr "Fs Group" +#: src/renderer/components/+landing-page/landing-page.tsx:21 +msgid "Get started by associating one or more clusters to Lens." +msgstr "Get started by associating one or more clusters to Lens." + #: src/renderer/components/+custom-resources/crd-details.tsx:32 #: src/renderer/components/+custom-resources/crd-list.tsx:58 #: src/renderer/components/+custom-resources/crd-list.tsx:74 @@ -1335,7 +1339,7 @@ msgid "Namespace: {0}" msgstr "Namespace: {0}" #: src/renderer/components/+namespaces/namespaces.tsx:30 -#: src/renderer/components/layout/sidebar.tsx:85 +#: src/renderer/components/layout/sidebar.tsx:91 msgid "Namespaces" msgstr "Namespaces" @@ -1345,7 +1349,7 @@ msgstr "Namespaces: {0}" #: src/renderer/components/+network-ingresses/ingress-details.tsx:66 #: src/renderer/components/+workloads-pods/pod-charts.tsx:13 -#: src/renderer/components/layout/sidebar.tsx:83 +#: src/renderer/components/layout/sidebar.tsx:89 msgid "Network" msgstr "Network" @@ -1443,7 +1447,7 @@ msgid "Node shell" msgstr "Node shell" #: src/renderer/components/+nodes/nodes.tsx:111 -#: src/renderer/components/layout/sidebar.tsx:80 +#: src/renderer/components/layout/sidebar.tsx:86 msgid "Nodes" msgstr "Nodes" @@ -1483,6 +1487,10 @@ msgstr "Object" msgid "Ok" msgstr "Ok" +#: src/renderer/components/+whats-new/whats-new.tsx:36 +msgid "Ok, got it!" +msgstr "Ok, got it!" + #: src/renderer/components/dock/dock.tsx:117 msgid "Open" msgstr "Open" @@ -2030,7 +2038,7 @@ msgstr "Set" msgid "Set quota" msgstr "Set quota" -#: src/renderer/components/+workspaces/clusters-menu.tsx:33 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:43 msgid "Settings" msgstr "Settings" @@ -2114,7 +2122,7 @@ msgid "Status URI" msgstr "Status URI" #: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:57 -#: src/renderer/components/layout/sidebar.tsx:84 +#: src/renderer/components/layout/sidebar.tsx:90 msgid "Storage" msgstr "Storage" @@ -2204,7 +2212,7 @@ msgstr "This field is required" msgid "This field must contain only lowercase latin characters, numbers and dash." msgstr "This field must contain only lowercase latin characters, numbers and dash." -#: src/renderer/components/+workspaces/clusters-menu.tsx:62 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:72 msgid "This is the quick launch menu." msgstr "This is the quick launch menu." @@ -2212,7 +2220,7 @@ msgstr "This is the quick launch menu." msgid "To" msgstr "To" -#: src/renderer/components/error-boundary/error-boundary.tsx:40 +#: src/renderer/components/error-boundary/error-boundary.tsx:39 msgid "To help us improve the product please report bugs to {slackLink} community or {githubLink} issues tracker." msgstr "To help us improve the product please report bugs to {slackLink} community or {githubLink} issues tracker." @@ -2374,15 +2382,19 @@ msgstr "Waiting services to be running" msgid "Warnings: {0}" msgstr "Warnings: {0}" +#: src/renderer/components/+landing-page/landing-page.tsx:18 +msgid "Welcome!" +msgstr "Welcome!" + #: src/renderer/components/+cluster/cluster-metric-switchers.tsx:19 msgid "Worker" msgstr "Worker" -#: src/renderer/components/layout/sidebar.tsx:81 +#: src/renderer/components/layout/sidebar.tsx:87 msgid "Workloads" msgstr "Workloads" -#: src/renderer/components/+workspaces/bottom-bar.tsx:31 +#: src/renderer/components/cluster-manager/bottom-bar.tsx:35 msgid "Workspaces" msgstr "Workspaces" @@ -2492,7 +2504,7 @@ msgstr "{0} total, {1} available" msgid "{0} unavailable" msgstr "{0} unavailable" -#: src/renderer/components/kubeconfig-dialog/kubeconfig-dialog.tsx:134 +#: src/renderer/components/kubeconfig-dialog/kubeconfig-dialog.tsx:129 msgid "{accountName} kubeconfig" msgstr "{accountName} kubeconfig" diff --git a/locales/fi/messages.po b/locales/fi/messages.po index 6c5cfc73ca..7ecb2b814b 100644 --- a/locales/fi/messages.po +++ b/locales/fi/messages.po @@ -45,7 +45,7 @@ msgstr "" msgid "API Group" msgstr "" -#: src/renderer/components/layout/sidebar.tsx:88 +#: src/renderer/components/layout/sidebar.tsx:94 msgid "Access Control" msgstr "" @@ -199,7 +199,7 @@ msgstr "" msgid "Applying.." msgstr "" -#: src/renderer/components/layout/sidebar.tsx:87 +#: src/renderer/components/layout/sidebar.tsx:93 msgid "Apps" msgstr "" @@ -211,7 +211,7 @@ msgstr "" msgid "Arguments" msgstr "" -#: src/renderer/components/+workspaces/clusters-menu.tsx:64 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:74 msgid "Associate clusters and choose the ones you want to access via quick launch menu by clicking the + button." msgstr "" @@ -219,7 +219,7 @@ msgstr "" msgid "Auth App Role" msgstr "" -#: src/renderer/components/error-boundary/error-boundary.tsx:54 +#: src/renderer/components/error-boundary/error-boundary.tsx:53 #: src/renderer/components/wizard/wizard.tsx:130 msgid "Back" msgstr "" @@ -242,8 +242,8 @@ msgid "Bindings" msgstr "" #: src/renderer/components/error-boundary/error-boundary.tsx:37 -msgid "Build version" -msgstr "" +#~ msgid "Build version" +#~ msgstr "" #: src/renderer/components/+workloads-pods/container-charts.tsx:74 #: src/renderer/components/+workloads-pods/pod-charts.tsx:100 @@ -381,7 +381,7 @@ msgid "Cloud API Token Secret" msgstr "" #: src/renderer/components/+namespaces/namespace-select.tsx:43 -#: src/renderer/components/layout/sidebar.tsx:79 +#: src/renderer/components/layout/sidebar.tsx:85 msgid "Cluster" msgstr "" @@ -403,7 +403,7 @@ msgstr "" msgid "Common Name" msgstr "" -#: src/renderer/components/layout/sidebar.tsx:76 +#: src/renderer/components/layout/sidebar.tsx:80 msgid "Compact view" msgstr "" @@ -412,7 +412,7 @@ msgstr "" msgid "Completions" msgstr "" -#: src/renderer/components/error-boundary/error-boundary.tsx:46 +#: src/renderer/components/error-boundary/error-boundary.tsx:45 msgid "Component stack" msgstr "" @@ -447,7 +447,7 @@ msgstr "" msgid "ConfigMaps" msgstr "" -#: src/renderer/components/layout/sidebar.tsx:82 +#: src/renderer/components/layout/sidebar.tsx:88 msgid "Configuration" msgstr "" @@ -610,7 +610,7 @@ msgid "Currently applied filters:" msgstr "" #: src/renderer/components/+custom-resources/crd-list.tsx:55 -#: src/renderer/components/layout/sidebar.tsx:89 +#: src/renderer/components/layout/sidebar.tsx:95 msgid "Custom Resources" msgstr "" @@ -674,7 +674,7 @@ msgstr "" msgid "Desired number of replicas" msgstr "" -#: src/renderer/components/+workspaces/clusters-menu.tsx:40 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:49 msgid "Disconnect" msgstr "" @@ -755,14 +755,14 @@ msgstr "" msgid "Environment" msgstr "" -#: src/renderer/components/error-boundary/error-boundary.tsx:50 +#: src/renderer/components/error-boundary/error-boundary.tsx:49 msgid "Error stack" msgstr "" #: src/renderer/components/+events/events.tsx:56 #: src/renderer/components/+events/kube-event-details.tsx:34 #: src/renderer/components/+events/kube-event-details.tsx:39 -#: src/renderer/components/layout/sidebar.tsx:86 +#: src/renderer/components/layout/sidebar.tsx:92 msgid "Events" msgstr "" @@ -775,8 +775,8 @@ msgid "Exit full size mode" msgstr "" #: src/renderer/components/layout/sidebar.tsx:76 -msgid "Extended view" -msgstr "" +#~ msgid "Extended view" +#~ msgstr "" #: src/renderer/components/+network-services/services.tsx:49 msgid "External IP" @@ -835,6 +835,10 @@ msgstr "" msgid "Fs Group" msgstr "" +#: src/renderer/components/+landing-page/landing-page.tsx:21 +msgid "Get started by associating one or more clusters to Lens." +msgstr "" + #: src/renderer/components/+custom-resources/crd-details.tsx:32 #: src/renderer/components/+custom-resources/crd-list.tsx:58 #: src/renderer/components/+custom-resources/crd-list.tsx:74 @@ -1326,7 +1330,7 @@ msgid "Namespace: {0}" msgstr "" #: src/renderer/components/+namespaces/namespaces.tsx:30 -#: src/renderer/components/layout/sidebar.tsx:85 +#: src/renderer/components/layout/sidebar.tsx:91 msgid "Namespaces" msgstr "" @@ -1336,7 +1340,7 @@ msgstr "" #: src/renderer/components/+network-ingresses/ingress-details.tsx:66 #: src/renderer/components/+workloads-pods/pod-charts.tsx:13 -#: src/renderer/components/layout/sidebar.tsx:83 +#: src/renderer/components/layout/sidebar.tsx:89 msgid "Network" msgstr "" @@ -1426,7 +1430,7 @@ msgid "Node shell" msgstr "" #: src/renderer/components/+nodes/nodes.tsx:111 -#: src/renderer/components/layout/sidebar.tsx:80 +#: src/renderer/components/layout/sidebar.tsx:86 msgid "Nodes" msgstr "" @@ -1466,6 +1470,10 @@ msgstr "" msgid "Ok" msgstr "" +#: src/renderer/components/+whats-new/whats-new.tsx:36 +msgid "Ok, got it!" +msgstr "" + #: src/renderer/components/dock/dock.tsx:117 msgid "Open" msgstr "" @@ -2013,7 +2021,7 @@ msgstr "" msgid "Set quota" msgstr "" -#: src/renderer/components/+workspaces/clusters-menu.tsx:33 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:43 msgid "Settings" msgstr "" @@ -2097,7 +2105,7 @@ msgid "Status URI" msgstr "" #: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:57 -#: src/renderer/components/layout/sidebar.tsx:84 +#: src/renderer/components/layout/sidebar.tsx:90 msgid "Storage" msgstr "" @@ -2187,7 +2195,7 @@ msgstr "" msgid "This field must contain only lowercase latin characters, numbers and dash." msgstr "" -#: src/renderer/components/+workspaces/clusters-menu.tsx:62 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:72 msgid "This is the quick launch menu." msgstr "" @@ -2195,7 +2203,7 @@ msgstr "" msgid "To" msgstr "" -#: src/renderer/components/error-boundary/error-boundary.tsx:40 +#: src/renderer/components/error-boundary/error-boundary.tsx:39 msgid "To help us improve the product please report bugs to {slackLink} community or {githubLink} issues tracker." msgstr "" @@ -2357,15 +2365,19 @@ msgstr "" msgid "Warnings: {0}" msgstr "" +#: src/renderer/components/+landing-page/landing-page.tsx:18 +msgid "Welcome!" +msgstr "" + #: src/renderer/components/+cluster/cluster-metric-switchers.tsx:19 msgid "Worker" msgstr "" -#: src/renderer/components/layout/sidebar.tsx:81 +#: src/renderer/components/layout/sidebar.tsx:87 msgid "Workloads" msgstr "" -#: src/renderer/components/+workspaces/bottom-bar.tsx:31 +#: src/renderer/components/cluster-manager/bottom-bar.tsx:35 msgid "Workspaces" msgstr "" @@ -2475,7 +2487,7 @@ msgstr "" msgid "{0} unavailable" msgstr "" -#: src/renderer/components/kubeconfig-dialog/kubeconfig-dialog.tsx:134 +#: src/renderer/components/kubeconfig-dialog/kubeconfig-dialog.tsx:129 msgid "{accountName} kubeconfig" msgstr "" diff --git a/locales/ru/messages.po b/locales/ru/messages.po index 31bb1d6777..52bf77e107 100644 --- a/locales/ru/messages.po +++ b/locales/ru/messages.po @@ -46,7 +46,7 @@ msgstr "" msgid "API Group" msgstr "" -#: src/renderer/components/layout/sidebar.tsx:88 +#: src/renderer/components/layout/sidebar.tsx:94 msgid "Access Control" msgstr "Контроль доступа" @@ -200,7 +200,7 @@ msgstr "Сбой работы приложения на <0>{pageUrl}" msgid "Applying.." msgstr "Применение.." -#: src/renderer/components/layout/sidebar.tsx:87 +#: src/renderer/components/layout/sidebar.tsx:93 msgid "Apps" msgstr "Приложения" @@ -212,7 +212,7 @@ msgstr "Выполнить команду drain для ноды <0>{nodeName}{0} успешно обновлена." msgid "ConfigMaps" msgstr "ConfigMaps" -#: src/renderer/components/layout/sidebar.tsx:82 +#: src/renderer/components/layout/sidebar.tsx:88 msgid "Configuration" msgstr "Конфигурация" @@ -615,7 +615,7 @@ msgid "Currently applied filters:" msgstr "Текущие фильтры:" #: src/renderer/components/+custom-resources/crd-list.tsx:55 -#: src/renderer/components/layout/sidebar.tsx:89 +#: src/renderer/components/layout/sidebar.tsx:95 msgid "Custom Resources" msgstr "" @@ -679,7 +679,7 @@ msgstr "Описание" msgid "Desired number of replicas" msgstr "Нужный уровень реплик" -#: src/renderer/components/+workspaces/clusters-menu.tsx:40 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:49 msgid "Disconnect" msgstr "" @@ -760,14 +760,14 @@ msgstr "Название" msgid "Environment" msgstr "Среда" -#: src/renderer/components/error-boundary/error-boundary.tsx:50 +#: src/renderer/components/error-boundary/error-boundary.tsx:49 msgid "Error stack" msgstr "Стэк ошибки" #: src/renderer/components/+events/events.tsx:56 #: src/renderer/components/+events/kube-event-details.tsx:34 #: src/renderer/components/+events/kube-event-details.tsx:39 -#: src/renderer/components/layout/sidebar.tsx:86 +#: src/renderer/components/layout/sidebar.tsx:92 msgid "Events" msgstr "События" @@ -785,8 +785,8 @@ msgid "Exit full size mode" msgstr "Выйти из полного размера" #: src/renderer/components/layout/sidebar.tsx:76 -msgid "Extended view" -msgstr "Расширенный вид" +#~ msgid "Extended view" +#~ msgstr "Расширенный вид" #: src/renderer/components/+network-services/services.tsx:49 msgid "External IP" @@ -845,6 +845,10 @@ msgstr "От <0>{from} до <1>{to}" msgid "Fs Group" msgstr "" +#: src/renderer/components/+landing-page/landing-page.tsx:21 +msgid "Get started by associating one or more clusters to Lens." +msgstr "" + #: src/renderer/components/+custom-resources/crd-details.tsx:32 #: src/renderer/components/+custom-resources/crd-list.tsx:58 #: src/renderer/components/+custom-resources/crd-list.tsx:74 @@ -1336,7 +1340,7 @@ msgid "Namespace: {0}" msgstr "Namespace: {0}" #: src/renderer/components/+namespaces/namespaces.tsx:30 -#: src/renderer/components/layout/sidebar.tsx:85 +#: src/renderer/components/layout/sidebar.tsx:91 msgid "Namespaces" msgstr "Namespaces" @@ -1346,7 +1350,7 @@ msgstr "Namespaces: {0}" #: src/renderer/components/+network-ingresses/ingress-details.tsx:66 #: src/renderer/components/+workloads-pods/pod-charts.tsx:13 -#: src/renderer/components/layout/sidebar.tsx:83 +#: src/renderer/components/layout/sidebar.tsx:89 msgid "Network" msgstr "Сеть" @@ -1444,7 +1448,7 @@ msgid "Node shell" msgstr "Командная строка ноды" #: src/renderer/components/+nodes/nodes.tsx:111 -#: src/renderer/components/layout/sidebar.tsx:80 +#: src/renderer/components/layout/sidebar.tsx:86 msgid "Nodes" msgstr "Ноды" @@ -1484,6 +1488,10 @@ msgstr "Объект" msgid "Ok" msgstr "Ок" +#: src/renderer/components/+whats-new/whats-new.tsx:36 +msgid "Ok, got it!" +msgstr "" + #: src/renderer/components/dock/dock.tsx:117 msgid "Open" msgstr "Открыть" @@ -2031,7 +2039,7 @@ msgstr "Установлено" msgid "Set quota" msgstr "Установить квоту" -#: src/renderer/components/+workspaces/clusters-menu.tsx:33 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:43 msgid "Settings" msgstr "" @@ -2115,7 +2123,7 @@ msgid "Status URI" msgstr "Адрес статуса" #: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:57 -#: src/renderer/components/layout/sidebar.tsx:84 +#: src/renderer/components/layout/sidebar.tsx:90 msgid "Storage" msgstr "Storage" @@ -2205,7 +2213,7 @@ msgstr "Это обязательное поле" msgid "This field must contain only lowercase latin characters, numbers and dash." msgstr "Это поле может содержать только латинские буквы в нижнем регистре, номера и дефис." -#: src/renderer/components/+workspaces/clusters-menu.tsx:62 +#: src/renderer/components/cluster-manager/clusters-menu.tsx:72 msgid "This is the quick launch menu." msgstr "" @@ -2213,7 +2221,7 @@ msgstr "" msgid "To" msgstr "Из" -#: src/renderer/components/error-boundary/error-boundary.tsx:40 +#: src/renderer/components/error-boundary/error-boundary.tsx:39 msgid "To help us improve the product please report bugs to {slackLink} community or {githubLink} issues tracker." msgstr "Чтобы помочь нам улучшить продукт пожалуйста отправляйте ошибки на {slackLink} сообщество или {githubLink} трекер ошибок." @@ -2375,15 +2383,19 @@ msgstr "Ожидание запуска сервисов" msgid "Warnings: {0}" msgstr "Предупреждения: {0}" +#: src/renderer/components/+landing-page/landing-page.tsx:18 +msgid "Welcome!" +msgstr "" + #: src/renderer/components/+cluster/cluster-metric-switchers.tsx:19 msgid "Worker" msgstr "Рабочие" -#: src/renderer/components/layout/sidebar.tsx:81 +#: src/renderer/components/layout/sidebar.tsx:87 msgid "Workloads" msgstr "Ресурсы" -#: src/renderer/components/+workspaces/bottom-bar.tsx:31 +#: src/renderer/components/cluster-manager/bottom-bar.tsx:35 msgid "Workspaces" msgstr "" @@ -2493,7 +2505,7 @@ msgstr "{0} всего, {1} доступно" msgid "{0} unavailable" msgstr "{0} недоступно" -#: src/renderer/components/kubeconfig-dialog/kubeconfig-dialog.tsx:134 +#: src/renderer/components/kubeconfig-dialog/kubeconfig-dialog.tsx:129 msgid "{accountName} kubeconfig" msgstr "{accountName} конфигурация" diff --git a/src/main/cluster.ts b/src/main/cluster.ts index bbda5a380e..7e41499119 100644 --- a/src/main/cluster.ts +++ b/src/main/cluster.ts @@ -39,7 +39,7 @@ export class Cluster implements ClusterModel { protected kubeconfigManager: KubeconfigManager; public whenReady = when(() => this.initialized); - protected disposers: CallableFunction[] = []; + protected disposers: Function[] = []; @observable initialized = false; @observable contextName: string; diff --git a/src/main/index.ts b/src/main/index.ts index 752f6a3510..bc55c8b92c 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -74,7 +74,7 @@ async function main() { } // create window manager and open app - windowManager = new WindowManager(); + windowManager = new WindowManager(proxyPort); windowManager.showSplash(); } diff --git a/src/main/lens-proxy.ts b/src/main/lens-proxy.ts index 104c0a5ecb..b5c485f4fc 100644 --- a/src/main/lens-proxy.ts +++ b/src/main/lens-proxy.ts @@ -126,6 +126,10 @@ export class LensProxy { } protected async handleRequest(proxy: httpProxy, req: http.IncomingMessage, res: http.ServerResponse) { + if (req.headers.host.split(":")[0] === "no-clusters.localhost") { + this.router.handleStaticFile(req.url, res); + return; + } const cluster = this.clusterManager.getClusterForRequest(req) if (!cluster) { const reqId = this.getRequestId(req); diff --git a/src/main/router.ts b/src/main/router.ts index b493acd6e8..08bbc1dee0 100644 --- a/src/main/router.ts +++ b/src/main/router.ts @@ -52,20 +52,20 @@ export class Router { const matchingRoute = this.router.route(method, path); const routeFound = !matchingRoute.isBoom; if (routeFound) { - const request = await this.getRequest({ - req, res, cluster, url, - params: matchingRoute.params - }); + const request = await this.getRequest({ req, res, cluster, url, params: matchingRoute.params }); await matchingRoute.route(request) return true } return false; } - protected async getRequest(opts: RouterRequestOpts) { + protected async getRequest(opts: RouterRequestOpts): Promise { const { req, res, url, cluster, params } = opts - const { payload } = await Subtext.parse(req, null, { parse: true, output: 'data' }); - const request: LensApiRequest = { + const { payload } = await Subtext.parse(req, null, { + parse: true, + output: "data", + }); + return { cluster: cluster, path: url.pathname, raw: { @@ -76,7 +76,6 @@ export class Router { payload: payload, params: params } - return request } protected getMimeType(filename: string) { @@ -95,15 +94,15 @@ export class Router { return mimeTypes[path.extname(filename).slice(1)] || "text/plain" } - protected async handleStaticFile(filePath: string, response: http.ServerResponse) { - const asset = path.resolve(outDir, filePath); + async handleStaticFile(filePath: string, res: http.ServerResponse) { + const asset = path.join(outDir, filePath); try { const data = await readFile(asset); - response.setHeader("Content-Type", this.getMimeType(asset)); - response.write(data) - response.end() + res.setHeader("Content-Type", this.getMimeType(asset)); + res.write(data) + res.end() } catch (err) { - this.handleStaticFile(`${appName}.html`, response); + this.handleStaticFile(`${appName}.html`, res); } } @@ -111,7 +110,7 @@ export class Router { // Static assets this.router.add({ method: 'get', path: '/{path*}' }, ({ params, response }: LensApiRequest) => { this.handleStaticFile(params.path, response); - }) + }); this.router.add({ method: "get", path: `${apiPrefix}/config` }, configRoute.routeConfig.bind(configRoute)) this.router.add({ method: "get", path: `${apiPrefix}/kubeconfig/service-account/{namespace}/{account}` }, kubeconfigRoute.routeServiceAccountRoute.bind(kubeconfigRoute)) diff --git a/src/main/window-manager.ts b/src/main/window-manager.ts index 24d8247734..674a61517d 100644 --- a/src/main/window-manager.ts +++ b/src/main/window-manager.ts @@ -1,4 +1,4 @@ -import { reaction } from "mobx"; +import { autorun, reaction } from "mobx"; import { BrowserWindow, shell } from "electron" import windowStateKeeper from "electron-window-state" import type { ClusterId } from "../common/cluster-store"; @@ -15,7 +15,7 @@ export class WindowManager { protected splashWindow: BrowserWindow; protected windowState: windowStateKeeper.State; - constructor() { + constructor(protected proxyPort: number) { this.splashWindow = new BrowserWindow({ width: 500, height: 300, @@ -60,22 +60,22 @@ export class WindowManager { this.destroyView(cluster.id); }); }), - ); - // handle initial view load without clusters - // if (!clusterStore.clusters.size) { - // this.initNoClustersView(); - // } + // handle no-clusters view + autorun(() => { + if (!clusterStore.clusters.size) { + this.initNoClustersView(); + } + }) + ); } - // fixme: first run without clusters - // protected async initNoClustersView() { - // const htmlView = path.join(__dirname, `${appName}.html`); - // const view = this.initView(undefined); - // await view.loadFile(htmlView); - // view.show(); - // this.hideSplash(); - // } + protected async initNoClustersView() { + this.activeView = this.initView(undefined); + await this.activeView.loadURL(`http://no-clusters.localhost:${this.proxyPort}`); + this.activeView.show(); + this.hideSplash(); + } async showSplash() { await this.splashWindow.loadURL("static://splash.html") diff --git a/src/renderer/components/app.tsx b/src/renderer/components/app.tsx index 991c6a507a..9ef5a9ad35 100755 --- a/src/renderer/components/app.tsx +++ b/src/renderer/components/app.tsx @@ -1,5 +1,4 @@ import "./app.scss"; - import React, { Fragment } from "react"; import { observer } from "mobx-react"; import { i18nStore } from "../i18n"; @@ -31,9 +30,10 @@ import { CustomResources } from "./+custom-resources/custom-resources"; import { crdRoute } from "./+custom-resources"; import { isAllowedResource } from "../api/rbac"; import { AddCluster, addClusterRoute } from "./+add-cluster"; -import { LandingPage, landingRoute } from "./+landing-page"; +import { LandingPage, landingRoute, landingURL } from "./+landing-page"; import { clusterStore } from "../../common/cluster-store"; import { ClusterSettings, clusterSettingsRoute } from "./+cluster-settings"; +import { Workspaces, workspacesRoute } from "./+workspaces"; @observer export class App extends React.Component { @@ -45,16 +45,24 @@ export class App extends React.Component { await Terminal.preloadFonts(); } + get startURL() { + if (!clusterStore.clusters.size) { + return landingURL(); + } + if (isAllowedResource(["events", "nodes", "pods"])) { + return clusterURL(); + } + return workloadsURL(); + } + render() { - const noClusters = clusterStore.clusters.size === 0; - const homeUrl = isAllowedResource(["events", "nodes", "pods"]) ? clusterURL() : workloadsURL(); return ( - {noClusters && } + @@ -67,8 +75,8 @@ export class App extends React.Component { - - + + diff --git a/src/renderer/config.store.ts b/src/renderer/config.store.ts index f119754861..05d881dbf3 100755 --- a/src/renderer/config.store.ts +++ b/src/renderer/config.store.ts @@ -16,6 +16,9 @@ export class ConfigStore { } load() { + if (location.hostname === "no-clusters.localhost") { + return; + } return apiBase.get("/config").then((config: IConfigRoutePayload) => { this.config = config; this.isLoaded = true;