diff --git a/locales/en/messages.po b/locales/en/messages.po index f2ca7973e8..2fa0c1a94a 100644 --- a/locales/en/messages.po +++ b/locales/en/messages.po @@ -13,6 +13,14 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" +#: src/renderer/components/+workspaces/clusters-menu.tsx:38 +#~ msgid "'Disconnect'" +#~ msgstr "'Disconnect'" + +#: src/renderer/components/+workspaces/clusters-menu.tsx:31 +#~ msgid "'Settings'" +#~ msgstr "'Settings'" + #: src/renderer/components/+config-autoscalers/hpa-details.tsx:28 msgid "(as a percentage of request)" msgstr "(as a percentage of request)" @@ -67,6 +75,10 @@ msgstr "Add RoleBinding" msgid "Add bindings to {name}" msgstr "Add bindings to {name}" +#: src/renderer/components/+workspaces/clusters-menu.tsx:58 +#~ msgid "Add clusters" +#~ msgstr "Add clusters" + #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:125 msgid "Add field" msgstr "Add field" @@ -125,7 +137,7 @@ msgstr "All groups" msgid "All logs" msgstr "All logs" -#: src/renderer/components/+namespaces/namespace-select.tsx:96 +#: src/renderer/components/+namespaces/namespace-select.tsx:95 msgid "All namespaces" msgstr "All namespaces" @@ -199,6 +211,10 @@ msgstr "Are you sure you want to drain <0>{nodeName}?" msgid "Arguments" msgstr "Arguments" +#: src/renderer/components/+workspaces/clusters-menu.tsx:55 +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." + #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:101 msgid "Auth App Role" msgstr "Auth App Role" @@ -229,32 +245,32 @@ msgstr "Bindings" msgid "Build version" msgstr "Build version" -#: src/renderer/components/+workloads-pods/container-charts.tsx:72 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:98 +#: src/renderer/components/+workloads-pods/container-charts.tsx:74 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:100 msgid "Bytes consumed on this filesystem" msgstr "Bytes consumed on this filesystem" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:81 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:83 msgid "Bytes received by all containers" msgstr "Bytes received by all containers" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:31 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:33 msgid "Bytes sent by Ingress controller with error status" msgstr "Bytes sent by Ingress controller with error status" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:24 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:26 msgid "Bytes sent by Ingress controller with successful status" msgstr "Bytes sent by Ingress controller with successful status" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:23 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:25 msgid "Bytes sent, status 2xx" msgstr "Bytes sent, status 2xx" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:30 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:32 msgid "Bytes sent, status 5xx" msgstr "Bytes sent, status 5xx" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:88 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:90 msgid "Bytes transmitted from all containers" msgstr "Bytes transmitted from all containers" @@ -282,17 +298,17 @@ msgid "CPU capacity" msgstr "CPU capacity" #: src/renderer/components/+nodes/node-charts.tsx:26 -#: src/renderer/components/+workloads-pods/container-charts.tsx:24 +#: src/renderer/components/+workloads-pods/container-charts.tsx:26 msgid "CPU cores usage" msgstr "CPU cores usage" -#: src/renderer/components/+workloads-pods/container-charts.tsx:38 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:47 +#: src/renderer/components/+workloads-pods/container-charts.tsx:40 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:49 msgid "CPU limits" msgstr "CPU limits" #: src/renderer/components/+nodes/node-charts.tsx:33 -#: src/renderer/components/+workloads-pods/container-charts.tsx:31 +#: src/renderer/components/+workloads-pods/container-charts.tsx:33 msgid "CPU requests" msgstr "CPU requests" @@ -368,7 +384,7 @@ msgstr "Close (Ctrl+W)" msgid "Cloud API Token Secret" msgstr "Cloud API Token Secret" -#: src/renderer/components/+namespaces/namespace-select.tsx:44 +#: src/renderer/components/+namespaces/namespace-select.tsx:43 #: src/renderer/components/layout/sidebar.tsx:79 msgid "Cluster" msgstr "Cluster" @@ -447,23 +463,23 @@ msgstr "Connection" msgid "Container" msgstr "Container" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:33 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:35 msgid "Container CPU cores usage" msgstr "Container CPU cores usage" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:40 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:42 msgid "Container CPU requests" msgstr "Container CPU requests" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:71 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:73 msgid "Container memory limits" msgstr "Container memory limits" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:64 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:66 msgid "Container memory requests" msgstr "Container memory requests" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:57 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:59 msgid "Container memory usage" msgstr "Container memory usage" @@ -662,6 +678,10 @@ msgstr "Description" msgid "Desired number of replicas" msgstr "Desired number of replicas" +#: src/renderer/components/+workspaces/clusters-menu.tsx:38 +msgid "Disconnect" +msgstr "Disconnect" + #: src/renderer/components/+nodes/node-details.tsx:65 #: src/renderer/components/+nodes/nodes.tsx:115 #: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44 @@ -1070,10 +1090,10 @@ msgstr "Limited to {0}" #: src/renderer/components/+cluster/cluster-pie-charts.tsx:72 #: src/renderer/components/+cluster/cluster-pie-charts.tsx:115 -#: src/renderer/components/+workloads-pods/container-charts.tsx:37 -#: src/renderer/components/+workloads-pods/container-charts.tsx:61 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:46 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:70 +#: src/renderer/components/+workloads-pods/container-charts.tsx:39 +#: src/renderer/components/+workloads-pods/container-charts.tsx:63 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:48 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:72 msgid "Limits" msgstr "Limits" @@ -1153,17 +1173,17 @@ msgstr "Memory" msgid "Memory capacity" msgstr "Memory capacity" -#: src/renderer/components/+workloads-pods/container-charts.tsx:62 +#: src/renderer/components/+workloads-pods/container-charts.tsx:64 msgid "Memory limits" msgstr "Memory limits" #: src/renderer/components/+nodes/node-charts.tsx:57 -#: src/renderer/components/+workloads-pods/container-charts.tsx:55 +#: src/renderer/components/+workloads-pods/container-charts.tsx:57 msgid "Memory requests" msgstr "Memory requests" #: src/renderer/components/+nodes/node-charts.tsx:50 -#: src/renderer/components/+workloads-pods/container-charts.tsx:48 +#: src/renderer/components/+workloads-pods/container-charts.tsx:50 msgid "Memory usage" msgstr "Memory usage" @@ -1310,17 +1330,16 @@ msgstr "Names" msgid "Namespace" msgstr "Namespace" -#: src/renderer/components/+namespaces/namespace-select.tsx:98 +#: src/renderer/components/+namespaces/namespace-select.tsx:97 msgid "Namespace: {0}" msgstr "Namespace: {0}" #: src/renderer/components/+namespaces/namespaces.tsx:30 -#: src/renderer/components/app.tsx:36 #: src/renderer/components/layout/sidebar.tsx:85 msgid "Namespaces" msgstr "Namespaces" -#: src/renderer/components/+namespaces/namespace-select.tsx:100 +#: src/renderer/components/+namespaces/namespace-select.tsx:99 msgid "Namespaces: {0}" msgstr "Namespaces: {0}" @@ -1636,7 +1655,7 @@ msgstr "Reason" msgid "Reason: {0} ({1})" msgstr "Reason: {0} ({1})" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:80 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:82 msgid "Receive" msgstr "Receive" @@ -1727,11 +1746,11 @@ msgstr "Repo/Name" msgid "Repository" msgstr "Repository" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:40 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:42 msgid "Request" msgstr "Request" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:41 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:43 msgid "Request duration in seconds" msgstr "Request duration in seconds" @@ -1739,10 +1758,10 @@ msgstr "Request duration in seconds" #: src/renderer/components/+cluster/cluster-pie-charts.tsx:114 #: src/renderer/components/+nodes/node-charts.tsx:32 #: src/renderer/components/+nodes/node-charts.tsx:56 -#: src/renderer/components/+workloads-pods/container-charts.tsx:30 -#: src/renderer/components/+workloads-pods/container-charts.tsx:54 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:39 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:63 +#: src/renderer/components/+workloads-pods/container-charts.tsx:32 +#: src/renderer/components/+workloads-pods/container-charts.tsx:56 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:41 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:65 msgid "Requests" msgstr "Requests" @@ -1798,11 +1817,11 @@ msgstr "ResourceQuota name" msgid "Resources" msgstr "Resources" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:47 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:49 msgid "Response" msgstr "Response" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:48 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:50 msgid "Response duration in seconds" msgstr "Response duration in seconds" @@ -2011,13 +2030,17 @@ msgstr "Set" msgid "Set quota" msgstr "Set quota" +#: src/renderer/components/+workspaces/clusters-menu.tsx:31 +msgid "Settings" +msgstr "Settings" + #: src/renderer/components/+nodes/node-menu.tsx:48 #: src/renderer/components/+workloads-pods/pod-menu.tsx:68 msgid "Shell" msgstr "Shell" #: src/renderer/components/+config-secrets/secret-details.tsx:93 -#: src/renderer/components/+workloads-pods/pod-container-env.tsx:97 +#: src/renderer/components/+workloads-pods/pod-container-env.tsx:100 #: src/renderer/components/+workloads-pods/pod-logs-dialog.tsx:215 #: src/renderer/components/drawer/drawer-param-toggler.tsx:19 msgid "Show" @@ -2181,6 +2204,10 @@ 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:53 +msgid "This is the quick launch menu." +msgstr "This is the quick launch menu." + #: src/renderer/components/+network-policies/network-policy-details.tsx:59 msgid "To" msgstr "To" @@ -2197,7 +2224,7 @@ msgstr "Tokens" msgid "Tolerations" msgstr "Tolerations" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:87 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:89 msgid "Transmit" msgstr "Transmit" @@ -2263,12 +2290,12 @@ msgstr "Upgrade version" #: src/renderer/components/+nodes/node-charts.tsx:73 #: src/renderer/components/+nodes/node-charts.tsx:90 #: src/renderer/components/+storage-volume-claims/volume-claim-disk-chart.tsx:24 -#: src/renderer/components/+workloads-pods/container-charts.tsx:23 -#: src/renderer/components/+workloads-pods/container-charts.tsx:47 -#: src/renderer/components/+workloads-pods/container-charts.tsx:71 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:32 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:56 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:97 +#: src/renderer/components/+workloads-pods/container-charts.tsx:25 +#: src/renderer/components/+workloads-pods/container-charts.tsx:49 +#: src/renderer/components/+workloads-pods/container-charts.tsx:73 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:34 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:58 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:99 msgid "Usage" msgstr "Usage" @@ -2355,6 +2382,10 @@ msgstr "Worker" msgid "Workloads" msgstr "Workloads" +#: src/renderer/components/+workspaces/workspaces.tsx:41 +msgid "Workspaces" +msgstr "Workspaces" + #: src/renderer/components/input/input.validators.ts:10 msgid "Wrong email format" msgstr "Wrong email format" @@ -2421,7 +2452,7 @@ msgstr "plural" msgid "ready" msgstr "ready" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:67 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:69 msgid "sec" msgstr "sec" diff --git a/locales/fi/messages.po b/locales/fi/messages.po index 4d81ae2a65..decb7026d2 100644 --- a/locales/fi/messages.po +++ b/locales/fi/messages.po @@ -13,6 +13,14 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" +#: src/renderer/components/+workspaces/clusters-menu.tsx:38 +#~ msgid "'Disconnect'" +#~ msgstr "" + +#: src/renderer/components/+workspaces/clusters-menu.tsx:31 +#~ msgid "'Settings'" +#~ msgstr "" + #: src/renderer/components/+config-autoscalers/hpa-details.tsx:28 msgid "(as a percentage of request)" msgstr "" @@ -67,6 +75,10 @@ msgstr "" msgid "Add bindings to {name}" msgstr "" +#: src/renderer/components/+workspaces/clusters-menu.tsx:58 +#~ msgid "Add clusters" +#~ msgstr "" + #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:125 msgid "Add field" msgstr "" @@ -125,7 +137,7 @@ msgstr "" msgid "All logs" msgstr "" -#: src/renderer/components/+namespaces/namespace-select.tsx:96 +#: src/renderer/components/+namespaces/namespace-select.tsx:95 msgid "All namespaces" msgstr "" @@ -199,6 +211,10 @@ msgstr "" msgid "Arguments" msgstr "" +#: src/renderer/components/+workspaces/clusters-menu.tsx:55 +msgid "Associate clusters and choose the ones you want to access via quick launch menu by clicking the + button." +msgstr "" + #: src/renderer/components/+custom-resources/certmanager.k8s.io/issuer-details.tsx:101 msgid "Auth App Role" msgstr "" @@ -229,32 +245,32 @@ msgstr "" msgid "Build version" msgstr "" -#: src/renderer/components/+workloads-pods/container-charts.tsx:72 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:98 +#: src/renderer/components/+workloads-pods/container-charts.tsx:74 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:100 msgid "Bytes consumed on this filesystem" msgstr "" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:81 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:83 msgid "Bytes received by all containers" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:31 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:33 msgid "Bytes sent by Ingress controller with error status" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:24 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:26 msgid "Bytes sent by Ingress controller with successful status" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:23 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:25 msgid "Bytes sent, status 2xx" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:30 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:32 msgid "Bytes sent, status 5xx" msgstr "" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:88 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:90 msgid "Bytes transmitted from all containers" msgstr "" @@ -282,17 +298,17 @@ msgid "CPU capacity" msgstr "" #: src/renderer/components/+nodes/node-charts.tsx:26 -#: src/renderer/components/+workloads-pods/container-charts.tsx:24 +#: src/renderer/components/+workloads-pods/container-charts.tsx:26 msgid "CPU cores usage" msgstr "" -#: src/renderer/components/+workloads-pods/container-charts.tsx:38 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:47 +#: src/renderer/components/+workloads-pods/container-charts.tsx:40 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:49 msgid "CPU limits" msgstr "" #: src/renderer/components/+nodes/node-charts.tsx:33 -#: src/renderer/components/+workloads-pods/container-charts.tsx:31 +#: src/renderer/components/+workloads-pods/container-charts.tsx:33 msgid "CPU requests" msgstr "" @@ -364,7 +380,7 @@ msgstr "" msgid "Cloud API Token Secret" msgstr "" -#: src/renderer/components/+namespaces/namespace-select.tsx:44 +#: src/renderer/components/+namespaces/namespace-select.tsx:43 #: src/renderer/components/layout/sidebar.tsx:79 msgid "Cluster" msgstr "" @@ -443,23 +459,23 @@ msgstr "" msgid "Container" msgstr "" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:33 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:35 msgid "Container CPU cores usage" msgstr "" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:40 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:42 msgid "Container CPU requests" msgstr "" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:71 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:73 msgid "Container memory limits" msgstr "" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:64 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:66 msgid "Container memory requests" msgstr "" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:57 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:59 msgid "Container memory usage" msgstr "" @@ -658,6 +674,10 @@ msgstr "" msgid "Desired number of replicas" msgstr "" +#: src/renderer/components/+workspaces/clusters-menu.tsx:38 +msgid "Disconnect" +msgstr "" + #: src/renderer/components/+nodes/node-details.tsx:65 #: src/renderer/components/+nodes/nodes.tsx:115 #: src/renderer/components/+storage-volume-claims/volume-claim-details.tsx:44 @@ -1061,10 +1081,10 @@ msgstr "" #: src/renderer/components/+cluster/cluster-pie-charts.tsx:72 #: src/renderer/components/+cluster/cluster-pie-charts.tsx:115 -#: src/renderer/components/+workloads-pods/container-charts.tsx:37 -#: src/renderer/components/+workloads-pods/container-charts.tsx:61 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:46 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:70 +#: src/renderer/components/+workloads-pods/container-charts.tsx:39 +#: src/renderer/components/+workloads-pods/container-charts.tsx:63 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:48 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:72 msgid "Limits" msgstr "" @@ -1144,17 +1164,17 @@ msgstr "" msgid "Memory capacity" msgstr "" -#: src/renderer/components/+workloads-pods/container-charts.tsx:62 +#: src/renderer/components/+workloads-pods/container-charts.tsx:64 msgid "Memory limits" msgstr "" #: src/renderer/components/+nodes/node-charts.tsx:57 -#: src/renderer/components/+workloads-pods/container-charts.tsx:55 +#: src/renderer/components/+workloads-pods/container-charts.tsx:57 msgid "Memory requests" msgstr "" #: src/renderer/components/+nodes/node-charts.tsx:50 -#: src/renderer/components/+workloads-pods/container-charts.tsx:48 +#: src/renderer/components/+workloads-pods/container-charts.tsx:50 msgid "Memory usage" msgstr "" @@ -1301,17 +1321,16 @@ msgstr "" msgid "Namespace" msgstr "" -#: src/renderer/components/+namespaces/namespace-select.tsx:98 +#: src/renderer/components/+namespaces/namespace-select.tsx:97 msgid "Namespace: {0}" msgstr "" #: src/renderer/components/+namespaces/namespaces.tsx:30 -#: src/renderer/components/app.tsx:36 #: src/renderer/components/layout/sidebar.tsx:85 msgid "Namespaces" msgstr "" -#: src/renderer/components/+namespaces/namespace-select.tsx:100 +#: src/renderer/components/+namespaces/namespace-select.tsx:99 msgid "Namespaces: {0}" msgstr "" @@ -1619,7 +1638,7 @@ msgstr "" msgid "Reason: {0} ({1})" msgstr "" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:80 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:82 msgid "Receive" msgstr "" @@ -1710,11 +1729,11 @@ msgstr "" msgid "Repository" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:40 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:42 msgid "Request" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:41 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:43 msgid "Request duration in seconds" msgstr "" @@ -1722,10 +1741,10 @@ msgstr "" #: src/renderer/components/+cluster/cluster-pie-charts.tsx:114 #: src/renderer/components/+nodes/node-charts.tsx:32 #: src/renderer/components/+nodes/node-charts.tsx:56 -#: src/renderer/components/+workloads-pods/container-charts.tsx:30 -#: src/renderer/components/+workloads-pods/container-charts.tsx:54 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:39 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:63 +#: src/renderer/components/+workloads-pods/container-charts.tsx:32 +#: src/renderer/components/+workloads-pods/container-charts.tsx:56 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:41 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:65 msgid "Requests" msgstr "" @@ -1781,11 +1800,11 @@ msgstr "" msgid "Resources" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:47 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:49 msgid "Response" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:48 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:50 msgid "Response duration in seconds" msgstr "" @@ -1994,13 +2013,17 @@ msgstr "" msgid "Set quota" msgstr "" +#: src/renderer/components/+workspaces/clusters-menu.tsx:31 +msgid "Settings" +msgstr "" + #: src/renderer/components/+nodes/node-menu.tsx:48 #: src/renderer/components/+workloads-pods/pod-menu.tsx:68 msgid "Shell" msgstr "" #: src/renderer/components/+config-secrets/secret-details.tsx:93 -#: src/renderer/components/+workloads-pods/pod-container-env.tsx:97 +#: src/renderer/components/+workloads-pods/pod-container-env.tsx:100 #: src/renderer/components/+workloads-pods/pod-logs-dialog.tsx:215 #: src/renderer/components/drawer/drawer-param-toggler.tsx:19 msgid "Show" @@ -2164,6 +2187,10 @@ msgstr "" msgid "This field must contain only lowercase latin characters, numbers and dash." msgstr "" +#: src/renderer/components/+workspaces/clusters-menu.tsx:53 +msgid "This is the quick launch menu." +msgstr "" + #: src/renderer/components/+network-policies/network-policy-details.tsx:59 msgid "To" msgstr "" @@ -2180,7 +2207,7 @@ msgstr "" msgid "Tolerations" msgstr "" -#: src/renderer/components/+workloads-pods/pod-charts.tsx:87 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:89 msgid "Transmit" msgstr "" @@ -2246,12 +2273,12 @@ msgstr "" #: src/renderer/components/+nodes/node-charts.tsx:73 #: src/renderer/components/+nodes/node-charts.tsx:90 #: src/renderer/components/+storage-volume-claims/volume-claim-disk-chart.tsx:24 -#: src/renderer/components/+workloads-pods/container-charts.tsx:23 -#: src/renderer/components/+workloads-pods/container-charts.tsx:47 -#: src/renderer/components/+workloads-pods/container-charts.tsx:71 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:32 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:56 -#: src/renderer/components/+workloads-pods/pod-charts.tsx:97 +#: src/renderer/components/+workloads-pods/container-charts.tsx:25 +#: src/renderer/components/+workloads-pods/container-charts.tsx:49 +#: src/renderer/components/+workloads-pods/container-charts.tsx:73 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:34 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:58 +#: src/renderer/components/+workloads-pods/pod-charts.tsx:99 msgid "Usage" msgstr "" @@ -2338,6 +2365,10 @@ msgstr "" msgid "Workloads" msgstr "" +#: src/renderer/components/+workspaces/workspaces.tsx:41 +msgid "Workspaces" +msgstr "" + #: src/renderer/components/input/input.validators.ts:10 msgid "Wrong email format" msgstr "" @@ -2404,7 +2435,7 @@ msgstr "" msgid "ready" msgstr "" -#: src/renderer/components/+network-ingresses/ingress-charts.tsx:67 +#: src/renderer/components/+network-ingresses/ingress-charts.tsx:69 msgid "sec" msgstr "" diff --git a/locales/ru/messages.po b/locales/ru/messages.po index 6e55ab9f73..616fb7545f 100644 --- a/locales/ru/messages.po +++ b/locales/ru/messages.po @@ -14,6 +14,14 @@ msgstr "" "Plural-Forms: \n" "MIME-Version: 1.0\n" +#: src/renderer/components/+workspaces/clusters-menu.tsx:38 +#~ msgid "'Disconnect'" +#~ msgstr "" + +#: src/renderer/components/+workspaces/clusters-menu.tsx:31 +#~ msgid "'Settings'" +#~ msgstr "" + #: src/renderer/components/+config-autoscalers/hpa-details.tsx:28 msgid "(as a percentage of request)" msgstr "" @@ -68,6 +76,10 @@ msgstr "Добавить привязку ролей" msgid "Add bindings to {name}" msgstr "Добавить привязки к {name}" +#: src/renderer/components/+workspaces/clusters-menu.tsx:58 +#~ msgid "Add clusters" +#~ msgstr "" + #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:125 msgid "Add field" msgstr "Добавить поле" @@ -126,7 +138,7 @@ msgstr "" msgid "All logs" msgstr "Все логи" -#: src/renderer/components/+namespaces/namespace-select.tsx:96 +#: src/renderer/components/+namespaces/namespace-select.tsx:95 msgid "All namespaces" msgstr "" @@ -200,6 +212,10 @@ msgstr "Выполнить команду drain для ноды <0>{nodeName} { + @observable activeCluster: ClusterId; @observable clusters = observable.map(); private constructor() { @@ -69,6 +71,9 @@ export class ClusterStore extends BaseStore { @action removeById(clusterId: ClusterId): void { + if (this.activeCluster === clusterId) { + this.activeCluster = null; + } this.clusters.delete(clusterId); } @@ -80,17 +85,21 @@ export class ClusterStore extends BaseStore { } @action - protected fromStore({ clusters = [] }: Partial = {}) { + protected fromStore({ activeCluster, clusters = [] }: ClusterStoreModel = {}) { const clustersMap = new Map(); clusters.forEach(clusterModel => { clustersMap.set(clusterModel.id, new Cluster(clusterModel)); }); + this.activeCluster = clustersMap.has(activeCluster) ? activeCluster : null; this.clusters.replace(clustersMap); } toJSON(): ClusterStoreModel { const clusters = Array.from(this.clusters).map(([id, cluster]) => cluster.toJSON()); - return toJS({ clusters }, { + return toJS({ + activeCluster: this.activeCluster, + clusters: clusters, + }, { recurseEverything: true }) } diff --git a/src/main/cluster.ts b/src/main/cluster.ts index 4937714ce4..fa76c64ab9 100644 --- a/src/main/cluster.ts +++ b/src/main/cluster.ts @@ -51,7 +51,7 @@ export class Cluster implements ClusterModel { @observable version: string; @observable distribution: string; @observable isAdmin: boolean; - @observable eventCount: number; + @observable eventCount: number; // todo: auto-fetch every 3s and push updates to client (?) @observable preferences: ClusterPreferences = {}; @observable features: FeatureStatusMap = {}; diff --git a/src/main/index.ts b/src/main/index.ts index 5b35ad135c..4ccde7ee32 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -39,7 +39,6 @@ if (app.commandLine.getSwitchValue("proxy-server") !== "") { async function main() { shellSync(app.getLocale()); - // todo: check other usages .getPath("userData") and enable "lazy-evaluation" const workingDir = path.join(app.getPath("appData"), appName); app.setName(appName); app.setPath("userData", workingDir); @@ -83,7 +82,7 @@ async function main() { } // manage lens windows - windowManager = new WindowManager(); + windowManager = new WindowManager({showSplash: true}); windowManager.showMain(vmURL) } @@ -98,13 +97,13 @@ app.on('window-all-closed', function () { if (clusterManager) clusterManager.stop() } }) -app.on("activate", () => { - if (!windowManager) { - logger.debug("activate main window") - windowManager = new WindowManager({ showSplash: false }) - windowManager.showMain(vmURL) - } -}) +// app.on("activate", () => { +// if (!windowManager) { +// logger.debug("activate main window") +// windowManager = new WindowManager({ showSplash: false }) +// windowManager.showMain(vmURL) +// } +// }) app.on("will-quit", async (event) => { event.preventDefault(); // To allow mixpanel sending to be executed if (clusterManager) clusterManager.stop() diff --git a/src/renderer/components/+clusters/add-cluster.scss b/src/renderer/components/+add-cluster/add-cluster.scss similarity index 100% rename from src/renderer/components/+clusters/add-cluster.scss rename to src/renderer/components/+add-cluster/add-cluster.scss diff --git a/src/renderer/components/+clusters/add-cluster.tsx b/src/renderer/components/+add-cluster/add-cluster.tsx similarity index 62% rename from src/renderer/components/+clusters/add-cluster.tsx rename to src/renderer/components/+add-cluster/add-cluster.tsx index b076c6bb06..a34e451a0b 100644 --- a/src/renderer/components/+clusters/add-cluster.tsx +++ b/src/renderer/components/+add-cluster/add-cluster.tsx @@ -6,6 +6,10 @@ interface Props { export class AddCluster extends React.Component { render() { - return "AddCluster"; + return ( +
+ AddCluster +
+ ) } } diff --git a/src/renderer/components/+add-cluster/index.ts b/src/renderer/components/+add-cluster/index.ts new file mode 100644 index 0000000000..98089e0bde --- /dev/null +++ b/src/renderer/components/+add-cluster/index.ts @@ -0,0 +1 @@ +export * from "./add-cluster" diff --git a/src/renderer/components/+cluster-settings/cluster-icon.scss b/src/renderer/components/+cluster-settings/cluster-icon.scss new file mode 100644 index 0000000000..a047a85336 --- /dev/null +++ b/src/renderer/components/+cluster-settings/cluster-icon.scss @@ -0,0 +1,9 @@ +.ClusterIcon { + position: relative; + + .Badge { + position: absolute; + right: 0; + bottom: 0; + } +} \ No newline at end of file diff --git a/src/renderer/components/+cluster-settings/cluster-icon.tsx b/src/renderer/components/+cluster-settings/cluster-icon.tsx new file mode 100644 index 0000000000..7c686e817e --- /dev/null +++ b/src/renderer/components/+cluster-settings/cluster-icon.tsx @@ -0,0 +1,46 @@ +import "./cluster-icon.scss" + +import React, { DOMAttributes } from "react"; +import { observer } from "mobx-react"; +import { Hashicon, HashiconProps } from "@emeraldpay/hashicon-react"; +import { Cluster } from "../../../main/cluster"; +import { cssNames, IClassName } from "../../utils"; +import { Badge } from "../badge"; + +interface Props extends DOMAttributes, Omit { + className?: IClassName; + showBadge?: boolean; + cluster: Cluster; +} + +const defaultProps: Partial = { + size: 38, + showBadge: true, +}; + +@observer +export class ClusterIcon extends React.Component { + static defaultProps = defaultProps as object; + + render() { + const { className, cluster, showBadge, options, size, ...elemProps } = this.props; + const { isAdmin, eventCount, preferences } = cluster; + const { clusterName, icon } = preferences; + const eventsCount = eventCount >= 1000 ? Math.ceil(eventCount / 1000) * 1000 + "+" : eventCount; + return ( +
+ {icon && {clusterName}/} + {!icon && ( + + )} + {showBadge && isAdmin && eventsCount && ( + + )} +
+ ); + } +} diff --git a/src/renderer/components/+clusters/cluster-settings.scss b/src/renderer/components/+cluster-settings/cluster-settings.scss similarity index 100% rename from src/renderer/components/+clusters/cluster-settings.scss rename to src/renderer/components/+cluster-settings/cluster-settings.scss diff --git a/src/renderer/components/+clusters/cluster-settings.tsx b/src/renderer/components/+cluster-settings/cluster-settings.tsx similarity index 100% rename from src/renderer/components/+clusters/cluster-settings.tsx rename to src/renderer/components/+cluster-settings/cluster-settings.tsx diff --git a/src/renderer/components/+cluster-settings/index.ts b/src/renderer/components/+cluster-settings/index.ts new file mode 100644 index 0000000000..00a0fcf4a3 --- /dev/null +++ b/src/renderer/components/+cluster-settings/index.ts @@ -0,0 +1 @@ +export * from "./cluster-settings" diff --git a/src/renderer/components/+clusters/clusters-menu.scss b/src/renderer/components/+clusters/clusters-menu.scss deleted file mode 100644 index e9acb4e50d..0000000000 --- a/src/renderer/components/+clusters/clusters-menu.scss +++ /dev/null @@ -1,3 +0,0 @@ -.ClustersMenu { - -} \ No newline at end of file diff --git a/src/renderer/components/+clusters/clusters-menu.tsx b/src/renderer/components/+clusters/clusters-menu.tsx deleted file mode 100644 index 9548286f9a..0000000000 --- a/src/renderer/components/+clusters/clusters-menu.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import "./clusters-menu.scss" -import React from "react"; - -interface Props { -} - -export class ClustersMenu extends React.Component { - render() { - return ( -
- ClustersMenu -
- ); - } -} diff --git a/src/renderer/components/+clusters/clusters.scss b/src/renderer/components/+clusters/clusters.scss deleted file mode 100644 index f09d9b15b1..0000000000 --- a/src/renderer/components/+clusters/clusters.scss +++ /dev/null @@ -1,3 +0,0 @@ -.Clusters { - -} \ No newline at end of file diff --git a/src/renderer/components/+clusters/clusters.tsx b/src/renderer/components/+clusters/clusters.tsx deleted file mode 100644 index c7fb7e84ca..0000000000 --- a/src/renderer/components/+clusters/clusters.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import "./clusters.scss" -import React from "react"; - -interface Props { -} - -export class Clusters extends React.Component { - render() { - return ( -
- Clusters -
- ); - } -} diff --git a/src/renderer/components/+clusters/index.tsx b/src/renderer/components/+clusters/index.tsx deleted file mode 100644 index 32f11169b2..0000000000 --- a/src/renderer/components/+clusters/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from "./clusters" diff --git a/src/renderer/components/+workspaces/clusters-menu.scss b/src/renderer/components/+workspaces/clusters-menu.scss new file mode 100644 index 0000000000..f776456ab2 --- /dev/null +++ b/src/renderer/components/+workspaces/clusters-menu.scss @@ -0,0 +1,15 @@ +.ClustersMenu { + @include hidden-scrollbar; + + padding: $padding; + background: #252729; + + .add-cluster { + cursor: pointer; + opacity: 0.4; + + &:hover { + opacity: .75; + } + } +} \ No newline at end of file diff --git a/src/renderer/components/+workspaces/clusters-menu.tsx b/src/renderer/components/+workspaces/clusters-menu.tsx new file mode 100644 index 0000000000..fd49065320 --- /dev/null +++ b/src/renderer/components/+workspaces/clusters-menu.tsx @@ -0,0 +1,93 @@ +import type { Cluster } from "../../../main/cluster"; + +import "./clusters-menu.scss" +import { remote } from "electron" +import React from "react"; +import { observer } from "mobx-react"; +import { _i18n } from "../../i18n"; +import { t, Trans } from "@lingui/macro"; +import { ClusterId, clusterStore } from "../../../common/cluster-store"; +import { WorkspaceId } from "../../../common/workspace-store"; +import { ClusterIcon } from "../+cluster-settings/cluster-icon"; +import { Icon } from "../icon"; +import { cssNames, IClassName } from "../../utils"; + +interface Props { + className?: IClassName; + workspaceId?: WorkspaceId; +} + +@observer +export class ClustersMenu extends React.Component { + selectCluster = (cluster: Cluster) => { + clusterStore.activeCluster = cluster.id; + console.log('load lens for cluster:', cluster) + } + + addCluster = () => { + console.log('navigate: /add-cluster') + } + + showContextMenu = (clusterId: ClusterId) => { + const { Menu, MenuItem } = remote + const menu = new Menu(); + + menu.append(new MenuItem({ + label: _i18n._(t`Settings`), + click: () => { + console.log(`navigate to cluster=${clusterId} settings`) + } + })) + // fixme: don't show item if cluster wasn't active during runtime + menu.append(new MenuItem({ + label: _i18n._(t`Disconnect`), + click: () => { + console.log(`disconnect cluster=${clusterId} and navigate to landing-page`) + } + })) + + menu.popup({ + window: remote.getCurrentWindow() + }) + } + + // fixme: allow to rearrange clusters with drag&drop + render() { + const { workspaceId, className } = this.props; + const clusters = clusterStore.getByWorkspaceId(workspaceId); + const addClusterTooltip = ( +
+

This is the quick launch menu.

+

+ + Associate clusters and choose the ones you want to access via quick launch menu by clicking the + button. + +

+
+ ) + return ( +
+ {clusters.map(cluster => { + const isActive = cluster.id === clusterStore.activeCluster; + return ( + this.selectCluster(cluster)} + onContextMenu={() => this.showContextMenu(cluster.id)} + /> + ) + })} + {/* todo: add badge for "newContexts" since last visit */} + {/* fixme: make tooltip visible on init + remove following to mouse pos */} + +
+ ); + } +} diff --git a/src/renderer/components/+workspaces/workspaces.scss b/src/renderer/components/+workspaces/workspaces.scss index 7b636036db..bf2910c3b5 100644 --- a/src/renderer/components/+workspaces/workspaces.scss +++ b/src/renderer/components/+workspaces/workspaces.scss @@ -1,3 +1,41 @@ .Workspaces { + height: 100%; -} \ No newline at end of file + display: grid; + grid-template-areas: "draggable draggable" "menu lens-view" "bottom-bar bottom-bar"; + grid-template-rows: 20px 1fr min-content; + grid-template-columns: min-content 1fr; + + > .draggable-top { + @include set-draggable; + grid-area: draggable; + } + + > .ClusterMenu { + grid-area: menu; + } + + > .lens-container { + grid-area: lens-view; + } + + > .bottom-bar { + grid-area: bottom-bar; + font-size: $font-size-small; + background-color: #3d90ce; + padding: $padding / 2 $padding; + color: white; + + #workspace { + cursor: pointer; + } + } +} + +.WorkspacesMenu { + border-radius: $radius; + + .workspaces-title { + padding: $padding; + } +} diff --git a/src/renderer/components/+workspaces/workspaces.tsx b/src/renderer/components/+workspaces/workspaces.tsx index 7c6c0ba2f0..efd8f478bc 100644 --- a/src/renderer/components/+workspaces/workspaces.tsx +++ b/src/renderer/components/+workspaces/workspaces.tsx @@ -1,14 +1,61 @@ import "./workspaces.scss" import React from "react"; +import { observer } from "mobx-react"; +import { Link } from "react-router-dom"; +import { Trans } from "@lingui/macro"; +import { workspaceStore } from "../../../common/workspace-store"; +import { Icon } from "../icon"; +import { ClustersMenu } from "./clusters-menu"; +import { Menu, MenuItem } from "../menu"; +import { prevDefault } from "../../utils"; +import { observable } from "mobx"; -interface Props { -} +// todo: support `workspaceId` in URL +@observer export class Workspaces extends React.Component { + @observable menuVisible = false; + render() { + const { currentWorkspace, workspaces } = workspaceStore; return (
- Workspaces +
+ + + +
+ {/*todo: replace with BrowserView */} +
+ +
+
+ {currentWorkspace} +
+ this.menuVisible = true} + close={() => this.menuVisible = false} + > + console.log('/navigate: workspaces page'))}> + Workspaces + + {Array.from(workspaces.values()).map(workspace => { + const { id, name, description } = workspace; + return ( + console.log(`navigate: /workspaces/${id}`)} title={description}> + {name} + + ) + })} + +
) } diff --git a/src/renderer/components/app.scss b/src/renderer/components/app.scss index 81b95c5941..6b6e81289b 100755 --- a/src/renderer/components/app.scss +++ b/src/renderer/components/app.scss @@ -12,6 +12,11 @@ -webkit-font-smoothing: antialiased; } +:root { + --mainBackground: #1e2124; + --textColorPrimary: #87909c; +} + ::selection { background: $primary; color: white; diff --git a/src/renderer/components/menu/index.ts b/src/renderer/components/menu/index.ts index ca394e50f4..87768fdcbf 100644 --- a/src/renderer/components/menu/index.ts +++ b/src/renderer/components/menu/index.ts @@ -1,2 +1,2 @@ export * from './menu' -export * from './menu-picker' +export * from './menu-actions' diff --git a/src/renderer/components/menu/menu-picker.scss b/src/renderer/components/menu/menu-picker.scss deleted file mode 100644 index b5385d5c36..0000000000 --- a/src/renderer/components/menu/menu-picker.scss +++ /dev/null @@ -1,74 +0,0 @@ -.MenuPicker { - &.waiting { - .MenuItem { - pointer-events: none; - opacity: .75; - } - } - - > .Button { - padding: $padding /2 $padding * 2; - } - - .menu-header { - background: var(--bgc-active); - padding: $padding; - display: flex; - align-items: center; - color: $textColorAccent; - font-weight: bold; - - &:hover { - background: var(--bgc-active) !important; - } - } - - .Menu { - @include custom-scrollbar; - - border-radius: $radius; - box-shadow: -$unit / 2 $unit / 2 22px $boxShadow; - margin-top: ceil($margin / 1.33); - overflow: hidden; - min-width: 150px; - max-height: $unit * 35; - } - - .MenuItem { - align-items: center; - display: flex; - padding-right: $padding; - white-space: normal; - - &:before { - min-width: 20px; - font-family: "Material Icons"; - font-weight: bold; - content: ' ' - } - - &:hover { - background: $colorInfo; - } - - &.active { - font-weight: bold; - - &:not(:hover) { - background: inherit; - } - - &:before { - content: 'check'; - } - } - - &:focus { - outline: none - } - - &:not(:last-child) { - border-bottom: 1px solid $borderColor; - } - } -} \ No newline at end of file diff --git a/src/renderer/components/menu/menu-picker.tsx b/src/renderer/components/menu/menu-picker.tsx deleted file mode 100644 index cda5b96a08..0000000000 --- a/src/renderer/components/menu/menu-picker.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import './menu-picker.scss' - -import React, { useRef, useState } from "react"; -import { cssNames } from "../../utils"; -import { Menu, MenuProps } from "./menu"; -import { Icon } from "../icon"; -import { Button } from "../button"; -import uniqueId from "lodash/uniqueId"; - -interface Props extends Partial { - title: React.ReactNode; - waiting?: boolean; -} - -export function MenuPicker(props: Props) { - const id = useRef(uniqueId("menu_picker_")).current; - const { className, title, waiting, children, ...menuProps } = props; - const [isOpen, setOpen] = useState(false); - - const toggle = () => setOpen(!isOpen); - - return ( -
- - -
- {title} - -
- {children} -
-
- ) -} diff --git a/src/renderer/components/mixins.scss b/src/renderer/components/mixins.scss index 8094d24141..a281667313 100755 --- a/src/renderer/components/mixins.scss +++ b/src/renderer/components/mixins.scss @@ -90,8 +90,9 @@ cursor: pointer; } -@mixin set-draggable($isDraggable: true) { - @if ($isDraggable) { +@mixin set-draggable($is-draggable: true) { + @if ($is-draggable) { + cursor: move; -webkit-user-drag: auto; -webkit-app-region: drag; } @else { diff --git a/src/renderer/components/tooltip/tooltip.tsx b/src/renderer/components/tooltip/tooltip.tsx index 4e486d39cf..833ff0ce33 100644 --- a/src/renderer/components/tooltip/tooltip.tsx +++ b/src/renderer/components/tooltip/tooltip.tsx @@ -7,6 +7,9 @@ import { createPortal } from "react-dom" import { autobind, cssNames } from "../../utils"; import { Animate } from "../animate"; +// fixme: better positioning + remove "flying effect" +// todo: add flag to show visible tooltip by default (until mouse-over the target) + export interface TooltipProps { htmlFor: string; className?: string; diff --git a/src/renderer/components/vars.scss b/src/renderer/components/vars.scss index c48b31ec7d..bdf49aa08c 100755 --- a/src/renderer/components/vars.scss +++ b/src/renderer/components/vars.scss @@ -1,11 +1,6 @@ @import "colors", "media"; @import "../themes/theme-vars"; -:root { - --mainBackground: #1e2124; - --textColorPrimary: #87909c; -} - // Dimensions $unit: 8px; $padding: $unit; diff --git a/src/renderer/index.tsx b/src/renderer/index.tsx index 27fbc73fbf..2dc1ca87a1 100644 --- a/src/renderer/index.tsx +++ b/src/renderer/index.tsx @@ -1,18 +1,38 @@ +// todo: remove when app.tsx re-used +import "./components/app.scss" +import "./theme.store"; + +import "../common/system-ca" import React from "react"; import ReactDOM from "react-dom"; -import "../common/system-ca" +import { Router } from "react-router"; import { userStore } from "../common/user-store"; import { workspaceStore } from "../common/workspace-store"; import { clusterStore } from "../common/cluster-store"; import { Workspaces } from "./components/+workspaces/workspaces"; +import { I18nProvider } from "@lingui/react"; +import { _i18n } from "./i18n"; +import { browserHistory } from "./navigation"; -async function render() { - await Promise.all([ - userStore.load(), - workspaceStore.load(), - clusterStore.load(), - ]); - ReactDOM.render(, document.getElementById("app"),) +class App extends React.Component { + static async init() { + await Promise.all([ + userStore.load(), + workspaceStore.load(), + clusterStore.load(), + ]); + ReactDOM.render(, document.getElementById("app"),) + } + + render() { + return ( + + + + + + ) + } } -window.addEventListener("load", render); +window.addEventListener("load", App.init);