bfg-common 1.5.496 → 1.5.497

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 (117) 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 +7 -1
  7. package/assets/localization/local_en.json +10 -4
  8. package/assets/localization/local_hy.json +7 -1
  9. package/assets/localization/local_kk.json +7 -1
  10. package/assets/localization/local_ru.json +10 -4
  11. package/assets/localization/local_zh.json +7 -1
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/collapse/CollapseNav.vue +170 -170
  14. package/components/atoms/perPage/PerPage.vue +58 -58
  15. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  16. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  17. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  18. package/components/common/backup/storage/actions/add/Add.vue +251 -251
  19. package/components/common/backup/storage/actions/add/lib/utils.ts +62 -62
  20. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  21. package/components/common/diagramMain/modals/lib/config/portModal.ts +251 -251
  22. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  23. package/components/common/diagramMain/port/Port.vue +580 -580
  24. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  25. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  26. package/components/common/modals/confirmation/Confirmation.vue +3 -0
  27. package/components/common/modals/confirmation/ConfirmationNew.vue +3 -1
  28. package/components/common/pages/backups/DetailView.vue +52 -52
  29. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  30. package/components/common/pages/backups/modals/Modals.vue +243 -243
  31. package/components/common/pages/backups/modals/createBackup/configuration/Configuration.vue +29 -29
  32. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  33. package/components/common/pages/backups/modals/createBackup/datastores/tableView/TableView.vue +95 -95
  34. package/components/common/pages/backups/modals/createBackup/general/General.vue +141 -141
  35. package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +12 -12
  36. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  37. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  38. package/components/common/pages/backups/modals/restore/disks/Disks.vue +27 -27
  39. package/components/common/pages/backups/modals/restore/disks/tableView/lib/config/table.ts +117 -117
  40. package/components/common/pages/backups/modals/restore/name/Name.vue +166 -166
  41. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  42. package/components/common/pages/backups/modals/restore/networks/Networks.vue +67 -67
  43. package/components/common/pages/backups/modals/restore/networks/table/Table.vue +214 -214
  44. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  45. package/components/common/pages/backups/tools/Tools.vue +75 -75
  46. package/components/common/pages/backups/tools/lib/config/tabs.ts +36 -36
  47. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  48. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  49. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  50. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  51. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  52. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  53. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  54. package/components/common/select/radio/RadioGroup.vue +137 -137
  55. package/components/common/spiceConsole/Drawer.vue +392 -392
  56. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  57. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  58. package/components/common/tools/Actions.vue +207 -207
  59. package/components/common/treeView/TreeView.vue +52 -52
  60. package/components/common/vm/actions/add/Add.vue +874 -877
  61. package/components/common/vm/actions/add/New.vue +2 -6
  62. package/components/common/vm/actions/add/Old.vue +2 -6
  63. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  64. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  65. package/components/common/vm/actions/add/lib/config/steps.ts +347 -347
  66. package/components/common/vm/actions/clone/Clone.vue +2 -2
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +368 -368
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +99 -99
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  76. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  77. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  78. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  79. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  80. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  81. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  82. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  83. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +143 -143
  84. package/components/common/vm/actions/common/select/computeResource/New.vue +184 -184
  85. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +131 -131
  86. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  87. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  88. package/components/common/vm/actions/common/select/name/Name.vue +188 -200
  89. package/components/common/vm/actions/common/select/name/Old.vue +130 -130
  90. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  91. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  92. package/components/common/vm/actions/common/select/storage/new/New.vue +320 -320
  93. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  94. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  95. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  96. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  97. package/components/common/vm/actions/register/Register.vue +263 -267
  98. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  99. package/components/common/wizards/datastore/add/Add.vue +228 -228
  100. package/components/common/wizards/datastore/add/lib/utils.ts +93 -93
  101. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  102. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  103. package/composables/useAppVersion.ts +21 -21
  104. package/composables/useLocal.ts +6 -6
  105. package/composables/useLocalCommon.ts +39 -39
  106. package/package.json +2 -2
  107. package/plugins/date.ts +233 -233
  108. package/plugins/panelStates.ts +70 -70
  109. package/plugins/text.ts +59 -59
  110. package/public/spice-console/lib/images/bitmap.js +203 -203
  111. package/public/spice-console/network/spicechannel.js +440 -440
  112. package/public/spice-console/run.js +210 -210
  113. package/store/main/mutations.ts +7 -7
  114. package/store/main/state.ts +7 -7
  115. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +0 -644
  116. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +0 -118
  117. package/components/common/vm/actions/clone/toTemplate/lib/models/interfaces.ts +0 -14
