1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

workspaces -- part 2

Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
Roman 2020-07-22 14:26:17 +03:00 committed by Sebastian Malton
parent 456fe344f9
commit 3622f8b992
10 changed files with 363 additions and 470 deletions

View File

@ -25,15 +25,19 @@ msgstr ""
msgid "(as a percentage of request)" msgid "(as a percentage of request)"
msgstr "(as a percentage of request)" msgstr "(as a percentage of request)"
#: src/renderer/components/+workspaces/workspaces.tsx:108
msgid "(current)"
msgstr "(current)"
#: src/renderer/components/+network-policies/network-policy-details.tsx:88 #: src/renderer/components/+network-policies/network-policy-details.tsx:88
msgid "(empty) (Allowing the specific traffic to all pods in this namespace)" msgid "(empty) (Allowing the specific traffic to all pods in this namespace)"
msgstr "(empty) (Allowing the specific traffic to all pods in this namespace)" msgstr "(empty) (Allowing the specific traffic to all pods in this namespace)"
#: src/renderer/components/+add-cluster/add-cluster.tsx:104 #: src/renderer/components/+add-cluster/add-cluster.tsx:105
msgid "(new)" msgid "(new)"
msgstr "(new)" msgstr "(new)"
#: src/renderer/components/item-object-list/item-list-layout.tsx:224 #: src/renderer/components/item-object-list/item-list-layout.tsx:226
msgid "<0>Filtered</0>: {itemsCount} / {allItemsCount}" msgid "<0>Filtered</0>: {itemsCount} / {allItemsCount}"
msgstr "<0>Filtered</0>: {itemsCount} / {allItemsCount}" msgstr "<0>Filtered</0>: {itemsCount} / {allItemsCount}"
@ -45,10 +49,14 @@ msgstr "<0>Your browser does not support all Lens features. </0> Please consider
msgid "<0>{0}</0> successfully created" msgid "<0>{0}</0> successfully created"
msgstr "<0>{0}</0> successfully created" msgstr "<0>{0}</0> successfully created"
#: src/renderer/components/+add-cluster/add-cluster.tsx:126 #: src/renderer/components/+add-cluster/add-cluster.tsx:176
msgid "A HTTP proxy server URL (format: http://<address>:<port>)" msgid "A HTTP proxy server URL (format: http://<address>:<port>)"
msgstr "A HTTP proxy server URL (format: http://<address>:<port>)" msgstr "A HTTP proxy server URL (format: http://<address>:<port>)"
#: src/renderer/components/+workspaces/workspaces.tsx:84
msgid "A single workspaces contains a list of clusters and their full configuration."
msgstr "A single workspaces contains a list of clusters and their full configuration."
#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:80 #: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:80
msgid "API Group" msgid "API Group"
msgstr "API Group" msgstr "API Group"
@ -71,7 +79,7 @@ msgstr "Account Name"
msgid "Active" msgid "Active"
msgstr "Active" msgstr "Active"
#: src/renderer/components/+add-cluster/add-cluster.tsx:118 #: src/renderer/components/+add-cluster/add-cluster.tsx:168
#: src/renderer/components/cluster-manager/clusters-menu.tsx:99 #: src/renderer/components/cluster-manager/clusters-menu.tsx:99
msgid "Add Cluster" msgid "Add Cluster"
msgstr "Add Cluster" msgstr "Add Cluster"
@ -84,11 +92,15 @@ msgstr "Add Namespace"
msgid "Add RoleBinding" msgid "Add RoleBinding"
msgstr "Add RoleBinding" msgstr "Add RoleBinding"
#: src/renderer/components/+workspaces/workspaces.tsx:125
msgid "Add Workspace"
msgstr "Add Workspace"
#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:111 #: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:111
msgid "Add bindings to {name}" msgid "Add bindings to {name}"
msgstr "Add bindings to {name}" msgstr "Add bindings to {name}"
#: src/renderer/components/+add-cluster/add-cluster.tsx:137 #: src/renderer/components/+add-cluster/add-cluster.tsx:187
msgid "Add cluster" msgid "Add cluster"
msgstr "Add cluster" msgstr "Add cluster"
@ -146,6 +158,14 @@ msgstr "Affinities"
msgid "Age" msgid "Age"
msgstr "Age" msgstr "Age"
#: src/renderer/components/+workspaces/workspaces.tsx:64
msgid "All clusters within workspace will be cleared as well"
msgstr "All clusters within workspace will be cleared as well"
#: src/renderer/components/+workspaces/workspaces.tsx:64
#~ msgid "All clusters within workspace will be cleared as well."
#~ msgstr "All clusters within workspace will be cleared as well."
#: src/renderer/components/+custom-resources/crd-list.tsx:56 #: src/renderer/components/+custom-resources/crd-list.tsx:56
msgid "All groups" msgid "All groups"
msgstr "All groups" msgstr "All groups"
@ -220,6 +240,10 @@ msgstr "Applying.."
msgid "Apps" msgid "Apps"
msgstr "Apps" msgstr "Apps"
#: src/renderer/components/+workspaces/workspaces.tsx:61
msgid "Are you sure you want remove workspace <0>{0}</0>?"
msgstr "Are you sure you want remove workspace <0>{0}</0>?"
#: src/renderer/components/+nodes/node-menu.tsx:41 #: src/renderer/components/+nodes/node-menu.tsx:41
msgid "Are you sure you want to drain <0>{nodeName}</0>?" msgid "Are you sure you want to drain <0>{nodeName}</0>?"
msgstr "Are you sure you want to drain <0>{nodeName}</0>?" msgstr "Are you sure you want to drain <0>{nodeName}</0>?"
@ -333,6 +357,7 @@ msgstr "CPU requests"
msgid "CPU:" msgid "CPU:"
msgstr "CPU:" msgstr "CPU:"
#: src/renderer/components/+workspaces/workspaces.tsx:119
#: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44 #: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44
#: src/renderer/components/dock/info-panel.tsx:97 #: src/renderer/components/dock/info-panel.tsx:97
#: src/renderer/components/wizard/wizard.tsx:130 #: src/renderer/components/wizard/wizard.tsx:130
@ -639,7 +664,7 @@ msgstr "Currently applied filters:"
msgid "Custom Resources" msgid "Custom Resources"
msgstr "Custom Resources" msgstr "Custom Resources"
#: src/renderer/components/+add-cluster/add-cluster.tsx:110 #: src/renderer/components/+add-cluster/add-cluster.tsx:111
msgid "Custom.." msgid "Custom.."
msgstr "Custom.." msgstr "Custom.."
@ -681,6 +706,7 @@ msgstr "Default Runtime Class Name"
msgid "Definitions" msgid "Definitions"
msgstr "Definitions" msgstr "Definitions"
#: src/renderer/components/+workspaces/workspaces.tsx:113
#: src/renderer/components/menu/menu-actions.tsx:84 #: src/renderer/components/menu/menu-actions.tsx:84
msgid "Delete" msgid "Delete"
msgstr "Delete" msgstr "Delete"
@ -696,6 +722,7 @@ msgid "Deployments"
msgstr "Deployments" msgstr "Deployments"
#: src/renderer/components/+apps-helm-charts/helm-charts.tsx:65 #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:65
#: src/renderer/components/+workspaces/workspaces.tsx:118
msgid "Description" msgid "Description"
msgstr "Description" msgstr "Description"
@ -747,6 +774,7 @@ msgstr "Duration"
msgid "E-mail" msgid "E-mail"
msgstr "E-mail" msgstr "E-mail"
#: src/renderer/components/+workspaces/workspaces.tsx:112
#: src/renderer/components/menu/menu-actions.tsx:80 #: src/renderer/components/menu/menu-actions.tsx:80
#: src/renderer/components/menu/menu-actions.tsx:81 #: src/renderer/components/menu/menu-actions.tsx:81
msgid "Edit" msgid "Edit"
@ -887,7 +915,7 @@ msgstr "Groups"
msgid "HPA" msgid "HPA"
msgstr "HPA" msgstr "HPA"
#: src/renderer/components/+add-cluster/add-cluster.tsx:128 #: src/renderer/components/+add-cluster/add-cluster.tsx:178
msgid "HTTP Proxy server. Used for communicating with Kubernetes API." msgid "HTTP Proxy server. Used for communicating with Kubernetes API."
msgstr "HTTP Proxy server. Used for communicating with Kubernetes API." msgstr "HTTP Proxy server. Used for communicating with Kubernetes API."
@ -1268,6 +1296,10 @@ msgstr "Mountable secrets"
msgid "Mounts" msgid "Mounts"
msgstr "Mounts" msgstr "Mounts"
#: src/renderer/components/+workspaces/workspaces.tsx:36
msgid "My Workspace"
msgstr "My Workspace"
#: src/renderer/components/+apps-helm-charts/helm-charts.tsx:64 #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:64
#: src/renderer/components/+apps-releases/releases.tsx:87 #: src/renderer/components/+apps-releases/releases.tsx:87
#: src/renderer/components/+config-autoscalers/hpa-details.tsx:49 #: src/renderer/components/+config-autoscalers/hpa-details.tsx:49
@ -1310,6 +1342,7 @@ msgstr "Mounts"
#: src/renderer/components/+workloads-pods/pods.tsx:73 #: src/renderer/components/+workloads-pods/pods.tsx:73
#: src/renderer/components/+workloads-replicasets/replicasets.tsx:50 #: src/renderer/components/+workloads-replicasets/replicasets.tsx:50
#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:40 #: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:40
#: src/renderer/components/+workspaces/workspaces.tsx:117
#: src/renderer/components/dock/edit-resource.tsx:90 #: src/renderer/components/dock/edit-resource.tsx:90
#: src/renderer/components/kube-object/kube-object-meta.tsx:20 #: src/renderer/components/kube-object/kube-object-meta.tsx:20
msgid "Name" msgid "Name"
@ -1436,7 +1469,7 @@ msgstr "No filters available."
msgid "No issues found" msgid "No issues found"
msgstr "No issues found" msgstr "No issues found"
#: src/renderer/components/item-object-list/item-list-layout.tsx:196 #: src/renderer/components/item-object-list/item-list-layout.tsx:198
msgid "No items found." msgid "No items found."
msgstr "No items found." msgstr "No items found."
@ -1575,7 +1608,7 @@ msgstr "Persistent Volume Claims"
msgid "Persistent Volumes" msgid "Persistent Volumes"
msgstr "Persistent Volumes" msgstr "Persistent Volumes"
#: src/renderer/components/+add-cluster/add-cluster.tsx:51 #: src/renderer/components/+add-cluster/add-cluster.tsx:52
msgid "Please select kubeconfig" msgid "Please select kubeconfig"
msgstr "Please select kubeconfig" msgstr "Please select kubeconfig"
@ -1660,7 +1693,7 @@ msgstr "Privileged"
msgid "Provisioner" msgid "Provisioner"
msgstr "Provisioner" msgstr "Provisioner"
#: src/renderer/components/+add-cluster/add-cluster.tsx:122 #: src/renderer/components/+add-cluster/add-cluster.tsx:172
msgid "Proxy settings" msgid "Proxy settings"
msgstr "Proxy settings" msgstr "Proxy settings"
@ -1743,7 +1776,7 @@ msgstr "Releases"
#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:60 #: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:60
#: src/renderer/components/cluster-manager/clusters-menu.tsx:60 #: src/renderer/components/cluster-manager/clusters-menu.tsx:60
#: src/renderer/components/cluster-manager/clusters-menu.tsx:64 #: src/renderer/components/cluster-manager/clusters-menu.tsx:64
#: src/renderer/components/item-object-list/item-list-layout.tsx:179 #: src/renderer/components/item-object-list/item-list-layout.tsx:181
#: src/renderer/components/menu/menu-actions.tsx:49 #: src/renderer/components/menu/menu-actions.tsx:49
#: src/renderer/components/menu/menu-actions.tsx:85 #: src/renderer/components/menu/menu-actions.tsx:85
msgid "Remove" msgid "Remove"
@ -1753,6 +1786,10 @@ msgstr "Remove"
msgid "Remove <0>{releaseNames}</0>?" msgid "Remove <0>{releaseNames}</0>?"
msgstr "Remove <0>{releaseNames}</0>?" msgstr "Remove <0>{releaseNames}</0>?"
#: src/renderer/components/+workspaces/workspaces.tsx:51
msgid "Remove Workspace"
msgstr "Remove Workspace"
#: src/renderer/components/+config-secrets/add-secret-dialog.tsx:133 #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:133
msgid "Remove field" msgid "Remove field"
msgstr "Remove field" msgstr "Remove field"
@ -1769,7 +1806,7 @@ msgstr "Remove selected bindings for <0>{0}</0>?"
msgid "Remove selected bindings from ${name}" msgid "Remove selected bindings from ${name}"
msgstr "Remove selected bindings from ${name}" msgstr "Remove selected bindings from ${name}"
#: src/renderer/components/item-object-list/item-list-layout.tsx:275 #: src/renderer/components/item-object-list/item-list-layout.tsx:277
msgid "Remove selected items ({0})" msgid "Remove selected items ({0})"
msgstr "Remove selected items ({0})" msgstr "Remove selected items ({0})"
@ -1828,7 +1865,7 @@ msgstr "Required field"
msgid "Reset" msgid "Reset"
msgstr "Reset" msgstr "Reset"
#: src/renderer/components/item-object-list/item-list-layout.tsx:199 #: src/renderer/components/item-object-list/item-list-layout.tsx:201
msgid "Reset filters?" msgid "Reset filters?"
msgstr "Reset filters?" msgstr "Reset filters?"
@ -1954,6 +1991,7 @@ msgstr "Runtime Class"
#: src/renderer/components/+config-maps/config-map-details.tsx:78 #: src/renderer/components/+config-maps/config-map-details.tsx:78
#: src/renderer/components/+config-secrets/secret-details.tsx:97 #: src/renderer/components/+config-secrets/secret-details.tsx:97
#: src/renderer/components/+workloads-pods/pod-logs-dialog.tsx:216 #: src/renderer/components/+workloads-pods/pod-logs-dialog.tsx:216
#: src/renderer/components/+workspaces/workspaces.tsx:120
#: src/renderer/components/dock/edit-resource.tsx:88 #: src/renderer/components/dock/edit-resource.tsx:88
msgid "Save" msgid "Save"
msgstr "Save" msgstr "Save"
@ -2030,7 +2068,7 @@ msgstr "Secrets"
msgid "Select a quota.." msgid "Select a quota.."
msgstr "Select a quota.." msgstr "Select a quota.."
#: src/renderer/components/+add-cluster/add-cluster.tsx:119 #: src/renderer/components/+add-cluster/add-cluster.tsx:169
msgid "Select kubeconfig" msgid "Select kubeconfig"
msgstr "Select kubeconfig" msgstr "Select kubeconfig"
@ -2433,6 +2471,10 @@ msgstr "Warnings: {0}"
msgid "Welcome!" msgid "Welcome!"
msgstr "Welcome!" msgstr "Welcome!"
#: src/renderer/components/+workspaces/workspaces.tsx:79
msgid "What is a Workspace?"
msgstr "What is a Workspace?"
#: src/renderer/components/+cluster/cluster-metric-switchers.tsx:19 #: src/renderer/components/+cluster/cluster-metric-switchers.tsx:19
msgid "Worker" msgid "Worker"
msgstr "Worker" msgstr "Worker"
@ -2441,10 +2483,15 @@ msgstr "Worker"
msgid "Workloads" msgid "Workloads"
msgstr "Workloads" msgstr "Workloads"
#: src/renderer/components/cluster-manager/bottom-bar.tsx:35 #: src/renderer/components/+workspaces/workspace-menu.tsx:39
#: src/renderer/components/+workspaces/workspaces.tsx:91
msgid "Workspaces" msgid "Workspaces"
msgstr "Workspaces" msgstr "Workspaces"
#: src/renderer/components/+workspaces/workspaces.tsx:81
msgid "Workspaces are used to organize number of clusters into logical groups."
msgstr "Workspaces are used to organize number of clusters into logical groups."
#: src/renderer/components/input/input.validators.ts:10 #: src/renderer/components/input/input.validators.ts:10
msgid "Wrong email format" msgid "Wrong email format"
msgstr "Wrong email format" msgstr "Wrong email format"
@ -2478,7 +2525,7 @@ msgstr "Zone"
msgid "ago" msgid "ago"
msgstr "ago" msgstr "ago"
#: src/renderer/components/item-object-list/item-list-layout.tsx:178 #: src/renderer/components/item-object-list/item-list-layout.tsx:180
msgid "and <0>{tailCount}</0> more" msgid "and <0>{tailCount}</0> more"
msgstr "and <0>{tailCount}</0> more" msgstr "and <0>{tailCount}</0> more"
@ -2555,7 +2602,7 @@ msgstr "{0} unavailable"
msgid "{accountName} kubeconfig" msgid "{accountName} kubeconfig"
msgstr "{accountName} kubeconfig" msgstr "{accountName} kubeconfig"
#: src/renderer/components/item-object-list/item-list-layout.tsx:228 #: src/renderer/components/item-object-list/item-list-layout.tsx:230
msgid "{allItemsCount, plural, one {# item} other {# items}}" msgid "{allItemsCount, plural, one {# item} other {# items}}"
msgstr "{allItemsCount, plural, one {# item} other {# items}}" msgstr "{allItemsCount, plural, one {# item} other {# items}}"
@ -2571,7 +2618,7 @@ msgstr "{podName} Logs"
msgid "{resourceType} <0>{resourceName}</0> updated." msgid "{resourceType} <0>{resourceName}</0> updated."
msgstr "{resourceType} <0>{resourceName}</0> updated." msgstr "{resourceType} <0>{resourceName}</0> updated."
#: src/renderer/components/item-object-list/item-list-layout.tsx:179 #: src/renderer/components/item-object-list/item-list-layout.tsx:181
msgid "{selectedCount, plural, one {<0>Remove item <1>{selectedNames}</1>?</0>} other {<2>Remove <3>{selectedCount}</3> items <4>{selectedNames}</4> {tail}?</2>}}" msgid "{selectedCount, plural, one {<0>Remove item <1>{selectedNames}</1>?</0>} other {<2>Remove <3>{selectedCount}</3> items <4>{selectedNames}</4> {tail}?</2>}}"
msgstr "{selectedCount, plural, one {<0>Remove item <1>{selectedNames}</1>?</0>} other {<2>Remove <3>{selectedCount}</3> items <4>{selectedNames}</4> {tail}?</2>}}" msgstr "{selectedCount, plural, one {<0>Remove item <1>{selectedNames}</1>?</0>} other {<2>Remove <3>{selectedCount}</3> items <4>{selectedNames}</4> {tail}?</2>}}"

