bfg-common 1.5.723 → 1.5.725

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 (119) 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/console/Console.vue +70 -70
  18. package/components/common/layout/theHeader/{TheHeaderNew.vue → New.vue} +2 -5
  19. package/components/common/layout/theHeader/TheHeader.vue +10 -33
  20. package/components/common/layout/theHeader/ThemeSwitch.vue +8 -18
  21. package/components/common/layout/theHeader/helpMenu/HelpMenu.vue +6 -8
  22. package/components/common/layout/theHeader/helpMenu/{About.vue → about/About.vue} +69 -79
  23. package/components/common/layout/theHeader/helpMenu/{aboutNew/AboutNew.vue → about/New.vue} +97 -96
  24. package/components/common/layout/theHeader/helpMenu/about/Old.vue +78 -0
  25. package/components/common/layout/theHeader/helpMenu/{helpMenuNew/HelpMenuNew.vue → new/New.vue} +1 -1
  26. package/components/common/layout/theHeader/helpMenu/{helpMenuNew → new}/lib/config/dropMenu.ts +1 -1
  27. package/components/common/layout/theHeader/helpMenu/{helpMenuOld/HelpMenuOld.vue → old/Old.vue} +2 -2
  28. package/components/common/layout/theHeader/helpMenu/{helpMenuOld → old}/lib/config/dropMenu.ts +1 -1
  29. package/components/common/layout/theHeader/modals/reconnect/Reconnect.vue +8 -10
  30. package/components/common/layout/theHeader/userMenu/UserMenu.vue +8 -7
  31. package/components/common/layout/theHeader/userMenu/modals/preferences/{PreferencesNew.vue → New.vue} +1 -0
  32. package/components/common/layout/theHeader/userMenu/modals/preferences/{PreferencesOld.vue → Old.vue} +0 -2
  33. package/components/common/layout/theHeader/userMenu/modals/preferences/Preferences.vue +9 -21
  34. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  35. package/components/common/layout/theHeader/userMenu/{userMenuNew/UserMenuNew.vue → new/New.vue} +1 -1
  36. package/components/common/layout/theHeader/userMenu/{userMenuOld/UserMenuOld.vue → old/Old.vue} +2 -2
  37. package/components/common/layout/theHeader/userMenu/{userMenuOld → old}/lib/config/dropMenu.ts +1 -1
  38. package/components/common/pages/backups/DetailView.vue +52 -52
  39. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  40. package/components/common/pages/backups/modals/Modals.vue +243 -243
  41. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  42. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  43. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  44. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  45. package/components/common/pages/backups/modals/restore/lib/config/readyToCompleteOptions.ts +84 -84
  46. package/components/common/pages/backups/modals/restore/lib/config/steps.ts +113 -113
  47. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  48. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  49. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  50. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  51. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  52. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  53. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  54. package/components/common/pages/tasks/Tasks.vue +125 -125
  55. package/components/common/pages/tasks/table/Table.vue +373 -373
  56. package/components/common/pages/tasks/table/lib/config/config.ts +279 -279
  57. package/components/common/pages/tasks/table/lib/models/interfaces.ts +9 -9
  58. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  59. package/components/common/select/radio/RadioGroup.vue +137 -137
  60. package/components/common/spiceConsole/Drawer.vue +420 -420
  61. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  62. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  63. package/components/common/tools/Actions.vue +207 -207
  64. package/components/common/treeView/TreeView.vue +52 -52
  65. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  66. package/components/common/vm/actions/clone/new/New.vue +438 -438
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  69. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  70. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  71. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  72. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  73. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  74. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  75. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  76. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  77. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  78. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  79. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  80. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  81. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  82. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  83. package/components/common/wizards/common/steps/name/New.vue +221 -221
  84. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  85. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  86. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  87. package/components/common/wizards/datastore/add/Add.vue +228 -228
  88. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  89. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  90. package/composables/useAppVersion.ts +21 -21
  91. package/composables/useBrowse.ts +24 -24
  92. package/composables/useLocal.ts +6 -6
  93. package/composables/useLocalCommon.ts +39 -39
  94. package/lib/models/types.ts +59 -59
  95. package/package.json +1 -1
  96. package/plugins/console.ts +21 -21
  97. package/plugins/mouse.ts +21 -21
  98. package/plugins/panelStates.ts +70 -70
  99. package/plugins/text.ts +59 -59
  100. package/public/spice-console/application/clientgui.js +854 -854
  101. package/public/spice-console/application/packetfactory.js +211 -211
  102. package/public/spice-console/application/virtualmouse.js +147 -147
  103. package/public/spice-console/lib/images/bitmap.js +203 -203
  104. package/public/spice-console/network/spicechannel.js +440 -440
  105. package/public/spice-console/process/cursorprocess.js +128 -128
  106. package/public/spice-console/process/inputprocess.js +227 -227
  107. package/public/spice-console/process/mainprocess.js +212 -212
  108. package/public/spice-console/run.js +210 -210
  109. package/store/main/mutations.ts +7 -7
  110. package/store/main/state.ts +7 -7
  111. package/store/tasks/mappers/recentTasks.ts +123 -123
  112. package/store/tasks/mutations.ts +82 -82
  113. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +0 -79
  114. /package/components/common/layout/theHeader/{TheHeaderOld.vue → Old.vue} +0 -0
  115. /package/components/common/layout/theHeader/helpMenu/{helpMenuOld → old}/lib/models/types.ts +0 -0
  116. /package/components/common/layout/theHeader/modals/reconnect/{ReconnectNew.vue → New.vue} +0 -0
  117. /package/components/common/layout/theHeader/modals/reconnect/{ReconnectOld.vue → Old.vue} +0 -0
  118. /package/components/common/layout/theHeader/userMenu/{userMenuNew → new}/lib/config/dropMenu.ts +0 -0
  119. /package/components/common/layout/theHeader/userMenu/{userMenuOld → old}/lib/models/types.ts +0 -0