@@ -3070,11 +3070,16 @@
3070
3070
  },
3071
3071
  "snapshots": {
3072
3072
  "deleteAllSnapshots": "Выдаліць усе здымкі",
3073
+ "deleteTheLastSnapshot": "Выдаліць апошні здымак",
3073
3074
  "deleteLastSnapshotsDescription": "Папярэджанне! Выдаленне апошняга здымка прывядзе да аўтаматычнага выключэння віртуальнай машыны.",
3074
3075
  "deleteAllSnapshotsDescription": "Папярэджанне! Калі ўсе здымкі віртуальнай машыны будуць выдалены, машына аўтаматычна выключыцца.",
3075
3076
  "revertToSelectedSnapshot": "Вярнуцца да абранага здымку",
3077
+ "revertToSnapshotConfirmation": "Вярнуцца да пацверджання здымка",
3078
+ "revertToSnapshotDescription": "Вы ўпэўненыя, што хочаце вярнуць бягучы стан віртуальнай машыны да здымка “{0}”? Бягучы стан будзе страчаны, калі яго не захаваць у выглядзе здымка.",
3076
3079
  "deleteSnapshot": "Выдаліць маментальны здымак",
3077
3080
  "deleteSnapshotDescription": "Гэта дзеянне з'яўляецца сталым і не можа быць адноўлена.",
3081
+ "deleteSnapshotConfirmation": "Пацвярджэнне выдалення здымка",
3082
+ "deleteSnapshotConfirmationDescription": "Вы ўпэўненыя, што хочаце выдаліць здымак «0}»? Гэта дзеянне незваротнае і не можа быць адноўлена.",
3078
3083
  "timestamp": "Адзнака часу",
3079
3084
  "snapshotListEmpty": "Спіс здымкаў пусты",
3080
3085
  "saveVirtualMachineMemory": "Захаваць памяць віртуальнай машыны",
@@ -3590,6 +3595,7 @@
3590
3595
  "datastoreProtectionEnabledEnsureResourcesRestartingVms": "Абарона сховішча ўключана. Перад перазапускам ВМ пераканайцеся, што рэсурсы даступныя.",
3591
3596
  "vmAndApplicationMonitoringDisabled": "Маніторынг ВМ і прыкладанняў адключаны.",
3592
3597
  "vmMonitoringEnabledVmsWillBeReset": "Маніторынг ВМ уключаны. ВМ будуць перазагружаныя.",
3593
- "vmAndApplicationMonitoringEnabledVmsWillBeReset": "Маніторынг ВМ і прыкладанняў уключаны. ВМ будуць перазагружаныя."
3598
+ "vmAndApplicationMonitoringEnabledVmsWillBeReset": "Маніторынг ВМ і прыкладанняў уключаны. ВМ будуць перазагружаныя.",
3599
+ "selectAtLeastOneHostToAdd": "Выберыце хаця б адзін хост для дадання."
3594
3600
  }
3595
3601
  }
@@ -1222,7 +1222,7 @@
1222
1222
  "putSelectedHostsMaintenanceMode": "Put the selected hosts in maintenance mode?",
1223
1223
  "queued": "Queued",
1224
1224
  "quiesceGuestFileSystem": "Quiesce guest file system",
1225
- "quiesceGuestFileSystemRequiresVMTools": "Quiesce guest file system(requires VM tools)",
1225
+ "quiesceGuestFileSystemRequiresVMTools": "Quiesce guest file system (requires VM tools)",
1226
1226
  "range": "Range",
1227
1227
  "readyComplete": "Ready to Complete",
1228
1228
  "readyCompleteDesc": "Review your selections before finishing the wizard",
@@ -3074,11 +3074,16 @@
3074
3074
  },
