bfg-common 1.5.647 → 1.5.649

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 (101) 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 +1 -0
  7. package/assets/localization/local_en.json +1 -0
  8. package/assets/localization/local_hy.json +1 -0
  9. package/assets/localization/local_kk.json +1 -0
  10. package/assets/localization/local_ru.json +1 -0
  11. package/assets/localization/local_zh.json +1 -0
  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/DataGrid.vue +1718 -1718
  16. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  17. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  18. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  19. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  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/layout/theHeader/userMenu/modals/changePassword/ChangePassword.vue +99 -90
  27. package/components/common/layout/theHeader/userMenu/modals/changePassword/{ChangePasswordNew.vue → New.vue} +193 -188
  28. package/components/common/layout/theHeader/userMenu/modals/changePassword/{ChangePasswordOld.vue → Old.vue} +2 -0
  29. package/components/common/layout/theHeader/userMenu/modals/changePassword/lib/models/interfaces.ts +3 -0
  30. package/components/common/pages/backups/DetailView.vue +52 -52
  31. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  32. package/components/common/pages/backups/modals/Modals.vue +243 -243
  33. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  34. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  35. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  36. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  37. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  38. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  39. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  40. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  41. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  42. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  43. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  44. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  45. package/components/common/select/radio/RadioGroup.vue +137 -137
  46. package/components/common/spiceConsole/Drawer.vue +420 -420
  47. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  48. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  49. package/components/common/tools/Actions.vue +207 -207
  50. package/components/common/treeView/TreeView.vue +52 -52
  51. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  52. package/components/common/vm/actions/clone/new/New.vue +438 -437
  53. package/components/common/vm/actions/clone/old/Old.vue +1 -0
  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/vmoptions/bootOptions/order/Order.vue +156 -156
  57. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  58. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  59. package/components/common/vm/actions/common/select/options/New.vue +263 -259
  60. package/components/common/vm/actions/common/select/options/Old.vue +109 -102
  61. package/components/common/vm/actions/common/select/options/Options.vue +58 -53
  62. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  63. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  64. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  65. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  66. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  67. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  68. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  69. package/components/common/wizards/common/compatibility/New.vue +99 -99
  70. package/components/common/wizards/common/compatibility/Old.vue +53 -53
  71. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  72. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  73. package/components/common/wizards/common/steps/name/New.vue +221 -221
  74. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  75. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  76. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  77. package/components/common/wizards/datastore/add/Add.vue +228 -228
  78. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  79. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  80. package/composables/useAppVersion.ts +21 -21
  81. package/composables/useLocal.ts +6 -6
  82. package/composables/useLocalCommon.ts +39 -39
  83. package/package.json +2 -2
  84. package/plugins/console.ts +21 -21
  85. package/plugins/mouse.ts +21 -21
  86. package/plugins/panelStates.ts +70 -70
  87. package/plugins/text.ts +59 -59
  88. package/public/spice-console/application/clientgui.js +854 -854
  89. package/public/spice-console/application/packetfactory.js +211 -211
  90. package/public/spice-console/application/virtualmouse.js +147 -147
  91. package/public/spice-console/lib/images/bitmap.js +203 -203
  92. package/public/spice-console/network/spicechannel.js +440 -440
  93. package/public/spice-console/process/cursorprocess.js +128 -128
  94. package/public/spice-console/process/inputprocess.js +227 -227
  95. package/public/spice-console/process/mainprocess.js +212 -212
  96. package/public/spice-console/run.js +210 -210
  97. package/store/main/mutations.ts +7 -7
  98. package/store/main/state.ts +7 -7
  99. package/store/tasks/actions.ts +165 -165
  100. package/store/tasks/mappers/recentTasks.ts +123 -123
  101. package/store/tasks/mutations.ts +82 -82
