bfg-common 1.5.679 → 1.5.682

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/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/collapse/CollapseNav.vue +170 -170
  8. package/components/atoms/perPage/PerPage.vue +58 -58
  9. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  10. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  11. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  12. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  13. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  14. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  15. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  16. package/components/common/diagramMain/port/Port.vue +580 -580
  17. package/components/common/layout/theHeader/TheHeaderNew.vue +315 -315
  18. package/components/common/layout/theHeader/TheHeaderOld.vue +262 -262
  19. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  20. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  21. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePassword.vue +93 -93
  22. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +193 -193
  23. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesOld.vue +144 -144
  24. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  25. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Old.vue +216 -216
  26. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Security.vue +31 -31
  27. package/components/common/pages/backups/DetailView.vue +52 -52
  28. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  29. package/components/common/pages/backups/modals/Modals.vue +243 -243
  30. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  31. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  32. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  33. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  34. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  35. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  36. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  37. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  38. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  39. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  40. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  41. package/components/common/qr/Qr.vue +57 -57
  42. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  43. package/components/common/select/radio/RadioGroup.vue +137 -137
  44. package/components/common/spiceConsole/Drawer.vue +420 -420
  45. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  46. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  47. package/components/common/tools/Actions.vue +207 -207
  48. package/components/common/treeView/TreeView.vue +52 -52
  49. package/components/common/vm/actions/add/New.vue +1 -1
  50. package/components/common/vm/actions/add/Old.vue +1 -1
  51. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  52. package/components/common/vm/actions/clone/new/New.vue +438 -438
  53. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +698 -698
  54. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +489 -489
  57. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  58. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  59. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  60. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  61. package/components/common/vm/actions/common/select/options/Old.vue +109 -110
  62. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  63. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  64. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  65. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  66. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  67. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  68. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  69. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  70. package/components/common/wizards/common/compatibility/New.vue +99 -99
  71. package/components/common/wizards/common/compatibility/Old.vue +53 -53
  72. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  73. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  74. package/components/common/wizards/common/steps/name/New.vue +221 -221
  75. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  76. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  77. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  78. package/components/common/wizards/datastore/add/Add.vue +228 -228
  79. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  80. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  81. package/composables/useAppVersion.ts +21 -21
  82. package/composables/useEnvLanguage.ts +22 -22
  83. package/composables/useLocal.ts +6 -6
  84. package/composables/useLocalCommon.ts +39 -39
  85. package/lib/models/enums.ts +1 -65
  86. package/package.json +1 -1
  87. package/plugins/console.ts +21 -21
  88. package/plugins/mouse.ts +21 -21
  89. package/plugins/panelStates.ts +70 -70
  90. package/plugins/text.ts +59 -59
  91. package/public/spice-console/application/clientgui.js +854 -854
  92. package/public/spice-console/application/packetfactory.js +211 -211
  93. package/public/spice-console/application/virtualmouse.js +147 -147
  94. package/public/spice-console/lib/images/bitmap.js +203 -203
  95. package/public/spice-console/network/spicechannel.js +440 -440
  96. package/public/spice-console/process/cursorprocess.js +128 -128
  97. package/public/spice-console/process/inputprocess.js +227 -227
  98. package/public/spice-console/process/mainprocess.js +212 -212
  99. package/public/spice-console/run.js +210 -210
  100. package/store/main/mutations.ts +7 -7
  101. package/store/main/state.ts +7 -7
  102. package/store/tasks/actions.ts +165 -165
  103. package/store/tasks/mappers/recentTasks.ts +123 -123
  104. package/store/tasks/mutations.ts +82 -82
  105. package/components/common/layout/bottomPanel/BottomPanel.vue +0 -68
  106. package/components/common/layout/bottomPanel/New.vue +0 -227
  107. package/components/common/layout/bottomPanel/Old.vue +0 -144
  108. package/components/common/layout/bottomPanel/lib/config/statusFilter.ts +0 -19
  109. package/components/common/layout/bottomPanel/lib/models/types.ts +0 -1
  110. package/components/common/layout/bottomPanel/recentTasks/RecentTasks.vue +0 -49
  111. package/components/common/layout/bottomPanel/recentTasks/lib/models/interfaces.ts +0 -14
  112. package/components/common/layout/bottomPanel/recentTasks/new/New.vue +0 -428
  113. package/components/common/layout/bottomPanel/recentTasks/new/lib/config/config.ts +0 -259
  114. package/components/common/layout/bottomPanel/recentTasks/old/Old.vue +0 -277
  115. package/components/common/layout/bottomPanel/recentTasks/old/lib/config/recentTaskTable.ts +0 -240
  116. package/components/common/layout/bottomPanel/recentTasks/old/lib/config/tableKeys.ts +0 -15
  117. package/components/common/layout/bottomPanel/recentTasks/old/lib/models/types.ts +0 -14
