bfg-common 1.5.408 → 1.5.410

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 (176) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/assets/localization/local_be.json +11 -1
  7. package/assets/localization/local_en.json +11 -1
  8. package/assets/localization/local_hy.json +11 -1
  9. package/assets/localization/local_kk.json +11 -1
  10. package/assets/localization/local_ru.json +12 -2
  11. package/assets/localization/local_zh.json +11 -1
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/collapse/CollapseNav.vue +170 -170
  14. package/components/atoms/collapse/CollapseNavItem.vue +226 -226
  15. package/components/atoms/nav/NavBar.vue +159 -159
  16. package/components/atoms/perPage/PerPage.vue +58 -58
  17. package/components/atoms/table/dataGrid/DataGrid.vue +1717 -1717
  18. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +277 -277
  19. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  20. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  21. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  22. package/components/common/backup/storage/actions/add/lib/config/steps.ts +168 -168
  23. package/components/common/backup/storage/actions/add/steps/hostAccessibility/HostAccessibility.vue +52 -52
  24. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
  25. package/components/common/backup/storage/actions/delete/Delete.vue +65 -65
  26. package/components/common/browse/blocks/Container.vue +234 -234
  27. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  28. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  29. package/components/common/browse/lib/models/interfaces.ts +5 -5
  30. package/components/common/context/lib/models/interfaces.ts +33 -33
  31. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  32. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  33. package/components/common/diagramMain/lib/models/types.ts +21 -21
  34. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  35. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  36. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  37. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  38. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  39. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  40. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  41. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  42. package/components/common/diagramMain/modals/lib/config/networkModal.ts +398 -398
  43. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  44. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  45. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  46. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  47. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  48. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  49. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  50. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  51. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  52. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  53. package/components/common/diagramMain/network/Network.vue +141 -141
  54. package/components/common/diagramMain/port/Ports.vue +47 -47
  55. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  56. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  57. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  58. package/components/common/pages/home/headline/Headline.vue +45 -45
  59. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  60. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  61. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  62. package/components/common/pages/home/widgets/WidgetsNew.vue +88 -88
  63. package/components/common/pages/home/widgets/WidgetsOld.vue +36 -36
  64. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  65. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  66. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  67. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  68. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  69. package/components/common/pages/packages/Packages.vue +208 -208
  70. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  71. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  72. package/components/common/recursionTree/RecursionTree.vue +223 -223
  73. package/components/common/select/button/ButtonDropdown.vue +112 -112
  74. package/components/common/select/radio/RadioGroup.vue +137 -137
  75. package/components/common/spiceConsole/Drawer.vue +381 -381
  76. package/components/common/spiceConsole/SpiceConsole.vue +127 -127
  77. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  78. package/components/common/tools/Actions.vue +207 -207
  79. package/components/common/vm/actions/add/Old.vue +388 -388
  80. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  81. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  82. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  83. package/components/common/vm/actions/clone/Clone.vue +823 -823
  84. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  85. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +321 -321
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +227 -227
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +155 -155
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +385 -385
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +85 -85
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +154 -154
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  118. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +155 -155
  119. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +130 -130
  120. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +113 -113
  121. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  122. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  123. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  124. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +95 -95
  125. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +155 -155
  126. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  127. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapOld.vue +44 -44
  128. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  129. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  130. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  131. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  132. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +143 -143
  133. package/components/common/vm/actions/common/select/computeResource/New.vue +184 -184
  134. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +131 -131
  135. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  136. package/components/common/vm/actions/common/select/createType/lib/config/items.ts +48 -48
  137. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  138. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  139. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  140. package/components/common/vm/actions/common/select/storage/Storage.vue +155 -155
  141. package/components/common/vm/actions/common/select/storage/new/New.vue +300 -300
  142. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  143. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  144. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  145. package/components/common/vm/actions/editSettings/EditSettings.vue +242 -242
  146. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  147. package/components/common/vmt/actions/add/lib/models/interfaces.ts +23 -23
  148. package/components/common/wizards/datastore/add/New.vue +7 -6
  149. package/components/common/wizards/datastore/add/steps/hostAccessibility/table/new/New.vue +9 -4
  150. package/components/common/wizards/datastore/add/steps/nameAndConfigure/NameAndConfigure.vue +13 -5
  151. package/components/common/wizards/datastore/add/steps/nameAndConfigure/NameAndConfigureNew.vue +4 -0
  152. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +1 -0
  153. package/components/common/wizards/datastore/add/steps/nameAndDevice/table/new/New.vue +12 -4
  154. package/components/common/wizards/datastore/add/steps/nameAndDevice/table/new/lib/models/enums.ts +1 -1
  155. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  156. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +104 -104
  157. package/components/common/wizards/network/add/steps/SelectedTargetDevice.vue +467 -467
  158. package/components/common/wizards/vm/migrate/Migrate.vue +349 -349
  159. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  160. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  161. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  162. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  163. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  164. package/components/common/wizards/vm/migrate/select/type/lib/config/typeOptions.ts +45 -45
  165. package/composables/productNameLocal.ts +30 -30
  166. package/composables/useAppVersion.ts +21 -21
  167. package/package.json +2 -2
  168. package/plugins/date.ts +233 -233
  169. package/plugins/panelStates.ts +70 -70
  170. package/plugins/text.ts +59 -59
  171. package/public/spice-console/lib/images/bitmap.js +203 -203
  172. package/public/spice-console/network/spicechannel.js +390 -390
  173. package/store/main/mutations.ts +7 -7
  174. package/store/main/state.ts +7 -7
  175. package/store/tasks/lib/models/enums.ts +4 -4
  176. package/store/tasks/mappers/recentTasks.ts +79 -79