@@ -1,165 +1,165 @@
1
- import type {
2
- API_UI_I_Error,
3
- API_UI_I_Response,
4
- UI_I_CommitOptions,
5
- } from '~/lib/models/store/interfaces'
6
- import type {
7
- UI_I_DataTableQuery,
8
- UI_I_TableQuery,
9
- } from '~/lib/models/table/interfaces'
10
- import type { UI_I_Options } from '~/lib/models/composables/useMyFetch/interfaces'
11
- import type {
12
- API_UI_I_RecentTask,
13
- UI_I_RTaskQuery,
14
- UI_I_TasksLoadingPayload,
15
- UI_I_RawRecentTask,
16
- UI_I_RecentTask,
17
- API_UI_I_Task,
18
- } from '~/lib/models/store/tasks/interfaces'
19
- import type { UI_I_TasksState } from '~/store/tasks/lib/models/interfaces'
20
- import type { UI_I_RefreshStack } from '~/store/main/lib/interfaces'
21
- import { tasksConstructor } from '~/store/tasks/mappers/tasks'
22
- import { recentTasks } from '~/store/tasks/mappers/recentTasks'
23
-
24
- export default {
25
- async A_GET_TASKS(
26
- context: {
27
- commit: <T>(arg0: string, arg1: T) => void
28
- state: UI_I_TasksState
29
- dispatch: <T>(arg0: string, arg1: T, arg2: UI_I_CommitOptions) => void
30
- },
31
- payload: UI_I_DataTableQuery
32
- ): Promise<API_UI_I_Error | void> {
33
- const { page, pageSize, sortBy, filter } = payload
34
-
35
- const query: UI_I_TableQuery = {
36
- page_size: pageSize,
37
- page,
38
- }
39
-
40
- if (sortBy) query.sortBy = sortBy
41
- if (filter) query.filter = filter
42
-
43
- const queryJson: string = JSON.stringify({ type: 'tasks', ...query })
44
- const lastQuery: string = context.state.taskQuery || ''
45
-
46
- if (queryJson === lastQuery) {
47
- // Снимаем с паузы сам запрос, для глобального обновления
48
- context.dispatch<string>('main/A_CONTINUE_GLOBAL_REFRESH', queryJson, {
49
- root: true,
50
- })
51
- return
52
- }
53
- context.commit('M_SET_TASKS_LAST_QUERY', queryJson)
54
-
55
- const url = '/ui/tasks'
56
- const options: UI_I_Options = {
57
- query,
58
- method: 'GET',
59
- key: Date.now().toString(),
60
- onRequest() {
61
- context.commit<UI_I_TasksLoadingPayload>('M_SET_LOADING', {
62
- prop: 'tasks',
63
- value: true,
64
- })
65
- },
66
- onResponse({ response }: API_UI_I_Response<API_UI_I_Task<string>>) {
67
- const tasks = tasksConstructor(response._data)
68
-
69
- context.commit('M_SET_TASKS_LIST', tasks)
70
- context.commit<UI_I_TasksLoadingPayload>('M_SET_LOADING', {
71
- prop: 'tasks',
72
- value: false,
73
- })
74
- },
75
- }
76
- const { error } = await useMyFetch<API_UI_I_Task<string>, API_UI_I_Error>(
77
- url,
78
- options
79
- )
80
-
81
- if (error.value?.data?.error_code)
82
- throw new Error(error.value.data.error_message)
83
-
84
- context.dispatch<UI_I_RefreshStack>(
85
- 'main/A_ADD_IN_GLOBAL_REFRESH',
86
- { key: queryJson, url, options },
87
- { root: true }
88
- )
89
- },
90
- async A_GET_RECENT_TASKS(
91
- context: {
92
- commit: <T>(arg0: string, arg1: T) => void
93
- state: UI_I_TasksState
94
- },
95
- payload: string
96
- ): Promise<void> {
97
- const query: UI_I_RTaskQuery = {
98
- last: context.state.recentTaskList?.last || 0,
99
- }
100
- if (payload) query.sortBy = payload
101
-
102
- // Создаем контроллер для возможности отмены
103
- const abortController = new AbortController()
104
- context.commit('M_SET_ABORT_CONTROLLER', abortController)
105
-
106
- const { data, error } = await useMyFetch<
107
- API_UI_I_RecentTask<string>,
108
- API_UI_I_Error
109
- // >('/ui/tasks/watch', {
110
- >('/ui/rtasks', {
111
- query,
112
- method: 'GET',
113
- initialCache: false,
114
- signal: abortController.signal,
115
- })
116
-
117
- if (error.value?.data?.error_code)
118
- throw new Error(error.value.data.error_message)
119
-
120
- context.commit<UI_I_RecentTask<string>>(
121
- 'M_SET_RECENT_TASKS_LIST',
122
- recentTasks(data.value)
123
- )
124
- context.commit<UI_I_RawRecentTask<string>>(
125
- 'M_SET_UPDATED_RECENT_TASKS_LIST',
126
- data.value
127
- )
128
- // context.commit<I_TasksLoadingPayload>('M_SET_LOADING', {
129
- // prop: 'recentTasks',
130
- // value: false,
131
- // })
132
- },
133
- A_CANCEL_RECENT_TASKS(context: { commit: (arg0: string) => void }): void {
134
- context.commit('M_CANCEL_RECENT_TASKS')
135
- },
136
- async A_CANCEL_RECENT_TASK_BY_ID(
137
- context: {
138
- commit: (arg0: string, arg1: string) => void
139
- },
140
- payload: string
141
- ): Promise<void> {
142
- // Скрываем кнопку cancel
143
- context.commit(
144
- 'M_HIDE_CANCEL_RECENT_TASK_BY_ID',
145
- payload
146
- )
147
- const { error } = await useMyFetch<
148
- API_UI_I_RecentTask<string>,
149
- API_UI_I_Error
150
- >(`/ui/tasks/${payload}/cancel`, {
151
- method: 'POST',
152
- initialCache: false,
153
- })
154
-
155
- if (error.value?.data?.error_code)
156
- throw new Error(error.value.data.error_message)
157
- },
158
-
159
- // Вызывается в useMyFetch когда получаем первый ответ от запроса с url tasks
160
- // и default.vue когда срабатывает watch на recentTasks
161
- // Нужно для того чтобы не обрабатывали те таски которые были сделаны перед загрузкой страницы
162
- A_SET_FIRST_TASK(context: { commit: (arg0: string) => void }): void {
163
- context.commit('M_SET_FIRST_TASK')
164
- },
165
- }
1
+ import type {
2
+ API_UI_I_Error,
3
+ API_UI_I_Response,
4
+ UI_I_CommitOptions,
5
+ } from '~/lib/models/store/interfaces'
6
+ import type {
7
+ UI_I_DataTableQuery,
8
+ UI_I_TableQuery,
9
+ } from '~/lib/models/table/interfaces'
10
+ import type { UI_I_Options } from '~/lib/models/composables/useMyFetch/interfaces'
11
+ import type {
12
+ API_UI_I_RecentTask,
13
+ UI_I_RTaskQuery,
14
+ UI_I_TasksLoadingPayload,
15
+ UI_I_RawRecentTask,
16
+ UI_I_RecentTask,
17
+ API_UI_I_Task,
18
+ } from '~/lib/models/store/tasks/interfaces'
19
+ import type { UI_I_TasksState } from '~/store/tasks/lib/models/interfaces'
20
+ import type { UI_I_RefreshStack } from '~/store/main/lib/interfaces'
21
+ import { tasksConstructor } from '~/store/tasks/mappers/tasks'
22
+ import { recentTasks } from '~/store/tasks/mappers/recentTasks'
23
+
24
+ export default {
25
+ async A_GET_TASKS(
26
+ context: {
27
+ commit: <T>(arg0: string, arg1: T) => void
28
+ state: UI_I_TasksState
29
+ dispatch: <T>(arg0: string, arg1: T, arg2: UI_I_CommitOptions) => void
30
+ },
31
+ payload: UI_I_DataTableQuery
32
+ ): Promise<API_UI_I_Error | void> {
33
+ const { page, pageSize, sortBy, filter } = payload
34
+
35
+ const query: UI_I_TableQuery = {
36
+ page_size: pageSize,
37
+ page,
38
+ }
39
+
40
+ if (sortBy) query.sortBy = sortBy
41
+ if (filter) query.filter = filter
42
+
43
+ const queryJson: string = JSON.stringify({ type: 'tasks', ...query })
44
+ const lastQuery: string = context.state.taskQuery || ''
45
+
46
+ if (queryJson === lastQuery) {
47
+ // Снимаем с паузы сам запрос, для глобального обновления
48
+ context.dispatch<string>('main/A_CONTINUE_GLOBAL_REFRESH', queryJson, {
49
+ root: true,
50
+ })
51
+ return
52
+ }
53
+ context.commit('M_SET_TASKS_LAST_QUERY', queryJson)
54
+
55
+ const url = '/ui/tasks'
56
+ const options: UI_I_Options = {
57
+ query,
58
+ method: 'GET',
59
+ key: Date.now().toString(),
60
+ onRequest() {
61
+ context.commit<UI_I_TasksLoadingPayload>('M_SET_LOADING', {
62
+ prop: 'tasks',
63
+ value: true,
64
+ })
65
+ },
66
+ onResponse({ response }: API_UI_I_Response<API_UI_I_Task<string>>) {
67
+ const tasks = tasksConstructor(response._data)
68
+
69
+ context.commit('M_SET_TASKS_LIST', tasks)
70
+ context.commit<UI_I_TasksLoadingPayload>('M_SET_LOADING', {
71
+ prop: 'tasks',
72
+ value: false,
73
+ })
74
+ },
75
+ }
76
+ const { error } = await useMyFetch<API_UI_I_Task<string>, API_UI_I_Error>(
77
+ url,
78
+ options
79
+ )
80
+
81
+ if (error.value?.data?.error_code)
82
+ throw new Error(error.value.data.error_message)
83
+
84
+ context.dispatch<UI_I_RefreshStack>(
85
+ 'main/A_ADD_IN_GLOBAL_REFRESH',
86
+ { key: queryJson, url, options },
87
+ { root: true }
88
+ )
89
+ },
90
+ async A_GET_RECENT_TASKS(
91
+ context: {
92
+ commit: <T>(arg0: string, arg1: T) => void
93
+ state: UI_I_TasksState
94
+ },
95
+ payload: string
96
+ ): Promise<void> {
97
+ const query: UI_I_RTaskQuery = {
98
+ last: context.state.recentTaskList?.last || 0,
99
+ }
100
+ if (payload) query.sortBy = payload
101
+
102
+ // Создаем контроллер для возможности отмены
103
+ const abortController = new AbortController()
104
+ context.commit('M_SET_ABORT_CONTROLLER', abortController)
105
+
106
+ const { data, error } = await useMyFetch<
107
+ API_UI_I_RecentTask<string>,
108
+ API_UI_I_Error
109
+ // >('/ui/tasks/watch', {
110
+ >('/ui/rtasks', {
111
+ query,
112
+ method: 'GET',
113
+ initialCache: false,
114
+ signal: abortController.signal,
115
+ })
116
+
117
+ if (error.value?.data?.error_code)
118
+ throw new Error(error.value.data.error_message)
119
+
120
+ context.commit<UI_I_RecentTask<string>>(
121
+ 'M_SET_RECENT_TASKS_LIST',
122
+ recentTasks(data.value)
123
+ )
124
+ context.commit<UI_I_RawRecentTask<string>>(
125
+ 'M_SET_UPDATED_RECENT_TASKS_LIST',
126
+ data.value
127
+ )
128
+ // context.commit<I_TasksLoadingPayload>('M_SET_LOADING', {
129
+ // prop: 'recentTasks',
130
+ // value: false,
131
+ // })
132
+ },
133
+ A_CANCEL_RECENT_TASKS(context: { commit: (arg0: string) => void }): void {
134
+ context.commit('M_CANCEL_RECENT_TASKS')
135
+ },
136
+ async A_CANCEL_RECENT_TASK_BY_ID(
137
+ context: {
138
+ commit: (arg0: string, arg1: string) => void
139
+ },
140
+ payload: string
141
+ ): Promise<void> {
142
+ // Скрываем кнопку cancel
143
+ context.commit(
144
+ 'M_HIDE_CANCEL_RECENT_TASK_BY_ID',
145
+ payload
146
+ )
147
+ const { error } = await useMyFetch<
148
+ API_UI_I_RecentTask<string>,
149
+ API_UI_I_Error
150
+ >(`/ui/tasks/${payload}/cancel`, {
151
+ method: 'POST',
152
+ initialCache: false,
153
+ })
154
+
155
+ if (error.value?.data?.error_code)
156
+ throw new Error(error.value.data.error_message)
157
+ },
158
+
159
+ // Вызывается в useMyFetch когда получаем первый ответ от запроса с url tasks
160
+ // и default.vue когда срабатывает watch на recentTasks
161
+ // Нужно для того чтобы не обрабатывали те таски которые были сделаны перед загрузкой страницы
162
+ A_SET_FIRST_TASK(context: { commit: (arg0: string) => void }): void {
163
+ context.commit('M_SET_FIRST_TASK')
164
+ },
165
+ }
@@ -1,123 +1,123 @@
1
- import {
2
- UI_E_RecentTaskStatus,
3
- UI_E_IconNameByRecentTaskStatus,
4
- } from '~/lib/models/store/tasks/enums'
5
- import type {
6
- API_UI_I_RecentTask,
7
- UI_I_RecentTask,
8
- UI_T_TaskStatusDetails,
9
- } from '~/lib/models/store/tasks/interfaces'
10
- import { base64 } from '~/lib/utils/base64'
11
- import {
12
- UI_E_RecentTaskStatusIcon,
13
- UI_E_RecentTaskStatusIconNewView,
14
- } from '~/store/tasks/lib/models/enums'
15
-
16
- export const recentTasks = (
17
- data: API_UI_I_RecentTask<string>
18
- ): UI_I_RecentTask<string> => {
19
- const { $store }: any = useNuxtApp()
20
-
21
- const isNewView = $store.getters['main/getIsNewView']
22
-
23
- const items =
24
- data.items
25
- ?.sort((a, b) => {
26
- return b.start_time - a.start_time
27
- })
28
- .map((task) => {
29
- let args: any = {}
30
- try {
31
- args = base64.decode(task.args)
32
- } catch (error) {
33
- args = {}
34
- }
35
-
36
- let completion: string = task.completion + '' || '--'
37
- let execution: string | number = Math.abs(
38
- task.start_time - task.completion
39
- )
40
- let queuedFor: number = task.start_time - task.creation_time
41
- let startTime: string = task.start_time + '' || '--'
42
- // Обрабатываем данные когда задачка в ожидании
43
- if (task.status === 0) {
44
- completion = '--'
45
- execution = '--'
46
- queuedFor = 0
47
- startTime = Date.now() / 1000 + ''
48
- // Обрабатываем данные когда задачка в работе или когда в статусе retry
49
- } else if (task.status === 1 || task.status === 5) {
50
- completion = '--'
51
- execution = '--'
52
- }
53
-
54
- const { upd_operations } = task.extra
55
- const operations: UI_T_TaskStatusDetails[] =
56
- upd_operations?.operations?.map(
57
- (operation: UI_T_TaskStatusDetails) => {
58
- return {
59
- ...operation,
60
- iconClassName: isNewView
61
- ? UI_E_RecentTaskStatusIconNewView[operation.status]
62
- : UI_E_RecentTaskStatusIcon[operation.status],
63
- testId: operation.operation_type.replaceAll(' ', '-'),
64
- }
65
- }
66
- ) || []
67
-
68
- // TODO
69
- let statusIcon = 'help-icon'
70
- switch (task.status) {
71
- case 0:
72
- statusIcon = 'help-icon'
73
- break
74
- case 1:
75
- statusIcon = 'green-play'
76
- break
77
- case 2:
78
- statusIcon = 'success-circle'
79
- break
80
- case 3:
81
- case 4:
82
- statusIcon = 'error-outline'
83
- break
84
- case 5:
85
- statusIcon = 'warning-outline'
86
- break
87
- }
88
-
89
- const targetName = task.extra.target_name || '--'
90
- const targetType = task.extra.target_type || task.target_type
91
-
92
- return {
93
- args,
94
- completion,
95
- execution,
96
- queuedFor,
97
- startTime,
98
- statusIcon,
99
- progress: task.progress,
100
- details: task.details,
101
- error: task.error,
102
- initiator: task.initiator,
103
- server: task.server,
104
- // statusIcon: UI_E_IconNameByRecentTaskStatus[task.status],
105
- statusText: task.error || UI_E_RecentTaskStatus[task.status],
106
- status: task.status,
107
- statusDetails: operations,
108
- target: task.target,
109
- targetName,
110
- targetType,
111
- // targetType: task.target_type,
112
- taskName: task.task_name,
113
- id: task.id,
114
- zone: task.zone,
115
- extra: task.extra,
116
- isCanceled: task.status === 4
117
- }
118
- }) || []
119
- return {
120
- items,
121
- last: data.last,
122
- }
123
- }
1
+ import {
2
+ UI_E_RecentTaskStatus,
3
+ UI_E_IconNameByRecentTaskStatus,
4
+ } from '~/lib/models/store/tasks/enums'
5
+ import type {
6
+ API_UI_I_RecentTask,
7
+ UI_I_RecentTask,
8
+ UI_T_TaskStatusDetails,
9
+ } from '~/lib/models/store/tasks/interfaces'
10
+ import { base64 } from '~/lib/utils/base64'
11
+ import {
12
+ UI_E_RecentTaskStatusIcon,
13
+ UI_E_RecentTaskStatusIconNewView,
14
+ } from '~/store/tasks/lib/models/enums'
15
+
16
+ export const recentTasks = (
17
+ data: API_UI_I_RecentTask<string>
18
+ ): UI_I_RecentTask<string> => {
19
+ const { $store }: any = useNuxtApp()
20
+
21
+ const isNewView = $store.getters['main/getIsNewView']
22
+
23
+ const items =
24
+ data.items
25
+ ?.sort((a, b) => {
26
+ return b.start_time - a.start_time
27
+ })
28
+ .map((task) => {
29
+ let args: any = {}
30
+ try {
31
+ args = base64.decode(task.args)
32
+ } catch (error) {
33
+ args = {}
34
+ }
35
+
36
+ let completion: string = task.completion + '' || '--'
37
+ let execution: string | number = Math.abs(
38
+ task.start_time - task.completion
39
+ )
40
+ let queuedFor: number = task.start_time - task.creation_time
41
+ let startTime: string = task.start_time + '' || '--'
42
+ // Обрабатываем данные когда задачка в ожидании
43
+ if (task.status === 0) {
44
+ completion = '--'
45
+ execution = '--'
46
+ queuedFor = 0
47
+ startTime = Date.now() / 1000 + ''
48
+ // Обрабатываем данные когда задачка в работе или когда в статусе retry
49
+ } else if (task.status === 1 || task.status === 5) {
50
+ completion = '--'
51
+ execution = '--'
52
+ }
53
+
54
+ const { upd_operations } = task.extra
55
+ const operations: UI_T_TaskStatusDetails[] =
56
+ upd_operations?.operations?.map(
57
+ (operation: UI_T_TaskStatusDetails) => {
58
+ return {
59
+ ...operation,
60
+ iconClassName: isNewView
61
+ ? UI_E_RecentTaskStatusIconNewView[operation.status]
62
+ : UI_E_RecentTaskStatusIcon[operation.status],
63
+ testId: operation.operation_type.replaceAll(' ', '-'),
64
+ }
65
+ }
66
+ ) || []
67
+
68
+ // TODO
69
+ let statusIcon = 'help-icon'
70
+ switch (task.status) {
71
+ case 0:
72
+ statusIcon = 'help-icon'
73
+ break
74
+ case 1:
75
+ statusIcon = 'green-play'
76
+ break
77
+ case 2:
78
+ statusIcon = 'success-circle'
79
+ break
80
+ case 3:
81
+ case 4:
82
+ statusIcon = 'error-outline'
83
+ break
84
+ case 5:
85
+ statusIcon = 'warning-outline'
86
+ break
87
+ }
88
+
89
+ const targetName = task.extra.target_name || '--'
90
+ const targetType = task.extra.target_type || task.target_type
91
+
92
+ return {
93
+ args,
94
+ completion,
95
+ execution,
96
+ queuedFor,
97
+ startTime,
98
+ statusIcon,
99
+ progress: task.progress,
100
+ details: task.details,
101
+ error: task.error,
102
+ initiator: task.initiator,
103
+ server: task.server,
104
+ // statusIcon: UI_E_IconNameByRecentTaskStatus[task.status],
105
+ statusText: task.error || UI_E_RecentTaskStatus[task.status],
106
+ status: task.status,
107
+ statusDetails: operations,
108
+ target: task.target,
109
+ targetName,
110
+ targetType,
111
+ // targetType: task.target_type,
112
+ taskName: task.task_name,
113
+ id: task.id,
114
+ zone: task.zone,
115
+ extra: task.extra,
116
+ isCanceled: task.status === 4
117
+ }
118
+ }) || []
119
+ return {
120
+ items,
121
+ last: data.last,
122
+ }
123
+ }