View File

@ -25,15 +25,19 @@ msgstr ""
msgid "(as a percentage of request)" msgid "(as a percentage of request)"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:108
msgid "(current)"
msgstr ""
#: src/renderer/components/+network-policies/network-policy-details.tsx:88 #: src/renderer/components/+network-policies/network-policy-details.tsx:88
msgid "(empty) (Allowing the specific traffic to all pods in this namespace)" msgid "(empty) (Allowing the specific traffic to all pods in this namespace)"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:104 #: src/renderer/components/+add-cluster/add-cluster.tsx:105
msgid "(new)" msgid "(new)"
msgstr "" msgstr ""
#: src/renderer/components/item-object-list/item-list-layout.tsx:224 #: src/renderer/components/item-object-list/item-list-layout.tsx:226
msgid "<0>Filtered</0>: {itemsCount} / {allItemsCount}" msgid "<0>Filtered</0>: {itemsCount} / {allItemsCount}"
msgstr "" msgstr ""
@ -45,10 +49,14 @@ msgstr ""
msgid "<0>{0}</0> successfully created" msgid "<0>{0}</0> successfully created"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:126 #: src/renderer/components/+add-cluster/add-cluster.tsx:176
msgid "A HTTP proxy server URL (format: http://<address>:<port>)" msgid "A HTTP proxy server URL (format: http://<address>:<port>)"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:84
msgid "A single workspaces contains a list of clusters and their full configuration."
msgstr ""
#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:80 #: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:80
msgid "API Group" msgid "API Group"
msgstr "" msgstr ""
@ -71,7 +79,7 @@ msgstr ""
msgid "Active" msgid "Active"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:118 #: src/renderer/components/+add-cluster/add-cluster.tsx:168
#: src/renderer/components/cluster-manager/clusters-menu.tsx:99 #: src/renderer/components/cluster-manager/clusters-menu.tsx:99
msgid "Add Cluster" msgid "Add Cluster"
msgstr "" msgstr ""
@ -84,11 +92,15 @@ msgstr ""
msgid "Add RoleBinding" msgid "Add RoleBinding"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:125
msgid "Add Workspace"
msgstr ""
#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:111 #: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:111
msgid "Add bindings to {name}" msgid "Add bindings to {name}"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:137 #: src/renderer/components/+add-cluster/add-cluster.tsx:187
msgid "Add cluster" msgid "Add cluster"
msgstr "" msgstr ""
@ -146,6 +158,14 @@ msgstr ""
msgid "Age" msgid "Age"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:64
msgid "All clusters within workspace will be cleared as well"
msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:64
#~ msgid "All clusters within workspace will be cleared as well."
#~ msgstr ""
#: src/renderer/components/+custom-resources/crd-list.tsx:56 #: src/renderer/components/+custom-resources/crd-list.tsx:56
msgid "All groups" msgid "All groups"
msgstr "" msgstr ""
@ -220,6 +240,10 @@ msgstr ""
msgid "Apps" msgid "Apps"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:61
msgid "Are you sure you want remove workspace <0>{0}</0>?"
msgstr ""
#: src/renderer/components/+nodes/node-menu.tsx:41 #: src/renderer/components/+nodes/node-menu.tsx:41
msgid "Are you sure you want to drain <0>{nodeName}</0>?" msgid "Are you sure you want to drain <0>{nodeName}</0>?"
msgstr "" msgstr ""
@ -333,6 +357,7 @@ msgstr ""
msgid "CPU:" msgid "CPU:"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:119
#: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44 #: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44
#: src/renderer/components/dock/info-panel.tsx:97 #: src/renderer/components/dock/info-panel.tsx:97
#: src/renderer/components/wizard/wizard.tsx:130 #: src/renderer/components/wizard/wizard.tsx:130
@ -635,7 +660,7 @@ msgstr ""
msgid "Custom Resources" msgid "Custom Resources"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:110 #: src/renderer/components/+add-cluster/add-cluster.tsx:111
msgid "Custom.." msgid "Custom.."
msgstr "" msgstr ""
@ -677,6 +702,7 @@ msgstr ""
msgid "Definitions" msgid "Definitions"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:113
#: src/renderer/components/menu/menu-actions.tsx:84 #: src/renderer/components/menu/menu-actions.tsx:84
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
@ -692,6 +718,7 @@ msgid "Deployments"
msgstr "" msgstr ""
#: src/renderer/components/+apps-helm-charts/helm-charts.tsx:65 #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:65
#: src/renderer/components/+workspaces/workspaces.tsx:118
msgid "Description" msgid "Description"
msgstr "" msgstr ""
@ -743,6 +770,7 @@ msgstr ""
msgid "E-mail" msgid "E-mail"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:112
#: src/renderer/components/menu/menu-actions.tsx:80 #: src/renderer/components/menu/menu-actions.tsx:80
#: src/renderer/components/menu/menu-actions.tsx:81 #: src/renderer/components/menu/menu-actions.tsx:81
msgid "Edit" msgid "Edit"
@ -878,7 +906,7 @@ msgstr ""
msgid "HPA" msgid "HPA"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:128 #: src/renderer/components/+add-cluster/add-cluster.tsx:178
msgid "HTTP Proxy server. Used for communicating with Kubernetes API." msgid "HTTP Proxy server. Used for communicating with Kubernetes API."
msgstr "" msgstr ""
@ -1259,6 +1287,10 @@ msgstr ""
msgid "Mounts" msgid "Mounts"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:36
msgid "My Workspace"
msgstr ""
#: src/renderer/components/+apps-helm-charts/helm-charts.tsx:64 #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:64
#: src/renderer/components/+apps-releases/releases.tsx:87 #: src/renderer/components/+apps-releases/releases.tsx:87
#: src/renderer/components/+config-autoscalers/hpa-details.tsx:49 #: src/renderer/components/+config-autoscalers/hpa-details.tsx:49
@ -1301,6 +1333,7 @@ msgstr ""
#: src/renderer/components/+workloads-pods/pods.tsx:73 #: src/renderer/components/+workloads-pods/pods.tsx:73
#: src/renderer/components/+workloads-replicasets/replicasets.tsx:50 #: src/renderer/components/+workloads-replicasets/replicasets.tsx:50
#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:40 #: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:40
#: src/renderer/components/+workspaces/workspaces.tsx:117
#: src/renderer/components/dock/edit-resource.tsx:90 #: src/renderer/components/dock/edit-resource.tsx:90
#: src/renderer/components/kube-object/kube-object-meta.tsx:20 #: src/renderer/components/kube-object/kube-object-meta.tsx:20
msgid "Name" msgid "Name"
@ -1419,7 +1452,7 @@ msgstr ""
msgid "No issues found" msgid "No issues found"
msgstr "" msgstr ""
#: src/renderer/components/item-object-list/item-list-layout.tsx:196 #: src/renderer/components/item-object-list/item-list-layout.tsx:198
msgid "No items found." msgid "No items found."
msgstr "" msgstr ""
@ -1558,7 +1591,7 @@ msgstr ""
msgid "Persistent Volumes" msgid "Persistent Volumes"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:51 #: src/renderer/components/+add-cluster/add-cluster.tsx:52
msgid "Please select kubeconfig" msgid "Please select kubeconfig"
msgstr "" msgstr ""
@ -1643,7 +1676,7 @@ msgstr ""
msgid "Provisioner" msgid "Provisioner"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:122 #: src/renderer/components/+add-cluster/add-cluster.tsx:172
msgid "Proxy settings" msgid "Proxy settings"
msgstr "" msgstr ""
@ -1726,7 +1759,7 @@ msgstr ""
#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:60 #: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:60
#: src/renderer/components/cluster-manager/clusters-menu.tsx:60 #: src/renderer/components/cluster-manager/clusters-menu.tsx:60
#: src/renderer/components/cluster-manager/clusters-menu.tsx:64 #: src/renderer/components/cluster-manager/clusters-menu.tsx:64
#: src/renderer/components/item-object-list/item-list-layout.tsx:179 #: src/renderer/components/item-object-list/item-list-layout.tsx:181
#: src/renderer/components/menu/menu-actions.tsx:49 #: src/renderer/components/menu/menu-actions.tsx:49
#: src/renderer/components/menu/menu-actions.tsx:85 #: src/renderer/components/menu/menu-actions.tsx:85
msgid "Remove" msgid "Remove"
@ -1736,6 +1769,10 @@ msgstr ""
msgid "Remove <0>{releaseNames}</0>?" msgid "Remove <0>{releaseNames}</0>?"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:51
msgid "Remove Workspace"
msgstr ""
#: src/renderer/components/+config-secrets/add-secret-dialog.tsx:133 #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:133
msgid "Remove field" msgid "Remove field"
msgstr "" msgstr ""
@ -1752,7 +1789,7 @@ msgstr ""
msgid "Remove selected bindings from ${name}" msgid "Remove selected bindings from ${name}"
msgstr "" msgstr ""
#: src/renderer/components/item-object-list/item-list-layout.tsx:275 #: src/renderer/components/item-object-list/item-list-layout.tsx:277
msgid "Remove selected items ({0})" msgid "Remove selected items ({0})"
msgstr "" msgstr ""
@ -1811,7 +1848,7 @@ msgstr ""
msgid "Reset" msgid "Reset"
msgstr "" msgstr ""
#: src/renderer/components/item-object-list/item-list-layout.tsx:199 #: src/renderer/components/item-object-list/item-list-layout.tsx:201
msgid "Reset filters?" msgid "Reset filters?"
msgstr "" msgstr ""
@ -1937,6 +1974,7 @@ msgstr ""
#: src/renderer/components/+config-maps/config-map-details.tsx:78 #: src/renderer/components/+config-maps/config-map-details.tsx:78
#: src/renderer/components/+config-secrets/secret-details.tsx:97 #: src/renderer/components/+config-secrets/secret-details.tsx:97
#: src/renderer/components/+workloads-pods/pod-logs-dialog.tsx:216 #: src/renderer/components/+workloads-pods/pod-logs-dialog.tsx:216
#: src/renderer/components/+workspaces/workspaces.tsx:120
#: src/renderer/components/dock/edit-resource.tsx:88 #: src/renderer/components/dock/edit-resource.tsx:88
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -2013,7 +2051,7 @@ msgstr ""
msgid "Select a quota.." msgid "Select a quota.."
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:119 #: src/renderer/components/+add-cluster/add-cluster.tsx:169
msgid "Select kubeconfig" msgid "Select kubeconfig"
msgstr "" msgstr ""
@ -2416,6 +2454,10 @@ msgstr ""
msgid "Welcome!" msgid "Welcome!"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:79
msgid "What is a Workspace?"
msgstr ""
#: src/renderer/components/+cluster/cluster-metric-switchers.tsx:19 #: src/renderer/components/+cluster/cluster-metric-switchers.tsx:19
msgid "Worker" msgid "Worker"
msgstr "" msgstr ""
@ -2424,10 +2466,15 @@ msgstr ""
msgid "Workloads" msgid "Workloads"
msgstr "" msgstr ""
#: src/renderer/components/cluster-manager/bottom-bar.tsx:35 #: src/renderer/components/+workspaces/workspace-menu.tsx:39
#: src/renderer/components/+workspaces/workspaces.tsx:91
msgid "Workspaces" msgid "Workspaces"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:81
msgid "Workspaces are used to organize number of clusters into logical groups."
msgstr ""
#: src/renderer/components/input/input.validators.ts:10 #: src/renderer/components/input/input.validators.ts:10
msgid "Wrong email format" msgid "Wrong email format"
msgstr "" msgstr ""
@ -2461,7 +2508,7 @@ msgstr ""
msgid "ago" msgid "ago"
msgstr "" msgstr ""
#: src/renderer/components/item-object-list/item-list-layout.tsx:178 #: src/renderer/components/item-object-list/item-list-layout.tsx:180
msgid "and <0>{tailCount}</0> more" msgid "and <0>{tailCount}</0> more"
msgstr "" msgstr ""
@ -2538,7 +2585,7 @@ msgstr ""
msgid "{accountName} kubeconfig" msgid "{accountName} kubeconfig"
msgstr "" msgstr ""
#: src/renderer/components/item-object-list/item-list-layout.tsx:228 #: src/renderer/components/item-object-list/item-list-layout.tsx:230
msgid "{allItemsCount, plural, one {# item} other {# items}}" msgid "{allItemsCount, plural, one {# item} other {# items}}"
msgstr "" msgstr ""
@ -2554,7 +2601,7 @@ msgstr ""
msgid "{resourceType} <0>{resourceName}</0> updated." msgid "{resourceType} <0>{resourceName}</0> updated."
msgstr "" msgstr ""
#: src/renderer/components/item-object-list/item-list-layout.tsx:179 #: src/renderer/components/item-object-list/item-list-layout.tsx:181
msgid "{selectedCount, plural, one {<0>Remove item <1>{selectedNames}</1>?</0>} other {<2>Remove <3>{selectedCount}</3> items <4>{selectedNames}</4> {tail}?</2>}}" msgid "{selectedCount, plural, one {<0>Remove item <1>{selectedNames}</1>?</0>} other {<2>Remove <3>{selectedCount}</3> items <4>{selectedNames}</4> {tail}?</2>}}"
msgstr "" msgstr ""