@@ -1,20 +1,20 @@
1
- import type {UI_I_Card, UI_I_Vms} from "~/components/common/pages/home/lib/models/interfaces";
2
-
3
- export const itemsFunc = (vms: UI_I_Vms): UI_I_Card[] => [
4
- {
5
- value: vms.powered_on,
6
- text: 'powered_on',
7
- icon: 'vsphere-icon-vm-on',
8
- },
9
- {
10
- value: vms.powered_off,
11
- text: 'powered_off',
12
- icon: 'icon-vm-power-off',
13
- },
14
-
15
- {
16
- value: vms.suspended,
17
- text: 'suspended',
18
- icon: 'vsphere-icon-vm-suspended',
19
- },
1
+ import type {UI_I_Card, UI_I_Vms} from "~/components/common/pages/home/lib/models/interfaces";
2
+
3
+ export const itemsFunc = (vms: UI_I_Vms): UI_I_Card[] => [
4
+ {
5
+ value: vms.powered_on,
6
+ text: 'powered_on',
7
+ icon: 'vsphere-icon-vm-on',
8
+ },
9
+ {
10
+ value: vms.powered_off,
11
+ text: 'powered_off',
12
+ icon: 'icon-vm-power-off',
13
+ },
14
+
15
+ {
16
+ value: vms.suspended,
17
+ text: 'suspended',
18
+ icon: 'vsphere-icon-vm-suspended',
19
+ },
20
20
  ]
@@ -1,208 +1,208 @@
1
- <template>
2
- <div class="packages-page">
3
- <common-headline :headline="localization.common.softwarePackages" />
4
-
5
- <div class="grid-toolbar">
6
- <common-tools-actions
7
- test-id="packages-tools-panel"
8
- :actions="actions"
9
- @click="onClickAction"
10
- >
11
- <template #icon="{ data }">
12
- <span
13
- v-if="data.type === 'updates'"
14
- class="vx-icon-import icon"
15
- ></span>
16
- <span
17
- v-if="data.type === 'refresh'"
18
- class="vsphere-icon-reset icon"
19
- ></span>
20
- </template>
21
- </common-tools-actions>
22
- </div>
23
-
24
- <common-pages-packages-table-view
25
- v-model="selectedRow"
26
- :data-table="props.packagesData?.items || []"
27
- :total-items="props.packagesData?.total_items || 0"
28
- :total-pages="props.packagesData?.total_pages || 1"
29
- :pagination="pagination"
30
- :loading="props.loading"
31
- @pagination="onPagination"
32
- @sort="onSort"
33
- />
34
- </div>
35
- </template>
36
-
37
- <script lang="ts" setup>
38
- import type { UI_I_Localization } from '~/lib/models/interfaces'
39
- import type {
40
- UI_I_Pagination,
41
- } from '~/lib/models/table/interfaces'
42
- import type { UI_T_SelectedRow } from '~/components/atoms/table/dataGrid/lib/models/types'
43
- import type { UI_I_Button } from '~/components/common/tools/lib/models/interfaces'
44
- import type { UI_T_Action } from '~/components/common/pages/packages/lib/models/types'
45
- import { actionsFunc } from '~/components/common/pages/packages/lib/config/actions'
46
-
47
-
48
- const selectedRow = defineModel<UI_T_SelectedRow>('selectedRow')
49
- const pagination = defineModel<UI_I_Pagination>('pagination')
50
-
51
- const props = defineProps<{
52
- packagesData: any | null
53
- loading: boolean
54
- }>()
55
- const emits = defineEmits<{
56
- (event: 'sort', value: string): void
57
- (event: 'pagination', value: UI_I_Pagination): void
58
- (event: 'action', value: [UI_T_Action, FormData | null]): void
59
- (event: 'refresh'): void
60
- }>()
61
-
62
- const localization = computed<UI_I_Localization>(() => useLocal())
63
-
64
- const disabledActions = ref<string[]>([
65
- 'enable',
66
- 'disable',
67
- 'on',
68
- 'off',
69
- 'remove',
70
- ])
71
-
72
- const actions = computed<UI_I_Button[]>(() =>
73
- actionsFunc(localization.value, disabledActions.value)
74
- )
75
-
76
- const onPagination = (value: UI_I_Pagination): void => {
77
- emits('pagination', value)
78
- }
79
- const onSort = (value: string): void => {
80
- emits('sort', value)
81
- }
82
-
83
- const checkAllActions = (): void => {
84
- if (typeof selectedRow.value !== 'number') return
85
-
86
- const selectedPackage = props.packagesData?.items[selectedRow.value]
87
- if (!selectedPackage) return
88
-
89
- disabledActions.value = []
90
- if (window.location.hostname === 'dev-pn.aobfg.ru') return
91
-
92
- if (selectedPackage.not_runnable || selectedPackage.required) {
93
- disabledActions.value = ['enable', 'disable', 'on', 'off']
94
- }
95
-
96
- if (selectedPackage.required) {
97
- disabledActions.value = ['remove']
98
- }
99
- }
100
- watch(
101
- selectedRow,
102
- () => {
103
- checkAllActions()
104
- },
105
- { immediate: true }
106
- )
107
-
108
- const onAction = async (
109
- action: UI_T_Action,
110
- file: FormData | null = null
111
- ): Promise<void> => {
112
- emits('action', [action, file])
113
- }
114
- const onRefresh = (): void => {
115
- emits('refresh')
116
- }
117
- const onChangeFiles = (event: Event | undefined): void => {
118
- if (!event) return
119
-
120
- const target = event.target as HTMLInputElement
121
- if (!target.files) return
122
-
123
- const file = target.files[0]
124
-
125
- const formData = new FormData()
126
- formData.append('package', file)
127
- onAction('update', formData)
128
- }
129
-
130
- const onClickAction = (type: string, file?: Event): void => {
131
- switch (type) {
132
- case 'updates':
133
- onChangeFiles(file)
134
- break
135
- case 'refresh':
136
- onRefresh()
137
- break
138
- case 'enable':
139
- onAction('enable')
140
- break
141
- case 'disable':
142
- onAction('disable')
143
- break
144
- case 'on':
145
- onAction('on')
146
- break
147
- case 'off':
148
- onAction('off')
149
- break
150
- case 'remove':
151
- onAction('remove')
152
- break
153
- }
154
- }
155
- </script>
156
-
157
- <style>
158
- :root {
159
- --action-link-container-bg-color: #e9f6fd;
160
- --vui-action-label-color: #333;
161
- }
162
- :root.dark-theme {
163
- --action-link-container-bg-color: #29414e;
164
- --vui-action-label-color: #adbbc4;
165
- }
166
- </style>
167
-
168
- <style lang="scss" scoped>
169
- @import '~/assets/scss/common/mixins.scss';
170
-
171
- .packages-page {
172
- @include flex($dir: column);
173
- height: 100%;
174
-
175
- .grid-toolbar {
176
- .icon {
177
- display: block;
178
- width: 16px;
179
- height: 16px;
180
- min-width: 16px;
181
- min-height: 16px;
182
- background-size: 100% auto;
183
- margin-right: 5px;
184
- }
185
-
186
- :deep(.btn) {
187
- text-transform: none;
188
- font-size: 13px;
189
- font-weight: normal;
190
- color: var(--vui-action-label-color);
191
- min-width: unset;
192
- padding: 4px;
193
- line-height: normal;
194
- margin-right: 4px;
195
- display: flex;
196
- align-items: center;
197
- letter-spacing: normal;
198
-
199
- &:not(:disabled):hover {
200
- color: var(--vui-action-label-color);
201
- text-decoration: none;
202
- background-color: var(--action-link-container-bg-color);
203
- border: 1px solid #c7e9ff;
204
- }
205
- }
206
- }
207
- }
208
- </style>
1
+ <template>
2
+ <div class="packages-page">
3
+ <common-headline :headline="localization.common.softwarePackages" />
4
+
5
+ <div class="grid-toolbar">
6
+ <common-tools-actions
7
+ test-id="packages-tools-panel"
8
+ :actions="actions"
9
+ @click="onClickAction"
10
+ >
11
+ <template #icon="{ data }">
12
+ <span
13
+ v-if="data.type === 'updates'"
14
+ class="vx-icon-import icon"
15
+ ></span>
16
+ <span
17
+ v-if="data.type === 'refresh'"
18
+ class="vsphere-icon-reset icon"
19
+ ></span>
20
+ </template>
21
+ </common-tools-actions>
22
+ </div>
23
+
24
+ <common-pages-packages-table-view
25
+ v-model="selectedRow"
26
+ :data-table="props.packagesData?.items || []"
27
+ :total-items="props.packagesData?.total_items || 0"
28
+ :total-pages="props.packagesData?.total_pages || 1"
29
+ :pagination="pagination"
30
+ :loading="props.loading"
31
+ @pagination="onPagination"
32
+ @sort="onSort"
33
+ />
34
+ </div>
35
+ </template>
36
+
37
+ <script lang="ts" setup>
38
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
39
+ import type {
40
+ UI_I_Pagination,
41
+ } from '~/lib/models/table/interfaces'
42
+ import type { UI_T_SelectedRow } from '~/components/atoms/table/dataGrid/lib/models/types'
43
+ import type { UI_I_Button } from '~/components/common/tools/lib/models/interfaces'
44
+ import type { UI_T_Action } from '~/components/common/pages/packages/lib/models/types'
45
+ import { actionsFunc } from '~/components/common/pages/packages/lib/config/actions'
46
+
47
+
48
+ const selectedRow = defineModel<UI_T_SelectedRow>('selectedRow')
49
+ const pagination = defineModel<UI_I_Pagination>('pagination')
50
+
51
+ const props = defineProps<{
52
+ packagesData: any | null
53
+ loading: boolean
54
+ }>()
55
+ const emits = defineEmits<{
56
+ (event: 'sort', value: string): void
57
+ (event: 'pagination', value: UI_I_Pagination): void
58
+ (event: 'action', value: [UI_T_Action, FormData | null]): void
59
+ (event: 'refresh'): void
60
+ }>()
61
+
62
+ const localization = computed<UI_I_Localization>(() => useLocal())
63
+
64
+ const disabledActions = ref<string[]>([
65
+ 'enable',
66
+ 'disable',
67
+ 'on',
68
+ 'off',
69
+ 'remove',
70
+ ])
71
+
72
+ const actions = computed<UI_I_Button[]>(() =>
73
+ actionsFunc(localization.value, disabledActions.value)
74
+ )
75
+
76
+ const onPagination = (value: UI_I_Pagination): void => {
77
+ emits('pagination', value)
78
+ }
79
+ const onSort = (value: string): void => {
80
+ emits('sort', value)
81
+ }
82
+
83
+ const checkAllActions = (): void => {
84
+ if (typeof selectedRow.value !== 'number') return
85
+
86
+ const selectedPackage = props.packagesData?.items[selectedRow.value]
87
+ if (!selectedPackage) return
88
+
89
+ disabledActions.value = []
90
+ if (window.location.hostname === 'dev-pn.aobfg.ru') return
91
+
92
+ if (selectedPackage.not_runnable || selectedPackage.required) {
93
+ disabledActions.value = ['enable', 'disable', 'on', 'off']
94
+ }
95
+
96
+ if (selectedPackage.required) {
97
+ disabledActions.value = ['remove']
98
+ }
99
+ }
100
+ watch(
101
+ selectedRow,
102
+ () => {
103
+ checkAllActions()
104
+ },
105
+ { immediate: true }
106
+ )
107
+
108
+ const onAction = async (
109
+ action: UI_T_Action,
110
+ file: FormData | null = null
111
+ ): Promise<void> => {
112
+ emits('action', [action, file])
113
+ }
114
+ const onRefresh = (): void => {
115
+ emits('refresh')
116
+ }
117
+ const onChangeFiles = (event: Event | undefined): void => {
118
+ if (!event) return
119
+
120
+ const target = event.target as HTMLInputElement
121
+ if (!target.files) return
122
+
123
+ const file = target.files[0]
124
+
125
+ const formData = new FormData()
126
+ formData.append('package', file)
127
+ onAction('update', formData)
128
+ }
129
+
130
+ const onClickAction = (type: string, file?: Event): void => {
131
+ switch (type) {
132
+ case 'updates':
133
+ onChangeFiles(file)
134
+ break
135
+ case 'refresh':
136
+ onRefresh()
137
+ break
138
+ case 'enable':
139
+ onAction('enable')
140
+ break
141
+ case 'disable':
142
+ onAction('disable')
143
+ break
144
+ case 'on':
145
+ onAction('on')
146
+ break
147
+ case 'off':
148
+ onAction('off')
149
+ break
150
+ case 'remove':
151
+ onAction('remove')
152
+ break
153
+ }
154
+ }
155
+ </script>
156
+
157
+ <style>
158
+ :root {
159
+ --action-link-container-bg-color: #e9f6fd;
160
+ --vui-action-label-color: #333;
161
+ }
162
+ :root.dark-theme {
163
+ --action-link-container-bg-color: #29414e;
164
+ --vui-action-label-color: #adbbc4;
165
+ }
166
+ </style>
167
+
168
+ <style lang="scss" scoped>
169
+ @import '~/assets/scss/common/mixins.scss';
170
+
171
+ .packages-page {
172
+ @include flex($dir: column);
173
+ height: 100%;
174
+
175
+ .grid-toolbar {
176
+ .icon {
177
+ display: block;
178
+ width: 16px;
179
+ height: 16px;
180
+ min-width: 16px;
181
+ min-height: 16px;
182
+ background-size: 100% auto;
183
+ margin-right: 5px;
184
+ }
185
+
186
+ :deep(.btn) {
187
+ text-transform: none;
188
+ font-size: 13px;
189
+ font-weight: normal;
190
+ color: var(--vui-action-label-color);
191
+ min-width: unset;
192
+ padding: 4px;
193
+ line-height: normal;
194
+ margin-right: 4px;
195
+ display: flex;
196
+ align-items: center;
197
+ letter-spacing: normal;
198
+
199
+ &:not(:disabled):hover {
200
+ color: var(--vui-action-label-color);
201
+ text-decoration: none;
202
+ background-color: var(--action-link-container-bg-color);
203
+ border: 1px solid #c7e9ff;
204
+ }
205
+ }
206
+ }
207
+ }
208
+ </style>
@@ -1,68 +1,68 @@
1
- <template>
2
- <div>
3
- <nuxt-link
4
- :class="['unit', { disabled: props.item.disabled }]"
5
- :to="!props.item.disabled && navigate"
6
- :title="
7
- props.item.disabled
8
- ? localization.common.inDevelopment
9
- : props.item.navigateTo
10
- "
11
- :data-id="props.testId"
12
- @click="emits('change-navigation')"
13
- @contextmenu="emits('change-navigation')"
14
- >
15
- <span class="icon-2">
16
- <ui-icon :name="props.item.iconName" width="34" height="34"></ui-icon>
17
- </span>
18
- <div class="unit-text" :title="props.item.text">
19
- {{ props.item.text }}
20
- </div>
21
- </nuxt-link>
22
- </div>
23
- </template>
24
- <script setup lang="ts">
25
- import type { UI_I_Localization } from '~/lib/models/interfaces'
26
- import type { UI_I_BlockItem } from '~/components/common/pages/shortcuts/lib/models/interfaces'
27
-
28
- const props = defineProps<{
29
- item: UI_I_BlockItem
30
- testId?: string
31
- }>()
32
- const emits = defineEmits<{
33
- (event: 'change-navigation'): void
34
- }>()
35
-
36
- const localization = computed<UI_I_Localization>(() => useLocal())
37
-
38
- const navigate = computed<string>(() => '/' + props.item.navigateTo)
39
- </script>
40
- <style lang="scss" scoped>
41
- .unit {
42
- display: flex;
43
- flex-direction: column;
44
- justify-content: center;
45
- align-items: center;
46
- width: 95px;
47
- margin: 21px 10px;
48
- text-decoration-line: none;
49
-
50
- &.disabled {
51
- opacity: 0.6;
52
- cursor: not-allowed;
53
- }
54
-
55
- .icon-2 {
56
- margin: 0 10px 15px 10px;
57
- color: var(--global-font-color3);
58
- }
59
- &-text {
60
- color: var(--global-font-color3);
61
- font-size: 13px;
62
- line-height: 13px;
63
- font-weight: 400;
64
- padding-bottom: 2px;
65
- text-align: center;
66
- }
67
- }
68
- </style>
1
+ <template>
2
+ <div>
3
+ <nuxt-link
4
+ :class="['unit', { disabled: props.item.disabled }]"
5
+ :to="!props.item.disabled && navigate"
6
+ :title="
7
+ props.item.disabled
8
+ ? localization.common.inDevelopment
9
+ : props.item.navigateTo
10
+ "
11
+ :data-id="props.testId"
12
+ @click="emits('change-navigation')"
13
+ @contextmenu="emits('change-navigation')"
14
+ >
15
+ <span class="icon-2">
16
+ <ui-icon :name="props.item.iconName" width="34" height="34"></ui-icon>
17
+ </span>
18
+ <div class="unit-text" :title="props.item.text">
19
+ {{ props.item.text }}
20
+ </div>
21
+ </nuxt-link>
22
+ </div>
23
+ </template>
24
+ <script setup lang="ts">
25
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
26
+ import type { UI_I_BlockItem } from '~/components/common/pages/shortcuts/lib/models/interfaces'
27
+
28
+ const props = defineProps<{
29
+ item: UI_I_BlockItem
30
+ testId?: string
31
+ }>()
32
+ const emits = defineEmits<{
33
+ (event: 'change-navigation'): void
34
+ }>()
35
+
36
+ const localization = computed<UI_I_Localization>(() => useLocal())
37
+
38
+ const navigate = computed<string>(() => '/' + props.item.navigateTo)
39
+ </script>
40
+ <style lang="scss" scoped>
41
+ .unit {
42
+ display: flex;
43
+ flex-direction: column;
44
+ justify-content: center;
45
+ align-items: center;
46
+ width: 95px;
47
+ margin: 21px 10px;
48
+ text-decoration-line: none;
49
+
50
+ &.disabled {
51
+ opacity: 0.6;
52
+ cursor: not-allowed;
53
+ }
54
+
55
+ .icon-2 {
56
+ margin: 0 10px 15px 10px;
57
+ color: var(--global-font-color3);
58
+ }
59
+ &-text {
60
+ color: var(--global-font-color3);
61
+ font-size: 13px;
62
+ line-height: 13px;
63
+ font-weight: 400;
64
+ padding-bottom: 2px;
65
+ text-align: center;
66
+ }
67
+ }
68
+ </style>
@@ -1,17 +1,17 @@
1
- <template>
2
- <common-ready-to-complete-new v-if="isNewView" :data="props.data" />
3
- <common-ready-to-complete-old v-else :data="props.data" />
4
- </template>
5
-
6
- <script lang="ts" setup>
7
- import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
8
-
9
- const props = defineProps<{
10
- data: UI_I_TableInfoItem[]
11
- }>()
12
-
13
- const { $store }: any = useNuxtApp()
14
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
15
- </script>
16
-
17
- <style lang="scss" scoped></style>
1
+ <template>
2
+ <common-ready-to-complete-new v-if="isNewView" :data="props.data" />
3
+ <common-ready-to-complete-old v-else :data="props.data" />
4
+ </template>
5
+
6
+ <script lang="ts" setup>
7
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
8
+
9
+ const props = defineProps<{
10
+ data: UI_I_TableInfoItem[]
11
+ }>()
12
+
13
+ const { $store }: any = useNuxtApp()
14
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
15
+ </script>
16
+
17
+ <style lang="scss" scoped></style>