@dao-style/biz 0.6.0 → 0.7.0

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.
Files changed (186) hide show
  1. package/dist/cjs/components/gpu/style/assign-gpu-devices-list.js +1 -0
  2. package/dist/cjs/components/gpu/style/gpu-form.js +1 -0
  3. package/dist/components/form-block/FormBlock.d.ts +27 -1
  4. package/dist/components/form-block/props.d.ts +4 -0
  5. package/dist/components/form-block/props.js +4 -0
  6. package/dist/components/form-block/props.mjs +4 -0
  7. package/dist/components/form-block/src/FormBlock.vue.d.ts +11 -0
  8. package/dist/components/form-block/src/FormBlock.vue.js +4 -4
  9. package/dist/components/form-block/src/FormBlock.vue.mjs +4 -4
  10. package/dist/components/form-block/src/FormBlock.vue2.js +12 -1
  11. package/dist/components/form-block/src/FormBlock.vue2.mjs +12 -1
  12. package/dist/components/gpu/props.d.ts +121 -3
  13. package/dist/components/gpu/props.js +82 -9
  14. package/dist/components/gpu/props.mjs +82 -9
  15. package/dist/components/gpu/src/GpuForm.vue.d.ts +283 -50
  16. package/dist/components/gpu/src/GpuForm.vue.js +25 -24
  17. package/dist/components/gpu/src/GpuForm.vue.mjs +26 -25
  18. package/dist/components/gpu/src/GpuForm.vue2.js +115 -218
  19. package/dist/components/gpu/src/GpuForm.vue2.mjs +116 -219
  20. package/dist/components/gpu/src/components/AssignGpuDevicesList.vue.d.ts +77 -0
  21. package/dist/components/gpu/src/components/AssignGpuDevicesList.vue.js +40 -0
  22. package/dist/components/gpu/src/components/AssignGpuDevicesList.vue.mjs +41 -0
  23. package/dist/components/gpu/src/components/AssignGpuDevicesList.vue2.js +191 -0
  24. package/dist/components/gpu/src/components/AssignGpuDevicesList.vue2.mjs +192 -0
  25. package/dist/components/gpu/src/components/GpuAdvancedForm.vue.d.ts +180 -0
  26. package/dist/components/gpu/src/{GpuAdvancedForm.vue.js → components/GpuAdvancedForm.vue.js} +92 -37
  27. package/dist/components/gpu/src/{GpuAdvancedForm.vue.mjs → components/GpuAdvancedForm.vue.mjs} +93 -38
  28. package/dist/components/gpu/src/components/GpuAdvancedForm.vue2.js +169 -0
  29. package/dist/components/gpu/src/components/GpuAdvancedForm.vue2.mjs +153 -0
  30. package/dist/components/gpu/src/{GpuFormDynamicItem.vue.d.ts → components/GpuFormDynamicItem.vue.d.ts} +4 -4
  31. package/dist/components/gpu/src/{GpuFormDynamicItem.vue.js → components/GpuFormDynamicItem.vue.js} +1 -1
  32. package/dist/components/gpu/src/{GpuFormDynamicItem.vue.mjs → components/GpuFormDynamicItem.vue.mjs} +1 -1
  33. package/dist/components/gpu/src/{GpuFormDynamicItem.vue2.js → components/GpuFormDynamicItem.vue2.js} +1 -1
  34. package/dist/components/gpu/src/{GpuFormDynamicItem.vue2.mjs → components/GpuFormDynamicItem.vue2.mjs} +1 -1
  35. package/dist/components/gpu/src/components/GpuFormItem.vue.d.ts +310 -0
  36. package/dist/components/gpu/src/{GpuFormItem.vue.js → components/GpuFormItem.vue.js} +22 -26
  37. package/dist/components/gpu/src/{GpuFormItem.vue.mjs → components/GpuFormItem.vue.mjs} +23 -27
  38. package/dist/components/gpu/src/components/GpuFormItem.vue2.js +61 -0
  39. package/dist/components/gpu/src/components/GpuFormItem.vue2.mjs +45 -0
  40. package/dist/components/gpu/src/{GpuResources.vue.d.ts → components/GpuResources.vue.d.ts} +38 -18
  41. package/dist/components/gpu/src/components/GpuResources.vue.js +153 -0
  42. package/dist/components/gpu/src/components/GpuResources.vue.mjs +154 -0
  43. package/dist/components/gpu/src/components/GpuResources.vue2.js +278 -0
  44. package/dist/components/gpu/src/components/GpuResources.vue2.mjs +262 -0
  45. package/dist/components/gpu/src/gpuForm.constants.d.ts +3 -0
  46. package/dist/components/gpu/src/gpuForm.constants.js +10 -0
  47. package/dist/components/gpu/src/gpuForm.constants.mjs +10 -0
  48. package/dist/components/gpu/src/gpuForm.internal-types.d.ts +49 -0
  49. package/dist/components/gpu/src/gpuForm.mapper.d.ts +16 -0
  50. package/dist/components/gpu/src/gpuForm.mapper.js +199 -0
  51. package/dist/components/gpu/src/gpuForm.mapper.mjs +199 -0
  52. package/dist/components/gpu/src/gpuFormItem.mapper.d.ts +38 -0
  53. package/dist/components/gpu/src/gpuFormItem.mapper.js +153 -0
  54. package/dist/components/gpu/src/gpuFormItem.mapper.mjs +153 -0
  55. package/dist/components/gpu/src/useGPUOptions.d.ts +2 -2
  56. package/dist/components/gpu/src/useGPUOptions.js +15 -20
  57. package/dist/components/gpu/src/useGPUOptions.mjs +16 -21
  58. package/dist/components/gpu/src/useGpuFormItemState.d.ts +42 -0
  59. package/dist/components/gpu/src/useGpuFormItemState.js +178 -0
  60. package/dist/components/gpu/src/useGpuFormItemState.mjs +178 -0
  61. package/dist/components/gpu/src/useGpuFormSideState.d.ts +52 -0
  62. package/dist/components/gpu/src/useGpuFormSideState.js +71 -0
  63. package/dist/components/gpu/src/useGpuFormSideState.mjs +71 -0
  64. package/dist/components/gpu/src/useGpuFormState.d.ts +560 -0
  65. package/dist/components/gpu/src/useGpuFormState.js +52 -0
  66. package/dist/components/gpu/src/useGpuFormState.mjs +52 -0
  67. package/dist/components/gpu/src/validations/nvidiaVgpuMemoryDecimal.d.ts +5 -1
  68. package/dist/components/gpu/style/assign-gpu-devices-list.d.ts +1 -0
  69. package/dist/components/gpu/style/assign-gpu-devices-list.scss.js +3 -0
  70. package/dist/components/gpu/style/assign-gpu-devices-list.scss.mjs +4 -0
  71. package/dist/components/gpu/style/gpu-form.d.ts +1 -0
  72. package/dist/components/gpu/types.d.ts +6 -0
  73. package/dist/components/gpu/types.js +2 -0
  74. package/dist/components/gpu/types.mjs +2 -0
  75. package/dist/components/gpu/utils.d.ts +4 -0
  76. package/dist/components/gpu/utils.js +14 -0
  77. package/dist/components/gpu/utils.mjs +14 -0
  78. package/dist/components/instance-cluster/src/InstanceCluster.vue.d.ts +1 -1
  79. package/dist/components/instance-namespace/src/InstanceNamespace.vue.d.ts +1 -1
  80. package/dist/components/instance-storage-class/src/InstanceStorageClass.vue.d.ts +1 -1
  81. package/dist/components/network-config/src/NetworkConfig.vue.d.ts +1 -1
  82. package/dist/components/network-config/src/NetworkConfig.vue.js +13 -6
  83. package/dist/components/network-config/src/NetworkConfig.vue.mjs +14 -7
  84. package/dist/dialogs/create-network-config-dialog/src/CreateNetworkConfigDialog.vue.d.ts +1 -1
  85. package/dist/es/components/gpu/style/assign-gpu-devices-list.mjs +1 -0
  86. package/dist/es/components/gpu/style/gpu-form.mjs +1 -0
  87. package/dist/forms/import-parameter-template/props.d.ts +8 -8
  88. package/dist/forms/import-parameter-template/src/ImportParameterTemplate.vue.d.ts +24 -24
  89. package/dist/group-mapping.json +1 -1
  90. package/dist/index.js +34 -23
  91. package/dist/index.mjs +15 -4
  92. package/dist/locales/en-US/components/Gpu.json.js +36 -9
  93. package/dist/locales/en-US/components/Gpu.json.mjs +37 -10
  94. package/dist/locales/en-US/index.js +2 -0
  95. package/dist/locales/en-US/index.mjs +2 -0
  96. package/dist/locales/en-US/uses/UseCancelFormDialog.json.js +11 -0
  97. package/dist/locales/en-US/uses/UseCancelFormDialog.json.mjs +11 -0
  98. package/dist/locales/ja/components/Gpu.json.js +36 -9
  99. package/dist/locales/ja/components/Gpu.json.mjs +37 -10
  100. package/dist/locales/ja/components/InstancePassword.json.js +1 -1
  101. package/dist/locales/ja/components/InstancePassword.json.mjs +1 -1
  102. package/dist/locales/ja/components/MatchExpressionsEditor.json.js +1 -1
  103. package/dist/locales/ja/components/MatchExpressionsEditor.json.mjs +1 -1
  104. package/dist/locales/ja/components/NetworkConfig.json.js +1 -1
  105. package/dist/locales/ja/components/NetworkConfig.json.mjs +1 -1
  106. package/dist/locales/ja/index.js +2 -0
  107. package/dist/locales/ja/index.mjs +2 -0
  108. package/dist/locales/ja/uses/UseCancelFormDialog.json.js +11 -0
  109. package/dist/locales/ja/uses/UseCancelFormDialog.json.mjs +11 -0
  110. package/dist/locales/ja/workloads/DnsConfig.json.js +1 -1
  111. package/dist/locales/ja/workloads/DnsConfig.json.mjs +1 -1
  112. package/dist/locales/ja/workloads/workload-advanced/NetworkConfig.json.js +1 -1
  113. package/dist/locales/ja/workloads/workload-advanced/NetworkConfig.json.mjs +1 -1
  114. package/dist/locales/zh-CN/components/Gpu.json.js +36 -9
  115. package/dist/locales/zh-CN/components/Gpu.json.mjs +37 -10
  116. package/dist/locales/zh-CN/index.js +2 -0
  117. package/dist/locales/zh-CN/index.mjs +2 -0
  118. package/dist/locales/zh-CN/uses/UseCancelFormDialog.json.js +11 -0
  119. package/dist/locales/zh-CN/uses/UseCancelFormDialog.json.mjs +11 -0
  120. package/dist/style.css +692 -664
  121. package/dist/styles/components/gpu/assign-gpu-devices-list.css +10 -0
  122. package/dist/styles/components/gpu/gpu-form-item.css +16 -0
  123. package/dist/styles/components/gpu/gpu-form.css +4 -0
  124. package/dist/styles/components/network-config/network-config.css +3 -0
  125. package/dist/styles/components/resource-config/resource-config.css +0 -8
  126. package/dist/styles/styles/common.css +4 -0
  127. package/dist/uses/index.d.ts +1 -0
  128. package/dist/uses/useCancelFormDialog/index.d.ts +11 -0
  129. package/dist/uses/useCancelFormDialog/index.js +40 -0
  130. package/dist/uses/useCancelFormDialog/index.mjs +40 -0
  131. package/dist/uses/useCancelFormDialog/src/CancelFormDialog.vue.d.ts +8 -0
  132. package/dist/uses/useCancelFormDialog/src/CancelFormDialog.vue.js +25 -0
  133. package/dist/uses/useCancelFormDialog/src/CancelFormDialog.vue.mjs +26 -0
  134. package/dist/uses/useCancelFormDialog/src/CancelFormDialog.vue2.js +3 -0
  135. package/dist/uses/useCancelFormDialog/src/CancelFormDialog.vue2.mjs +4 -0
  136. package/dist/utils/index.d.ts +1 -0
  137. package/dist/utils/injectWithSelf.d.ts +6 -0
  138. package/dist/utils/injectWithSelf.js +8 -0
  139. package/dist/utils/injectWithSelf.mjs +8 -0
  140. package/dist/utils/multiRowEditorValidate.d.ts +5 -5
  141. package/dist/utils/useResetFieldValue.d.ts +13 -0
  142. package/dist/utils/useResetFieldValue.js +28 -0
  143. package/dist/utils/useResetFieldValue.mjs +28 -0
  144. package/dist/utils/useSetFieldValue.d.ts +6 -0
  145. package/dist/utils/useSetFieldValue.js +2 -5
  146. package/dist/utils/useSetFieldValue.mjs +2 -5
  147. package/dist/workloads/container-basic-info/props.d.ts +13 -0
  148. package/dist/workloads/container-basic-info/props.js +4 -0
  149. package/dist/workloads/container-basic-info/props.mjs +4 -0
  150. package/dist/workloads/container-basic-info/src/ContainerBasicInfo.vue.d.ts +10 -0
  151. package/dist/workloads/container-basic-info/src/ContainerBasicInfo.vue.js +54 -29
  152. package/dist/workloads/container-basic-info/src/ContainerBasicInfo.vue.mjs +54 -29
  153. package/dist/workloads/container-basic-info/src/ContainerBasicInfo.vue2.js +18 -8
  154. package/dist/workloads/container-basic-info/src/ContainerBasicInfo.vue2.mjs +19 -9
  155. package/dist/workloads/container-image/src/dialogs/SelectImageDialog.vue.d.ts +1 -1
  156. package/dist/workloads/containers/demo/data.d.ts +8 -1
  157. package/dist/workloads/containers/src/ContainerItem.vue.d.ts +23 -0
  158. package/dist/workloads/containers/src/Containers.vue.d.ts +4 -0
  159. package/dist/workloads/containers/src/Containers.vue2.js +18 -1
  160. package/dist/workloads/containers/src/Containers.vue2.mjs +19 -2
  161. package/dist/workloads/health-check/props.d.ts +4 -0
  162. package/dist/workloads/health-check/props.js +4 -0
  163. package/dist/workloads/health-check/props.mjs +4 -0
  164. package/dist/workloads/health-check/src/HealthCheck.vue.d.ts +9 -0
  165. package/dist/workloads/health-check/src/HealthCheck.vue.js +6 -6
  166. package/dist/workloads/health-check/src/HealthCheck.vue.mjs +6 -6
  167. package/dist/workloads/health-check/src/HealthCheckHandler.vue.js +3 -1
  168. package/dist/workloads/health-check/src/HealthCheckHandler.vue.mjs +3 -1
  169. package/dist/workloads/http-get-action/src/HttpGetAction.vue.js +1 -1
  170. package/dist/workloads/http-get-action/src/HttpGetAction.vue.mjs +1 -1
  171. package/dist/workloads/workload-annotations/props.d.ts +1 -0
  172. package/dist/workloads/workload-annotations/props.js +1 -0
  173. package/dist/workloads/workload-annotations/props.mjs +2 -1
  174. package/package.json +12 -13
  175. package/dist/components/gpu/src/GpuAdvancedForm.vue.d.ts +0 -131
  176. package/dist/components/gpu/src/GpuAdvancedForm.vue2.js +0 -92
  177. package/dist/components/gpu/src/GpuAdvancedForm.vue2.mjs +0 -76
  178. package/dist/components/gpu/src/GpuFormItem.vue.d.ts +0 -232
  179. package/dist/components/gpu/src/GpuFormItem.vue2.js +0 -235
  180. package/dist/components/gpu/src/GpuFormItem.vue2.mjs +0 -219
  181. package/dist/components/gpu/src/GpuResources.vue.js +0 -125
  182. package/dist/components/gpu/src/GpuResources.vue.mjs +0 -126
  183. package/dist/components/gpu/src/GpuResources.vue2.js +0 -197
  184. package/dist/components/gpu/src/GpuResources.vue2.mjs +0 -181
  185. package/dist/components/gpu/src/validations/nvidiaVgpuMemoryDecimal.js +0 -19
  186. package/dist/components/gpu/src/validations/nvidiaVgpuMemoryDecimal.mjs +0 -20
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ const index = require("../../../../node_modules/@vueuse/core/index.js");
3
+ const vue = require("vue");
4
+ const vueI18n = require("vue-i18n");
5
+ require("../../style/assign-gpu-devices-list.scss.js");
6
+ const lodashEs = require("lodash-es");
7
+ const extend = require("@dao-style/extend");
8
+ const props = require("../../props.js");
9
+ const _sfc_main = vue.defineComponent({
10
+ name: "DaoAssignGpuCardsList",
11
+ props: props.assignGpuDevicesListProps,
12
+ emits: ["update:modelValue"],
13
+ setup(props2, { emit }) {
14
+ const modelValue = index.useVModel(props2, "modelValue", emit, { passive: true });
15
+ const { t } = vueI18n.useI18n();
16
+ const columns = vue.computed(() => [
17
+ {
18
+ header: t("biz.components.Gpu.assignGpu.devicesList.uuid"),
19
+ id: "deviceUUID"
20
+ },
21
+ {
22
+ header: t("biz.components.Gpu.assignGpu.devicesList.model"),
23
+ id: "modelName"
24
+ },
25
+ {
26
+ header: t("biz.components.Gpu.assignGpu.devicesList.node"),
27
+ id: "nodeName",
28
+ defaultWidth: "80px"
29
+ },
30
+ {
31
+ header: t("biz.components.Gpu.assignGpu.devicesList.computePower"),
32
+ id: "computePower",
33
+ defaultWidth: "170px"
34
+ },
35
+ {
36
+ header: t("biz.components.Gpu.assignGpu.devicesList.memory"),
37
+ id: "memory",
38
+ defaultWidth: "170px"
39
+ }
40
+ ]);
41
+ const searchOptions = vue.computed(() => [
42
+ {
43
+ key: "searchDeviceUUID",
44
+ label: t("biz.components.Gpu.assignGpu.devicesList.uuid"),
45
+ single: true
46
+ },
47
+ {
48
+ key: "searchGPUModel",
49
+ label: t("biz.components.Gpu.assignGpu.devicesList.model"),
50
+ single: true
51
+ },
52
+ {
53
+ key: "searchNodeName",
54
+ label: t("biz.components.Gpu.assignGpu.devicesList.node"),
55
+ single: true
56
+ }
57
+ ]);
58
+ const fuzzySearch = {
59
+ key: "searchDeviceUUID",
60
+ single: true
61
+ };
62
+ const filterData = vue.ref({});
63
+ const handleSearch = () => {
64
+ var _a, _b;
65
+ if (props2.disabled) {
66
+ return;
67
+ }
68
+ (_b = (_a = props2.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.search) == null ? void 0 : _b.call(_a, filterData.value);
69
+ };
70
+ const handleRefresh = () => {
71
+ var _a;
72
+ if (props2.disabled) {
73
+ return;
74
+ }
75
+ (_a = props2.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.refresh();
76
+ };
77
+ const displayDevices = vue.computed(() => {
78
+ var _a;
79
+ const devices = ((_a = props2.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.data) ?? [];
80
+ if (!props2.disabled) {
81
+ return devices;
82
+ }
83
+ const existingUUIDs = new Set(devices.map((device) => device.deviceUUID));
84
+ const missingDevices = modelValue.value.filter((deviceUUID) => !existingUUIDs.has(deviceUUID)).map((deviceUUID) => ({ deviceUUID }));
85
+ return [...devices, ...missingDevices];
86
+ });
87
+ const isEmpty = (value) => lodashEs.isNil(value) || value === "";
88
+ const formatMemoryUnit = (memory = "0") => {
89
+ if (memory === "0") {
90
+ return "0 Mi";
91
+ }
92
+ const val = extend.formatMemory(`${memory}Mi`);
93
+ return `${val.value} ${val.unit}`;
94
+ };
95
+ const calculateRemaining = (allocatable, allocated) => {
96
+ if (isEmpty(allocatable) || isEmpty(allocated)) {
97
+ return void 0;
98
+ }
99
+ const scale = 100;
100
+ const allocatableValue = Math.round(Number(allocatable) * scale);
101
+ const allocatedValue = Math.round(Number(allocated) * scale);
102
+ if (![allocatableValue, allocatedValue].every(Number.isFinite)) {
103
+ return void 0;
104
+ }
105
+ return ((allocatableValue - allocatedValue) / scale).toString();
106
+ };
107
+ const displayMemory = (row) => {
108
+ if (isEmpty(row.allocatedFrameBufferMemory)) {
109
+ return "-";
110
+ }
111
+ const allocated = formatMemoryUnit(row.allocatedFrameBufferMemory);
112
+ const remaining = calculateRemaining(
113
+ row.allocatableFrameBufferMemory,
114
+ row.allocatedFrameBufferMemory
115
+ );
116
+ const remainingText = lodashEs.isNil(remaining) ? "-" : formatMemoryUnit(remaining);
117
+ return `${allocated} / ${remainingText}`;
118
+ };
119
+ const displayComputePower = (row) => {
120
+ if (isEmpty(row.allocatedCore)) {
121
+ return "-";
122
+ }
123
+ const allocated = `${row.allocatedCore}%`;
124
+ const remaining = calculateRemaining(row.allocatableCore, row.allocatedCore);
125
+ const remainingText = lodashEs.isNil(remaining) ? "-" : `${remaining}%`;
126
+ return `${allocated} / ${remainingText}`;
127
+ };
128
+ const selectedDevices = vue.computed(() => {
129
+ const selectedUUIDs = new Set(modelValue.value);
130
+ return displayDevices.value.filter(
131
+ (device) => device.deviceUUID !== void 0 && selectedUUIDs.has(device.deviceUUID)
132
+ );
133
+ });
134
+ const hasAllSelectedDevices = (devices) => modelValue.value.every(
135
+ (deviceUUID) => devices.some((device) => device.deviceUUID === deviceUUID)
136
+ );
137
+ const firstSelectedDevice = vue.computed(() => selectedDevices.value[0] ?? null);
138
+ const getRowCheckable = (row) => {
139
+ if (props2.disabled) {
140
+ return false;
141
+ }
142
+ const first = firstSelectedDevice.value;
143
+ if (first) {
144
+ return row.nodeName === first.nodeName;
145
+ }
146
+ return true;
147
+ };
148
+ const onSelect = (selected) => {
149
+ var _a, _b;
150
+ if (props2.disabled) {
151
+ return;
152
+ }
153
+ if (!selected.length) {
154
+ modelValue.value = [];
155
+ return;
156
+ }
157
+ const selectedNodeName = ((_a = firstSelectedDevice.value) == null ? void 0 : _a.nodeName) ?? ((_b = selected[0]) == null ? void 0 : _b.nodeName);
158
+ modelValue.value = selected.reduce((uuids, device) => {
159
+ if (device.nodeName === selectedNodeName && device.deviceUUID !== void 0) {
160
+ uuids.push(device.deviceUUID);
161
+ }
162
+ return uuids;
163
+ }, []);
164
+ };
165
+ const fetchData = async () => {
166
+ var _a, _b;
167
+ const devices = ((_a = props2.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.data) ?? [];
168
+ const needsRefresh = !devices.length || props2.disabled && !hasAllSelectedDevices(devices);
169
+ if (!needsRefresh) {
170
+ return;
171
+ }
172
+ await ((_b = props2.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _b.refresh());
173
+ };
174
+ fetchData();
175
+ return {
176
+ columns,
177
+ selectedDevices,
178
+ displayDevices,
179
+ onSelect,
180
+ getRowCheckable,
181
+ displayComputePower,
182
+ displayMemory,
183
+ searchOptions,
184
+ fuzzySearch,
185
+ filterData,
186
+ handleSearch,
187
+ handleRefresh
188
+ };
189
+ }
190
+ });
191
+ module.exports = _sfc_main;
@@ -0,0 +1,192 @@
1
+ import { useVModel } from "../../../../node_modules/@vueuse/core/index.mjs";
2
+ import { defineComponent, computed, ref } from "vue";
3
+ import { useI18n } from "vue-i18n";
4
+ import "../../style/assign-gpu-devices-list.scss.mjs";
5
+ import { isNil } from "lodash-es";
6
+ import { formatMemory } from "@dao-style/extend";
7
+ import { assignGpuDevicesListProps } from "../../props.mjs";
8
+ const _sfc_main = defineComponent({
9
+ name: "DaoAssignGpuCardsList",
10
+ props: assignGpuDevicesListProps,
11
+ emits: ["update:modelValue"],
12
+ setup(props, { emit }) {
13
+ const modelValue = useVModel(props, "modelValue", emit, { passive: true });
14
+ const { t } = useI18n();
15
+ const columns = computed(() => [
16
+ {
17
+ header: t("biz.components.Gpu.assignGpu.devicesList.uuid"),
18
+ id: "deviceUUID"
19
+ },
20
+ {
21
+ header: t("biz.components.Gpu.assignGpu.devicesList.model"),
22
+ id: "modelName"
23
+ },
24
+ {
25
+ header: t("biz.components.Gpu.assignGpu.devicesList.node"),
26
+ id: "nodeName",
27
+ defaultWidth: "80px"
28
+ },
29
+ {
30
+ header: t("biz.components.Gpu.assignGpu.devicesList.computePower"),
31
+ id: "computePower",
32
+ defaultWidth: "170px"
33
+ },
34
+ {
35
+ header: t("biz.components.Gpu.assignGpu.devicesList.memory"),
36
+ id: "memory",
37
+ defaultWidth: "170px"
38
+ }
39
+ ]);
40
+ const searchOptions = computed(() => [
41
+ {
42
+ key: "searchDeviceUUID",
43
+ label: t("biz.components.Gpu.assignGpu.devicesList.uuid"),
44
+ single: true
45
+ },
46
+ {
47
+ key: "searchGPUModel",
48
+ label: t("biz.components.Gpu.assignGpu.devicesList.model"),
49
+ single: true
50
+ },
51
+ {
52
+ key: "searchNodeName",
53
+ label: t("biz.components.Gpu.assignGpu.devicesList.node"),
54
+ single: true
55
+ }
56
+ ]);
57
+ const fuzzySearch = {
58
+ key: "searchDeviceUUID",
59
+ single: true
60
+ };
61
+ const filterData = ref({});
62
+ const handleSearch = () => {
63
+ var _a, _b;
64
+ if (props.disabled) {
65
+ return;
66
+ }
67
+ (_b = (_a = props.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.search) == null ? void 0 : _b.call(_a, filterData.value);
68
+ };
69
+ const handleRefresh = () => {
70
+ var _a;
71
+ if (props.disabled) {
72
+ return;
73
+ }
74
+ (_a = props.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.refresh();
75
+ };
76
+ const displayDevices = computed(() => {
77
+ var _a;
78
+ const devices = ((_a = props.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.data) ?? [];
79
+ if (!props.disabled) {
80
+ return devices;
81
+ }
82
+ const existingUUIDs = new Set(devices.map((device) => device.deviceUUID));
83
+ const missingDevices = modelValue.value.filter((deviceUUID) => !existingUUIDs.has(deviceUUID)).map((deviceUUID) => ({ deviceUUID }));
84
+ return [...devices, ...missingDevices];
85
+ });
86
+ const isEmpty = (value) => isNil(value) || value === "";
87
+ const formatMemoryUnit = (memory = "0") => {
88
+ if (memory === "0") {
89
+ return "0 Mi";
90
+ }
91
+ const val = formatMemory(`${memory}Mi`);
92
+ return `${val.value} ${val.unit}`;
93
+ };
94
+ const calculateRemaining = (allocatable, allocated) => {
95
+ if (isEmpty(allocatable) || isEmpty(allocated)) {
96
+ return void 0;
97
+ }
98
+ const scale = 100;
99
+ const allocatableValue = Math.round(Number(allocatable) * scale);
100
+ const allocatedValue = Math.round(Number(allocated) * scale);
101
+ if (![allocatableValue, allocatedValue].every(Number.isFinite)) {
102
+ return void 0;
103
+ }
104
+ return ((allocatableValue - allocatedValue) / scale).toString();
105
+ };
106
+ const displayMemory = (row) => {
107
+ if (isEmpty(row.allocatedFrameBufferMemory)) {
108
+ return "-";
109
+ }
110
+ const allocated = formatMemoryUnit(row.allocatedFrameBufferMemory);
111
+ const remaining = calculateRemaining(
112
+ row.allocatableFrameBufferMemory,
113
+ row.allocatedFrameBufferMemory
114
+ );
115
+ const remainingText = isNil(remaining) ? "-" : formatMemoryUnit(remaining);
116
+ return `${allocated} / ${remainingText}`;
117
+ };
118
+ const displayComputePower = (row) => {
119
+ if (isEmpty(row.allocatedCore)) {
120
+ return "-";
121
+ }
122
+ const allocated = `${row.allocatedCore}%`;
123
+ const remaining = calculateRemaining(row.allocatableCore, row.allocatedCore);
124
+ const remainingText = isNil(remaining) ? "-" : `${remaining}%`;
125
+ return `${allocated} / ${remainingText}`;
126
+ };
127
+ const selectedDevices = computed(() => {
128
+ const selectedUUIDs = new Set(modelValue.value);
129
+ return displayDevices.value.filter(
130
+ (device) => device.deviceUUID !== void 0 && selectedUUIDs.has(device.deviceUUID)
131
+ );
132
+ });
133
+ const hasAllSelectedDevices = (devices) => modelValue.value.every(
134
+ (deviceUUID) => devices.some((device) => device.deviceUUID === deviceUUID)
135
+ );
136
+ const firstSelectedDevice = computed(() => selectedDevices.value[0] ?? null);
137
+ const getRowCheckable = (row) => {
138
+ if (props.disabled) {
139
+ return false;
140
+ }
141
+ const first = firstSelectedDevice.value;
142
+ if (first) {
143
+ return row.nodeName === first.nodeName;
144
+ }
145
+ return true;
146
+ };
147
+ const onSelect = (selected) => {
148
+ var _a, _b;
149
+ if (props.disabled) {
150
+ return;
151
+ }
152
+ if (!selected.length) {
153
+ modelValue.value = [];
154
+ return;
155
+ }
156
+ const selectedNodeName = ((_a = firstSelectedDevice.value) == null ? void 0 : _a.nodeName) ?? ((_b = selected[0]) == null ? void 0 : _b.nodeName);
157
+ modelValue.value = selected.reduce((uuids, device) => {
158
+ if (device.nodeName === selectedNodeName && device.deviceUUID !== void 0) {
159
+ uuids.push(device.deviceUUID);
160
+ }
161
+ return uuids;
162
+ }, []);
163
+ };
164
+ const fetchData = async () => {
165
+ var _a, _b;
166
+ const devices = ((_a = props.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _a.data) ?? [];
167
+ const needsRefresh = !devices.length || props.disabled && !hasAllSelectedDevices(devices);
168
+ if (!needsRefresh) {
169
+ return;
170
+ }
171
+ await ((_b = props.nvidiaVgpuDevicesAdaptor) == null ? void 0 : _b.refresh());
172
+ };
173
+ fetchData();
174
+ return {
175
+ columns,
176
+ selectedDevices,
177
+ displayDevices,
178
+ onSelect,
179
+ getRowCheckable,
180
+ displayComputePower,
181
+ displayMemory,
182
+ searchOptions,
183
+ fuzzySearch,
184
+ filterData,
185
+ handleSearch,
186
+ handleRefresh
187
+ };
188
+ }
189
+ });
190
+ export {
191
+ _sfc_main as default
192
+ };
@@ -0,0 +1,180 @@
1
+ import * as yup from 'yup';
2
+ import { VgpuSchedulePolicy } from '../../types';
3
+ type AssignGpuType = 'assignModel' | 'assignDevice';
4
+ declare const _default: import("vue").DefineComponent<{
5
+ quota: {
6
+ type: import("vue").PropType<import("../../types").GpuQuotaItem>;
7
+ };
8
+ enableRemoteCall: {
9
+ type: BooleanConstructor;
10
+ default: boolean;
11
+ };
12
+ enableNvidiaVgpuModel: {
13
+ type: BooleanConstructor;
14
+ default: boolean;
15
+ };
16
+ enableNvidiaVgpuDevices: {
17
+ type: BooleanConstructor;
18
+ default: boolean;
19
+ };
20
+ assignGpuDisabled: {
21
+ type: BooleanConstructor;
22
+ default: boolean;
23
+ };
24
+ enableNvidiaVgpuPriority: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
28
+ nvidiaVgpuModelsAdaptor: {
29
+ type: import("vue").PropType<{
30
+ data: import("../../types").GPUSummary[];
31
+ loading: boolean;
32
+ refresh: () => import("../../types").GPUSummary[] | Promise<import("../../types").GPUSummary[]>;
33
+ }>;
34
+ default: undefined;
35
+ };
36
+ nvidiaGpuModels: {
37
+ type: import("vue").PropType<string[]>;
38
+ required: boolean;
39
+ };
40
+ nvidiaVgpuDevicesAdaptor: {
41
+ type: import("vue").PropType<import("../../props").GpuDevicesAdaptor>;
42
+ default: undefined;
43
+ };
44
+ isSide: {
45
+ type: BooleanConstructor;
46
+ default: boolean;
47
+ };
48
+ openNvidiaAssignGpu: {
49
+ type: BooleanConstructor;
50
+ default: boolean;
51
+ };
52
+ openNvidiaVgpuModel: {
53
+ type: BooleanConstructor;
54
+ default: boolean;
55
+ };
56
+ enableNvidiaVgpuSchedulePolicy: {
57
+ type: BooleanConstructor;
58
+ default: boolean;
59
+ };
60
+ openNvidiaVgpuSchedulePolicy: {
61
+ type: BooleanConstructor;
62
+ default: boolean;
63
+ };
64
+ }, {
65
+ gpuCallValue: import("vue").Ref<string>;
66
+ priorityOpts: {
67
+ label: string;
68
+ value: string;
69
+ }[];
70
+ openNvidiaVgpuModelRef: import("vue").Ref<boolean> | import("vue").WritableComputedRef<boolean>;
71
+ nvidiaVgpuModelKey: string;
72
+ nvidiaVgpuPriorityKey: string;
73
+ isNvidiaVgpuType: import("vue").ComputedRef<boolean>;
74
+ isNvidiaGpu: (key?: string | undefined) => boolean;
75
+ showAdvancedConfig: import("vue").ComputedRef<boolean>;
76
+ scheduleOps: {
77
+ label: string;
78
+ value: VgpuSchedulePolicy;
79
+ }[];
80
+ openNvidiaVgpuSchedulePolicyRef: import("vue").Ref<boolean> | import("vue").WritableComputedRef<boolean>;
81
+ handleNvidiaVgpuSchedulePolicyChange: (open: boolean) => void;
82
+ nvidiaVgpuGpuScheduleKey: string;
83
+ nvidiaVgpuNodeScheduleKey: string;
84
+ nodeScheduleHelper: import("vue").ComputedRef<string>;
85
+ gpuScheduleHelper: import("vue").ComputedRef<string>;
86
+ nvidiaVgpuCore: import("vue").ComputedRef<number | undefined>;
87
+ assignTypes: import("vue").ComputedRef<{
88
+ value: AssignGpuType;
89
+ label: string;
90
+ }[]>;
91
+ openNvidiaAssignGpuRef: import("vue").Ref<boolean> | import("vue").WritableComputedRef<boolean>;
92
+ handleAssignGpuTypeChange: (value: AssignGpuType) => void;
93
+ assignGpuType: import("vue").Ref<AssignGpuType>;
94
+ displayNvidiaGpuModels: import("vue").ComputedRef<string[]>;
95
+ nvidiaVgpuDevicesKey: string;
96
+ yupDevicesSchema: import("vue").ComputedRef<yup.ArraySchema<import("yup/lib/string").RequiredStringSchema<string | undefined, import("yup/lib/types").AnyObject>, import("yup/lib/types").AnyObject, (string | undefined)[] | undefined, string[] | undefined>>;
97
+ yup: typeof yup;
98
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:openNvidiaVgpuModel" | "update:openNvidiaVgpuSchedulePolicy" | "update:openNvidiaAssignGpu")[], "update:openNvidiaVgpuModel" | "update:openNvidiaVgpuSchedulePolicy" | "update:openNvidiaAssignGpu", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
99
+ quota: {
100
+ type: import("vue").PropType<import("../../types").GpuQuotaItem>;
101
+ };
102
+ enableRemoteCall: {
103
+ type: BooleanConstructor;
104
+ default: boolean;
105
+ };
106
+ enableNvidiaVgpuModel: {
107
+ type: BooleanConstructor;
108
+ default: boolean;
109
+ };
110
+ enableNvidiaVgpuDevices: {
111
+ type: BooleanConstructor;
112
+ default: boolean;
113
+ };
114
+ assignGpuDisabled: {
115
+ type: BooleanConstructor;
116
+ default: boolean;
117
+ };
118
+ enableNvidiaVgpuPriority: {
119
+ type: BooleanConstructor;
120
+ default: boolean;
121
+ };
122
+ nvidiaVgpuModelsAdaptor: {
123
+ type: import("vue").PropType<{
124
+ data: import("../../types").GPUSummary[];
125
+ loading: boolean;
126
+ refresh: () => import("../../types").GPUSummary[] | Promise<import("../../types").GPUSummary[]>;
127
+ }>;
128
+ default: undefined;
129
+ };
130
+ nvidiaGpuModels: {
131
+ type: import("vue").PropType<string[]>;
132
+ required: boolean;
133
+ };
134
+ nvidiaVgpuDevicesAdaptor: {
135
+ type: import("vue").PropType<import("../../props").GpuDevicesAdaptor>;
136
+ default: undefined;
137
+ };
138
+ isSide: {
139
+ type: BooleanConstructor;
140
+ default: boolean;
141
+ };
142
+ openNvidiaAssignGpu: {
143
+ type: BooleanConstructor;
144
+ default: boolean;
145
+ };
146
+ openNvidiaVgpuModel: {
147
+ type: BooleanConstructor;
148
+ default: boolean;
149
+ };
150
+ enableNvidiaVgpuSchedulePolicy: {
151
+ type: BooleanConstructor;
152
+ default: boolean;
153
+ };
154
+ openNvidiaVgpuSchedulePolicy: {
155
+ type: BooleanConstructor;
156
+ default: boolean;
157
+ };
158
+ }>> & {
159
+ "onUpdate:openNvidiaVgpuModel"?: ((...args: any[]) => any) | undefined;
160
+ "onUpdate:openNvidiaVgpuSchedulePolicy"?: ((...args: any[]) => any) | undefined;
161
+ "onUpdate:openNvidiaAssignGpu"?: ((...args: any[]) => any) | undefined;
162
+ }, {
163
+ nvidiaVgpuModelsAdaptor: {
164
+ data: import("../../types").GPUSummary[];
165
+ loading: boolean;
166
+ refresh: () => import("../../types").GPUSummary[] | Promise<import("../../types").GPUSummary[]>;
167
+ };
168
+ nvidiaVgpuDevicesAdaptor: import("../../props").GpuDevicesAdaptor;
169
+ enableRemoteCall: boolean;
170
+ enableNvidiaVgpuModel: boolean;
171
+ enableNvidiaVgpuDevices: boolean;
172
+ assignGpuDisabled: boolean;
173
+ enableNvidiaVgpuPriority: boolean;
174
+ enableNvidiaVgpuSchedulePolicy: boolean;
175
+ isSide: boolean;
176
+ openNvidiaAssignGpu: boolean;
177
+ openNvidiaVgpuModel: boolean;
178
+ openNvidiaVgpuSchedulePolicy: boolean;
179
+ }>;
180
+ export default _default;