3075
3075
  "snapshots": {
3076
3076
  "deleteAllSnapshots": "Delete All Snapshots",
3077
- "deleteLastSnapshotsDescription": "Warning! Deleting the last snapshot will cause the virtual machine to shut automatically shut down.",
3078
- "deleteAllSnapshotsDescription": "Warning! When all snapshots of a virtual machine are deleted, the machine will automatically shut down.",
3077
+ "deleteTheLastSnapshot": "Delete the Last Snapshot",
3078
+ "deleteLastSnapshotsDescription": "Warning: Deleting the last snapshot will cause the virtual machine to automatically shut down.",
3079
+ "deleteAllSnapshotsDescription": "Warning: Deleting all snapshots of this virtual machine will cause it to automatically shut down.",
3079
3080
  "revertToSelectedSnapshot": "Revert to selected snapshot",
3081
+ "revertToSnapshotConfirmation": "Revert to Snapshot Confirmation",
3082
+ "revertToSnapshotDescription": "Are you sure you want to revert the current state of the virtual machine to snapshot “{0}”? The current state will be lost unless saved in a snapshot.",
3080
3083
  "deleteSnapshot": "Delete snapshot",
3081
3084
  "deleteSnapshotDescription": "This action is permanent and cannot be recovered.",
3085
+ "deleteSnapshotConfirmation": "Delete Snapshot Confirmation",
3086
+ "deleteSnapshotConfirmationDescription": "Are you sure you want to delete snapshot “{0}”? This action is permanent and cannot be recovered.",
3082
3087
  "timestamp": "Timestamp",
3083
3088
  "snapshotListEmpty": "The Snapshot list is empty",
3084
3089
  "saveVirtualMachineMemory": "Save virtual machine memory",
@@ -3594,6 +3599,7 @@
3594
3599
  "datastoreProtectionEnabledEnsureResourcesRestartingVms": "Datastore protection enabled. Ensure resources are available before restarting VMs.",
3595
3600
  "vmAndApplicationMonitoringDisabled": "VM and application monitoring disabled.",
3596
3601
  "vmMonitoringEnabledVmsWillBeReset": "VM monitoring enabled. VMs will be reset.",
3597
- "vmAndApplicationMonitoringEnabledVmsWillBeReset": "VM and application monitoring enabled. VMs will be reset."
3602
+ "vmAndApplicationMonitoringEnabledVmsWillBeReset": "VM and application monitoring enabled. VMs will be reset.",
3603
+ "selectAtLeastOneHostToAdd": "Select at least one host to add."
3598
3604
  }
3599
3605
  }
@@ -3074,11 +3074,16 @@
3074
3074
  },
3075
3075
  "snapshots": {
3076
3076
  "deleteAllSnapshots": "Ջնջել բոլոր նկարները",
3077
+ "deleteTheLastSnapshot": "Ջնջել վերջին նկարը",
3077
3078
  "deleteLastSnapshotsDescription": "Զգուշացում. Վերջին նկարը ջնջելու դեպքում վիրտուալ մեքենան ինքնաբերաբար կանջատվի:",
3078
3079
  "deleteAllSnapshotsDescription": "Զգուշացում. Երբ վիրտուալ մեքենայի բոլոր նկարները ջնջվեն, մեքենան ինքնաբերաբար կանջատվի:",
3079
3080
  "revertToSelectedSnapshot": "Վերադառնալ ընտրված Snap-ին",
3081
+ "revertToSnapshotConfirmation": "Վերադառնալ լուսանկարի հաստատմանը",
3082
+ "revertToSnapshotDescription": "Վստա՞հ եք, որ ցանկանում եք վերադարձնել վիրտուալ մեքենայի ներկայիս վիճակը «{0}» պատկերին: Ներկայիս վիճակը կկորչի, եթե այն չպահպանվի պատկերում:",
3080
3083
  "deleteSnapshot": "Ջնջել նկարը",
3081
3084
  "deleteSnapshotDescription": "Այս գործողությունը մշտական է և չի կարող վերականգնվել:",
3085
+ "deleteSnapshotConfirmation": "Ջնջել Snapshot-ի հաստատումը",
3086
+ "deleteSnapshotConfirmationDescription": "Վստա՞հ եք, որ ուզում եք ջնջել «{0}» լուսանկարը։ Այս գործողությունը մշտական է և չի կարող վերականգնվել։",
3082
3087
  "timestamp": "Ժամանակի դրոշմ",
3083
3088
  "snapshotListEmpty": "Snapshot ցուցակը դատարկ է",
3084
3089
  "saveVirtualMachineMemory": "Պահպանել վիրտուալ մեքենայի հիշողությունը",
@@ -3594,6 +3599,7 @@
3594
3599
  "datastoreProtectionEnabledEnsureResourcesRestartingVms": "Տվյալների պահեստի պաշտպանությունը միացված է։ ՎՄ-ները վերագործարկելուց առաջ համոզվեք, որ առկա են բավարար ռեսուրսներ։",
3595
3600
  "vmAndApplicationMonitoringDisabled": "ՎՄ և հավելվածների մոնիտորինգը անջատված է։",
3596
3601
  "vmMonitoringEnabledVmsWillBeReset": "ՎՄ մոնիտորինգը միացված է։ ՎՄ-ները կվերագործարկվեն։",
3597
- "vmAndApplicationMonitoringEnabledVmsWillBeReset": "ՎՄ և հավելվածների մոնիտորինգը միացված է։ ՎՄ-ները կվերագործարկվեն։"
3602
+ "vmAndApplicationMonitoringEnabledVmsWillBeReset": "ՎՄ և հավելվածների մոնիտորինգը միացված է։ ՎՄ-ները կվերագործարկվեն։",
3603
+ "selectAtLeastOneHostToAdd": "Ընտրեք գոնե մեկ հոսթ՝ ավելացնելու համար։"
3598
3604
  }
