bfg-common 1.5.375 → 1.5.377
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/CODE_STYLE.md +109 -109
- package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
- package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
- package/assets/img/icons/icons-sprite-light-3.svg +227 -227
- package/assets/img/icons/icons-sprite-light-5.svg +488 -488
- package/assets/localization/local_be.json +15 -1
- package/assets/localization/local_en.json +15 -1
- package/assets/localization/local_hy.json +15 -1
- package/assets/localization/local_kk.json +15 -1
- package/assets/localization/local_ru.json +15 -1
- package/assets/localization/local_zh.json +15 -1
- package/components/atoms/TheIcon3.vue +50 -50
- package/components/atoms/collapse/CollapseNav.vue +170 -170
- package/components/atoms/collapse/CollapseNavItem.vue +226 -226
- package/components/atoms/nav/NavBar.vue +147 -147
- package/components/atoms/perPage/PerPage.vue +58 -58
- package/components/atoms/table/dataGrid/DataGrid.vue +1717 -1717
- package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
- package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
- package/components/atoms/tabs/VerticalTabs.vue +105 -105
- package/components/common/backup/storage/actions/add/lib/config/steps.ts +168 -168
- package/components/common/backup/storage/actions/add/steps/hostAccessibility/HostAccessibility.vue +52 -52
- package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
- package/components/common/backup/storage/actions/delete/Delete.vue +65 -65
- package/components/common/browse/BrowseNew.vue +8 -2
- package/components/common/browse/blocks/Container.vue +234 -231
- package/components/common/browse/blocks/TitleNew.vue +2 -2
- package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
- package/components/common/browse/blocks/lib/models/types.ts +1 -1
- package/components/common/browse/lib/models/interfaces.ts +5 -5
- package/components/common/context/lib/models/interfaces.ts +33 -33
- package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
- package/components/common/diagramMain/lib/config/initial.ts +50 -50
- package/components/common/diagramMain/lib/models/types.ts +21 -21
- package/components/common/diagramMain/lib/utils/utils.ts +331 -331
- package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
- package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
- package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
- package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
- package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
- package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
- package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
- package/components/common/diagramMain/modals/lib/config/networkModal.ts +398 -398
- package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
- package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
- package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
- package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
- package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
- package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
- package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
- package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
- package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
- package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
- package/components/common/diagramMain/network/Network.vue +141 -141
- package/components/common/diagramMain/port/Ports.vue +47 -47
- package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
- package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
- package/components/common/monitor/overview/OverviewOld.vue +139 -139
- package/components/common/pages/home/headline/Headline.vue +45 -45
- package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
- package/components/common/pages/home/lib/models/interfaces.ts +48 -48
- package/components/common/pages/home/widgets/Widgets.vue +49 -49
- package/components/common/pages/home/widgets/WidgetsNew.vue +88 -88
- package/components/common/pages/home/widgets/WidgetsOld.vue +36 -36
- package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
- package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
- package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
- package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
- package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
- package/components/common/pages/packages/Packages.vue +208 -208
- package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
- package/components/common/readyToComplete/New.vue +129 -129
- package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
- package/components/common/recursionTree/RecursionTree.vue +223 -223
- package/components/common/select/button/ButtonDropdown.vue +112 -112
- package/components/common/spiceConsole/Drawer.vue +377 -377
- package/components/common/spiceConsole/SpiceConsole.vue +127 -127
- package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
- package/components/common/tools/Actions.vue +207 -207
- package/components/common/vm/actions/add/Add.vue +831 -827
- package/components/common/vm/actions/add/Old.vue +388 -388
- package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
- package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
- package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
- package/components/common/vm/actions/clone/Clone.vue +823 -823
- package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
- package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +321 -321
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +227 -227
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +155 -155
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +385 -385
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +85 -85
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +6 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +154 -154
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
- package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +155 -155
- package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +130 -130
- package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +113 -113
- package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
- package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
- package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
- package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +95 -95
- package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +155 -155
- package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
- package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapOld.vue +44 -44
- package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
- package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
- package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
- package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
- package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +143 -143
- package/components/common/vm/actions/common/select/computeResource/New.vue +184 -184
- package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +131 -131
- package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
- package/components/common/vm/actions/common/select/createType/lib/config/items.ts +48 -48
- package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
- package/components/common/vm/actions/common/select/name/Name.vue +174 -174
- package/components/common/vm/actions/common/select/os/Old.vue +152 -152
- package/components/common/vm/actions/common/select/os/Os.vue +139 -139
- package/components/common/vm/actions/common/select/storage/Storage.vue +155 -155
- package/components/common/vm/actions/common/select/storage/new/New.vue +300 -300
- package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
- package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
- package/components/common/vm/actions/editSettings/EditSettings.vue +242 -242
- package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
- package/components/common/vmt/actions/add/lib/models/interfaces.ts +23 -23
- package/components/common/wizards/network/add/steps/SelectConnectionType.vue +104 -104
- package/components/common/wizards/network/add/steps/SelectedTargetDevice.vue +467 -467
- package/components/common/wizards/vm/migrate/Migrate.vue +349 -349
- package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
- package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
- package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
- package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
- package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
- package/components/common/wizards/vm/migrate/select/type/lib/config/typeOptions.ts +45 -45
- package/composables/productNameLocal.ts +30 -30
- package/composables/useAppVersion.ts +21 -21
- package/package.json +1 -1
- package/plugins/date.ts +233 -233
- package/plugins/panelStates.ts +70 -70
- package/plugins/text.ts +59 -59
- package/public/spice-console/lib/images/bitmap.js +203 -203
- package/public/spice-console/network/spicechannel.js +387 -387
- package/store/main/mutations.ts +7 -7
- package/store/main/state.ts +7 -7
- package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -3422,6 +3422,20 @@
|
|
3422
3422
|
"configurationParameters": "Параметры канфігурацыі",
|
3423
3423
|
"reservedFailoverCpuCapacity": "Зарэзерваваная ёмістасць CPU для аварыйнага пераключэння:",
|
3424
3424
|
"reservedFailoverMemoryCapacity": "Зарэзерваваная ёмістасць памяці для аварыйнага пераключэння:",
|
3425
|
-
"failoverCapacityDefinedReserving": "Ёмістасць аварыйнага пераключэння вызначаецца шляхам рэзервавання працэнта рэсурсаў кластара."
|
3425
|
+
"failoverCapacityDefinedReserving": "Ёмістасць аварыйнага пераключэння вызначаецца шляхам рэзервавання працэнта рэсурсаў кластара.",
|
3426
|
+
"datastoreForHeartBeating": "Сховішча даных для сардэчнага біцця",
|
3427
|
+
"cpuSlotSize": "Памер слота працэсара",
|
3428
|
+
"memorySlotSize": "Памер слота памяці",
|
3429
|
+
"vmsRequiringMultipleSlots": "Віртуальныя машыны, якія патрабуюць некалькі слотаў",
|
3430
|
+
"reservePersistentMemoryFailoverCapacity": "Рэзерваваць магутнасць для аварыйнага пераключэння пастаяннай памяці",
|
3431
|
+
"reservePersistentMemoryFailoverCapacityTooltip": "Пэўная колькасць магутнасці пастаяннай памяці ў кластары будзе выдзелена для аварыйнага пераключэння, нават калі віртуальныя машыны ў кластары зараз не выкарыстоўваюць пастаянную памяць.",
|
3432
|
+
"performanceDegradationVmsTolerate": "Дапушчальная дэградацыя прадукцыйнасці ВМ",
|
3433
|
+
"performanceDegradationVmsTolerateDescription": "Працэнт зніжэння прадукцыйнасці, які віртуальныя машыны ў кластары могуць дапусціць падчас збою. 0% — выдаецца папярэджанне, калі няма дастатковай рэзервовай ёмістасці для забеспячэння той жа прадукцыйнасці пасля перазапуску ВМ. 100% — папярэджанне адключана.",
|
3434
|
+
"overrideCalculatedFailoverCapacity": "Перавызначыць разлічаную рэзервовую ёмістасць.",
|
3435
|
+
"overrideCalculatedPersistentMemoryCapacity": "Перавызначыць разлічаную рэзервовую ёмістасць пастаяннай памяці",
|
3436
|
+
"reserve": "Рэзерваваць",
|
3437
|
+
"persistentMemoryCapacity": "ёмістасці пастаяннай памяці",
|
3438
|
+
"enabledProactiveHaOnCluster": "Каб уключыць Proactive HA, неабходна таксама ўключыць {0} у кластары.",
|
3439
|
+
"drs": "DRS"
|
3426
3440
|
}
|
3427
3441
|
}
|
@@ -3426,6 +3426,20 @@
|
|
3426
3426
|
"configurationParameters": "Configuration Parameters",
|
3427
3427
|
"reservedFailoverCpuCapacity": "Reserved failover CPU capacity:",
|
3428
3428
|
"reservedFailoverMemoryCapacity": "Reserved failover Memory capacity:",
|
3429
|
-
"failoverCapacityDefinedReserving": "Failover capacity is defined by reserving a percentage of the cluster resources."
|
3429
|
+
"failoverCapacityDefinedReserving": "Failover capacity is defined by reserving a percentage of the cluster resources.",
|
3430
|
+
"datastoreForHeartBeating": "Datastore for Heartbeating",
|
3431
|
+
"cpuSlotSize": "CPU slot size",
|
3432
|
+
"memorySlotSize": "Memory slot size",
|
3433
|
+
"vmsRequiringMultipleSlots": "VMs requiring multiple slots",
|
3434
|
+
"reservePersistentMemoryFailoverCapacity": "Reserve Persistent Memory failover capacity",
|
3435
|
+
"reservePersistentMemoryFailoverCapacityTooltip": "Some amount of persistent memory capacity in the cluster would be dedicated for failover purpose even if the virtual machines in the cluster are not using persistent memory currently.",
|
3436
|
+
"performanceDegradationVmsTolerate": "Performance degradation VMs tolerate",
|
3437
|
+
"performanceDegradationVmsTolerateDescription": "Percentage of performance degradation the VMs in the cluster are allowed to tolerate during a failure. 0% - Raises a warning if there is insufficient failover capacity to guarantee the same performance after VMs restart. 100% - Warning is disabled.",
|
3438
|
+
"overrideCalculatedFailoverCapacity": "Override calculated failover capacity.",
|
3439
|
+
"overrideCalculatedPersistentMemoryCapacity": "Override calculated Persistent Memory failover capacity",
|
3440
|
+
"reserve": "Reserve",
|
3441
|
+
"persistentMemoryCapacity": "of Persistent Memory capacity",
|
3442
|
+
"enabledProactiveHaOnCluster": "To enable Proactive HA you must also enable {0} on the cluster.",
|
3443
|
+
"drs": "DRS"
|
3430
3444
|
}
|
3431
3445
|
}
|
@@ -3426,6 +3426,20 @@
|
|
3426
3426
|
"configurationParameters": "Կոնֆիգուրացիայի պարամետրեր",
|
3427
3427
|
"reservedFailoverCpuCapacity": "Ավարիայի դեպքում CPU-ի պահպանված հզորություն՝",
|
3428
3428
|
"reservedFailoverMemoryCapacity": "Ավարիայի դեպքում հիշողության պահպանված հզորություն՝",
|
3429
|
-
"failoverCapacityDefinedReserving": "Ավարիայի հզորությունը սահմանվում է՝ պահուստավորելով կլաստերի ռեսուրսների տոկոսը։"
|
3429
|
+
"failoverCapacityDefinedReserving": "Ավարիայի հզորությունը սահմանվում է՝ պահուստավորելով կլաստերի ռեսուրսների տոկոսը։",
|
3430
|
+
"datastoreForHeartBeating": "Տվյալների պահեստ սրտի բաբախի համար",
|
3431
|
+
"cpuSlotSize": "Պրոցեսորի բնիկի չափը",
|
3432
|
+
"memorySlotSize": "Հիշողության բնիկի չափը",
|
3433
|
+
"vmsRequiringMultipleSlots": "Բազմաբնիկ պահանջող վիրտուալ մեքենաներ",
|
3434
|
+
"reservePersistentMemoryFailoverCapacity": "Պահուստավորել մշտական հիշողության վթարային հզորությունը",
|
3435
|
+
"reservePersistentMemoryFailoverCapacityTooltip": "Կլաստերում որոշ մշտական հիշողության հզորություն կտրամադրվի վթարային աշխատանքի համար, նույնիսկ եթե վիրտուալ մեքենաները ներկայումս չեն օգտագործում մշտական հիշողություն։",
|
3436
|
+
"performanceDegradationVmsTolerate": "ՎՄ-ի թույլատրելի արտադրողականության նվազում",
|
3437
|
+
"performanceDegradationVmsTolerateDescription": "Արտադրողականության նվազման տոկոսը, որը կլաստերի վիրտուալ մեքենաները կարող են հանդուրժել խափանման ժամանակ։ 0% — զգուշացում, եթե չկա բավարար պահուստային հզորություն նույն արտադրողականությունը ապահովելու համար ՎՄ վերագործարկումից հետո։ 100% — զգուշացումը անջատված է։",
|
3438
|
+
"overrideCalculatedFailoverCapacity": "Վերագրանցել հաշվարկված պահուստային հզորությունը։",
|
3439
|
+
"overrideCalculatedPersistentMemoryCapacity": "Վերագրանցել հաշվարկված մշտական հիշողության պահուստային հզորությունը",
|
3440
|
+
"reserve": "Պահուստավորել",
|
3441
|
+
"persistentMemoryCapacity": "մշտական հիշողության հզորությունից",
|
3442
|
+
"enabledProactiveHaOnCluster": "Proactive HA միացնելու համար պետք է նաև միացնել {0} կլաստերում։",
|
3443
|
+
"drs": "DRS"
|
3430
3444
|
}
|
3431
3445
|
}
|
@@ -3425,6 +3425,20 @@
|
|
3425
3425
|
"configurationParameters": "Конфигурация параметрлері",
|
3426
3426
|
"reservedFailoverCpuCapacity": "Апаттық ауысу үшін сақталған CPU қуаты:",
|
3427
3427
|
"reservedFailoverMemoryCapacity": "Апаттық ауысу үшін сақталған жад сыйымдылығы:",
|
3428
|
-
"failoverCapacityDefinedReserving": "Апаттық қуат кластер ресурстарының пайызын резервтеу арқылы анықталады."
|
3428
|
+
"failoverCapacityDefinedReserving": "Апаттық қуат кластер ресурстарының пайызын резервтеу арқылы анықталады.",
|
3429
|
+
"datastoreForHeartBeating": "Жүрек соғысын бақылау үшін деректер қоймасы",
|
3430
|
+
"cpuSlotSize": "Процессор ұясының өлшемі",
|
3431
|
+
"memorySlotSize": "Жады ұясының өлшемі",
|
3432
|
+
"vmsRequiringMultipleSlots": "Бірнеше ұя қажет ететін виртуалды машиналар",
|
3433
|
+
"reservePersistentMemoryFailoverCapacity": "Тұрақты жадтың апаттық ауысу сыйымдылығын сақтау",
|
3434
|
+
"reservePersistentMemoryFailoverCapacityTooltip": "Кластердегі белгілі бір тұрақты жад сыйымдылығы апаттық ауысу үшін бөлінеді, тіпті виртуалды машиналар қазір тұрақты жадты пайдаланбайтын болса да.",
|
3435
|
+
"performanceDegradationVmsTolerate": "ВМ үшін рұқсат етілген өнімділіктің төмендеуі",
|
3436
|
+
"performanceDegradationVmsTolerateDescription": "Ақау кезінде кластердегі виртуалды машиналарға рұқсат етілетін өнімділіктің төмендеу пайызы. 0% — ВМ қайта іске қосылғаннан кейін сол өнімділікті қамтамасыз ету үшін жеткілікті резервтік сыйымдылық болмаған жағдайда ескерту шығарылады. 100% — ескерту өшіріледі.",
|
3437
|
+
"overrideCalculatedFailoverCapacity": "Есептелген резервтік сыйымдылықты қайта анықтау.",
|
3438
|
+
"overrideCalculatedPersistentMemoryCapacity": "Есептелген тұрақты жадтың резервтік сыйымдылығын қайта анықтау",
|
3439
|
+
"reserve": "Резервтеу",
|
3440
|
+
"persistentMemoryCapacity": "тұрақты жад сыйымдылығының",
|
3441
|
+
"enabledProactiveHaOnCluster": "Proactive HA қосу үшін кластерде {0} да қосу керек.",
|
3442
|
+
"drs": "DRS"
|
3429
3443
|
}
|
3430
3444
|
}
|
@@ -3425,6 +3425,20 @@
|
|
3425
3425
|
"configurationParameters": "Параметры конфигурации",
|
3426
3426
|
"reservedFailoverCpuCapacity": "Зарезервированная емкость CPU для аварийного переключения:",
|
3427
3427
|
"reservedFailoverMemoryCapacity": "Зарезервированная емкость памяти для аварийного переключения:",
|
3428
|
-
"failoverCapacityDefinedReserving": "Емкость аварийного переключения определяется резервированием процента ресурсов кластера."
|
3428
|
+
"failoverCapacityDefinedReserving": "Емкость аварийного переключения определяется резервированием процента ресурсов кластера.",
|
3429
|
+
"datastoreForHeartBeating": "Хранилище данных для Heartbeating",
|
3430
|
+
"cpuSlotSize": "Размер слота процессора",
|
3431
|
+
"memorySlotSize": "Размер слота памяти",
|
3432
|
+
"vmsRequiringMultipleSlots": "Виртуальные машины, требующие несколько слотов",
|
3433
|
+
"reservePersistentMemoryFailoverCapacity": "Резервировать мощность для аварийного переключения постоянной памяти",
|
3434
|
+
"reservePersistentMemoryFailoverCapacityTooltip": "Часть мощности постоянной памяти в кластере будет выделена для аварийного переключения, даже если виртуальные машины в кластере в данный момент не используют постоянную память.",
|
3435
|
+
"performanceDegradationVmsTolerate": "Допустимая деградация производительности ВМ",
|
3436
|
+
"performanceDegradationVmsTolerateDescription": "Процент снижения производительности, который ВМ в кластере могут допустить во время сбоя. 0% — предупреждение, если недостаточно резервной емкости для гарантии той же производительности после перезапуска ВМ. 100% — предупреждение отключено.",
|
3437
|
+
"overrideCalculatedFailoverCapacity": "Переопределить рассчитанную резервную емкость.",
|
3438
|
+
"overrideCalculatedPersistentMemoryCapacity": "Переопределить рассчитанную резервную емкость постоянной памяти",
|
3439
|
+
"reserve": "Резервировать",
|
3440
|
+
"persistentMemoryCapacity": "емкости постоянной памяти",
|
3441
|
+
"enabledProactiveHaOnCluster": "Чтобы включить Proactive HA, необходимо также включить {0} в кластере.",
|
3442
|
+
"drs": "DRS"
|
3429
3443
|
}
|
3430
3444
|
}
|
@@ -3423,6 +3423,20 @@
|
|
3423
3423
|
"configurationParameters": "配置参数",
|
3424
3424
|
"reservedFailoverCpuCapacity": "为故障切换保留的 CPU 容量:",
|
3425
3425
|
"reservedFailoverMemoryCapacity": "为故障切换保留的内存容量:",
|
3426
|
-
"failoverCapacityDefinedReserving": "故障切换容量通过保留集群资源的百分比来定义。"
|
3426
|
+
"failoverCapacityDefinedReserving": "故障切换容量通过保留集群资源的百分比来定义。",
|
3427
|
+
"datastoreForHeartBeating": "用于心跳的存储库",
|
3428
|
+
"cpuSlotSize": "CPU 插槽大小",
|
3429
|
+
"memorySlotSize": "内存插槽大小",
|
3430
|
+
"vmsRequiringMultipleSlots": "需要多个插槽的虚拟机",
|
3431
|
+
"reservePersistentMemoryFailoverCapacity": "预留持久内存故障切换容量",
|
3432
|
+
"reservePersistentMemoryFailoverCapacityTooltip": "即使集群中的虚拟机当前未使用持久内存,也会为故障切换预留一定的持久内存容量。",
|
3433
|
+
"performanceDegradationVmsTolerate": "虚拟机可容忍的性能下降",
|
3434
|
+
"performanceDegradationVmsTolerateDescription": "集群中虚拟机在故障期间允许的性能下降百分比。0% — 如果没有足够的故障转移容量来确保虚拟机重启后保持相同性能,则会发出警告。100% — 警告已禁用。",
|
3435
|
+
"overrideCalculatedFailoverCapacity": "覆盖计算的故障转移容量。",
|
3436
|
+
"overrideCalculatedPersistentMemoryCapacity": "覆盖计算的持久内存故障转移容量",
|
3437
|
+
"reserve": "保留",
|
3438
|
+
"persistentMemoryCapacity": "持久内存容量",
|
3439
|
+
"enabledProactiveHaOnCluster": "要启用 Proactive HA,还必须在集群中启用 {0}。",
|
3440
|
+
"drs": "DRS"
|
3427
3441
|
}
|
3428
3442
|
}
|
@@ -1,50 +1,50 @@
|
|
1
|
-
<template>
|
2
|
-
<template v-if="props.name === 'zabbix'">
|
3
|
-
<svg
|
4
|
-
xmlns="http://www.w3.org/2000/svg"
|
5
|
-
width="80"
|
6
|
-
height="22"
|
7
|
-
viewBox="0 0 80 22"
|
8
|
-
fill="none"
|
9
|
-
>
|
10
|
-
<g clip-path="url(#clip0_2691_29714)">
|
11
|
-
<path d="M0 0.522461H80V21.477H0V0.522461Z" fill="#D40000" />
|
12
|
-
<path
|
13
|
-
d="M3.42089 3.71582H14.9889V5.2187L5.6782 16.625H15.2164V18.2836H3.19336V16.7807L12.504 5.37438H3.42089V3.71582ZM23.0402 5.65779L20.3378 12.9087H25.7526L23.0402 5.65779ZM21.9145 3.71582H24.1738L29.7862 18.2836H27.7145L26.3753 14.5473H19.735L18.3938 18.2836H16.2922L21.9145 3.71582ZM33.9176 11.326V16.663H37.113C38.1848 16.663 38.9791 16.4434 39.496 16.0043C40.013 15.5652 40.2704 14.8926 40.2704 13.9905C40.2704 13.0804 40.013 12.4078 39.496 11.9747C38.9791 11.5436 38.1848 11.326 37.113 11.326H33.9176ZM33.9176 5.33446V9.72535H36.8675C37.8415 9.72535 38.566 9.54373 39.043 9.18447C39.52 8.82322 39.7575 8.27237 39.7575 7.5319C39.7575 6.79743 39.518 6.24657 39.043 5.88332C38.566 5.52008 37.8415 5.33646 36.8675 5.33646H33.9176V5.33446ZM31.9257 3.71582H37.0152C38.534 3.71582 39.7056 4.02717 40.5259 4.65188C41.3482 5.27658 41.7573 6.16474 41.7573 7.31635C41.7573 8.2065 41.5478 8.91703 41.1266 9.44393C40.7055 9.97084 40.0868 10.3002 39.2725 10.4299C40.2525 10.6375 41.0129 11.0706 41.5558 11.7312C42.0986 12.3918 42.3701 13.2161 42.3701 14.2041C42.3701 15.5054 41.923 16.5093 41.0289 17.2198C40.1347 17.9283 38.8614 18.2836 37.2128 18.2836H31.9257V3.71582ZM47.5573 11.326V16.663H50.7547C51.8265 16.663 52.6208 16.4434 53.1357 16.0043C53.6527 15.5652 53.9101 14.8926 53.9101 13.9905C53.9101 13.0804 53.6527 12.4078 53.1357 11.9747C52.6188 11.5436 51.8245 11.326 50.7547 11.326H47.5573ZM47.5573 5.33446V9.72535H50.5072C51.4812 9.72535 52.2057 9.54373 52.6827 9.18447C53.1597 8.82322 53.3972 8.27237 53.3972 7.5319C53.3972 6.79743 53.1597 6.24657 52.6827 5.88332C52.2057 5.52008 51.4812 5.33646 50.5072 5.33646H47.5573V5.33446ZM45.5654 3.71582H50.6549C52.1737 3.71582 53.3453 4.02717 54.1656 4.65188C54.9879 5.27658 55.399 6.16474 55.399 7.31635C55.399 8.2065 55.1895 8.91703 54.7683 9.44393C54.3472 9.97084 53.7285 10.3002 52.9142 10.4299C53.8942 10.6375 54.6546 11.0706 55.1975 11.7312C55.7403 12.3918 56.0118 13.2161 56.0118 14.2041C56.0118 15.5054 55.5647 16.5093 54.6706 17.2198C53.7764 17.9283 52.503 18.2836 50.8545 18.2836H45.5654V3.71582ZM64.9732 3.71582H67.1646L70.6274 8.94697L74.1242 3.71582H76.2418L71.6833 10.5397L76.8086 18.2836H74.6172L70.5835 12.1882L66.51 18.2836H64.3924L69.5297 10.5955L64.9732 3.71582ZM59.2031 3.71582H61.195V18.2836H59.2031V3.71582Z"
|
14
|
-
fill="white"
|
15
|
-
/>
|
16
|
-
</g>
|
17
|
-
<defs>
|
18
|
-
<clipPath id="clip0_2691_29714">
|
19
|
-
<rect
|
20
|
-
width="80"
|
21
|
-
height="20.96"
|
22
|
-
fill="white"
|
23
|
-
transform="translate(0 0.519531)"
|
24
|
-
/>
|
25
|
-
</clipPath>
|
26
|
-
</defs>
|
27
|
-
</svg>
|
28
|
-
</template>
|
29
|
-
<template v-else><span></span></template>
|
30
|
-
</template>
|
31
|
-
|
32
|
-
<script setup lang="ts">
|
33
|
-
const props = withDefaults(
|
34
|
-
defineProps<{
|
35
|
-
name: string
|
36
|
-
type?: string
|
37
|
-
color?: string
|
38
|
-
width?: string
|
39
|
-
height?: string
|
40
|
-
}>(),
|
41
|
-
{
|
42
|
-
type: '',
|
43
|
-
color: 'currentColor',
|
44
|
-
width: '24',
|
45
|
-
height: '24',
|
46
|
-
}
|
47
|
-
)
|
48
|
-
</script>
|
49
|
-
|
50
|
-
<style scoped lang="scss"></style>
|
1
|
+
<template>
|
2
|
+
<template v-if="props.name === 'zabbix'">
|
3
|
+
<svg
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
5
|
+
width="80"
|
6
|
+
height="22"
|
7
|
+
viewBox="0 0 80 22"
|
8
|
+
fill="none"
|
9
|
+
>
|
10
|
+
<g clip-path="url(#clip0_2691_29714)">
|
11
|
+
<path d="M0 0.522461H80V21.477H0V0.522461Z" fill="#D40000" />
|
12
|
+
<path
|
13
|
+
d="M3.42089 3.71582H14.9889V5.2187L5.6782 16.625H15.2164V18.2836H3.19336V16.7807L12.504 5.37438H3.42089V3.71582ZM23.0402 5.65779L20.3378 12.9087H25.7526L23.0402 5.65779ZM21.9145 3.71582H24.1738L29.7862 18.2836H27.7145L26.3753 14.5473H19.735L18.3938 18.2836H16.2922L21.9145 3.71582ZM33.9176 11.326V16.663H37.113C38.1848 16.663 38.9791 16.4434 39.496 16.0043C40.013 15.5652 40.2704 14.8926 40.2704 13.9905C40.2704 13.0804 40.013 12.4078 39.496 11.9747C38.9791 11.5436 38.1848 11.326 37.113 11.326H33.9176ZM33.9176 5.33446V9.72535H36.8675C37.8415 9.72535 38.566 9.54373 39.043 9.18447C39.52 8.82322 39.7575 8.27237 39.7575 7.5319C39.7575 6.79743 39.518 6.24657 39.043 5.88332C38.566 5.52008 37.8415 5.33646 36.8675 5.33646H33.9176V5.33446ZM31.9257 3.71582H37.0152C38.534 3.71582 39.7056 4.02717 40.5259 4.65188C41.3482 5.27658 41.7573 6.16474 41.7573 7.31635C41.7573 8.2065 41.5478 8.91703 41.1266 9.44393C40.7055 9.97084 40.0868 10.3002 39.2725 10.4299C40.2525 10.6375 41.0129 11.0706 41.5558 11.7312C42.0986 12.3918 42.3701 13.2161 42.3701 14.2041C42.3701 15.5054 41.923 16.5093 41.0289 17.2198C40.1347 17.9283 38.8614 18.2836 37.2128 18.2836H31.9257V3.71582ZM47.5573 11.326V16.663H50.7547C51.8265 16.663 52.6208 16.4434 53.1357 16.0043C53.6527 15.5652 53.9101 14.8926 53.9101 13.9905C53.9101 13.0804 53.6527 12.4078 53.1357 11.9747C52.6188 11.5436 51.8245 11.326 50.7547 11.326H47.5573ZM47.5573 5.33446V9.72535H50.5072C51.4812 9.72535 52.2057 9.54373 52.6827 9.18447C53.1597 8.82322 53.3972 8.27237 53.3972 7.5319C53.3972 6.79743 53.1597 6.24657 52.6827 5.88332C52.2057 5.52008 51.4812 5.33646 50.5072 5.33646H47.5573V5.33446ZM45.5654 3.71582H50.6549C52.1737 3.71582 53.3453 4.02717 54.1656 4.65188C54.9879 5.27658 55.399 6.16474 55.399 7.31635C55.399 8.2065 55.1895 8.91703 54.7683 9.44393C54.3472 9.97084 53.7285 10.3002 52.9142 10.4299C53.8942 10.6375 54.6546 11.0706 55.1975 11.7312C55.7403 12.3918 56.0118 13.2161 56.0118 14.2041C56.0118 15.5054 55.5647 16.5093 54.6706 17.2198C53.7764 17.9283 52.503 18.2836 50.8545 18.2836H45.5654V3.71582ZM64.9732 3.71582H67.1646L70.6274 8.94697L74.1242 3.71582H76.2418L71.6833 10.5397L76.8086 18.2836H74.6172L70.5835 12.1882L66.51 18.2836H64.3924L69.5297 10.5955L64.9732 3.71582ZM59.2031 3.71582H61.195V18.2836H59.2031V3.71582Z"
|
14
|
+
fill="white"
|
15
|
+
/>
|
16
|
+
</g>
|
17
|
+
<defs>
|
18
|
+
<clipPath id="clip0_2691_29714">
|
19
|
+
<rect
|
20
|
+
width="80"
|
21
|
+
height="20.96"
|
22
|
+
fill="white"
|
23
|
+
transform="translate(0 0.519531)"
|
24
|
+
/>
|
25
|
+
</clipPath>
|
26
|
+
</defs>
|
27
|
+
</svg>
|
28
|
+
</template>
|
29
|
+
<template v-else><span></span></template>
|
30
|
+
</template>
|
31
|
+
|
32
|
+
<script setup lang="ts">
|
33
|
+
const props = withDefaults(
|
34
|
+
defineProps<{
|
35
|
+
name: string
|
36
|
+
type?: string
|
37
|
+
color?: string
|
38
|
+
width?: string
|
39
|
+
height?: string
|
40
|
+
}>(),
|
41
|
+
{
|
42
|
+
type: '',
|
43
|
+
color: 'currentColor',
|
44
|
+
width: '24',
|
45
|
+
height: '24',
|
46
|
+
}
|
47
|
+
)
|
48
|
+
</script>
|
49
|
+
|
50
|
+
<style scoped lang="scss"></style>
|
@@ -1,170 +1,170 @@
|
|
1
|
-
<template>
|
2
|
-
<div class="tabs-overflow bottom-right">
|
3
|
-
<button
|
4
|
-
:id="collapsedBtnId"
|
5
|
-
:class="[
|
6
|
-
'btn btn-link nav-link dropdown-toggle',
|
7
|
-
{ active: collapsedBtnActive },
|
8
|
-
]"
|
9
|
-
:data-id="`${props.testId}-toggle-button`"
|
10
|
-
@mouseenter="hover = true"
|
11
|
-
@mouseleave="hover = false"
|
12
|
-
@mousedown="showMenu"
|
13
|
-
>
|
14
|
-
<atoms-the-icon
|
15
|
-
:class="['collapse-icon', { active: open }]"
|
16
|
-
name="ellipsis-horizontal"
|
17
|
-
width="16px"
|
18
|
-
height="16px"
|
19
|
-
/>
|
20
|
-
</button>
|
21
|
-
|
22
|
-
<Teleport to="body">
|
23
|
-
<ul
|
24
|
-
v-show="open"
|
25
|
-
:class="['navbar-dropdown-menu', props.popupClass]"
|
26
|
-
:style="dropdownMenuStyles"
|
27
|
-
>
|
28
|
-
<li
|
29
|
-
v-for="(item, key) in props.items"
|
30
|
-
:key="key"
|
31
|
-
v-permission="item.permission"
|
32
|
-
:title="item.title"
|
33
|
-
class="navbar-dropdown-menu-item"
|
34
|
-
@mousedown.stop
|
35
|
-
>
|
36
|
-
<div
|
37
|
-
v-if="item.separate"
|
38
|
-
class="navbar-dropdown-menu-separator"
|
39
|
-
></div>
|
40
|
-
<atoms-collapse-nav-item
|
41
|
-
v-else
|
42
|
-
:is-link="props.isLink"
|
43
|
-
:item="item"
|
44
|
-
:value="value"
|
45
|
-
btn-class="btn"
|
46
|
-
@change="change"
|
47
|
-
@select-file="onSelectFile($event, key)"
|
48
|
-
/>
|
49
|
-
</li>
|
50
|
-
</ul>
|
51
|
-
</Teleport>
|
52
|
-
</div>
|
53
|
-
</template>
|
54
|
-
|
55
|
-
<script setup lang="ts">
|
56
|
-
import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
|
57
|
-
|
58
|
-
const props = withDefaults(
|
59
|
-
defineProps<{
|
60
|
-
items: UI_I_CollapseNavItem[]
|
61
|
-
isLink?: boolean
|
62
|
-
value?: number | string
|
63
|
-
popupClass?: string
|
64
|
-
closeAfterClick?: boolean
|
65
|
-
testId?: string
|
66
|
-
}>(),
|
67
|
-
{
|
68
|
-
isLink: undefined,
|
69
|
-
value: undefined,
|
70
|
-
popupClass: undefined,
|
71
|
-
closeAfterClick: undefined,
|
72
|
-
testId: '',
|
73
|
-
}
|
74
|
-
)
|
75
|
-
const emits = defineEmits<{
|
76
|
-
(event: 'change', value: number): void
|
77
|
-
(event: 'select-file', value1: Event, value2: string, value3: number): void
|
78
|
-
}>()
|
79
|
-
|
80
|
-
const change = (value: number): void => {
|
81
|
-
emits('change', value)
|
82
|
-
props.closeAfterClick && (open.value = false)
|
83
|
-
}
|
84
|
-
const onSelectFile = (event: Event, type: string, key: number): void => {
|
85
|
-
emits('select-file', event, type, key)
|
86
|
-
}
|
87
|
-
|
88
|
-
const collapsedBtnId = ref<string>('')
|
89
|
-
|
90
|
-
const route = useRoute()
|
91
|
-
const collapsedBtnActive = computed<boolean>(() => {
|
92
|
-
if (props.isLink)
|
93
|
-
return props.items.some((item) => route.path.includes(item.path || ''))
|
94
|
-
|
95
|
-
return props.items.some((item) => item.value === props.value)
|
96
|
-
})
|
97
|
-
|
98
|
-
const open = ref<boolean>(false)
|
99
|
-
const hover = ref<boolean>(false)
|
100
|
-
const dropdownMenuStyles = ref<any>({})
|
101
|
-
const showMenu = (): void => {
|
102
|
-
if (open.value) {
|
103
|
-
hideMenu(true)
|
104
|
-
return
|
105
|
-
}
|
106
|
-
|
107
|
-
open.value = true
|
108
|
-
|
109
|
-
const btn = document.querySelector(`#${collapsedBtnId.value}`)
|
110
|
-
const { top, height, right } = btn!.getBoundingClientRect()
|
111
|
-
dropdownMenuStyles.value = {
|
112
|
-
top: `${top + height}px`,
|
113
|
-
left: `${right}px`,
|
114
|
-
}
|
115
|
-
}
|
116
|
-
const hideMenu = (force?: boolean): void => {
|
117
|
-
if (hover.value && !force) return
|
118
|
-
|
119
|
-
open.value = false
|
120
|
-
}
|
121
|
-
|
122
|
-
const windowClick = (): void => {
|
123
|
-
hideMenu()
|
124
|
-
}
|
125
|
-
const windowResize = (): void => {
|
126
|
-
hideMenu(true)
|
127
|
-
}
|
128
|
-
onMounted(() => {
|
129
|
-
collapsedBtnId.value = `collapsed-btn${useUniqueId()}`
|
130
|
-
window.addEventListener('mousedown', windowClick)
|
131
|
-
window.addEventListener('resize', windowResize)
|
132
|
-
})
|
133
|
-
onUnmounted(() => {
|
134
|
-
window.removeEventListener('mousedown', windowClick)
|
135
|
-
window.removeEventListener('resize', windowResize)
|
136
|
-
})
|
137
|
-
</script>
|
138
|
-
|
139
|
-
<style scoped lang="scss">
|
140
|
-
.tabs-overflow {
|
141
|
-
position: absolute;
|
142
|
-
top: 0;
|
143
|
-
right: 24px;
|
144
|
-
|
145
|
-
.dropdown-toggle {
|
146
|
-
.collapse-icon {
|
147
|
-
fill: var(--main-color-mode);
|
148
|
-
|
149
|
-
&.active {
|
150
|
-
fill: #0077b8;
|
151
|
-
}
|
152
|
-
}
|
153
|
-
}
|
154
|
-
}
|
155
|
-
|
156
|
-
.navbar-dropdown-menu {
|
157
|
-
position: fixed;
|
158
|
-
z-index: var(--z-dropdown);
|
159
|
-
transform: translateX(-100%);
|
160
|
-
border: 1px solid var(--global-border-color);
|
161
|
-
border-radius: 3px;
|
162
|
-
margin-top: 2px;
|
163
|
-
background-color: var(--global-bg-color);
|
164
|
-
padding: 12px 0;
|
165
|
-
}
|
166
|
-
.navbar-dropdown-menu-separator {
|
167
|
-
margin: 6px 0;
|
168
|
-
border-bottom: 0.8px solid #e8e8e8;
|
169
|
-
}
|
170
|
-
</style>
|
1
|
+
<template>
|
2
|
+
<div class="tabs-overflow bottom-right">
|
3
|
+
<button
|
4
|
+
:id="collapsedBtnId"
|
5
|
+
:class="[
|
6
|
+
'btn btn-link nav-link dropdown-toggle',
|
7
|
+
{ active: collapsedBtnActive },
|
8
|
+
]"
|
9
|
+
:data-id="`${props.testId}-toggle-button`"
|
10
|
+
@mouseenter="hover = true"
|
11
|
+
@mouseleave="hover = false"
|
12
|
+
@mousedown="showMenu"
|
13
|
+
>
|
14
|
+
<atoms-the-icon
|
15
|
+
:class="['collapse-icon', { active: open }]"
|
16
|
+
name="ellipsis-horizontal"
|
17
|
+
width="16px"
|
18
|
+
height="16px"
|
19
|
+
/>
|
20
|
+
</button>
|
21
|
+
|
22
|
+
<Teleport to="body">
|
23
|
+
<ul
|
24
|
+
v-show="open"
|
25
|
+
:class="['navbar-dropdown-menu', props.popupClass]"
|
26
|
+
:style="dropdownMenuStyles"
|
27
|
+
>
|
28
|
+
<li
|
29
|
+
v-for="(item, key) in props.items"
|
30
|
+
:key="key"
|
31
|
+
v-permission="item.permission"
|
32
|
+
:title="item.title"
|
33
|
+
class="navbar-dropdown-menu-item"
|
34
|
+
@mousedown.stop
|
35
|
+
>
|
36
|
+
<div
|
37
|
+
v-if="item.separate"
|
38
|
+
class="navbar-dropdown-menu-separator"
|
39
|
+
></div>
|
40
|
+
<atoms-collapse-nav-item
|
41
|
+
v-else
|
42
|
+
:is-link="props.isLink"
|
43
|
+
:item="item"
|
44
|
+
:value="value"
|
45
|
+
btn-class="btn"
|
46
|
+
@change="change"
|
47
|
+
@select-file="onSelectFile($event, key)"
|
48
|
+
/>
|
49
|
+
</li>
|
50
|
+
</ul>
|
51
|
+
</Teleport>
|
52
|
+
</div>
|
53
|
+
</template>
|
54
|
+
|
55
|
+
<script setup lang="ts">
|
56
|
+
import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
|
57
|
+
|
58
|
+
const props = withDefaults(
|
59
|
+
defineProps<{
|
60
|
+
items: UI_I_CollapseNavItem[]
|
61
|
+
isLink?: boolean
|
62
|
+
value?: number | string
|
63
|
+
popupClass?: string
|
64
|
+
closeAfterClick?: boolean
|
65
|
+
testId?: string
|
66
|
+
}>(),
|
67
|
+
{
|
68
|
+
isLink: undefined,
|
69
|
+
value: undefined,
|
70
|
+
popupClass: undefined,
|
71
|
+
closeAfterClick: undefined,
|
72
|
+
testId: '',
|
73
|
+
}
|
74
|
+
)
|
75
|
+
const emits = defineEmits<{
|
76
|
+
(event: 'change', value: number): void
|
77
|
+
(event: 'select-file', value1: Event, value2: string, value3: number): void
|
78
|
+
}>()
|
79
|
+
|
80
|
+
const change = (value: number): void => {
|
81
|
+
emits('change', value)
|
82
|
+
props.closeAfterClick && (open.value = false)
|
83
|
+
}
|
84
|
+
const onSelectFile = (event: Event, type: string, key: number): void => {
|
85
|
+
emits('select-file', event, type, key)
|
86
|
+
}
|
87
|
+
|
88
|
+
const collapsedBtnId = ref<string>('')
|
89
|
+
|
90
|
+
const route = useRoute()
|
91
|
+
const collapsedBtnActive = computed<boolean>(() => {
|
92
|
+
if (props.isLink)
|
93
|
+
return props.items.some((item) => route.path.includes(item.path || ''))
|
94
|
+
|
95
|
+
return props.items.some((item) => item.value === props.value)
|
96
|
+
})
|
97
|
+
|
98
|
+
const open = ref<boolean>(false)
|
99
|
+
const hover = ref<boolean>(false)
|
100
|
+
const dropdownMenuStyles = ref<any>({})
|
101
|
+
const showMenu = (): void => {
|
102
|
+
if (open.value) {
|
103
|
+
hideMenu(true)
|
104
|
+
return
|
105
|
+
}
|
106
|
+
|
107
|
+
open.value = true
|
108
|
+
|
109
|
+
const btn = document.querySelector(`#${collapsedBtnId.value}`)
|
110
|
+
const { top, height, right } = btn!.getBoundingClientRect()
|
111
|
+
dropdownMenuStyles.value = {
|
112
|
+
top: `${top + height}px`,
|
113
|
+
left: `${right}px`,
|
114
|
+
}
|
115
|
+
}
|
116
|
+
const hideMenu = (force?: boolean): void => {
|
117
|
+
if (hover.value && !force) return
|
118
|
+
|
119
|
+
open.value = false
|
120
|
+
}
|
121
|
+
|
122
|
+
const windowClick = (): void => {
|
123
|
+
hideMenu()
|
124
|
+
}
|
125
|
+
const windowResize = (): void => {
|
126
|
+
hideMenu(true)
|
127
|
+
}
|
128
|
+
onMounted(() => {
|
129
|
+
collapsedBtnId.value = `collapsed-btn${useUniqueId()}`
|
130
|
+
window.addEventListener('mousedown', windowClick)
|
131
|
+
window.addEventListener('resize', windowResize)
|
132
|
+
})
|
133
|
+
onUnmounted(() => {
|
134
|
+
window.removeEventListener('mousedown', windowClick)
|
135
|
+
window.removeEventListener('resize', windowResize)
|
136
|
+
})
|
137
|
+
</script>
|
138
|
+
|
139
|
+
<style scoped lang="scss">
|
140
|
+
.tabs-overflow {
|
141
|
+
position: absolute;
|
142
|
+
top: 0;
|
143
|
+
right: 24px;
|
144
|
+
|
145
|
+
.dropdown-toggle {
|
146
|
+
.collapse-icon {
|
147
|
+
fill: var(--main-color-mode);
|
148
|
+
|
149
|
+
&.active {
|
150
|
+
fill: #0077b8;
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}
|
154
|
+
}
|
155
|
+
|
156
|
+
.navbar-dropdown-menu {
|
157
|
+
position: fixed;
|
158
|
+
z-index: var(--z-dropdown);
|
159
|
+
transform: translateX(-100%);
|
160
|
+
border: 1px solid var(--global-border-color);
|
161
|
+
border-radius: 3px;
|
162
|
+
margin-top: 2px;
|
163
|
+
background-color: var(--global-bg-color);
|
164
|
+
padding: 12px 0;
|
165
|
+
}
|
166
|
+
.navbar-dropdown-menu-separator {
|
167
|
+
margin: 6px 0;
|
168
|
+
border-bottom: 0.8px solid #e8e8e8;
|
169
|
+
}
|
170
|
+
</style>
|