View File

@ -26,15 +26,19 @@ msgstr ""
msgid "(as a percentage of request)" msgid "(as a percentage of request)"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:108
msgid "(current)"
msgstr ""
#: src/renderer/components/+network-policies/network-policy-details.tsx:88 #: src/renderer/components/+network-policies/network-policy-details.tsx:88
msgid "(empty) (Allowing the specific traffic to all pods in this namespace)" msgid "(empty) (Allowing the specific traffic to all pods in this namespace)"
msgstr "(Пусто) (Допускается трафик ко всем подам в данной области имен)" msgstr "(Пусто) (Допускается трафик ко всем подам в данной области имен)"
#: src/renderer/components/+add-cluster/add-cluster.tsx:104 #: src/renderer/components/+add-cluster/add-cluster.tsx:105
msgid "(new)" msgid "(new)"
msgstr "" msgstr ""
#: src/renderer/components/item-object-list/item-list-layout.tsx:224 #: src/renderer/components/item-object-list/item-list-layout.tsx:226
msgid "<0>Filtered</0>: {itemsCount} / {allItemsCount}" msgid "<0>Filtered</0>: {itemsCount} / {allItemsCount}"
msgstr "<0>Отфильтровано</0>: {itemsCount} / {allItemsCount}" msgstr "<0>Отфильтровано</0>: {itemsCount} / {allItemsCount}"
@ -46,10 +50,14 @@ msgstr "<0>Ваш браузер не поддерживает все возмо
msgid "<0>{0}</0> successfully created" msgid "<0>{0}</0> successfully created"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:126 #: src/renderer/components/+add-cluster/add-cluster.tsx:176
msgid "A HTTP proxy server URL (format: http://<address>:<port>)" msgid "A HTTP proxy server URL (format: http://<address>:<port>)"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:84
msgid "A single workspaces contains a list of clusters and their full configuration."
msgstr ""
#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:80 #: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:80
msgid "API Group" msgid "API Group"
msgstr "" msgstr ""
@ -72,7 +80,7 @@ msgstr "Название аккаунта"
msgid "Active" msgid "Active"
msgstr "Активный" msgstr "Активный"
#: src/renderer/components/+add-cluster/add-cluster.tsx:118 #: src/renderer/components/+add-cluster/add-cluster.tsx:168
#: src/renderer/components/cluster-manager/clusters-menu.tsx:99 #: src/renderer/components/cluster-manager/clusters-menu.tsx:99
msgid "Add Cluster" msgid "Add Cluster"
msgstr "" msgstr ""
@ -85,11 +93,15 @@ msgstr "Добавить Namespace"
msgid "Add RoleBinding" msgid "Add RoleBinding"
msgstr "Добавить привязку ролей" msgstr "Добавить привязку ролей"
#: src/renderer/components/+workspaces/workspaces.tsx:125
msgid "Add Workspace"
msgstr ""
#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:111 #: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:111
msgid "Add bindings to {name}" msgid "Add bindings to {name}"
msgstr "Добавить привязки к {name}" msgstr "Добавить привязки к {name}"
#: src/renderer/components/+add-cluster/add-cluster.tsx:137 #: src/renderer/components/+add-cluster/add-cluster.tsx:187
msgid "Add cluster" msgid "Add cluster"
msgstr "" msgstr ""
@ -147,6 +159,14 @@ msgstr "Аффинитеты"
msgid "Age" msgid "Age"
msgstr "Возраст" msgstr "Возраст"
#: src/renderer/components/+workspaces/workspaces.tsx:64
msgid "All clusters within workspace will be cleared as well"
msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:64
#~ msgid "All clusters within workspace will be cleared as well."
#~ msgstr ""
#: src/renderer/components/+custom-resources/crd-list.tsx:56 #: src/renderer/components/+custom-resources/crd-list.tsx:56
msgid "All groups" msgid "All groups"
msgstr "" msgstr ""
@ -221,6 +241,10 @@ msgstr "Применение.."
msgid "Apps" msgid "Apps"
msgstr "Приложения" msgstr "Приложения"
#: src/renderer/components/+workspaces/workspaces.tsx:61
msgid "Are you sure you want remove workspace <0>{0}</0>?"
msgstr ""
#: src/renderer/components/+nodes/node-menu.tsx:41 #: src/renderer/components/+nodes/node-menu.tsx:41
msgid "Are you sure you want to drain <0>{nodeName}</0>?" msgid "Are you sure you want to drain <0>{nodeName}</0>?"
msgstr "Выполнить команду drain для ноды <0>{nodeName}</0>?" msgstr "Выполнить команду drain для ноды <0>{nodeName}</0>?"
@ -334,6 +358,7 @@ msgstr "Запросы к процессору"
msgid "CPU:" msgid "CPU:"
msgstr "CPU:" msgstr "CPU:"
#: src/renderer/components/+workspaces/workspaces.tsx:119
#: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44 #: src/renderer/components/confirm-dialog/confirm-dialog.tsx:44
#: src/renderer/components/dock/info-panel.tsx:97 #: src/renderer/components/dock/info-panel.tsx:97
#: src/renderer/components/wizard/wizard.tsx:130 #: src/renderer/components/wizard/wizard.tsx:130
@ -640,7 +665,7 @@ msgstr "Текущие фильтры:"
msgid "Custom Resources" msgid "Custom Resources"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:110 #: src/renderer/components/+add-cluster/add-cluster.tsx:111
msgid "Custom.." msgid "Custom.."
msgstr "" msgstr ""
@ -682,6 +707,7 @@ msgstr ""
msgid "Definitions" msgid "Definitions"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:113
#: src/renderer/components/menu/menu-actions.tsx:84 #: src/renderer/components/menu/menu-actions.tsx:84
msgid "Delete" msgid "Delete"
msgstr "Удалить" msgstr "Удалить"
@ -697,6 +723,7 @@ msgid "Deployments"
msgstr "Deployments" msgstr "Deployments"
#: src/renderer/components/+apps-helm-charts/helm-charts.tsx:65 #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:65
#: src/renderer/components/+workspaces/workspaces.tsx:118
msgid "Description" msgid "Description"
msgstr "Описание" msgstr "Описание"
@ -748,6 +775,7 @@ msgstr "Продолжительность"
msgid "E-mail" msgid "E-mail"
msgstr "Эл. почта" msgstr "Эл. почта"
#: src/renderer/components/+workspaces/workspaces.tsx:112
#: src/renderer/components/menu/menu-actions.tsx:80 #: src/renderer/components/menu/menu-actions.tsx:80
#: src/renderer/components/menu/menu-actions.tsx:81 #: src/renderer/components/menu/menu-actions.tsx:81
msgid "Edit" msgid "Edit"
@ -888,7 +916,7 @@ msgstr "Группы"
msgid "HPA" msgid "HPA"
msgstr "HPA" msgstr "HPA"
#: src/renderer/components/+add-cluster/add-cluster.tsx:128 #: src/renderer/components/+add-cluster/add-cluster.tsx:178
msgid "HTTP Proxy server. Used for communicating with Kubernetes API." msgid "HTTP Proxy server. Used for communicating with Kubernetes API."
msgstr "" msgstr ""
@ -1269,6 +1297,10 @@ msgstr "Монтируемые секреты"
msgid "Mounts" msgid "Mounts"
msgstr "Установки" msgstr "Установки"
#: src/renderer/components/+workspaces/workspaces.tsx:36
msgid "My Workspace"
msgstr ""
#: src/renderer/components/+apps-helm-charts/helm-charts.tsx:64 #: src/renderer/components/+apps-helm-charts/helm-charts.tsx:64
#: src/renderer/components/+apps-releases/releases.tsx:87 #: src/renderer/components/+apps-releases/releases.tsx:87
#: src/renderer/components/+config-autoscalers/hpa-details.tsx:49 #: src/renderer/components/+config-autoscalers/hpa-details.tsx:49
@ -1311,6 +1343,7 @@ msgstr "Установки"
#: src/renderer/components/+workloads-pods/pods.tsx:73 #: src/renderer/components/+workloads-pods/pods.tsx:73
#: src/renderer/components/+workloads-replicasets/replicasets.tsx:50 #: src/renderer/components/+workloads-replicasets/replicasets.tsx:50
#: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:40 #: src/renderer/components/+workloads-statefulsets/statefulsets.tsx:40
#: src/renderer/components/+workspaces/workspaces.tsx:117
#: src/renderer/components/dock/edit-resource.tsx:90 #: src/renderer/components/dock/edit-resource.tsx:90
#: src/renderer/components/kube-object/kube-object-meta.tsx:20 #: src/renderer/components/kube-object/kube-object-meta.tsx:20
msgid "Name" msgid "Name"
@ -1437,7 +1470,7 @@ msgstr "Нет доступных фильтров."
msgid "No issues found" msgid "No issues found"
msgstr "Проблемы не обнаружены" msgstr "Проблемы не обнаружены"
#: src/renderer/components/item-object-list/item-list-layout.tsx:196 #: src/renderer/components/item-object-list/item-list-layout.tsx:198
msgid "No items found." msgid "No items found."
msgstr "Ничего не найдено." msgstr "Ничего не найдено."
@ -1576,7 +1609,7 @@ msgstr "Persistent Volume Claims"
msgid "Persistent Volumes" msgid "Persistent Volumes"
msgstr "Persistent Volumes" msgstr "Persistent Volumes"
#: src/renderer/components/+add-cluster/add-cluster.tsx:51 #: src/renderer/components/+add-cluster/add-cluster.tsx:52
msgid "Please select kubeconfig" msgid "Please select kubeconfig"
msgstr "" msgstr ""
@ -1661,7 +1694,7 @@ msgstr ""
msgid "Provisioner" msgid "Provisioner"
msgstr "Комиссия" msgstr "Комиссия"
#: src/renderer/components/+add-cluster/add-cluster.tsx:122 #: src/renderer/components/+add-cluster/add-cluster.tsx:172
msgid "Proxy settings" msgid "Proxy settings"
msgstr "" msgstr ""
@ -1744,7 +1777,7 @@ msgstr "Релизы"
#: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:60 #: src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx:60
#: src/renderer/components/cluster-manager/clusters-menu.tsx:60 #: src/renderer/components/cluster-manager/clusters-menu.tsx:60
#: src/renderer/components/cluster-manager/clusters-menu.tsx:64 #: src/renderer/components/cluster-manager/clusters-menu.tsx:64
#: src/renderer/components/item-object-list/item-list-layout.tsx:179 #: src/renderer/components/item-object-list/item-list-layout.tsx:181
#: src/renderer/components/menu/menu-actions.tsx:49 #: src/renderer/components/menu/menu-actions.tsx:49
#: src/renderer/components/menu/menu-actions.tsx:85 #: src/renderer/components/menu/menu-actions.tsx:85
msgid "Remove" msgid "Remove"
@ -1754,6 +1787,10 @@ msgstr "Удалить"
msgid "Remove <0>{releaseNames}</0>?" msgid "Remove <0>{releaseNames}</0>?"
msgstr "Удалить <0>{releaseNames}</0>?" msgstr "Удалить <0>{releaseNames}</0>?"
#: src/renderer/components/+workspaces/workspaces.tsx:51
msgid "Remove Workspace"
msgstr ""
#: src/renderer/components/+config-secrets/add-secret-dialog.tsx:133 #: src/renderer/components/+config-secrets/add-secret-dialog.tsx:133
msgid "Remove field" msgid "Remove field"
msgstr "Удалить поле" msgstr "Удалить поле"
@ -1770,7 +1807,7 @@ msgstr "Удалить выбранные связки <0>{0}</0>?"
msgid "Remove selected bindings from ${name}" msgid "Remove selected bindings from ${name}"
msgstr "Удалить выбранные связки из ${name}" msgstr "Удалить выбранные связки из ${name}"
#: src/renderer/components/item-object-list/item-list-layout.tsx:275 #: src/renderer/components/item-object-list/item-list-layout.tsx:277
msgid "Remove selected items ({0})" msgid "Remove selected items ({0})"
msgstr "Удалить выбранные элементы ({0})" msgstr "Удалить выбранные элементы ({0})"
@ -1829,7 +1866,7 @@ msgstr "Обязательное поле"
msgid "Reset" msgid "Reset"
msgstr "Сбросить" msgstr "Сбросить"
#: src/renderer/components/item-object-list/item-list-layout.tsx:199 #: src/renderer/components/item-object-list/item-list-layout.tsx:201
msgid "Reset filters?" msgid "Reset filters?"
msgstr "Сбросить фильтры?" msgstr "Сбросить фильтры?"
@ -1955,6 +1992,7 @@ msgstr ""
#: src/renderer/components/+config-maps/config-map-details.tsx:78 #: src/renderer/components/+config-maps/config-map-details.tsx:78
#: src/renderer/components/+config-secrets/secret-details.tsx:97 #: src/renderer/components/+config-secrets/secret-details.tsx:97
#: src/renderer/components/+workloads-pods/pod-logs-dialog.tsx:216 #: src/renderer/components/+workloads-pods/pod-logs-dialog.tsx:216
#: src/renderer/components/+workspaces/workspaces.tsx:120
#: src/renderer/components/dock/edit-resource.tsx:88 #: src/renderer/components/dock/edit-resource.tsx:88
msgid "Save" msgid "Save"
msgstr "Сохранить" msgstr "Сохранить"
@ -2031,7 +2069,7 @@ msgstr "Secrets"
msgid "Select a quota.." msgid "Select a quota.."
msgstr "Выберите квоту..." msgstr "Выберите квоту..."
#: src/renderer/components/+add-cluster/add-cluster.tsx:119 #: src/renderer/components/+add-cluster/add-cluster.tsx:169
msgid "Select kubeconfig" msgid "Select kubeconfig"
msgstr "" msgstr ""
@ -2434,6 +2472,10 @@ msgstr "Предупреждения: {0}"
msgid "Welcome!" msgid "Welcome!"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:79
msgid "What is a Workspace?"
msgstr ""
#: src/renderer/components/+cluster/cluster-metric-switchers.tsx:19 #: src/renderer/components/+cluster/cluster-metric-switchers.tsx:19
msgid "Worker" msgid "Worker"
msgstr "Рабочие" msgstr "Рабочие"
@ -2442,10 +2484,15 @@ msgstr "Рабочие"
msgid "Workloads" msgid "Workloads"
msgstr "Ресурсы" msgstr "Ресурсы"
#: src/renderer/components/cluster-manager/bottom-bar.tsx:35 #: src/renderer/components/+workspaces/workspace-menu.tsx:39
#: src/renderer/components/+workspaces/workspaces.tsx:91
msgid "Workspaces" msgid "Workspaces"
msgstr "" msgstr ""
#: src/renderer/components/+workspaces/workspaces.tsx:81
msgid "Workspaces are used to organize number of clusters into logical groups."
msgstr ""
#: src/renderer/components/input/input.validators.ts:10 #: src/renderer/components/input/input.validators.ts:10
msgid "Wrong email format" msgid "Wrong email format"
msgstr "Неверный формат электронной почты" msgstr "Неверный формат электронной почты"
@ -2479,7 +2526,7 @@ msgstr "Зона"
msgid "ago" msgid "ago"
msgstr "тому назад" msgstr "тому назад"
#: src/renderer/components/item-object-list/item-list-layout.tsx:178 #: src/renderer/components/item-object-list/item-list-layout.tsx:180
msgid "and <0>{tailCount}</0> more" msgid "and <0>{tailCount}</0> more"
msgstr "и <0>{tailCount}</0> ещё" msgstr "и <0>{tailCount}</0> ещё"
@ -2556,7 +2603,7 @@ msgstr "{0} недоступно"
msgid "{accountName} kubeconfig" msgid "{accountName} kubeconfig"
msgstr "{accountName} конфигурация" msgstr "{accountName} конфигурация"
#: src/renderer/components/item-object-list/item-list-layout.tsx:228 #: src/renderer/components/item-object-list/item-list-layout.tsx:230
msgid "{allItemsCount, plural, one {# item} other {# items}}" msgid "{allItemsCount, plural, one {# item} other {# items}}"
msgstr "{allItemsCount, plural, one {# элемент} few {# элемента} many {# элементов} other {# элементов}}" msgstr "{allItemsCount, plural, one {# элемент} few {# элемента} many {# элементов} other {# элементов}}"
@ -2572,7 +2619,7 @@ msgstr "{podName} логи"
msgid "{resourceType} <0>{resourceName}</0> updated." msgid "{resourceType} <0>{resourceName}</0> updated."
msgstr "{resourceType} <0>{resourceName}</0> обновлен." msgstr "{resourceType} <0>{resourceName}</0> обновлен."
#: src/renderer/components/item-object-list/item-list-layout.tsx:179 #: src/renderer/components/item-object-list/item-list-layout.tsx:181
msgid "{selectedCount, plural, one {<0>Remove item <1>{selectedNames}</1>?</0>} other {<2>Remove <3>{selectedCount}</3> items <4>{selectedNames}</4> {tail}?</2>}}" msgid "{selectedCount, plural, one {<0>Remove item <1>{selectedNames}</1>?</0>} other {<2>Remove <3>{selectedCount}</3> items <4>{selectedNames}</4> {tail}?</2>}}"
msgstr "" msgstr ""
"{\n" "{\n"