3599
3605
  }
@@ -3073,11 +3073,16 @@
3073
3073
  },
3074
3074
  "snapshots": {
3075
3075
  "deleteAllSnapshots": "Vydalіts мұртты zdymki",
3076
+ "deleteTheLastSnapshot": "Соңғы суретті жойыңыз",
3076
3077
  "deleteLastSnapshotsDescription": "Ескерту! Соңғы суретті жою виртуалды машинаның автоматты түрде жабылуына әкеледі.",
3077
3078
  "deleteAllSnapshotsDescription": "Ескерту! Виртуалды машинаның барлық суреттері жойылғанда, құрылғы автоматты түрде өшеді.",
3078
3079
  "revertToSelectedSnapshot": "Таңдалған суретке оралу",
3080
+ "revertToSnapshotConfirmation": "Суретті растау параметріне оралыңыз",
3081
+ "revertToSnapshotDescription": "Виртуалды машинаның ағымдағы күйін \"{0}\" суретіне қайтарғыңыз келетініне сенімдісіз бе? Ағымдағы күй суретте сақталмаса, жоғалады.",
3079
3082
  "deleteSnapshot": "Суретті жою",
3080
3083
  "deleteSnapshotDescription": "Бұл әрекет тұрақты және оны қалпына келтіру мүмкін емес.",
3084
+ "deleteSnapshotConfirmation": "Суретті растауды жою",
3085
+ "deleteSnapshotConfirmationDescription": "\"{0}\" суретін шынымен жойғыңыз келе ме? Бұл әрекет тұрақты және оны қалпына келтіру мүмкін емес.",
3081
3086
  "timestamp": "Уақыт белгісі",
3082
3087
  "snapshotListEmpty": "Суреттер тізімі бос",
3083
3088
  "saveVirtualMachineMemory": "Виртуалды машинаның жадын сақтау",
@@ -3593,6 +3598,7 @@
3593
3598
  "datastoreProtectionEnabledEnsureResourcesRestartingVms": "Деректер қоймасын қорғау қосылған. ВМ қайта қоспас бұрын ресурстардың жеткілікті екеніне көз жеткізіңіз.",
3594
3599
  "vmAndApplicationMonitoringDisabled": "ВМ және қосымшаларды бақылау өшірілген.",
3595
3600
  "vmMonitoringEnabledVmsWillBeReset": "ВМ бақылауы қосылған. ВМ қайта жүктеледі.",
3596
- "vmAndApplicationMonitoringEnabledVmsWillBeReset": "ВМ және қосымшаларды бақылау қосылған. ВМ қайта жүктеледі."
3601
+ "vmAndApplicationMonitoringEnabledVmsWillBeReset": "ВМ және қосымшаларды бақылау қосылған. ВМ қайта жүктеледі.",
3602
+ "selectAtLeastOneHostToAdd": "Қосу үшін кем дегенде бір хост таңдаңыз."
3597
3603
  }
3598
3604
  }
@@ -1509,7 +1509,7 @@
1509
1509
  "supportedEvcModes": "Поддерживаемые режимы EVC",
1510
1510
  "suspend": "Приостановить",
1511
1511
  "suspended": "Приостановлено",
1512
- "suspendThisVirtualMachineWhenRevertingToSelectedSnapshot": "Приостановите работу этой виртуальной машины при возврате к выбранному снимку",
1512
+ "suspendThisVirtualMachineWhenRevertingToSelectedSnapshot": "При возврате к выбранному снимку приостановить работу виртуальной машины",
1513
1513
  "swapFileLocation": "Поменять местоположение файла",
1514
1514
  "switch": "Коммутатор",
1515
1515
  "switchInvalidMessage": "Выберите коммутатор",
@@ -3073,11 +3073,16 @@
3073
3073
  },