@@ -1,35 +1,35 @@
1
- <template>
2
- <div :class="classes">
3
- <div class="entity-status">
4
- <common-pages-home-card
5
- :title="localization.common.vms"
6
- :count="props.vms.total"
7
- icon-name="vsphere-icon-vm"
8
- >
9
- <common-pages-home-status-content :items="props.vms" />
10
- </common-pages-home-card>
11
- </div>
12
- </div>
13
- </template>
14
-
15
- <script lang="ts" setup>
16
- import type { UI_I_Localization } from '~/lib/models/interfaces'
17
- import type { UI_I_Vms } from '~/components/common/pages/home/lib/models/interfaces'
18
- import type { UI_T_Project } from '~/lib/models/types'
19
- const props = defineProps<{
20
- vms: UI_I_Vms
21
- project?: UI_T_Project
22
- }>()
23
-
24
- const localization = computed<UI_I_Localization>(() => useLocal())
25
-
26
- const classes = computed<string>(() => {
27
- let classes = 'clr-col-md-6 clr-col-sm-12'
28
- if (props.project === 'procurator') {
29
- classes = 'clr-col-md-12 clr-col-sm-12'
30
- }
31
- return classes
32
- })
33
- </script>
34
-
35
- <style lang="scss" scoped></style>
1
+ <template>
2
+ <div :class="classes">
3
+ <div class="entity-status">
4
+ <common-pages-home-card
5
+ :title="localization.common.vms"
6
+ :count="props.vms.total"
7
+ icon-name="vsphere-icon-vm"
8
+ >
9
+ <common-pages-home-status-content :items="props.vms" />
10
+ </common-pages-home-card>
11
+ </div>
12
+ </div>
13
+ </template>
14
+
15
+ <script lang="ts" setup>
16
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
17
+ import type { UI_I_Vms } from '~/components/common/pages/home/lib/models/interfaces'
18
+ import type { UI_T_Project } from '~/lib/models/types'
19
+ const props = defineProps<{
20
+ vms: UI_I_Vms
21
+ project?: UI_T_Project
22
+ }>()
23
+
24
+ const localization = computed<UI_I_Localization>(() => useLocal())
25
+
26
+ const classes = computed<string>(() => {
27
+ let classes = 'clr-col-md-6 clr-col-sm-12'
28
+ if (props.project === 'procurator') {
29
+ classes = 'clr-col-md-12 clr-col-sm-12'
30
+ }
31
+ return classes
32
+ })
33
+ </script>
34
+
35
+ <style lang="scss" scoped></style>
@@ -1,20 +1,20 @@
1
- import type {UI_I_Card, UI_I_Vms} from "~/components/common/pages/home/lib/models/interfaces";
2
-
3
- export const itemsFunc = (vms: UI_I_Vms): UI_I_Card[] => [
4
- {
5
- value: vms.powered_on,
6
- text: 'powered_on',
7
- icon: 'vsphere-icon-vm-on',
8
- },
9
- {
10
- value: vms.powered_off,
11
- text: 'powered_off',
12
- icon: 'icon-vm-power-off',
13
- },
14
-
15
- {
16
- value: vms.suspended,
17
- text: 'suspended',
18
- icon: 'vsphere-icon-vm-suspended',
19
- },
1
+ import type {UI_I_Card, UI_I_Vms} from "~/components/common/pages/home/lib/models/interfaces";
2
+
3
+ export const itemsFunc = (vms: UI_I_Vms): UI_I_Card[] => [
4
+ {
5
+ value: vms.powered_on,
6
+ text: 'powered_on',
7
+ icon: 'vsphere-icon-vm-on',
8
+ },
9
+ {
10
+ value: vms.powered_off,
11
+ text: 'powered_off',
12
+ icon: 'icon-vm-power-off',
13
+ },
14
+
15
+ {
16
+ value: vms.suspended,
17
+ text: 'suspended',
18
+ icon: 'vsphere-icon-vm-suspended',
19
+ },
20
20
  ]
@@ -1,84 +1,84 @@
1
- import type { UI_T_Project } from '~/lib/models/types'
2
- import type {
3
- UI_I_Localization,
4
- UI_I_SendTaskParams,
5
- } from '~/lib/models/interfaces'
6
- import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
7
- import { base64 } from '~/lib/utils/base64'
8
- import type {
9
- UI_I_CreateScheduledTaskArgs,
10
- UI_I_ScheduledTasksTableItem,
11
- } from '~/components/common/pages/scheduledTasks/lib/models/interfaces'
12
- import type { UI_T_ScheduledTasksActionsType } from '~/components/common/pages/scheduledTasks/lib/models/types'
13
-
14
- export const defineScheduleTaskModalTitle = (
15
- type: UI_T_ScheduledTasksActionsType,
16
- isEdit: boolean
17
- ): string => {
18
- const localization: UI_I_Localization = useLocal()
19
- const { scheduleNewTasks, scheduleTaskEdit } = localization.common
20
-
21
- const typeTitleMap: Partial<Record<UI_T_ScheduledTasksActionsType, string>> =
22
- {
23
- 'power-on': localization.common.powerOn,
24
- 'power-off': localization.common.powerOff,
25
- 'shut-down-guest-os': localization.common.shutDownGuestOs,
26
- 'restart-guest-os': localization.common.restartGuestOs,
27
- suspend: localization.common.suspend,
28
- reset: localization.common.reset,
29
- 'take-snapshot': localization.common.takeSnapshot,
30
- }
31
-
32
- const title = typeTitleMap[type]
33
- const modalMode = isEdit ? scheduleTaskEdit : scheduleNewTasks
34
-
35
- return `${modalMode} (${title})`
36
- }
37
- export const scheduledTasks = (
38
- form: UI_I_ScheduleNewTasksForm,
39
- args: UI_I_SendTaskParams,
40
- target: string,
41
- isEdit: boolean,
42
- data: UI_I_ScheduledTasksTableItem,
43
- project: UI_T_Project
44
- ): UI_I_SendTaskParams => {
45
- const methodArgs = {
46
- method: args.method,
47
- params: {
48
- target: args.target,
49
- args: args.args ? base64.encode(args.args) : '',
50
- },
51
- }
52
-
53
- let method = ''
54
- switch (project) {
55
- case 'sphere':
56
- method = isEdit
57
- ? 'VirtualMachines.UpdateScheduledTask'
58
- : 'VirtualMachines.CreateScheduledTask'
59
- break
60
- case 'procurator':
61
- method = isEdit ? 'vm.update_sched_task' : 'vm.create_sched_task'
62
- break
63
- }
64
-
65
- const taskArgs: UI_I_CreateScheduledTaskArgs = {
66
- target,
67
- name: form.task_name,
68
- description: form.description,
69
- toggle: form.toggle,
70
- cron_2: form.cron,
71
- notify_emails: form.ntfn_target,
72
- args: base64.encode(methodArgs),
73
- ...(isEdit && {
74
- rid: data.rid,
75
- last_modified: data.last_modified,
76
- }),
77
- }
78
-
79
- return {
80
- method,
81
- target,
82
- args: taskArgs,
83
- }
84
- }
1
+ import type { UI_T_Project } from '~/lib/models/types'
2
+ import type {
3
+ UI_I_Localization,
4
+ UI_I_SendTaskParams,
5
+ } from '~/lib/models/interfaces'
6
+ import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
7
+ import { base64 } from '~/lib/utils/base64'
8
+ import type {
9
+ UI_I_CreateScheduledTaskArgs,
10
+ UI_I_ScheduledTasksTableItem,
11
+ } from '~/components/common/pages/scheduledTasks/lib/models/interfaces'
12
+ import type { UI_T_ScheduledTasksActionsType } from '~/components/common/pages/scheduledTasks/lib/models/types'
13
+
14
+ export const defineScheduleTaskModalTitle = (
15
+ type: UI_T_ScheduledTasksActionsType,
16
+ isEdit: boolean
17
+ ): string => {
18
+ const localization: UI_I_Localization = useLocal()
19
+ const { scheduleNewTasks, scheduleTaskEdit } = localization.common
20
+
21
+ const typeTitleMap: Partial<Record<UI_T_ScheduledTasksActionsType, string>> =
22
+ {
23
+ 'power-on': localization.common.powerOn,
24
+ 'power-off': localization.common.powerOff,
25
+ 'shut-down-guest-os': localization.common.shutDownGuestOs,
26
+ 'restart-guest-os': localization.common.restartGuestOs,
27
+ suspend: localization.common.suspend,
28
+ reset: localization.common.reset,
29
+ 'take-snapshot': localization.common.takeSnapshot,
30
+ }
31
+
32
+ const title = typeTitleMap[type]
33
+ const modalMode = isEdit ? scheduleTaskEdit : scheduleNewTasks
34
+
35
+ return `${modalMode} (${title})`
36
+ }
37
+ export const scheduledTasks = (
38
+ form: UI_I_ScheduleNewTasksForm,
39
+ args: UI_I_SendTaskParams,
40
+ target: string,
41
+ isEdit: boolean,
42
+ data: UI_I_ScheduledTasksTableItem,
43
+ project: UI_T_Project
44
+ ): UI_I_SendTaskParams => {
45
+ const methodArgs = {
46
+ method: args.method,
47
+ params: {
48
+ target: args.target,
49
+ args: args.args ? base64.encode(args.args) : '',
50
+ },
51
+ }
52
+
53
+ let method = ''
54
+ switch (project) {
55
+ case 'sphere':
56
+ method = isEdit
57
+ ? 'VirtualMachines.UpdateScheduledTask'
58
+ : 'VirtualMachines.CreateScheduledTask'
59
+ break
60
+ case 'procurator':
61
+ method = isEdit ? 'vm.update_sched_task' : 'vm.create_sched_task'
62
+ break
63
+ }
64
+
65
+ const taskArgs: UI_I_CreateScheduledTaskArgs = {
66
+ target,
67
+ name: form.task_name,
68
+ description: form.description,
69
+ toggle: form.toggle,
70
+ cron_2: form.cron,
71
+ notify_emails: form.ntfn_target,
72
+ args: base64.encode(methodArgs),
73
+ ...(isEdit && {
74
+ rid: data.rid,
75
+ last_modified: data.last_modified,
76
+ }),
77
+ }
78
+
79
+ return {
80
+ method,
81
+ target,
82
+ args: taskArgs,
83
+ }
84
+ }
@@ -1,125 +1,125 @@
1
- <template>
2
- <div class="tasks table-container-tasks-table flex flex-col">
3
- <div class="tasks__headline">
4
- {{ localization.mainNavigation.tasks }}
5
- </div>
6
-
7
- <common-pages-tasks-table
8
- :table-data="tasksList?.items || []"
9
- :total-pages="tasksList?.total_pages || 1"
10
- :total-items="tasksList?.total_items || 0"
11
- :loading="isLoading"
12
- :project="props.project"
13
- :config="props.config"
14
- @pagination="onUpdatePagination"
15
- @sort="onSortTable"
16
- @col-search="onColSearching"
17
- />
18
- </div>
19
- </template>
20
-
21
- <script lang="ts" setup>
22
- import { useOnline } from '@vueuse/core'
23
- import type { UI_I_Localization } from '~/lib/models/interfaces'
24
- import type {
25
- UI_I_Pagination,
26
- UI_I_DataTableQuery,
27
- } from '~/lib/models/table/interfaces'
28
- import type { UI_I_Task } from '~/lib/models/store/tasks/interfaces'
29
- import type { UI_T_Project } from '~/lib/models/types'
30
- import type { UI_I_TaskConfig } from '~/components/common/pages/tasks/table/lib/models/interfaces'
31
-
32
- const props = defineProps<{
33
- project: UI_T_Project
34
- config: UI_I_TaskConfig
35
- }>()
36
-
37
- const localization = computed<UI_I_Localization>(() => useLocal())
38
- const { $store }: any = useNuxtApp()
39
-
40
- const pagination = ref<UI_I_Pagination>({
41
- page: 1,
42
- pageSize: 100,
43
- })
44
- const sort = ref<string | null>(null)
45
- const filter = ref<string | null>(null)
46
- const pauseGlobalRefresh = (): void => {
47
- const tasksLastRequestType = $store.getters['tasks/getTasksLastRequestType']
48
- $store.dispatch('main/A_PAUSE_GLOBAL_REFRESH', tasksLastRequestType)
49
- }
50
-
51
- const tasksList = computed<UI_I_Task>(() => $store.getters['tasks/getTaskList'])
52
-
53
- const getTasks = async (): Promise<void> => {
54
- pauseGlobalRefresh()
55
-
56
- const payload: UI_I_DataTableQuery = {
57
- ...pagination.value,
58
- sortBy: sort.value || '',
59
- filter: filter.value || '',
60
- }
61
- await $store.dispatch('tasks/A_GET_TASKS', payload)
62
- }
63
- const onUpdatePagination = (event: UI_I_Pagination): void => {
64
- pagination.value = event
65
- getTasks()
66
- }
67
- const onSortTable = (event: string): void => {
68
- sort.value = event
69
- getTasks()
70
- }
71
- const onColSearching = (value: string): void => {
72
- filter.value = value
73
- getTasks()
74
- }
75
-
76
- const isLoading = computed<boolean>(() =>
77
- $store.getters['tasks/getLoading']('tasks')
78
- )
79
-
80
- const isOnline = useOnline()
81
- watch(isOnline, (newValue: boolean) => {
82
- if (newValue) {
83
- getTasks()
84
- }
85
- })
86
-
87
- onUnmounted(() => {
88
- pauseGlobalRefresh()
89
- })
90
- </script>
91
-
92
- <style lang="scss" scoped>
93
- .tasks {
94
- height: inherit;
95
- background-color: var(--background-color);
96
- padding: 10px 16px 16px;
97
-
98
- &__headline {
99
- font-family: 'Inter', sans-serif;
100
- font-weight: 400;
101
- font-size: 22px;
102
- line-height: 26.63px;
103
- color: var(--title-form-first-color);
104
- margin-bottom: 22px;
105
- }
106
-
107
- //:deep(.data-table-header) {
108
- // z-index: var(--z-sticky) !important; // TODO надо удалить потом (clr style)
109
- //}
110
- }
111
-
112
- :deep(.table-container) {
113
- grid-template-rows: min-content auto min-content;
114
- }
115
-
116
- :deep(.data-table-skeleton) {
117
- height: inherit;
118
- display: flex;
119
- flex-direction: column;
120
-
121
- .footer-row {
122
- margin-top: auto;
123
- }
124
- }
125
- </style>
1
+ <template>
2
+ <div class="tasks table-container-tasks-table flex flex-col">
3
+ <div class="tasks__headline">
4
+ {{ localization.mainNavigation.tasks }}
5
+ </div>
6
+
7
+ <common-pages-tasks-table
8
+ :table-data="tasksList?.items || []"
9
+ :total-pages="tasksList?.total_pages || 1"
10
+ :total-items="tasksList?.total_items || 0"
11
+ :loading="isLoading"
12
+ :project="props.project"
13
+ :config="props.config"
14
+ @pagination="onUpdatePagination"
15
+ @sort="onSortTable"
16
+ @col-search="onColSearching"
17
+ />
18
+ </div>
19
+ </template>
20
+
21
+ <script lang="ts" setup>
22
+ import { useOnline } from '@vueuse/core'
23
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
24
+ import type {
25
+ UI_I_Pagination,
26
+ UI_I_DataTableQuery,
27
+ } from '~/lib/models/table/interfaces'
28
+ import type { UI_I_Task } from '~/lib/models/store/tasks/interfaces'
29
+ import type { UI_T_Project } from '~/lib/models/types'
30
+ import type { UI_I_TaskConfig } from '~/components/common/pages/tasks/table/lib/models/interfaces'
31
+
32
+ const props = defineProps<{
33
+ project: UI_T_Project
34
+ config: UI_I_TaskConfig
35
+ }>()
36
+
37
+ const localization = computed<UI_I_Localization>(() => useLocal())
38
+ const { $store }: any = useNuxtApp()
39
+
40
+ const pagination = ref<UI_I_Pagination>({
41
+ page: 1,
42
+ pageSize: 100,
43
+ })
44
+ const sort = ref<string | null>(null)
45
+ const filter = ref<string | null>(null)
46
+ const pauseGlobalRefresh = (): void => {
47
+ const tasksLastRequestType = $store.getters['tasks/getTasksLastRequestType']
48
+ $store.dispatch('main/A_PAUSE_GLOBAL_REFRESH', tasksLastRequestType)
49
+ }
50
+
51
+ const tasksList = computed<UI_I_Task>(() => $store.getters['tasks/getTaskList'])
52
+
53
+ const getTasks = async (): Promise<void> => {
54
+ pauseGlobalRefresh()
55
+
56
+ const payload: UI_I_DataTableQuery = {
57
+ ...pagination.value,
58
+ sortBy: sort.value || '',
59
+ filter: filter.value || '',
60
+ }
61
+ await $store.dispatch('tasks/A_GET_TASKS', payload)
62
+ }
63
+ const onUpdatePagination = (event: UI_I_Pagination): void => {
64
+ pagination.value = event
65
+ getTasks()
66
+ }
67
+ const onSortTable = (event: string): void => {
68
+ sort.value = event
69
+ getTasks()
70
+ }
71
+ const onColSearching = (value: string): void => {
72
+ filter.value = value
73
+ getTasks()
74
+ }
75
+
76
+ const isLoading = computed<boolean>(() =>
77
+ $store.getters['tasks/getLoading']('tasks')
78
+ )
79
+
80
+ const isOnline = useOnline()
81
+ watch(isOnline, (newValue: boolean) => {
82
+ if (newValue) {
83
+ getTasks()
84
+ }
85
+ })
86
+
87
+ onUnmounted(() => {
88
+ pauseGlobalRefresh()
89
+ })
90
+ </script>
91
+
92
+ <style lang="scss" scoped>
93
+ .tasks {
94
+ height: inherit;
95
+ background-color: var(--background-color);
96
+ padding: 10px 16px 16px;
97
+
98
+ &__headline {
99
+ font-family: 'Inter', sans-serif;
100
+ font-weight: 400;
101
+ font-size: 22px;
102
+ line-height: 26.63px;
103
+ color: var(--title-form-first-color);
104
+ margin-bottom: 22px;
105
+ }
106
+
107
+ //:deep(.data-table-header) {
108
+ // z-index: var(--z-sticky) !important; // TODO надо удалить потом (clr style)
109
+ //}
110
+ }
111
+
112
+ :deep(.table-container) {
113
+ grid-template-rows: min-content auto min-content;
114
+ }
115
+
116
+ :deep(.data-table-skeleton) {
117
+ height: inherit;
118
+ display: flex;
119
+ flex-direction: column;
120
+
121
+ .footer-row {
122
+ margin-top: auto;
123
+ }
124
+ }
125
+ </style>