View File

@ -55,7 +55,7 @@ export class WorkspaceStore extends BaseStore<WorkspaceStoreModel> {
} }
@action @action
public saveWorkspace(workspace: Workspace) { saveWorkspace(workspace: Workspace) {
const id = workspace.id; const id = workspace.id;
const existingWorkspace = this.getById(id); const existingWorkspace = this.getById(id);
if (existingWorkspace) { if (existingWorkspace) {
@ -66,7 +66,7 @@ export class WorkspaceStore extends BaseStore<WorkspaceStoreModel> {
} }
@action @action
public removeWorkspace(id: WorkspaceId) { removeWorkspace(id: WorkspaceId) {
const workspace = this.getById(id); const workspace = this.getById(id);
if (!workspace) return; if (!workspace) return;
if (this.isDefault(id)) { if (this.isDefault(id)) {

View File

@ -1,115 +0,0 @@
<template>
<div class="content">
<ClosePageButton />
<div class="container-fluid lens-workspaces">
<div class="header sticky-top">
<h2><i class="material-icons">layers</i> Workspaces</h2>
</div>
<div class="row">
<div class="col-3" />
<div class="col-6">
<h2>New Workspace</h2>
<b-form @submit.prevent="createWorkspace">
<b-form-group
label="Name:"
label-for="input-name"
>
<b-form-input
id="input-name"
v-model="workspace.name"
trim
/>
</b-form-group>
<b-form-group
label="Description:"
label-for="input-description"
>
<b-form-input
id="input-description"
v-model="workspace.description"
trim
/>
</b-form-group>
<b-form-row>
<b-col>
<b-button variant="primary" type="submit">
Create Workspace
</b-button>
</b-col>
</b-form-row>
</b-form>
</div>
<div class="col-3" />
</div>
</div>
</div>
</template>
<script>
import { v4 as uuid } from "uuid";
import ClosePageButton from "@/_vue/components/common/ClosePageButton";
export default {
name: 'AddWorkspacePage',
components: {
ClosePageButton
},
data() {
return {
workspace: {
id: uuid(),
name: "",
description: ""
},
errors: {
name: null,
description: null
}
}
},
computed: {
},
methods: {
createWorkspace: function() {
this.$store.commit("addWorkspace", this.workspace)
this.$router.push({
name: "workspaces-page"
})
}
},
mounted: function() {
this.$store.commit("hideMenu");
},
destroyed: function() {
this.$store.commit("showMenu");
}
}
</script>
<style lang="scss" scoped>
#app > .main-view > .content {
left: 70px;
right: 70px;
}
h2 {
i {
position: relative;
top: 6px;
}
}
.lens-workspaces {
height: 100%;
overflow-y: scroll;
& input {
background-color: #252729 !important;
border: 0px !important;
color: #87909c !important;
}
.header {
padding-top: 15px;
}
}
</style>

View File

@ -1,125 +0,0 @@
<template>
<div class="content">
<ClosePageButton />
<div class="container-fluid lens-workspaces">
<div class="header sticky-top">
<h2><i class="material-icons">layers</i> Workspaces</h2>
</div>
<div class="row">
<div class="col-3" />
<div class="col-6">
<h2>Edit Workspace</h2>
<b-form @submit.prevent="updateWorkspace">
<b-form-group
label="Name:"
label-for="input-name"
>
<b-form-input
id="input-name"
v-model="workspace.name"
trim
/>
</b-form-group>
<b-form-group
label="Description:"
label-for="input-description"
>
<b-form-input
id="input-description"
v-model="workspace.description"
trim
/>
</b-form-group>
<b-form-row>
<b-col>
<b-button variant="primary" type="submit">
Save
</b-button>
<b-button v-if="workspace.id !== 'default'" v-b-modal.bv-modal-confirm>
Delete
</b-button>
<b-modal id="bv-modal-confirm" @ok="deleteWorkspace" ok-title="Delete" ok-variant="danger" title-class="confirm-header" hide-backdrop title="Confirm workspace delete">
<p>Are you sure you want to delete <strong>{{ workspace.name }}</strong> workspace from Lens?</p>
</b-modal>
</b-col>
</b-form-row>
</b-form>
</div>
<div class="col-3" />
</div>
</div>
</div>
</template>
<script>
import ClosePageButton from "@/_vue/components/common/ClosePageButton";
import { workspaceStore } from "../../../common/workspace-store"
export default {
name: 'EditWorkspacePage',
components: {
ClosePageButton
},
data() {
return {
errors: {
name: null,
description: null
}
}
},
computed: {
workspace: function() {
return workspaceStore.getById(this.$route.params.id)
}
},
methods: {
updateWorkspace: function() {
this.$store.commit("updateWorkspace", this.workspace)
this.$router.push({
name: "workspaces-page"
})
},
deleteWorkspace: async function() {
await this.$store.commit("removeWorkspace", this.workspace)
this.$router.push({
name: "workspaces-page"
})
}
},
mounted: function() {
this.$store.commit("hideMenu");
},
destroyed: function() {
this.$store.commit("showMenu");
}
}
</script>
<style lang="scss" scoped>
#app > .main-view > .content {
left: 70px;
right: 70px;
}
h2 {
i {
position: relative;
top: 6px;
}
}
.lens-workspaces {
height: 100%;
overflow-y: scroll;
& input {
background-color: #252729 !important;
border: 0px !important;
color: #87909c !important;
}
.header {
padding-top: 15px;
}
}
</style>

View File

@ -1,156 +0,0 @@
<template>
<div class="content">
<ClosePageButton />
<div class="container-fluid lens-workspaces">
<div class="header sticky-top">
<h2><i class="material-icons">layers</i> Workspaces</h2>
</div>
<div class="row">
<div class="col-9 main-content">
<b-list-group>
<b-list-group-item @click="editWorkspace(workspace)" href="#" v-for="workspace in workspaces" :key="workspace.id" :workspace="workspace">
<div class="d-flex w-100 justify-content-between">
<h5>{{ workspace.name }}</h5>
<small v-if="workspace.id !== 'default'">
<a href="#" title="Switch to workspace" v-b-tooltip.hover.right @click.prevent.stop="switchWorkspace(workspace)"><i class="material-icons">keyboard_arrow_right</i></a>
</small>
</div>
<p class="mb-1">
{{ workspace.description }}
</p>
</b-list-group-item>
</b-list-group>
<b-button variant="primary" href="#" @click.prevent="goAdd">
Add Workspace
</b-button>
</div>
<div class="col-3 help">
<h3>What is a Workspace?</h3>
<p>
Workspaces are used to organize number of clusters into logical groups. A single workspaces contains a list of clusters and their full configuration.
</p>
</div>
</div>
</div>
</div>
</template>
<script>
import ClosePageButton from "@/_vue/components/common/ClosePageButton";
export default {
name: 'WorkspacesPage',
components: {
ClosePageButton
},
data(){
return {
fields: [
{
key: "name",
label: "Name"
},
{
key: "description",
label: "Description"
}
],
errors: {
}
}
},
computed: {
workspaces: function() {
return this.$store.getters.workspaces;
}
},
methods: {
switchWorkspace: function(workspace) {
this.$store.commit("setCurrentWorkspace", workspace);
this.$store.dispatch("clearClusters");
this.$store.dispatch("refreshClusters", workspace);
this.$router.push({
name: "landing-page"
});
},
editWorkspace: function(workspace) {
this.$router.push({
name: "edit-workspace-page",
params: {
id: workspace.id
}
});
},
goAdd: function() {
this.$router.push({
name: "add-workspace-page"
});
}
},
mounted: function() {
this.$store.commit("hideMenu");
},
destroyed: function() {
this.$store.commit("showMenu");
}
}
</script>
<style lang="scss" scoped>
#app > .main-view > .content {
left: 70px;
right: 70px;
}
h2 {
i {
position: relative;
top: 6px;
}
}
.main-content {
padding-left: 40px;
padding-top: 20px;
}
.lens-workspaces {
height: 100%;
overflow-y: scroll;
& input {
background-color: #252729 !important;
border: 0px !important;
color: #87909c !important;
}
.header {
padding-top: 15px;
}
.list-group {
padding-bottom: 20px;
}
.list-group-item {
background-color: inherit;
color: var(--lens-text-color-light);
border: 0;
border-bottom: 1px solid var(--lens-pane-bg);
padding-left: 0;
h5 {
color: var(--lens-primary)
}
h5:hover {
text-decoration: underline;
}
small {
a {
color: var(--lens-text-color-light);
z-index: 100;
}
i {
opacity: 0.3;
&:hover {
opacity: 1;
}
}
}
}
}
</style>

View File

@ -1,3 +1,14 @@
.Workspaces { .Workspaces {
.workspace {
--flex-gap: #{$padding};
padding: $padding / 2;
&.default {
font-style: italic;
}
> .description {
flex: 1;
}
}
} }

View File

@ -1,43 +1,173 @@
import "./workspaces.scss" import "./workspaces.scss"
import React, { Fragment } from "react"; import React, { Fragment } from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { Trans } from "@lingui/macro"; import { computed, observable, toJS } from "mobx";
import { t, Trans } from "@lingui/macro";
import { WizardLayout } from "../layout/wizard-layout"; import { WizardLayout } from "../layout/wizard-layout";
import { workspaceStore } from "../../../common/workspace-store"; import { Workspace, WorkspaceId, workspaceStore } from "../../../common/workspace-store";
import { v4 as uuid } from "uuid"
import { _i18n } from "../../i18n";
import { ConfirmDialog } from "../confirm-dialog";
import { Icon } from "../icon";
import { Input } from "../input";
import { cssNames, prevDefault } from "../../utils";
import { Button } from "../button";
@observer @observer
export class Workspaces extends React.Component { export class Workspaces extends React.Component {
@observable editingWorkspaces = observable.map<WorkspaceId, Workspace>();
@computed get workspaces(): Workspace[] {
const allWorkspaces = new Map([
...workspaceStore.workspaces,
...this.editingWorkspaces,
]);
return Array.from(allWorkspaces.values());
}
renderInfo() { renderInfo() {
return ( return (
<Fragment> <Fragment>
<h2><Trans>What is a Workspace?</Trans></h2> <h2><Trans>What is a Workspace?</Trans></h2>
<p><Trans>Workspaces are used to organize number of clusters into logical groups.</Trans></p> <p className="info">
<p><Trans>A single workspaces contains a list of clusters and their full configuration.</Trans></p> <Trans>Workspaces are used to organize number of clusters into logical groups.</Trans>
</p>
<p>
<Trans>A single workspaces contains a list of clusters and their full configuration.</Trans>
</p>
</Fragment> </Fragment>
) )
} }
saveWorkspace = (id: WorkspaceId) => {
const draft = toJS(this.editingWorkspaces.get(id));
if (draft) {
this.clearEditing(id);
workspaceStore.saveWorkspace(draft);
}
}
addWorkspace = () => { addWorkspace = () => {
console.log('add workspace') const workspaceId = uuid();
this.editingWorkspaces.set(workspaceId, {
id: workspaceId,
name: _i18n._(t`My Workspace`),
description: "",
})
}
editWorkspace = (id: WorkspaceId) => {
const workspace = workspaceStore.getById(id);
this.editingWorkspaces.set(id, toJS(workspace));
}
clearEditing = (id: WorkspaceId) => {
this.editingWorkspaces.delete(id);
}
removeWorkspace = (id: WorkspaceId) => {
const workspace = workspaceStore.getById(id);
ConfirmDialog.open({
okButtonProps: {
label: _i18n._(t`Remove Workspace`),
primary: false,
accent: true,
},
ok: () => {
this.clearEditing(id);
workspaceStore.removeWorkspace(id);
},
message: (
<div className="confirm flex column gaps">
<p>
<Trans>Are you sure you want remove workspace <b>{workspace.name}</b>?</Trans>
</p>
<p className="info">
<Trans>All clusters within workspace will be cleared as well</Trans>
</p>
</div>
),
})
} }
render() { render() {
const { workspacesList, currentWorkspace } = workspaceStore;
return ( return (
<WizardLayout className="Workspaces" infoPanel={this.renderInfo()}> <WizardLayout className="Workspaces" infoPanel={this.renderInfo()}>
<h2> <h2>
<Trans>Workspaces</Trans> <Trans>Workspaces</Trans>
</h2> </h2>
<div className="workspaces"> <div className="items flex column gaps">
{workspacesList.map(({ id: workspaceId, name, description }) => { {this.workspaces.map(({ id: workspaceId, name, description }) => {
const isActive = workspaceStore.currentWorkspaceId === workspaceId;
const isDefault = workspaceStore.isDefault(workspaceId);
const isEditing = this.editingWorkspaces.has(workspaceId);
const editingWorkspace = this.editingWorkspaces.get(workspaceId);
const className = cssNames("workspace flex gaps align-center", {
active: isActive,
editing: isEditing,
default: isDefault,
});
return ( return (
<div key={workspaceId} className="workspace flex gaps"> <div key={workspaceId} className={className}>
<span className="name">{name}</span> {!isEditing && (
<span className="description">{description}</span> <Fragment>
<span className="name flex gaps align-center">
<a href="#" onClick={prevDefault(() => workspaceStore.setActive(workspaceId))}>{name}</a>
{isActive && <span> <Trans>(current)</Trans></span>}
</span>
<span className="description">{description}</span>
{!isDefault && (
<Fragment>
<Icon
material="edit"
tooltip={<Trans>Edit</Trans>}
onClick={() => this.editWorkspace(workspaceId)}
/>
<Icon
material="delete"
tooltip={<Trans>Delete</Trans>}
onClick={() => this.removeWorkspace(workspaceId)}
/>
</Fragment>
)}
</Fragment>
)}
{isEditing && (
<Fragment>
<Input
className="name"
placeholder={_i18n._(t`Name`)}
value={editingWorkspace.name}
onChange={v => editingWorkspace.name = v}
/>
<Input
className="description"
placeholder={_i18n._(t`Description`)}
value={editingWorkspace.description}
onChange={v => editingWorkspace.description = v}
/>
<Icon
material="cancel"
tooltip={<Trans>Cancel</Trans>}
onClick={() => this.clearEditing(workspaceId)}
/>
<Icon
material="save"
tooltip={<Trans>Save</Trans>}
onClick={() => this.saveWorkspace(workspaceId)}
/>
</Fragment>
)}
</div> </div>
) )
})} })}
</div> </div>
<Button
primary
className="box left"
label={<Trans>Add Workspace</Trans>}
onClick={this.addWorkspace}
/>
</WizardLayout> </WizardLayout>
); );
} }

View File

@ -5,7 +5,7 @@ import { observable } from "mobx";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { Trans } from "@lingui/macro"; import { Trans } from "@lingui/macro";
import { cssNames, noop, prevDefault } from "../../utils"; import { cssNames, noop, prevDefault } from "../../utils";
import { Button } from "../button"; import { Button, ButtonProps } from "../button";
import { Dialog, DialogProps } from "../dialog"; import { Dialog, DialogProps } from "../dialog";
import { Icon } from "../icon"; import { Icon } from "../icon";
@ -14,7 +14,9 @@ export interface IConfirmDialogParams {
labelOk?: ReactNode; labelOk?: ReactNode;
labelCancel?: ReactNode; labelCancel?: ReactNode;
message?: ReactNode; message?: ReactNode;
icon?: string; icon?: ReactNode;
okButtonProps?: Partial<ButtonProps>
cancelButtonProps?: Partial<ButtonProps>
} }
interface Props extends Partial<DialogProps> { interface Props extends Partial<DialogProps> {
@ -40,7 +42,7 @@ export class ConfirmDialog extends React.Component<Props> {
ok: noop, ok: noop,
labelOk: <Trans>Ok</Trans>, labelOk: <Trans>Ok</Trans>,
labelCancel: <Trans>Cancel</Trans>, labelCancel: <Trans>Cancel</Trans>,
icon: "warning", icon: <Icon big material="warning"/>,
}; };
get params(): IConfirmDialogParams { get params(): IConfirmDialogParams {
@ -67,18 +69,21 @@ export class ConfirmDialog extends React.Component<Props> {
render() { render() {
const { className, ...dialogProps } = this.props; const { className, ...dialogProps } = this.props;
const { icon, labelOk, labelCancel, message } = this.params; const {
icon, labelOk, labelCancel, message,
okButtonProps = {},
cancelButtonProps = {},
} = this.params;
return ( return (
<Dialog <Dialog
{...dialogProps} {...dialogProps}
className={cssNames("ConfirmDialog", className, icon)} className={cssNames("ConfirmDialog", className)}
isOpen={ConfirmDialog.isOpen} isOpen={ConfirmDialog.isOpen}
onClose={this.onClose} onClose={this.onClose}
close={this.close} close={this.close}
> >
<div className="confirm-content"> <div className="confirm-content">
<Icon big material={icon}/> {icon} {message}
{message}
</div> </div>
<div className="confirm-buttons"> <div className="confirm-buttons">
<Button <Button
@ -86,6 +91,7 @@ export class ConfirmDialog extends React.Component<Props> {
className="cancel" className="cancel"
label={labelCancel} label={labelCancel}
onClick={prevDefault(this.close)} onClick={prevDefault(this.close)}
{...cancelButtonProps}
/> />
<Button <Button
autoFocus primary autoFocus primary
@ -93,6 +99,7 @@ export class ConfirmDialog extends React.Component<Props> {
label={labelOk} label={labelOk}
onClick={prevDefault(this.ok)} onClick={prevDefault(this.ok)}
waiting={this.isSaving} waiting={this.isSaving}
{...okButtonProps}
/> />
</div> </div>
</Dialog> </Dialog>