3074
3074
  "snapshots": {
3075
3075
  "deleteAllSnapshots": "Удалить все снимки",
3076
- "deleteLastSnapshotsDescription": "Внимание! При удалении последнего снапшота виртуальная машина будет автоматически выключена.",
3077
- "deleteAllSnapshotsDescription": "Внимание! При удалении всех снапшотов виртуальной машины она будет автоматически выключена.",
3076
+ "deleteTheLastSnapshot": "Удалить последний снимок",
3077
+ "deleteLastSnapshotsDescription": "Предупреждение: Удаление последнего снимка приведёт к автоматическому завершению работы виртуальной машины.",
3078
+ "deleteAllSnapshotsDescription": "Предупреждение: Удаление всех снимков этой виртуальной машины приведёт к её автоматическому завершению работы.",
3078
3079
  "revertToSelectedSnapshot": "Вернуться к выбранному снимку",
3080
+ "revertToSnapshotConfirmation": "Подтверждение возврата к снимку",
3081
+ "revertToSnapshotDescription": "Вы уверены, что хотите вернуть текущее состояние виртуальной машины к снимку «{0}»? Текущее состояние будет потеряно, если его не сохранить в отдельный снимок.",
3079
3082
  "deleteSnapshot": "Удалить моментальный снимок",
3080
3083
  "deleteSnapshotDescription": "Это действие является постоянным и не может быть восстановлено.",
3084
+ "deleteSnapshotConfirmation": "Подтверждение удаления снимка",
3085
+ "deleteSnapshotConfirmationDescription": "Вы уверены, что хотите удалить снимок “{0}”? Это действие является окончательным и не может быть восстановлено.",
3081
3086
  "timestamp": "Время создания",
3082
3087
  "snapshotListEmpty": "Список моментальных снимков пуст",
3083
3088
  "saveVirtualMachineMemory": "Сохранить память виртуальной машины",
@@ -3593,6 +3598,7 @@
3593
3598
  "datastoreProtectionEnabledEnsureResourcesRestartingVms": "Защита хранилища включена. Перед перезапуском ВМ убедитесь в наличии ресурсов.",
3594
3599
  "vmAndApplicationMonitoringDisabled": "Мониторинг ВМ и приложений отключён.",
3595
3600
  "vmMonitoringEnabledVmsWillBeReset": "Мониторинг ВМ включён. ВМ будут перезапущены.",
3596
- "vmAndApplicationMonitoringEnabledVmsWillBeReset": "Мониторинг ВМ и приложений включён. ВМ будут перезапущены."
3601
+ "vmAndApplicationMonitoringEnabledVmsWillBeReset": "Мониторинг ВМ и приложений включён. ВМ будут перезапущены.",
3602
+ "selectAtLeastOneHostToAdd": "Выберите хотя бы один хост для добавления."
3597
3603
  }
3598
3604
  }
@@ -3071,11 +3071,16 @@
3071
3071
  },
3072
3072
  "snapshots": {
3073
3073
  "deleteAllSnapshots": "删除所有照片",
3074
+ "deleteTheLastSnapshot": "删除最后一张快照",
3074
3075
  "deleteLastSnapshotsDescription": "警告!删除最后一个快照将导致虚拟机自动关闭。",
3075
3076
  "deleteAllSnapshotsDescription": "警告!当虚拟机的所有快照被删除后,该机器将自动关闭。",
3076
3077
  "revertToSelectedSnapshot": "恢复到选定的快照",
3078
+ "revertToSnapshotConfirmation": "恢复快照确认",
3079
+ "revertToSnapshotDescription": "确定要将虚拟机的当前状态恢复到快照“{0}”吗?除非将其保存在快照中,否则当前状态将会丢失。",
3077
3080
  "deleteSnapshot": "删除快照",
3078
3081
  "deleteSnapshotDescription": "此操作是永久性的,无法恢复。",
3082
+ "deleteSnapshotConfirmation": "删除快照确认",
3083
+ "deleteSnapshotConfirmationDescription": "确定要删除快照“{0}”吗?此操作是永久性的,无法恢复。",
3079
3084
  "timestamp": "时间戳",
3080
3085
  "snapshotListEmpty": "快照列表为空",
3081
3086
  "saveVirtualMachineMemory": "保存虚拟机内存",
@@ -3591,6 +3596,7 @@
3591
3596
  "datastoreProtectionEnabledEnsureResourcesRestartingVms": "数据存储保护已启用。重新启动虚拟机前请确保资源可用。",
3592
3597
  "vmAndApplicationMonitoringDisabled": "虚拟机和应用监控已禁用。",
3593
3598
  "vmMonitoringEnabledVmsWillBeReset": "虚拟机监控已启用。虚拟机将被重置。",
3594
- "vmAndApplicationMonitoringEnabledVmsWillBeReset": "虚拟机和应用监控已启用。虚拟机将被重置。"
3599
+ "vmAndApplicationMonitoringEnabledVmsWillBeReset": "虚拟机和应用监控已启用。虚拟机将被重置。",
3600
+ "selectAtLeastOneHostToAdd": "请选择至少一个要添加的主机。"
3595
3601
  }
3596
3602
  }
@@ -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>