@dovetail-v2/refine 0.0.32 → 0.0.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{MonacoYamlDiffEditor-6563a22b.js → MonacoYamlDiffEditor-cf5e1ebf.js} +3 -3
- package/dist/{MonacoYamlEditor-a6e20f8c.js → MonacoYamlEditor-816f672c.js} +3 -3
- package/dist/{index-3d05d4c7.js → index-57b8cbed.js} +11048 -7588
- package/dist/refine.js +158 -127
- package/dist/refine.umd.cjs +11248 -7788
- package/dist/style.css +69 -43
- package/lib/src/App.js +91 -0
- package/lib/src/Dovetail.js +45 -0
- package/lib/src/components/Breadcrumb/index.js +20 -0
- package/lib/src/components/ConditionsTable/ConditionsTable.js +56 -0
- package/lib/src/components/ConditionsTable/index.js +1 -0
- package/lib/src/components/CreateButton/index.js +10 -0
- package/lib/src/components/CronJobDropdown/index.js +26 -0
- package/lib/src/components/CronjobJobsTable/index.js +49 -0
- package/lib/src/components/DeleteButton/index.js +13 -0
- package/lib/src/components/DeleteManyButton/index.js +16 -0
- package/lib/src/components/DrawerShow/DrawerShow.js +13 -0
- package/lib/src/components/DrawerShow/index.js +1 -0
- package/lib/src/components/EditButton/index.js +13 -0
- package/lib/src/components/EditField/index.js +47 -0
- package/lib/src/components/ErrorContent/index.js +36 -0
- package/lib/src/components/EventsTable/EventsTable.js +59 -0
- package/lib/src/components/EventsTable/index.js +1 -0
- package/lib/src/components/Form/FormModal.d.ts +9 -0
- package/lib/src/components/Form/KeyValueListWidget.js +56 -0
- package/lib/src/components/Form/MetadataForm.js +9 -0
- package/lib/src/components/Form/NameInputWidget.js +50 -0
- package/lib/src/components/Form/NamespaceSelectWidget.js +21 -0
- package/lib/src/components/Form/RefineFormContent.d.ts +12 -0
- package/lib/src/components/Form/RefineFormPage.d.ts +7 -0
- package/lib/src/components/Form/YamlForm.d.ts +26 -0
- package/lib/src/components/Form/index.d.ts +7 -4
- package/lib/src/components/Form/index.js +4 -0
- package/lib/src/components/Form/type.d.ts +17 -0
- package/lib/src/components/Form/useRefineForm.d.ts +10 -0
- package/lib/src/components/Form/useYamlForm.d.ts +49 -0
- package/lib/src/components/Form/widget.js +1 -0
- package/lib/src/components/FormErrorAlert/index.d.ts +1 -0
- package/lib/src/components/FormErrorAlert/index.js +8 -0
- package/lib/src/components/FormLayout/index.js +21 -0
- package/lib/src/components/FormModal/index.js +51 -0
- package/lib/src/components/FormWidgets/KeyValueListWidget.d.ts +6 -0
- package/lib/src/components/FormWidgets/MetadataForm.d.ts +2 -0
- package/lib/src/components/FormWidgets/NameInputWidget.d.ts +51 -0
- package/lib/src/components/FormWidgets/NamespaceSelectWidget.d.ts +9 -0
- package/lib/src/components/FormWidgets/index.d.ts +4 -0
- package/lib/src/components/FormWidgets/widget.d.ts +5 -0
- package/lib/src/components/ImageNames/index.d.ts +1 -0
- package/lib/src/components/ImageNames/index.js +14 -0
- package/lib/src/components/IngressRulesComponent/index.js +11 -0
- package/lib/src/components/IngressRulesTable/IngressRulesTable.js +51 -0
- package/lib/src/components/IngressRulesTable/index.js +1 -0
- package/lib/src/components/K8sDropdown/index.js +31 -0
- package/lib/src/components/KeyValue/KeyValue.d.ts +5 -5
- package/lib/src/components/KeyValue/KeyValue.js +27 -0
- package/lib/src/components/KeyValue/KeyValueAnnotation.d.ts +6 -0
- package/lib/src/components/KeyValue/KeyValueSecret.d.ts +5 -0
- package/lib/src/components/KeyValue/index.d.ts +2 -0
- package/lib/src/components/KeyValue/index.js +1 -0
- package/lib/src/components/KeyValueData/index.js +50 -0
- package/lib/src/components/Layout/index.js +39 -0
- package/lib/src/components/ListPage/index.d.ts +0 -1
- package/lib/src/components/ListPage/index.js +25 -0
- package/lib/src/components/Menu/index.js +36 -0
- package/lib/src/components/NamespacesFilter/index.d.ts +6 -2
- package/lib/src/components/NamespacesFilter/index.js +34 -0
- package/lib/src/components/NetworkPolicyRulesTable/NetworkPolicyRulesTable.js +77 -0
- package/lib/src/components/NetworkPolicyRulesTable/index.js +1 -0
- package/lib/src/components/PageShow/PageShow.js +11 -0
- package/lib/src/components/PageShow/index.js +1 -0
- package/lib/src/components/PodContainersTable/PodContainersTable.js +78 -0
- package/lib/src/components/PodContainersTable/index.js +1 -0
- package/lib/src/components/PodLog/index.js +136 -0
- package/lib/src/components/PodSelectorTable/index.d.ts +6 -0
- package/lib/src/components/PortsTable/index.d.ts +7 -0
- package/lib/src/components/ReferenceLink/index.js +17 -0
- package/lib/src/components/RefineForm/RefineFormContent.d.ts +10 -0
- package/lib/src/components/RefineForm/RefineFormModal.d.ts +8 -0
- package/lib/src/components/RefineForm/RefineFormPage.d.ts +7 -0
- package/lib/src/components/RefineForm/index.d.ts +3 -0
- package/lib/src/components/RefineForm/type.d.ts +20 -0
- package/lib/src/components/RefineForm/useRefineForm.d.ts +10 -0
- package/lib/src/components/ReplicasDropdown/index.d.ts +9 -0
- package/lib/src/components/ResourceCRUD/ResourceCRUD.js +15 -0
- package/lib/src/components/ResourceCRUD/create/index.js +13 -0
- package/lib/src/components/ResourceCRUD/index.js +4 -0
- package/lib/src/components/ResourceCRUD/list/index.d.ts +3 -7
- package/lib/src/components/ResourceCRUD/list/index.js +19 -0
- package/lib/src/components/ResourceCRUD/show/index.d.ts +3 -7
- package/lib/src/components/ResourceCRUD/show/index.js +6 -0
- package/lib/src/components/ResourceLink/index.js +21 -0
- package/lib/src/components/ResourceUsageBar/index.js +81 -0
- package/lib/src/components/Separator/index.js +11 -0
- package/lib/src/components/ServiceComponents/index.d.ts +4 -1
- package/lib/src/components/ShowContent/ShowContent.d.ts +5 -0
- package/lib/src/components/ShowContent/ShowContent.js +157 -0
- package/lib/src/components/ShowContent/fields.d.ts +17 -11
- package/lib/src/components/ShowContent/fields.js +157 -0
- package/lib/src/components/ShowContent/groups.d.ts +11 -3
- package/lib/src/components/ShowContent/index.js +2 -0
- package/lib/src/components/ShowContent/tabs.d.ts +3 -7
- package/lib/src/components/StateTag/StateTag.d.ts +1 -0
- package/lib/src/components/StateTag/StateTag.js +22 -0
- package/lib/src/components/StateTag/index.js +1 -0
- package/lib/src/components/Table/ErrorContent.js +36 -0
- package/lib/src/components/Table/TableToolBar.d.ts +1 -1
- package/lib/src/components/Table/TableToolBar.js +14 -0
- package/lib/src/components/Table/TableWidgets.js +28 -0
- package/lib/src/components/Table/index.js +69 -0
- package/lib/src/components/Tags/index.js +22 -0
- package/lib/src/components/Time/index.js +14 -0
- package/lib/src/components/ValueDisplay/index.d.ts +8 -0
- package/lib/src/components/WorkloadDropdown/index.d.ts +2 -2
- package/lib/src/components/WorkloadDropdown/index.js +24 -0
- package/lib/src/components/WorkloadPodsTable/WorkloadPodsTable.js +39 -0
- package/lib/src/components/WorkloadPodsTable/index.js +1 -0
- package/lib/src/components/WorkloadReplicas/index.d.ts +11 -1
- package/lib/src/components/WorkloadReplicas/index.js +50 -0
- package/lib/src/components/YamlEditor/MonacoYamlDiffEditor.js +34 -0
- package/lib/src/components/YamlEditor/MonacoYamlEditor.js +149 -0
- package/lib/src/components/YamlEditor/YamlEditorComponent.js +90 -0
- package/lib/src/components/YamlEditor/index.js +1 -0
- package/lib/src/components/YamlEditor/style.js +102 -0
- package/lib/src/components/YamlEditor/yaml.worker.js +1 -0
- package/lib/src/components/YamlForm/index.js +61 -0
- package/lib/src/components/index.d.ts +2 -3
- package/lib/src/components/index.js +38 -0
- package/lib/src/constants/index.js +2 -0
- package/lib/src/constants/k8s.d.ts +289 -89
- package/lib/src/constants/k8s.js +203 -0
- package/lib/src/constants/state.d.ts +2 -1
- package/lib/src/constants/state.js +15 -0
- package/lib/src/contexts/component.js +3 -0
- package/lib/src/contexts/configs.js +3 -0
- package/lib/src/contexts/global-store.js +3 -0
- package/lib/src/contexts/index.js +3 -0
- package/lib/src/hooks/index.d.ts +1 -1
- package/lib/src/hooks/index.js +7 -0
- package/lib/src/hooks/useDeleteModal/index.js +1 -0
- package/lib/src/hooks/useDeleteModal/useDeleteManyModal.js +31 -0
- package/lib/src/hooks/useDeleteModal/useDeleteModal.js +38 -0
- package/lib/src/hooks/useDownloadYAML.js +10 -0
- package/lib/src/hooks/useEagleForm.js +177 -0
- package/lib/src/hooks/useEagleTable/columns.d.ts +7 -2
- package/lib/src/hooks/useEagleTable/columns.js +246 -0
- package/lib/src/hooks/useEagleTable/index.js +2 -0
- package/lib/src/hooks/useEagleTable/useEagleTable.js +63 -0
- package/lib/src/hooks/useEdit.js +19 -0
- package/lib/src/hooks/useGlobalStore.js +5 -0
- package/lib/src/hooks/useK8sYamlEditor.js +37 -0
- package/lib/src/hooks/useOpenForm.d.ts +3 -0
- package/lib/src/hooks/useOpenForm.js +43 -0
- package/lib/src/hooks/useSchema.js +37 -0
- package/lib/src/hooks/useSubmitForm.js +42 -0
- package/lib/src/i18n.d.ts +140 -13
- package/lib/src/i18n.js +19 -0
- package/lib/src/index.js +13 -0
- package/lib/src/locales/en-US/dovetail.json +18 -0
- package/lib/src/locales/en-US/index.d.ts +98 -1
- package/lib/src/locales/en-US/index.js +4 -0
- package/lib/src/locales/index.js +6 -0
- package/lib/src/locales/zh-CN/dovetail.json +91 -0
- package/lib/src/locales/zh-CN/index.d.ts +42 -12
- package/lib/src/locales/zh-CN/index.js +4 -0
- package/lib/src/main.js +12 -0
- package/lib/src/models/cronjob-model.js +32 -0
- package/lib/src/models/daemonset-model.d.ts +3 -1
- package/lib/src/models/daemonset-model.js +17 -0
- package/lib/src/models/deployment-model.d.ts +1 -1
- package/lib/src/models/deployment-model.js +17 -0
- package/lib/src/models/event-model.js +11 -0
- package/lib/src/models/index.js +14 -0
- package/lib/src/models/ingress-model.d.ts +5 -3
- package/lib/src/models/ingress-model.js +24 -0
- package/lib/src/models/job-model.js +56 -0
- package/lib/src/models/network-policy-model.js +10 -0
- package/lib/src/models/pod-metrics-model.js +34 -0
- package/lib/src/models/pod-model.js +78 -0
- package/lib/src/models/resource-model.js +34 -0
- package/lib/src/models/service-model.js +17 -0
- package/lib/src/models/statefulset-model.d.ts +1 -1
- package/lib/src/models/statefulset-model.js +17 -0
- package/lib/src/models/types/index.js +1 -0
- package/lib/src/models/types/metric.js +1 -0
- package/lib/src/models/workload-base-model.js +22 -0
- package/lib/src/models/workload-model.js +51 -0
- package/lib/src/pages/configmaps/index.js +15 -0
- package/lib/src/pages/cronjobs/create/index.js +6 -0
- package/lib/src/pages/cronjobs/index.js +3 -0
- package/lib/src/pages/cronjobs/list/index.js +42 -0
- package/lib/src/pages/cronjobs/show/index.js +16 -0
- package/lib/src/pages/daemonsets/create/index.js +6 -0
- package/lib/src/pages/daemonsets/index.js +3 -0
- package/lib/src/pages/daemonsets/list/index.js +32 -0
- package/lib/src/pages/daemonsets/show/index.js +16 -0
- package/lib/src/pages/deployments/create/index.js +7 -0
- package/lib/src/pages/deployments/index.d.ts +0 -1
- package/lib/src/pages/deployments/index.js +3 -0
- package/lib/src/pages/deployments/list/index.js +26 -0
- package/lib/src/pages/deployments/show/index.js +16 -0
- package/lib/src/pages/ingresses/index.js +26 -0
- package/lib/src/pages/jobs/index.js +34 -0
- package/lib/src/pages/networkPolicies/index.js +67 -0
- package/lib/src/pages/pods/create/index.js +6 -0
- package/lib/src/pages/pods/index.js +3 -0
- package/lib/src/pages/pods/list/index.js +81 -0
- package/lib/src/pages/pods/show/index.js +54 -0
- package/lib/src/pages/secrets/index.js +15 -0
- package/lib/src/pages/services/index.js +26 -0
- package/lib/src/pages/statefulsets/create/index.js +6 -0
- package/lib/src/pages/statefulsets/index.js +3 -0
- package/lib/src/pages/statefulsets/list/index.js +26 -0
- package/lib/src/pages/statefulsets/show/index.js +16 -0
- package/lib/src/plugins/index.js +3 -0
- package/lib/src/plugins/model-plugin.js +46 -0
- package/lib/src/plugins/relation-plugin.js +81 -0
- package/lib/src/plugins/type.js +1 -0
- package/lib/src/providers/index.js +1 -0
- package/lib/src/providers/router-provider/index.js +100 -0
- package/lib/src/types/index.js +1 -0
- package/lib/src/types/resource.d.ts +12 -3
- package/lib/src/types/resource.js +12 -0
- package/lib/src/utils/addId.js +8 -0
- package/lib/src/utils/download.js +9 -0
- package/lib/src/utils/error.js +53 -0
- package/lib/src/utils/form.js +9 -0
- package/lib/src/utils/k8s.js +6 -0
- package/lib/src/utils/labels.js +15 -0
- package/lib/src/utils/match-selector.js +12 -0
- package/lib/src/utils/openapi.js +33 -0
- package/lib/src/utils/schema.js +117 -0
- package/lib/src/utils/selector.js +12 -0
- package/lib/src/utils/string.js +6 -0
- package/lib/src/utils/time.js +46 -0
- package/lib/src/utils/unit.js +69 -0
- package/lib/src/utils/yaml.js +44 -0
- package/lib/vite.config.js +60 -0
- package/package.json +6 -4
- package/lib/src/components/ModalContextProvider/index.d.ts +0 -12
- package/lib/src/hooks/useModal.d.ts +0 -0
- package/lib/src/model/cronjob-model.d.ts +0 -9
- package/lib/src/model/index.d.ts +0 -6
- package/lib/src/model/job-model.d.ts +0 -10
- package/lib/src/model/pod-metrics-model.d.ts +0 -7
- package/lib/src/model/pod-model.d.ts +0 -15
- package/lib/src/model/resource-model.d.ts +0 -17
- package/lib/src/model/workload-model.d.ts +0 -17
- package/lib/src/types/metric.d.ts +0 -25
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
export const BASE_INIT_VALUE = {
|
|
2
|
+
metadata: {
|
|
3
|
+
name: '',
|
|
4
|
+
namespace: 'default',
|
|
5
|
+
annotations: {},
|
|
6
|
+
labels: {},
|
|
7
|
+
},
|
|
8
|
+
};
|
|
9
|
+
const DEFAULT_MATCH_LABEL = 'sks.user.kubesmart.smtx.io/app';
|
|
10
|
+
const BASE_CONTAINER_INIT_VALUE = {
|
|
11
|
+
name: 'container-0',
|
|
12
|
+
imagePullPolicy: 'Always',
|
|
13
|
+
image: '',
|
|
14
|
+
};
|
|
15
|
+
const BASE_WORKLOAD_SPEC_INIT_VALUE = {
|
|
16
|
+
affinity: {},
|
|
17
|
+
imagePullSecrets: [],
|
|
18
|
+
initContainers: [],
|
|
19
|
+
volumes: [],
|
|
20
|
+
};
|
|
21
|
+
export const DEPLOYMENT_INIT_VALUE = {
|
|
22
|
+
apiVersion: 'apps/v1',
|
|
23
|
+
kind: 'Deployment',
|
|
24
|
+
...BASE_INIT_VALUE,
|
|
25
|
+
spec: {
|
|
26
|
+
replicas: 1,
|
|
27
|
+
selector: {
|
|
28
|
+
matchLabels: {
|
|
29
|
+
[DEFAULT_MATCH_LABEL]: '',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
template: {
|
|
33
|
+
metadata: {
|
|
34
|
+
labels: {
|
|
35
|
+
[DEFAULT_MATCH_LABEL]: '',
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
spec: {
|
|
39
|
+
containers: [BASE_CONTAINER_INIT_VALUE],
|
|
40
|
+
restartPolicy: 'Always',
|
|
41
|
+
...BASE_WORKLOAD_SPEC_INIT_VALUE,
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
export const CRONJOB_INIT_VALUE = {
|
|
47
|
+
apiVersion: 'batch/v1',
|
|
48
|
+
kind: 'CronJob',
|
|
49
|
+
...BASE_INIT_VALUE,
|
|
50
|
+
spec: {
|
|
51
|
+
schedule: '',
|
|
52
|
+
jobTemplate: {
|
|
53
|
+
metadata: {
|
|
54
|
+
labels: {},
|
|
55
|
+
},
|
|
56
|
+
spec: {
|
|
57
|
+
template: {
|
|
58
|
+
spec: {
|
|
59
|
+
containers: [BASE_CONTAINER_INIT_VALUE],
|
|
60
|
+
restartPolicy: 'Never',
|
|
61
|
+
...BASE_WORKLOAD_SPEC_INIT_VALUE,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
export const DAEMONSET_INIT_VALUE = {
|
|
69
|
+
apiVersion: 'apps/v1',
|
|
70
|
+
kind: 'DaemonSet',
|
|
71
|
+
...BASE_INIT_VALUE,
|
|
72
|
+
spec: {
|
|
73
|
+
replicas: 1,
|
|
74
|
+
selector: {
|
|
75
|
+
matchLabels: {
|
|
76
|
+
[DEFAULT_MATCH_LABEL]: '',
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
template: {
|
|
80
|
+
metadata: {
|
|
81
|
+
labels: {
|
|
82
|
+
[DEFAULT_MATCH_LABEL]: '',
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
spec: {
|
|
86
|
+
containers: [BASE_CONTAINER_INIT_VALUE],
|
|
87
|
+
restartPolicy: 'Always',
|
|
88
|
+
...BASE_WORKLOAD_SPEC_INIT_VALUE,
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
export const JOB_INIT_VALUE = {
|
|
94
|
+
apiVersion: 'batch/v1',
|
|
95
|
+
kind: 'Job',
|
|
96
|
+
...BASE_INIT_VALUE,
|
|
97
|
+
spec: {
|
|
98
|
+
replicas: 1,
|
|
99
|
+
selector: {
|
|
100
|
+
matchLabels: {},
|
|
101
|
+
},
|
|
102
|
+
template: {
|
|
103
|
+
metadata: {
|
|
104
|
+
labels: {},
|
|
105
|
+
},
|
|
106
|
+
spec: {
|
|
107
|
+
containers: [BASE_CONTAINER_INIT_VALUE],
|
|
108
|
+
restartPolicy: 'Never',
|
|
109
|
+
...BASE_WORKLOAD_SPEC_INIT_VALUE,
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
export const STATEFULSET_INIT_VALUE = {
|
|
115
|
+
apiVersion: 'apps/v1',
|
|
116
|
+
kind: 'StatefulSet',
|
|
117
|
+
...BASE_INIT_VALUE,
|
|
118
|
+
spec: {
|
|
119
|
+
replicas: 1,
|
|
120
|
+
selector: {
|
|
121
|
+
matchLabels: {
|
|
122
|
+
[DEFAULT_MATCH_LABEL]: '',
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
template: {
|
|
126
|
+
metadata: {
|
|
127
|
+
labels: {
|
|
128
|
+
[DEFAULT_MATCH_LABEL]: '',
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
spec: {
|
|
132
|
+
containers: [BASE_CONTAINER_INIT_VALUE],
|
|
133
|
+
restartPolicy: 'Always',
|
|
134
|
+
...BASE_WORKLOAD_SPEC_INIT_VALUE,
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
export const POD_INIT_VALUE = {
|
|
140
|
+
apiVersion: 'v1',
|
|
141
|
+
kind: 'Pod',
|
|
142
|
+
...BASE_INIT_VALUE,
|
|
143
|
+
spec: {
|
|
144
|
+
containers: [BASE_CONTAINER_INIT_VALUE],
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
export const SERVICE_INIT_VALUE = {
|
|
148
|
+
apiVersion: 'v1',
|
|
149
|
+
kind: 'Service',
|
|
150
|
+
...BASE_INIT_VALUE,
|
|
151
|
+
spec: {
|
|
152
|
+
selector: {},
|
|
153
|
+
clusterIP: null,
|
|
154
|
+
ports: [
|
|
155
|
+
{
|
|
156
|
+
name: '',
|
|
157
|
+
port: null,
|
|
158
|
+
protocol: 'TCP',
|
|
159
|
+
targetPort: null,
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
sessionAffinity: 'None',
|
|
163
|
+
type: 'ClusterIP',
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
export const INGRESS_INIT_VALUE = {
|
|
167
|
+
apiVersion: 'networking.k8s.io/v1',
|
|
168
|
+
kind: 'Ingress',
|
|
169
|
+
...BASE_INIT_VALUE,
|
|
170
|
+
spec: {
|
|
171
|
+
rules: [
|
|
172
|
+
{
|
|
173
|
+
host: 'example.com',
|
|
174
|
+
http: {
|
|
175
|
+
paths: [
|
|
176
|
+
{
|
|
177
|
+
path: '/testpath',
|
|
178
|
+
pathType: 'Prefix',
|
|
179
|
+
backend: {
|
|
180
|
+
service: {
|
|
181
|
+
name: 'test',
|
|
182
|
+
port: {
|
|
183
|
+
number: 80,
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
export const NETWORK_POLICY_INIT_VALUE = {
|
|
195
|
+
apiVersion: 'networking.k8s.io/v1',
|
|
196
|
+
kind: 'NetworkPolicy',
|
|
197
|
+
...BASE_INIT_VALUE,
|
|
198
|
+
spec: {
|
|
199
|
+
podSelector: {},
|
|
200
|
+
policyTypes: [],
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
export const TIMESTAMP_LABEL = 'sks.user.kubesmart.smtx.io/timestamp';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export var WorkloadState;
|
|
2
|
+
(function (WorkloadState) {
|
|
3
|
+
WorkloadState["UPDATEING"] = "updating";
|
|
4
|
+
WorkloadState["READY"] = "ready";
|
|
5
|
+
WorkloadState["COMPLETED"] = "completed";
|
|
6
|
+
WorkloadState["FAILED"] = "failed";
|
|
7
|
+
WorkloadState["SUSPENDED"] = "suspended";
|
|
8
|
+
WorkloadState["RUNNING"] = "running";
|
|
9
|
+
WorkloadState["SUCCEEDED"] = "succeeded";
|
|
10
|
+
WorkloadState["UNKNOWN"] = "unknown";
|
|
11
|
+
WorkloadState["TERMINATING"] = "terminating";
|
|
12
|
+
WorkloadState["PENDING"] = "pending";
|
|
13
|
+
WorkloadState["WAITING"] = "waiting";
|
|
14
|
+
})(WorkloadState || (WorkloadState = {}));
|
|
15
|
+
// export type DeploymentState = WorkloadState.UPDATEING | WorkloadState.READY;
|
package/lib/src/hooks/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from './useEagleForm';
|
|
2
1
|
export * from './useSchema';
|
|
3
2
|
export * from './useDeleteModal';
|
|
4
3
|
export * from './useEagleTable';
|
|
5
4
|
export * from './useDownloadYAML';
|
|
6
5
|
export * from './useEdit';
|
|
7
6
|
export * from './useGlobalStore';
|
|
7
|
+
export * from './useOpenForm';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useDeleteModal';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useDeleteMany } from '@refinedev/core';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { useD2Translation } from '../../i18n';
|
|
4
|
+
export const useDeleteManyModal = (resource, ids) => {
|
|
5
|
+
const { mutate } = useDeleteMany();
|
|
6
|
+
const [visible, setVisible] = useState(false);
|
|
7
|
+
const { t } = useD2Translation();
|
|
8
|
+
const modalProps = {
|
|
9
|
+
title: t('dovetail.delete'),
|
|
10
|
+
okText: t('dovetail.delete'),
|
|
11
|
+
okButtonProps: {
|
|
12
|
+
danger: true,
|
|
13
|
+
},
|
|
14
|
+
cancelText: t('dovetail.cancel'),
|
|
15
|
+
children: t('dovetail.confirm_delete_text', {
|
|
16
|
+
target: ids,
|
|
17
|
+
interpolation: { escapeValue: false },
|
|
18
|
+
}),
|
|
19
|
+
onOk() {
|
|
20
|
+
mutate({
|
|
21
|
+
resource,
|
|
22
|
+
ids,
|
|
23
|
+
});
|
|
24
|
+
setVisible(false);
|
|
25
|
+
},
|
|
26
|
+
onCancel() {
|
|
27
|
+
setVisible(false);
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
return { modalProps, visible, setVisible };
|
|
31
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useDelete, useNavigation } from '@refinedev/core';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { useD2Translation } from '../../i18n';
|
|
4
|
+
export const useDeleteModal = (resource) => {
|
|
5
|
+
const { mutate } = useDelete();
|
|
6
|
+
const [visible, setVisible] = useState(false);
|
|
7
|
+
const navigation = useNavigation();
|
|
8
|
+
const [id, setId] = useState('');
|
|
9
|
+
const { t } = useD2Translation();
|
|
10
|
+
const modalProps = {
|
|
11
|
+
title: t('dovetail.delete'),
|
|
12
|
+
okText: t('dovetail.delete'),
|
|
13
|
+
okButtonProps: {
|
|
14
|
+
danger: true,
|
|
15
|
+
},
|
|
16
|
+
cancelText: t('dovetail.cancel'),
|
|
17
|
+
children: t('dovetail.confirm_delete_text', {
|
|
18
|
+
target: id,
|
|
19
|
+
interpolation: { escapeValue: false },
|
|
20
|
+
}),
|
|
21
|
+
onOk() {
|
|
22
|
+
mutate({
|
|
23
|
+
resource,
|
|
24
|
+
id,
|
|
25
|
+
});
|
|
26
|
+
setVisible(false);
|
|
27
|
+
navigation.list(resource);
|
|
28
|
+
},
|
|
29
|
+
onCancel() {
|
|
30
|
+
setVisible(false);
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
function openDeleteConfirmModal(id) {
|
|
34
|
+
setId(id);
|
|
35
|
+
setVisible(true);
|
|
36
|
+
}
|
|
37
|
+
return { modalProps, visible, openDeleteConfirmModal };
|
|
38
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import yaml from 'js-yaml';
|
|
2
|
+
import { download } from '../utils/download';
|
|
3
|
+
export function useDownloadYAML() {
|
|
4
|
+
return function (options) {
|
|
5
|
+
const { name, item } = options;
|
|
6
|
+
console.log('download', item);
|
|
7
|
+
const content = yaml.dump(item);
|
|
8
|
+
download(`${name}.yaml`, content);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { useUIKit } from '@cloudtower/eagle';
|
|
2
|
+
import { useForm as useFormCore, useWarnAboutChange, pickNotDeprecated, useResource, } from '@refinedev/core';
|
|
3
|
+
import yaml from 'js-yaml';
|
|
4
|
+
import React, { useRef, useState, useMemo } from 'react';
|
|
5
|
+
import useK8sYamlEditor from 'src/hooks/useK8sYamlEditor';
|
|
6
|
+
import { useSchema } from 'src/hooks/useSchema';
|
|
7
|
+
import { pruneBeforeEdit } from 'src/utils/k8s';
|
|
8
|
+
import { generateYamlBySchema } from 'src/utils/yaml';
|
|
9
|
+
import { useForm as useFormSF } from 'sunflower-antd';
|
|
10
|
+
import { useD2Translation } from '../i18n';
|
|
11
|
+
import { useGlobalStore } from './useGlobalStore';
|
|
12
|
+
const useEagleForm = ({ action, resource, onMutationSuccess: onMutationSuccessProp, onMutationError, submitOnEnter = false, warnWhenUnsavedChanges: warnWhenUnsavedChangesProp, redirect, successNotification, errorNotification, meta, metaData, queryMeta, mutationMeta, liveMode, liveParams, mutationMode, dataProviderName, onLiveEvent, invalidates, undoableTimeout, queryOptions, createMutationOptions, updateMutationOptions, id: idFromProps, overtimeOptions, editorOptions, initialValuesForCreate, } = {}) => {
|
|
13
|
+
const editor = useRef(null);
|
|
14
|
+
const isFoldRef = useRef(false);
|
|
15
|
+
const { t } = useD2Translation();
|
|
16
|
+
const [enableEditor, setEnableEditor] = useState(false);
|
|
17
|
+
const [isYamlValid, setIsYamlValid] = useState(true);
|
|
18
|
+
const [isSchemaValid, setIsSchemaValid] = useState(true);
|
|
19
|
+
const [editorErrors, setEditorErrors] = useState([]);
|
|
20
|
+
const [errorResponseBody, setErrorResponseBody] = useState(null);
|
|
21
|
+
const useResourceResult = useResource();
|
|
22
|
+
const { globalStore } = useGlobalStore();
|
|
23
|
+
const kit = useUIKit();
|
|
24
|
+
const { schema, loading: isLoadingSchema, error: loadSchemaError, fetchSchema, } = useSchema({
|
|
25
|
+
skip: editorOptions?.isSkipSchema,
|
|
26
|
+
});
|
|
27
|
+
const [formAnt] = kit.form.useForm();
|
|
28
|
+
const formSF = useFormSF({
|
|
29
|
+
form: formAnt,
|
|
30
|
+
});
|
|
31
|
+
const { form } = formSF;
|
|
32
|
+
const { fold } = useK8sYamlEditor();
|
|
33
|
+
const useFormCoreResult = useFormCore({
|
|
34
|
+
onMutationSuccess: onMutationSuccessProp ? onMutationSuccessProp : undefined,
|
|
35
|
+
onMutationError,
|
|
36
|
+
redirect,
|
|
37
|
+
action,
|
|
38
|
+
resource,
|
|
39
|
+
successNotification,
|
|
40
|
+
errorNotification,
|
|
41
|
+
meta: pickNotDeprecated(meta, metaData),
|
|
42
|
+
metaData: pickNotDeprecated(meta, metaData),
|
|
43
|
+
queryMeta,
|
|
44
|
+
mutationMeta,
|
|
45
|
+
liveMode,
|
|
46
|
+
liveParams,
|
|
47
|
+
mutationMode,
|
|
48
|
+
dataProviderName,
|
|
49
|
+
onLiveEvent,
|
|
50
|
+
invalidates,
|
|
51
|
+
undoableTimeout,
|
|
52
|
+
queryOptions,
|
|
53
|
+
createMutationOptions,
|
|
54
|
+
updateMutationOptions,
|
|
55
|
+
id: idFromProps,
|
|
56
|
+
overtimeOptions,
|
|
57
|
+
});
|
|
58
|
+
const { formLoading, onFinish, queryResult, id } = useFormCoreResult;
|
|
59
|
+
const { warnWhenUnsavedChanges: warnWhenUnsavedChangesRefine, setWarnWhen } = useWarnAboutChange();
|
|
60
|
+
const warnWhenUnsavedChanges = warnWhenUnsavedChangesProp ?? warnWhenUnsavedChangesRefine;
|
|
61
|
+
const initialValues = useMemo(() => {
|
|
62
|
+
const initialValues = queryResult?.data?.data
|
|
63
|
+
? globalStore?.restoreItem(queryResult.data.data)
|
|
64
|
+
: initialValuesForCreate;
|
|
65
|
+
if (initialValues) {
|
|
66
|
+
pruneBeforeEdit(initialValues);
|
|
67
|
+
}
|
|
68
|
+
return initialValues;
|
|
69
|
+
}, [queryResult, globalStore, initialValuesForCreate]);
|
|
70
|
+
// Init the editor after the resource value is fetched
|
|
71
|
+
React.useEffect(() => {
|
|
72
|
+
form.resetFields();
|
|
73
|
+
if (editor.current) {
|
|
74
|
+
const editorValue = yaml.dump(initialValues);
|
|
75
|
+
const editorInstance = editor.current.getEditorInstance();
|
|
76
|
+
editor.current.setEditorValue(editorValue);
|
|
77
|
+
editor.current.setValue(editorValue);
|
|
78
|
+
if (queryResult?.data?.data && editorInstance && !isFoldRef.current) {
|
|
79
|
+
fold(editorInstance);
|
|
80
|
+
isFoldRef.current = true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}, [initialValues, queryResult?.data?.data, id, form, fold]);
|
|
84
|
+
React.useEffect(() => {
|
|
85
|
+
const response = useFormCoreResult.mutationResult.error?.response;
|
|
86
|
+
if (response && !response?.bodyUsed) {
|
|
87
|
+
response.json?.().then((body) => {
|
|
88
|
+
setErrorResponseBody(body);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}, [useFormCoreResult.mutationResult]);
|
|
92
|
+
const onKeyUp = (event) => {
|
|
93
|
+
if (submitOnEnter && event.key === 'Enter') {
|
|
94
|
+
form.submit();
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
const onValuesChange = (changeValues) => {
|
|
98
|
+
if (changeValues && warnWhenUnsavedChanges) {
|
|
99
|
+
setWarnWhen(true);
|
|
100
|
+
}
|
|
101
|
+
return changeValues;
|
|
102
|
+
};
|
|
103
|
+
const saveButtonProps = useMemo(() => ({
|
|
104
|
+
loading: formLoading,
|
|
105
|
+
onClick: () => {
|
|
106
|
+
form.submit();
|
|
107
|
+
},
|
|
108
|
+
}), [formLoading, form]);
|
|
109
|
+
const editorProps = useMemo(() => ({
|
|
110
|
+
ref: editor,
|
|
111
|
+
defaultValue: schema && editorOptions?.isGenerateAnnotations
|
|
112
|
+
? generateYamlBySchema(initialValues || {}, schema)
|
|
113
|
+
: yaml.dump(initialValues),
|
|
114
|
+
schema: schema,
|
|
115
|
+
id: useResourceResult.resource?.name || '',
|
|
116
|
+
errorMsgs: editorErrors,
|
|
117
|
+
onValidate(yamlValid, schemaValid) {
|
|
118
|
+
setIsYamlValid(yamlValid);
|
|
119
|
+
setIsSchemaValid(schemaValid);
|
|
120
|
+
if (yamlValid && schemaValid) {
|
|
121
|
+
setEditorErrors([]);
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
onEditorCreate(editor) {
|
|
125
|
+
if (queryResult?.data?.data && !isFoldRef.current) {
|
|
126
|
+
fold(editor);
|
|
127
|
+
isFoldRef.current = true;
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
}), [editorErrors, editorOptions, fold, initialValues, queryResult?.data?.data, schema, useResourceResult.resource?.name]);
|
|
131
|
+
return {
|
|
132
|
+
form: formSF.form,
|
|
133
|
+
formProps: {
|
|
134
|
+
...formSF.formProps,
|
|
135
|
+
onFinish: values => {
|
|
136
|
+
const errors = [
|
|
137
|
+
!isYamlValid ? t('dovetail.yaml_format_wrong') : '',
|
|
138
|
+
!isSchemaValid ? t('dovetail.yaml_value_wrong') : '',
|
|
139
|
+
].filter(error => !!error);
|
|
140
|
+
if (errors.length) {
|
|
141
|
+
setEditorErrors(errors);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const finalValues = editor.current
|
|
145
|
+
? yaml.load(editor.current?.getEditorValue() || '')
|
|
146
|
+
: values;
|
|
147
|
+
return onFinish(finalValues);
|
|
148
|
+
},
|
|
149
|
+
onKeyUp,
|
|
150
|
+
onValuesChange,
|
|
151
|
+
initialValues,
|
|
152
|
+
},
|
|
153
|
+
saveButtonProps,
|
|
154
|
+
...useFormCoreResult,
|
|
155
|
+
editorProps,
|
|
156
|
+
enableEditor,
|
|
157
|
+
errorResponseBody,
|
|
158
|
+
schema,
|
|
159
|
+
isLoadingSchema,
|
|
160
|
+
loadSchemaError,
|
|
161
|
+
fetchSchema,
|
|
162
|
+
switchEditor() {
|
|
163
|
+
if (enableEditor && editor.current?.getEditorValue()) {
|
|
164
|
+
const value = yaml.load(editor.current?.getEditorValue());
|
|
165
|
+
form?.setFieldsValue(value);
|
|
166
|
+
}
|
|
167
|
+
setEnableEditor(!enableEditor);
|
|
168
|
+
},
|
|
169
|
+
onFinish: async (values) => {
|
|
170
|
+
const finalValues = enableEditor
|
|
171
|
+
? yaml.load(editor.current?.getEditorValue() || '')
|
|
172
|
+
: values ?? formSF.form.getFieldsValue(true);
|
|
173
|
+
return await onFinish(finalValues);
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
export default useEagleForm;
|
|
@@ -3,21 +3,26 @@ import { Column } from '../../components/Table';
|
|
|
3
3
|
import { JobModel, PodModel, ResourceModel, WorkloadModel, WorkloadBaseModel, CronJobModel, IngressModel, ServiceModel, DaemonSetModel } from '../../models';
|
|
4
4
|
export declare const CommonSorter: (dataIndex: string[]) => (a: unknown, b: unknown) => 0 | 1 | -1;
|
|
5
5
|
export declare const NameColumnRenderer: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>(i18n: I18nType, resource?: string) => Column<Model>;
|
|
6
|
+
export declare const PlainTextNameColumnRenderer: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>(i18n: I18nType) => Column<Model>;
|
|
6
7
|
export declare const NameSpaceColumnRenderer: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>(i18n: I18nType) => Column<Model>;
|
|
7
8
|
export declare const StateDisplayColumnRenderer: <Model extends PodModel | JobModel | WorkloadModel | CronJobModel | DaemonSetModel | ServiceModel>(i18n: I18nType) => Column<Model>;
|
|
8
9
|
export declare const WorkloadImageColumnRenderer: <Model extends WorkloadBaseModel>(i18n: I18nType) => Column<Model>;
|
|
9
10
|
export declare const WorkloadRestartsColumnRenderer: <Model extends WorkloadModel>(i18n: I18nType) => Column<Model>;
|
|
10
11
|
export declare const ReplicasColumnRenderer: <Model extends WorkloadModel>(i18n: I18nType) => Column<Model>;
|
|
11
|
-
export declare const AgeColumnRenderer: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>(i18n: I18nType
|
|
12
|
+
export declare const AgeColumnRenderer: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>(i18n: I18nType, config?: {
|
|
13
|
+
title?: string;
|
|
14
|
+
}) => Column<Model>;
|
|
12
15
|
export declare const NodeNameColumnRenderer: <Model extends PodModel>(i18n: I18nType, options?: Partial<Column<Model>> | undefined) => Column<Model>;
|
|
13
16
|
export declare const RestartCountColumnRenderer: <Model extends PodModel>(i18n: I18nType) => Column<Model>;
|
|
14
17
|
export declare const CompletionsCountColumnRenderer: <Model extends JobModel | CronJobModel>(i18n: I18nType) => Column<Model>;
|
|
15
18
|
export declare const DurationColumnRenderer: <Model extends JobModel | CronJobModel>(i18n: I18nType) => Column<Model>;
|
|
16
19
|
export declare const ServiceTypeColumnRenderer: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>(i18n: I18nType) => Column<Model>;
|
|
17
20
|
export declare const ServiceInClusterAccessColumnRenderer: <Model extends ServiceModel>(i18n: I18nType) => Column<Model>;
|
|
18
|
-
export declare const ServiceOutClusterAccessColumnRenderer: <Model extends ServiceModel>(i18n: I18nType) => Column<Model>;
|
|
21
|
+
export declare const ServiceOutClusterAccessColumnRenderer: <Model extends ServiceModel>(i18n: I18nType, clusterVip: string) => Column<Model>;
|
|
19
22
|
export declare const PodWorkloadColumnRenderer: <Model extends PodModel>(i18n: I18nType) => Column<Model>;
|
|
20
23
|
export declare const IngressRulesColumnRenderer: <Model extends IngressModel>(i18n: I18nType) => Column<Model>;
|
|
21
24
|
export declare const IngressDefaultBackendColumnRenderer: <Model extends IngressModel>(i18n: I18nType) => Column<Model>;
|
|
22
25
|
export declare const IngressClassColumnRenderer: <Model extends IngressModel>(i18n: I18nType) => Column<Model>;
|
|
23
26
|
export declare const IngressTlsColumnRenderer: <Model extends IngressModel>(i18n: I18nType) => Column<Model>;
|
|
27
|
+
export declare const PodContainersNumColumnRenderer: <Model extends PodModel>(i18n: I18nType) => Column<Model>;
|
|
28
|
+
export declare const DataKeysColumnRenderer: <Model extends ResourceModel<import("k8s-api-provider").Unstructured>>(i18n: I18nType) => Column<Model>;
|