@@ -1,82 +1,82 @@
1
- import type {
2
- UI_I_RawRecentTask,
3
- UI_I_TasksLoadingPayload,
4
- UI_I_RecentTask,
5
- UI_I_Task,
6
- } from '~/lib/models/store/tasks/interfaces'
7
- import type { UI_I_TasksState } from '~/store/tasks/lib/models/interfaces'
8
-
9
- export default {
10
- M_SET_RECENT_TASKS_LIST(
11
- state: UI_I_TasksState,
12
- payload: UI_I_RecentTask<string>
13
- ): void {
14
- if (state.recentTaskList) {
15
- state.recentTaskList.last = payload.last
16
-
17
- // Заменяем которые уже имеются и удаляем их из payload.items
18
- state.recentTaskList.items = state.recentTaskList.items.map((task) => {
19
- let changedTask = null
20
- payload.items = payload.items.filter((task2) => {
21
- if (task2.id === task.id) changedTask = task2
22
- return task2.id !== task.id
23
- })
24
-
25
- return changedTask || task
26
- })
27
-
28
- // Делаем слияние новых и старых tasks
29
- state.recentTaskList.items = [
30
- ...payload.items,
31
- ...state.recentTaskList.items,
32
- ]
33
- return
34
- }
35
-
36
- state.recentTaskList = payload
37
- },
38
- M_SET_ABORT_CONTROLLER(
39
- state: UI_I_TasksState,
40
- payload: AbortController
41
- ): void {
42
- state.abortController = payload
43
- },
44
- M_CANCEL_RECENT_TASKS(state: UI_I_TasksState): void {
45
- state.abortController && state.abortController.abort()
46
- },
47
- M_HIDE_CANCEL_RECENT_TASK_BY_ID(
48
- state: UI_I_TasksState,
49
- payload: string
50
- ): void {
51
- if (!state.recentTaskList) return
52
- state.recentTaskList.items = state.recentTaskList.items.map((task) => {
53
- if (task.id === payload) {
54
- task.isCanceled = true
55
- }
56
- return task
57
- })
58
- },
59
- M_SET_TASKS_LAST_QUERY(state: UI_I_TasksState, payload: string): void {
60
- state.taskLastRequestType = payload
61
- },
62
- M_SET_TASKS_LIST(state: UI_I_TasksState, payload: UI_I_Task<string>): void {
63
- state.taskList = payload
64
- },
65
- M_SET_UPDATED_RECENT_TASKS_LIST(
66
- state: UI_I_TasksState,
67
- payload: UI_I_RawRecentTask<string>
68
- ): void {
69
- state.updatedTaskList = payload.items
70
- },
71
- M_SET_FIRST_TASK(state: UI_I_TasksState): void {
72
- state.hasFirstTask = true
73
- },
74
-
75
- M_SET_LOADING(
76
- state: UI_I_TasksState,
77
- payload: UI_I_TasksLoadingPayload
78
- ): void {
79
- const { prop, value } = payload
80
- state.loading[prop] = value
81
- },
82
- }
1
+ import type {
2
+ UI_I_RawRecentTask,
3
+ UI_I_TasksLoadingPayload,
4
+ UI_I_RecentTask,
5
+ UI_I_Task,
6
+ } from '~/lib/models/store/tasks/interfaces'
7
+ import type { UI_I_TasksState } from '~/store/tasks/lib/models/interfaces'
8
+
9
+ export default {
10
+ M_SET_RECENT_TASKS_LIST(
11
+ state: UI_I_TasksState,
12
+ payload: UI_I_RecentTask<string>
13
+ ): void {
14
+ if (state.recentTaskList) {
15
+ state.recentTaskList.last = payload.last
16
+
17
+ // Заменяем которые уже имеются и удаляем их из payload.items
18
+ state.recentTaskList.items = state.recentTaskList.items.map((task) => {
19
+ let changedTask = null
20
+ payload.items = payload.items.filter((task2) => {
21
+ if (task2.id === task.id) changedTask = task2
22
+ return task2.id !== task.id
23
+ })
24
+
25
+ return changedTask || task
26
+ })
27
+
28
+ // Делаем слияние новых и старых tasks
29
+ state.recentTaskList.items = [
30
+ ...payload.items,
31
+ ...state.recentTaskList.items,
32
+ ]
33
+ return
34
+ }
35
+
36
+ state.recentTaskList = payload
37
+ },
38
+ M_SET_ABORT_CONTROLLER(
39
+ state: UI_I_TasksState,
40
+ payload: AbortController
41
+ ): void {
42
+ state.abortController = payload
43
+ },
44
+ M_CANCEL_RECENT_TASKS(state: UI_I_TasksState): void {
45
+ state.abortController && state.abortController.abort()
46
+ },
47
+ M_HIDE_CANCEL_RECENT_TASK_BY_ID(
48
+ state: UI_I_TasksState,
49
+ payload: string
50
+ ): void {
51
+ if (!state.recentTaskList) return
52
+ state.recentTaskList.items = state.recentTaskList.items.map((task) => {
53
+ if (task.id === payload) {
54
+ task.isCanceled = true
55
+ }
56
+ return task
57
+ })
58
+ },
59
+ M_SET_TASKS_LAST_QUERY(state: UI_I_TasksState, payload: string): void {
60
+ state.taskLastRequestType = payload
61
+ },
62
+ M_SET_TASKS_LIST(state: UI_I_TasksState, payload: UI_I_Task<string>): void {
63
+ state.taskList = payload
64
+ },
65
+ M_SET_UPDATED_RECENT_TASKS_LIST(
66
+ state: UI_I_TasksState,
67
+ payload: UI_I_RawRecentTask<string>
68
+ ): void {
69
+ state.updatedTaskList = payload.items
70
+ },
71
+ M_SET_FIRST_TASK(state: UI_I_TasksState): void {
72
+ state.hasFirstTask = true
73
+ },
74
+
75
+ M_SET_LOADING(
76
+ state: UI_I_TasksState,
77
+ payload: UI_I_TasksLoadingPayload
78
+ ): void {
79
+ const { prop, value } = payload
80
+ state.loading[prop] = value
81
+ },
82
+ }
@@ -1,68 +0,0 @@
1
- <template>
2
- <component
3
- :is="currentComponent"
4
- v-model:selected-tab="activeTabModel"
5
- v-model:status-filter="statusFilter"
6
- :panel-collapsed-model="panelCollapsedModel"
7
- :tab-list="props.tabList"
8
- :data-table-recent-tasks="props.dataTableRecentTasks"
9
- :total-items-recent-tasks="props.totalItemsRecentTasks"
10
- :total-pages-recent-tasks="props.totalPagesRecentTasks"
11
- :pagination-recent-tasks="props.paginationRecentTasks"
12
- :loading-recent-tasks="props.loadingRecentTasks"
13
- @collapse-panel="onCollapseBottomPanel"
14
- @sort-recent-task="emits('sort-recent-task', $event)"
15
- @pagination-recent-task="emits('pagination-recent-task', $event)"
16
- >
17
- <template #alarms>
18
- <slot name="alarms" />
19
- </template>
20
- </component>
21
- </template>
22
-
23
- <script setup lang="ts">
24
- import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
25
- import type { UI_I_RecentTaskItem } from '~/lib/models/store/tasks/interfaces'
26
- import type { UI_T_NodeType } from '~/components/common/pages/home/lib/models/types'
27
- import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
28
- import type { UI_T_BottomPanelTabType } from '~/components/common/layout/bottomPanel/lib/models/types'
29
- import type { UI_T_SelectedStatus } from '~/components/common/layout/bottomPanel/recentTasks/old/lib/models/types'
30
-
31
- const panelCollapsedModel = defineModel<boolean>('panelCollapsed', {
32
- required: true,
33
- })
34
- const activeTabModel = defineModel<UI_T_BottomPanelTabType>('selectedTab', {
35
- required: true,
36
- })
37
- const props = defineProps<{
38
- tabList: UI_I_CollapseNavItem[]
39
- dataTableRecentTasks: UI_I_RecentTaskItem<UI_T_NodeType>[]
40
- totalItemsRecentTasks: number
41
- totalPagesRecentTasks: number
42
- paginationRecentTasks: UI_I_Pagination
43
- loadingRecentTasks: boolean
44
- }>()
45
-
46
- const emits = defineEmits<{
47
- (event: 'sort-recent-task', value: string): void
48
- (event: 'pagination-recent-task', value: UI_I_Pagination | null): void
49
- }>()
50
-
51
- const { $store }: any = useNuxtApp()
52
-
53
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
54
-
55
- const currentComponent = computed(() =>
56
- isNewView.value
57
- ? defineAsyncComponent(() => import('./New.vue'))
58
- : defineAsyncComponent(() => import('./Old.vue'))
59
- )
60
-
61
- const onCollapseBottomPanel = (): void => {
62
- panelCollapsedModel.value = !panelCollapsedModel.value
63
- }
64
-
65
- const statusFilter = ref<UI_T_SelectedStatus>(-1)
66
- </script>
67
-
68
- <style scoped lang="scss"></style>
@@ -1,227 +0,0 @@
1
- <template>
2
- <div
3
- :class="[
4
- 'bottom-panel flex flex-col h-full',
5
- { collapsed: props.panelCollapsedModel },
6
- ]"
7
- >
8
- <div class="bottom-panel__tab-list flex">
9
- <div class="bottom-panel__collapse relative">
10
- <button
11
- id="bottom-panel-collapse"
12
- data-id="bottom-panel-toggle-button"
13
- class="btn-collapse flex items-center"
14
- @click="emits('collapse-panel')"
15
- >
16
- <ui-icon class="collapse-icon" name="arrow" />
17
- </button>
18
- </div>
19
- <ui-tabs
20
- v-model="activeTabModel"
21
- :tabs="tabListLocal"
22
- test-id="bottom-panel-tab-list"
23
- type="underline"
24
- class="bottom-panel__tab"
25
- />
26
-
27
- <div
28
- v-show="isShowRecentTasksActions"
29
- class="actions flex items-center gap-4 pr-4"
30
- >
31
- <ui-select
32
- v-model="statusFilter"
33
- :items="statusFilterItems"
34
- test-id="status-filter"
35
- class="status-filter-select"
36
- />
37
- <ui-button
38
- test-id="more-tasks-button"
39
- variant="primary"
40
- type="text"
41
- class="more-tasks-button"
42
- is-without-sizes
43
- @click="onNavigateToTasksPage"
44
- >
45
- {{ localization.tasks.moreTasks }}
46
- </ui-button>
47
- </div>
48
- </div>
49
- <div
50
- v-show="!props.panelCollapsedModel"
51
- class="bottom-panel__table-wrapper overflow-hidden"
52
- >
53
- <common-layout-bottom-panel-recent-tasks
54
- v-show="activeTabModel === 'recentTask'"
55
- v-model:status-filter="statusFilter"
56
- :data-table="props.dataTableRecentTasks"
57
- :total-items="props.totalItemsRecentTasks"
58
- :total-pages="props.totalPagesRecentTasks"
59
- :pagination="props.paginationRecentTasks"
60
- :loading="props.loadingRecentTasks"
61
- @sort="emits('sort-recent-task', $event)"
62
- @pagination="emits('pagination-recent-task', $event)"
63
- />
64
-
65
- <slot name="alarms" />
66
- </div>
67
- </div>
68
- </template>
69
-
70
- <script setup lang="ts">
71
- import type { UI_I_TabItem } from '~/node_modules/bfg-uikit/components/ui/tabs/models/interfaces'
72
- import type { UI_I_Dropdown } from '~/node_modules/bfg-uikit/components/ui/dropdown/models/interfaces'
73
- import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
74
- import type { UI_I_Localization } from '~/lib/models/interfaces'
75
- import type { UI_T_BottomPanelTabType } from '~/components/common/layout/bottomPanel/lib/models/types'
76
- import type { UI_I_RecentTaskItem } from '~/lib/models/store/tasks/interfaces'
77
- import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
78
- import type { UI_T_NodeType } from '~/components/common/pages/home/lib/models/types'
79
- import type { UI_T_SelectedStatus } from '~/components/common/layout/bottomPanel/recentTasks/old/lib/models/types'
80
- import { statusFilterItemsFunc } from '~/components/common/layout/bottomPanel/lib/config/statusFilter'
81
-
82
- const activeTabModel = defineModel<UI_T_BottomPanelTabType>('selectedTab', {
83
- required: true,
84
- })
85
- const statusFilter = defineModel<UI_T_SelectedStatus>('statusFilter', {
86
- required: true,
87
- })
88
-
89
- const props = defineProps<{
90
- panelCollapsedModel: boolean
91
- tabList: UI_I_CollapseNavItem[]
92
- dataTableRecentTasks: UI_I_RecentTaskItem<UI_T_NodeType>[]
93
- totalItemsRecentTasks: number
94
- totalPagesRecentTasks: number
95
- paginationRecentTasks: UI_I_Pagination
96
- loadingRecentTasks: boolean
97
- }>()
98
-
99
- const emits = defineEmits<{
100
- (event: 'collapse-panel'): void
101
- (event: 'sort-recent-task', value: string): void
102
- (event: 'pagination-recent-task', value: UI_I_Pagination | null): void
103
- }>()
104
-
105
- const tabListLocal = computed<UI_I_TabItem[]>(() =>
106
- props.tabList.map(({ value, text: name, testId, development }) => ({
107
- name,
108
- development,
109
- value: value + '',
110
- testId: testId + '',
111
- }))
112
- )
113
-
114
- const localization = computed<UI_I_Localization>(() => useLocal())
115
- const statusFilterItems = ref<UI_I_Dropdown[]>(
116
- statusFilterItemsFunc(localization.value)
117
- )
118
-
119
- const onNavigateToTasksPage = (): void => {
120
- const router = useRouter()
121
- router.push('/tasks')
122
- }
123
-
124
- const isShowRecentTasksActions = computed<boolean>(
125
- () => activeTabModel.value === 'recentTask' && !props.panelCollapsedModel
126
- )
127
- </script>
128
-
129
- <style>
130
- :root {
131
- --bottom-pannel-bg-color: #fff;
132
- --bottom-pannel-border-color: #e9ebed;
133
- --bottom-pannel-rtask-link-text: #008fd6;
134
- --bottom-pannel-rtask-link-hover-text: #0081c1;
135
- --bottom-pannel-divider-color: #e9ebeda3;
136
- --bottom-pannel-collapse-button-icon: #213444;
137
- }
138
- :root.dark-theme {
139
- --bottom-pannel-bg-color: #213444;
140
- --bottom-pannel-border-color: #e9ebed1f;
141
- --bottom-pannel-rtask-link-text: #2ba2de;
142
- --bottom-pannel-rtask-link-hover-text: #008fd6;
143
- --bottom-pannel-divider-color: #e9ebed1f;
144
- --bottom-pannel-collapse-button-icon: #e9eaec;
145
- }
146
- </style>
147
- <style scoped lang="scss">
148
- @import '~/assets/scss/common/mixins';
149
- .bottom-panel {
150
- background-color: var(--bottom-pannel-bg-color);
151
-
152
- &__tab-list {
153
- border-bottom: 1px solid var(--bottom-pannel-border-color);
154
- }
155
- &__tab {
156
- align-items: flex-end;
157
- margin-left: 16px;
158
-
159
- &.tabs-wrapper.is-link:before {
160
- display: none;
161
- }
162
- .collapsed &.tabs-wrapper.is-link {
163
- :deep(.tab-item.active.tab-underline) {
164
- border-bottom: 3px solid transparent;
165
- }
166
- }
167
- }
168
- &__table-wrapper {
169
- height: inherit;
170
- }
171
-
172
- .btn-collapse {
173
- border: 0;
174
- outline: none;
175
- background-color: transparent;
176
- cursor: pointer;
177
-
178
- .collapse-icon {
179
- width: 20px;
180
- height: 20px;
181
- transform: rotate(180deg);
182
- color: var(--bottom-pannel-collapse-button-icon);
183
-
184
- .collapsed & {
185
- transform: rotate(0deg);
186
- }
187
- }
188
- }
189
- &__collapse {
190
- padding: 12px 16px;
191
-
192
- &:before {
193
- content: '';
194
- position: absolute;
195
- top: 8px;
196
- right: 0;
197
- bottom: 8px;
198
- width: 1px;
199
- background-color: var(--bottom-pannel-divider-color);
200
- }
201
- }
202
-
203
- .actions {
204
- flex: 1;
205
- justify-content: flex-end;
206
-
207
- .more-tasks-button {
208
- width: auto;
209
- }
210
-
211
- :deep(.ui-select-toggle-button) {
212
- height: 24px;
213
- min-width: 80px;
214
- padding: 4px 4px 4px 8px;
215
- border-radius: 6px;
216
- }
217
- :deep(.ui-popup-window) {
218
- border-radius: 6px;
219
- width: unset !important;
220
- }
221
- }
222
- }
223
-
224
- :deep(.table-container.default-layout) {
225
- border-radius: 0;
226
- }
227
- </style>
@@ -1,144 +0,0 @@
1
- <template>
2
- <div
3
- :class="[
4
- 'bottom-panel flex flex-col h-full',
5
- { collapsed: props.panelCollapsedModel },
6
- ]"
7
- >
8
- <div class="flex">
9
- <div class="bottom-panel__trigger">
10
- <button
11
- id="bottom-panel-trigger"
12
- data-id="bottom-panel-toggle-button"
13
- class="btn-trigger flex items-center"
14
- @click="emits('collapse-panel')"
15
- >
16
- <atoms-the-icon class="trigger-icon" name="angle" />
17
- </button>
18
- </div>
19
- <atoms-nav-bar
20
- v-model="activeTabModel"
21
- :items="props.tabList"
22
- :class="[
23
- 'bottom-panel__tabs',
24
- props.panelCollapsedModel && 'collapsed',
25
- ]"
26
- test-id="bottom-panel-nav-bar"
27
- />
28
- </div>
29
- <div
30
- v-show="!props.panelCollapsedModel"
31
- class="bottom-panel__table-wrapper overflow-hidden"
32
- >
33
- <common-layout-bottom-panel-recent-tasks
34
- v-show="activeTabModel === 'recentTask'"
35
- v-model:status-filter="statusFilter"
36
- :data-table="props.dataTableRecentTasks"
37
- :total-items="props.totalItemsRecentTasks"
38
- :total-pages="props.totalPagesRecentTasks"
39
- :pagination="props.paginationRecentTasks"
40
- :loading="props.loadingRecentTasks"
41
- @sort="emits('sort-recent-task', $event)"
42
- @pagination="emits('pagination-recent-task', $event)"
43
- />
44
-
45
- <slot name="alarms" />
46
- </div>
47
- </div>
48
- </template>
49
-
50
- <script setup lang="ts">
51
- import type { UI_I_CollapseNavItem } from '~/components/atoms/collapse/lib/models/interfaces'
52
- import type { UI_I_RecentTaskItem } from '~/lib/models/store/tasks/interfaces'
53
- import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
54
- import type { UI_T_NodeType } from '~/components/common/pages/home/lib/models/types'
55
- import type { UI_T_BottomPanelTabType } from '~/components/common/layout/bottomPanel/lib/models/types'
56
- import type { UI_T_SelectedStatus } from '~/components/common/layout/bottomPanel/recentTasks/old/lib/models/types'
57
-
58
- const statusFilter = defineModel<UI_T_SelectedStatus>('statusFilter', {
59
- required: true,
60
- })
61
- const activeTabModel = defineModel<UI_T_BottomPanelTabType>('selectedTab', {
62
- required: true,
63
- })
64
-
65
- const props = defineProps<{
66
- panelCollapsedModel: boolean
67
- tabList: UI_I_CollapseNavItem[]
68
- dataTableRecentTasks: UI_I_RecentTaskItem<UI_T_NodeType>[]
69
- totalItemsRecentTasks: number
70
- totalPagesRecentTasks: number
71
- paginationRecentTasks: UI_I_Pagination
72
- loadingRecentTasks: boolean
73
- }>()
74
-
75
- const emits = defineEmits<{
76
- (event: 'collapse-panel'): void
77
- (event: 'sort-recent-task', value: string): void
78
- (event: 'pagination-recent-task', value: UI_I_Pagination | null): void
79
- }>()
80
- </script>
81
-
82
- <style scoped lang="scss">
83
- @import '~/assets/scss/common/mixins';
84
- .bottom-panel {
85
- background-color: var(--pannel-bg-color);
86
- & > div:first-child {
87
- height: 36px;
88
- }
89
- &__table-wrapper {
90
- height: inherit;
91
- :deep(.datagrid-outer-wrapper) {
92
- padding-top: 0;
93
- .datagrid {
94
- border-radius: 0;
95
- margin-top: 0;
96
- }
97
- }
98
- }
99
- &__tabs {
100
- &.collapsed {
101
- :deep(button.nav-link) {
102
- box-shadow: none;
103
- }
104
- }
105
- }
106
-
107
- &.collapsed {
108
- .btn-trigger {
109
- .trigger-icon {
110
- transform: rotate(0deg);
111
- }
112
- }
113
- }
114
- .btn-trigger {
115
- height: 31px;
116
- border: 0;
117
- outline: none;
118
- background-color: transparent;
119
- padding-left: 15px;
120
- cursor: pointer;
121
- .trigger-icon {
122
- width: 16px;
123
- height: 16px;
124
- fill: var(--triger-icon-color);
125
- transform: rotate(180deg);
126
- }
127
- }
128
- &__trigger {
129
- padding-right: 15px;
130
- margin-right: 15px;
131
- border-right: 0.05rem solid #ccc;
132
- box-shadow: inset 0 -0.05rem 0 var(--nav-panel-border-color);
133
- }
134
- }
135
- </style>
136
-
137
- <style>
138
- :root {
139
- --pannel-bg-color: #fafafa;
140
- }
141
- :root.dark-theme {
142
- --pannel-bg-color: #1b2a32;
143
- }
144
- </style>
@@ -1,19 +0,0 @@
1
- import type { UI_I_Dropdown } from '~/node_modules/bfg-uikit/components/ui/dropdown/models/interfaces'
2
- import type { UI_I_Localization } from '~/lib/models/interfaces'
3
-
4
- export const statusFilterItemsFunc = (
5
- localization: UI_I_Localization
6
- ): UI_I_Dropdown[] => [
7
- {
8
- text: localization.common.all,
9
- value: -1,
10
- },
11
- {
12
- text: localization.common.running,
13
- value: 1,
14
- },
15
- {
16
- text: localization.common.failed,
17
- value: 3,
18
- },
19
- ]
@@ -1 +0,0 @@
1
- export type UI_T_BottomPanelTabType = 'recentTask' | 'alarms'
@@ -1,49 +0,0 @@
1
- <template>
2
- <component
3
- :is="currentComponent"
4
- v-model:status-filter="statusFilter"
5
- :data-table="props.dataTable"
6
- :total-items="props.totalItems"
7
- :total-pages="props.totalPages"
8
- :pagination="props.pagination"
9
- :loading="props.loading"
10
- @pagination="emits('pagination', $event)"
11
- @sort="emits('sort', $event)"
12
- />
13
- </template>
14
-
15
- <script setup lang="ts">
16
- import type { UI_I_RecentTaskItem } from '~/lib/models/store/tasks/interfaces'
17
- import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
18
- import type { UI_T_NodeType } from '~/components/common/pages/home/lib/models/types'
19
- import type { UI_T_SelectedStatus } from '~/components/common/layout/bottomPanel/recentTasks/old/lib/models/types'
20
-
21
- const statusFilter = defineModel<UI_T_SelectedStatus>('statusFilter', {
22
- required: true,
23
- })
24
-
25
- const props = defineProps<{
26
- dataTable: UI_I_RecentTaskItem<UI_T_NodeType>[]
27
- totalItems: number
28
- totalPages: number
29
- pagination: UI_I_Pagination
30
- loading: boolean
31
- }>()
32
-
33
- const emits = defineEmits<{
34
- (event: 'pagination', value: UI_I_Pagination | null): void
35
- (event: 'sort', value: string): void
36
- }>()
37
-
38
- const { $store }: any = useNuxtApp()
39
-
40
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
41
-
42
- const currentComponent = computed(() =>
43
- isNewView.value
44
- ? defineAsyncComponent(() => import('./new/New.vue'))
45
- : defineAsyncComponent(() => import('./old/Old.vue'))
46
- )
47
- </script>
48
-
49
- <style scoped lang="scss"></style>
@@ -1,14 +0,0 @@
1
- import type { UI_T_NodeType } from '~/components/common/pages/home/lib/models/types'
2
- import type { UI_T_NavNodes } from '~/lib/models/types'
3
-
4
- interface UI_I_TargetData {
5
- id: string
6
- type: UI_T_NodeType
7
- }
8
-
9
- export interface UI_I_DataTargetForTable extends UI_I_TargetData {
10
- nav: UI_T_NavNodes
11
- isLink: boolean
12
- iconClassName: string
13
- testId?: string
14
- }