bfg-common 1.3.613 → 1.3.615
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/localization/local_be.json +1 -0
- package/assets/localization/local_en.json +1 -0
- package/assets/localization/local_hy.json +1 -0
- package/assets/localization/local_kk.json +1 -0
- package/assets/localization/local_ru.json +5 -4
- package/assets/localization/local_zh.json +1 -0
- package/components/common/browse/Browse.vue +240 -240
- package/components/common/browse/blocks/Title.vue +91 -91
- package/components/common/browse/blocks/info/Date.vue +21 -21
- package/components/common/context/recursion/Recursion.vue +86 -86
- package/components/common/context/recursion/RecursionNew.vue +198 -198
- package/components/common/context/recursion/RecursionOld.vue +212 -212
- package/components/common/home/alertsTable/AlertsTable.vue +114 -114
- package/components/common/split/horizontal/HorizontalNew.vue +321 -321
- package/components/common/wizards/datastore/add/Add.vue +437 -437
- package/package.json +1 -1
- package/plugins/recursion.ts +293 -293
- package/store/tasks/mappers/recentTasks.ts +45 -45
|
@@ -1229,6 +1229,7 @@
|
|
|
1229
1229
|
"override": "Пераазначэнне",
|
|
1230
1230
|
"overrideDefaultGatewayForThisAdapter": "Перавызначыць шлюз па змаўчанні для гэтага адаптара",
|
|
1231
1231
|
"overview": "Агляд",
|
|
1232
|
+
"overview2": "Агляд",
|
|
1232
1233
|
"owner": "Уладальнік",
|
|
1233
1234
|
"packages": "Пакеты",
|
|
1234
1235
|
"paravirtual": "Паравіртуальныя",
|
|
@@ -1229,6 +1229,7 @@
|
|
|
1229
1229
|
"override": "Override",
|
|
1230
1230
|
"overrideDefaultGatewayForThisAdapter": "Override default gateway for this adapter",
|
|
1231
1231
|
"overview": "Overview",
|
|
1232
|
+
"overview2": "Overview",
|
|
1232
1233
|
"owner": "Owner",
|
|
1233
1234
|
"packages": "Packages",
|
|
1234
1235
|
"paravirtual": "Paravirtual",
|
|
@@ -1229,6 +1229,7 @@
|
|
|
1229
1229
|
"override": "Վերանշանակում",
|
|
1230
1230
|
"overrideDefaultGatewayForThisAdapter": "Անտեսեք այս ադապտերի լռելյայն դարպասը",
|
|
1231
1231
|
"overview": "Ակնարկ",
|
|
1232
|
+
"overview2": "Ակնարկ",
|
|
1232
1233
|
"owner": "Սեփականատեր",
|
|
1233
1234
|
"packages": "Փաթեթներ",
|
|
1234
1235
|
"paravirtual": "Պարավիրտուալ",
|
|
@@ -1229,6 +1229,7 @@
|
|
|
1229
1229
|
"override": "Қайта анықтау",
|
|
1230
1230
|
"overrideDefaultGatewayForThisAdapter": "Осы адаптердің әдепкі шлюзін қайта анықтаңыз",
|
|
1231
1231
|
"overview": "Шолу",
|
|
1232
|
+
"overview2": "Шолу",
|
|
1232
1233
|
"owner": "Меншік иесі",
|
|
1233
1234
|
"packages": "Пакеттер",
|
|
1234
1235
|
"paravirtual": "паравиртуалды",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"home": "Главная",
|
|
79
79
|
"shortcuts": "Ярлыки",
|
|
80
80
|
"inventory": "Инвентарь",
|
|
81
|
-
"contentLibraries": "
|
|
81
|
+
"contentLibraries": "Библиотеки контента",
|
|
82
82
|
"globalInventoryLists": "Глобальные инвентарные списки",
|
|
83
83
|
"policiesProfiles": "Политики и профили",
|
|
84
84
|
"autoDeploy": "Автоматическое развертывание",
|
|
@@ -333,7 +333,7 @@
|
|
|
333
333
|
"changeBothComputeResourceStorage": "Изменить как вычислительный ресурс, так и хранилище",
|
|
334
334
|
"changeComputeResourceOnly": "Изменить только вычислительный ресурс",
|
|
335
335
|
"changeCustomInterval": "Измените пользовательский интервал",
|
|
336
|
-
"changeIdentityProvider": "Изменить
|
|
336
|
+
"changeIdentityProvider": "Изменить провайдера идентификации",
|
|
337
337
|
"changePassword": "Изменить пароль",
|
|
338
338
|
"changePasswordError": "Неверный пароль!",
|
|
339
339
|
"changeProviderTooltipContent": "Сервер Sphere Zone поддерживает внешних поставщиков удостоверений для управления вашими пользователями и группами. Вы можете перейти от использования встроенного поставщика удостоверений Sphere Zone к внешнему поставщику удостоверений. Дополнительные сведения см. в документации vSphere.",
|
|
@@ -965,7 +965,7 @@
|
|
|
965
965
|
"localAccount": "Локальные учетные записи",
|
|
966
966
|
"localContentLibrary": "Библиотека локального контента",
|
|
967
967
|
"localDesc": "Создать локальное хранилище в файловой системе хоста",
|
|
968
|
-
"localLibrariesCanBePublishedDesc": "
|
|
968
|
+
"localLibrariesCanBePublishedDesc": "Возможно создание локальной библиотеки, при необходимости можно поделиться ею. Доступно так же подписка на библиотеку, опубликованную другим сервером, для получения контента.",
|
|
969
969
|
"localVmfs": "Локальный (ВМФС)",
|
|
970
970
|
"lockdownMode": "Режим изоляции",
|
|
971
971
|
"lockdownNormal": "Хост доступен только через локальную консоль или сервер {productName}",
|
|
@@ -1231,6 +1231,7 @@
|
|
|
1231
1231
|
"override": "Переопределение",
|
|
1232
1232
|
"overrideDefaultGatewayForThisAdapter": "Переопределить шлюз по умолчанию для этого адаптера",
|
|
1233
1233
|
"overview": "Обзор",
|
|
1234
|
+
"overview2": "Общий обзор",
|
|
1234
1235
|
"owner": "Владелец",
|
|
1235
1236
|
"packages": "Пакеты",
|
|
1236
1237
|
"paravirtual": "Паравиртуальный",
|
|
@@ -1417,7 +1418,7 @@
|
|
|
1417
1418
|
"revertLatestSnapshot": "Вернуться к последнему снимку",
|
|
1418
1419
|
"revertSelectedSnapshotDescription": "Текущее состояние этой виртуальной машины будет потеряно, если оно не будет сохранено в моментальном снимке. Вы уверены, что хотите вернуть текущее состояние виртуальной машины к моментальному снимку '{0}'?",
|
|
1419
1420
|
"revertToSelectedSnapshot": "Вернуться к выбранному снимку",
|
|
1420
|
-
"review": "
|
|
1421
|
+
"review": "Обзор",
|
|
1421
1422
|
"reviewDetails": "Просмотрите сведения перед созданием кластера",
|
|
1422
1423
|
"reviewFinish": "Обзор и завершение",
|
|
1423
1424
|
"reviewYourSettingsSelectionsWizard": "Просмотрите выбранные параметры перед завершением работы мастера.",
|
|
@@ -1,240 +1,240 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<atoms-modal
|
|
3
|
-
test-id="browse"
|
|
4
|
-
width="864px"
|
|
5
|
-
height="586px"
|
|
6
|
-
:show="props.show"
|
|
7
|
-
:title="localization.selectFile"
|
|
8
|
-
:disabled-submit="!props.selectedFile"
|
|
9
|
-
>
|
|
10
|
-
<template #modalBody>
|
|
11
|
-
<div class="filter-content">
|
|
12
|
-
<atoms-the-icon
|
|
13
|
-
width="16"
|
|
14
|
-
class="filter-icon"
|
|
15
|
-
name="filter"
|
|
16
|
-
fill="#666"
|
|
17
|
-
/>
|
|
18
|
-
<input
|
|
19
|
-
type="text"
|
|
20
|
-
data-id="browse-filter-input"
|
|
21
|
-
:placeholder="localization.filter"
|
|
22
|
-
/>
|
|
23
|
-
</div>
|
|
24
|
-
<common-browse-blocks-container
|
|
25
|
-
type="horizontal"
|
|
26
|
-
:blocks-width="blocksWidth"
|
|
27
|
-
@change-widths="onChangeWidths"
|
|
28
|
-
>
|
|
29
|
-
<template #firstBlock>
|
|
30
|
-
<common-browse-blocks-title
|
|
31
|
-
:width="blocksWidth[0]"
|
|
32
|
-
:title="localization.common.datastores"
|
|
33
|
-
:sorting="firstBlockSorting"
|
|
34
|
-
@sort="onSortFirstBlock"
|
|
35
|
-
>
|
|
36
|
-
<template #content>
|
|
37
|
-
<div class="">
|
|
38
|
-
<common-recursion-tree
|
|
39
|
-
:nodes="nodesLocal"
|
|
40
|
-
class="recursion-tree"
|
|
41
|
-
@get-nodes="onShowNodes"
|
|
42
|
-
@select-node="onSelectNode"
|
|
43
|
-
/>
|
|
44
|
-
</div>
|
|
45
|
-
</template>
|
|
46
|
-
</common-browse-blocks-title>
|
|
47
|
-
</template>
|
|
48
|
-
<template #secondBlock>
|
|
49
|
-
<common-browse-blocks-title
|
|
50
|
-
:width="blocksWidth[1]"
|
|
51
|
-
:title="localization.contents"
|
|
52
|
-
:sorting="secondBlockSorting"
|
|
53
|
-
@sort="onSortSecondBlock"
|
|
54
|
-
>
|
|
55
|
-
<template #content>
|
|
56
|
-
<common-browse-blocks-contents-files
|
|
57
|
-
:selected-folder-files="filesLocal"
|
|
58
|
-
:selected-file="props.selectedFile"
|
|
59
|
-
@select-file="onSelectFile"
|
|
60
|
-
/>
|
|
61
|
-
</template>
|
|
62
|
-
</common-browse-blocks-title>
|
|
63
|
-
</template>
|
|
64
|
-
<template #thirdBlock>
|
|
65
|
-
<common-browse-blocks-title
|
|
66
|
-
:width="blocksWidth[2]"
|
|
67
|
-
:title="localization.information"
|
|
68
|
-
>
|
|
69
|
-
<template v-if="info" #content>
|
|
70
|
-
<div
|
|
71
|
-
v-for="item in info"
|
|
72
|
-
:key="item.title"
|
|
73
|
-
class="info-container"
|
|
74
|
-
>
|
|
75
|
-
<common-browse-blocks-info-text
|
|
76
|
-
v-if="item.type === 'text'"
|
|
77
|
-
:title="item.title"
|
|
78
|
-
:value="item.value"
|
|
79
|
-
/>
|
|
80
|
-
<common-browse-blocks-info-size
|
|
81
|
-
v-if="item.type === 'size'"
|
|
82
|
-
:title="item.title"
|
|
83
|
-
:value="item.value"
|
|
84
|
-
/>
|
|
85
|
-
<common-browse-blocks-info-date
|
|
86
|
-
v-if="item.type === 'date'"
|
|
87
|
-
:title="item.title"
|
|
88
|
-
:value="item.value"
|
|
89
|
-
/>
|
|
90
|
-
</div>
|
|
91
|
-
</template>
|
|
92
|
-
</common-browse-blocks-title>
|
|
93
|
-
</template>
|
|
94
|
-
</common-browse-blocks-container>
|
|
95
|
-
<div v-if="props.fileTypes" class="ptm">
|
|
96
|
-
<b>{{ localization.fileType }}:</b>
|
|
97
|
-
<select
|
|
98
|
-
v-model="selectedFileTypeLocal"
|
|
99
|
-
:data-id="`${props.testId}-select`"
|
|
100
|
-
>
|
|
101
|
-
<option
|
|
102
|
-
v-for="item in props.fileTypes"
|
|
103
|
-
:key="item.value"
|
|
104
|
-
:value="item.value"
|
|
105
|
-
>
|
|
106
|
-
{{ item.text }}
|
|
107
|
-
</option>
|
|
108
|
-
</select>
|
|
109
|
-
</div>
|
|
110
|
-
</template>
|
|
111
|
-
</atoms-modal>
|
|
112
|
-
</template>
|
|
113
|
-
|
|
114
|
-
<script setup lang="ts">
|
|
115
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
116
|
-
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
117
|
-
import type { UI_T_BlocksWidth } from '~/components/common/browse/blocks/lib/models/types'
|
|
118
|
-
import type { UI_I_FileInfo } from '~/components/common/browse/lib/models/interfaces'
|
|
119
|
-
|
|
120
|
-
const props = defineProps<{
|
|
121
|
-
show: boolean
|
|
122
|
-
nodes: any[]
|
|
123
|
-
files: any[]
|
|
124
|
-
info: UI_I_FileInfo[] | null
|
|
125
|
-
selectedFile: any | null
|
|
126
|
-
fileTypes?: UI_I_OptionItem[]
|
|
127
|
-
selectedFileType?: any
|
|
128
|
-
testId?: string
|
|
129
|
-
}>()
|
|
130
|
-
const emits = defineEmits<{
|
|
131
|
-
(
|
|
132
|
-
event: 'get-nodes',
|
|
133
|
-
value: {
|
|
134
|
-
node: any | null
|
|
135
|
-
cb: () => void
|
|
136
|
-
}
|
|
137
|
-
): void
|
|
138
|
-
(event: 'select-node', value: any): void
|
|
139
|
-
(event: 'update:selected-file', value: any): void
|
|
140
|
-
(event: 'update:selected-file-type', value: any): void
|
|
141
|
-
}>()
|
|
142
|
-
|
|
143
|
-
const { $recursion }: any = useNuxtApp()
|
|
144
|
-
|
|
145
|
-
const nodesLocal = computed<any[]>(() => {
|
|
146
|
-
if (!firstBlockSorting.value[0]) return props.nodes
|
|
147
|
-
|
|
148
|
-
const nodesCopy = useDeepCopy(props.nodes)
|
|
149
|
-
$recursion.sortByProp(nodesCopy, 'name', firstBlockSorting.value[1], 'nodes')
|
|
150
|
-
|
|
151
|
-
return nodesCopy
|
|
152
|
-
})
|
|
153
|
-
const filesLocal = computed<any[]>(() => {
|
|
154
|
-
if (!secondBlockSorting.value[0]) return props.files
|
|
155
|
-
|
|
156
|
-
const value = secondBlockSorting.value[1] ? 1 : -1
|
|
157
|
-
return [...props.files].sort((a, b) => {
|
|
158
|
-
const first = a.name.toLowerCase()
|
|
159
|
-
const second = b.name.toLowerCase()
|
|
160
|
-
return first > second ? value : first < second ? -value : 0
|
|
161
|
-
})
|
|
162
|
-
})
|
|
163
|
-
|
|
164
|
-
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
165
|
-
|
|
166
|
-
const blocksWidth = ref<UI_T_BlocksWidth>([272, 272, 256])
|
|
167
|
-
|
|
168
|
-
const onChangeWidths = (width: number, index: number): void => {
|
|
169
|
-
blocksWidth.value[index] = width
|
|
170
|
-
}
|
|
171
|
-
const onSelectFile = (file: any): void => {
|
|
172
|
-
emits('update:selected-file', file)
|
|
173
|
-
}
|
|
174
|
-
const onSelectNode = (node: any): void => {
|
|
175
|
-
emits('select-node', node)
|
|
176
|
-
}
|
|
177
|
-
const onShowNodes = (data: { node: any | null; cb: () => void }): void => {
|
|
178
|
-
emits('get-nodes', data)
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
const selectedFileTypeLocal = computed<any>({
|
|
182
|
-
get() {
|
|
183
|
-
return props.selectedFileType
|
|
184
|
-
},
|
|
185
|
-
set(newValue) {
|
|
186
|
-
emits('update:selected-file-type', newValue)
|
|
187
|
-
},
|
|
188
|
-
})
|
|
189
|
-
|
|
190
|
-
const firstBlockSorting = ref<[boolean, boolean]>([false, false])
|
|
191
|
-
const secondBlockSorting = ref<[boolean, boolean]>([false, false])
|
|
192
|
-
|
|
193
|
-
const onSortFirstBlock = (): void => {
|
|
194
|
-
firstBlockSorting.value = [true, !firstBlockSorting.value[1]]
|
|
195
|
-
}
|
|
196
|
-
const onSortSecondBlock = (): void => {
|
|
197
|
-
secondBlockSorting.value = [true, !secondBlockSorting.value[1]]
|
|
198
|
-
}
|
|
199
|
-
</script>
|
|
200
|
-
|
|
201
|
-
<style scoped lang="scss">
|
|
202
|
-
:deep(.recursion-tree) {
|
|
203
|
-
.tree-node-text-drag {
|
|
204
|
-
border-radius: 3px 0 0 3px;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
:deep(.modal-body) {
|
|
209
|
-
overflow: hidden;
|
|
210
|
-
min-height: 430px;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
.info-container {
|
|
214
|
-
padding: 3px;
|
|
215
|
-
div {
|
|
216
|
-
line-height: 17px;
|
|
217
|
-
span {
|
|
218
|
-
font-size: 13px;
|
|
219
|
-
font-weight: 400;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
.ptm {
|
|
225
|
-
padding-top: 5px;
|
|
226
|
-
|
|
227
|
-
select {
|
|
228
|
-
outline: none;
|
|
229
|
-
border-color: rgb(118, 118, 118);
|
|
230
|
-
color: rgb(133, 133, 133);
|
|
231
|
-
margin-left: 5px;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
.filter-content {
|
|
236
|
-
display: flex;
|
|
237
|
-
justify-content: flex-end;
|
|
238
|
-
margin-bottom: 6px;
|
|
239
|
-
}
|
|
240
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<atoms-modal
|
|
3
|
+
test-id="browse"
|
|
4
|
+
width="864px"
|
|
5
|
+
height="586px"
|
|
6
|
+
:show="props.show"
|
|
7
|
+
:title="localization.selectFile"
|
|
8
|
+
:disabled-submit="!props.selectedFile"
|
|
9
|
+
>
|
|
10
|
+
<template #modalBody>
|
|
11
|
+
<div class="filter-content">
|
|
12
|
+
<atoms-the-icon
|
|
13
|
+
width="16"
|
|
14
|
+
class="filter-icon"
|
|
15
|
+
name="filter"
|
|
16
|
+
fill="#666"
|
|
17
|
+
/>
|
|
18
|
+
<input
|
|
19
|
+
type="text"
|
|
20
|
+
data-id="browse-filter-input"
|
|
21
|
+
:placeholder="localization.filter"
|
|
22
|
+
/>
|
|
23
|
+
</div>
|
|
24
|
+
<common-browse-blocks-container
|
|
25
|
+
type="horizontal"
|
|
26
|
+
:blocks-width="blocksWidth"
|
|
27
|
+
@change-widths="onChangeWidths"
|
|
28
|
+
>
|
|
29
|
+
<template #firstBlock>
|
|
30
|
+
<common-browse-blocks-title
|
|
31
|
+
:width="blocksWidth[0]"
|
|
32
|
+
:title="localization.common.datastores"
|
|
33
|
+
:sorting="firstBlockSorting"
|
|
34
|
+
@sort="onSortFirstBlock"
|
|
35
|
+
>
|
|
36
|
+
<template #content>
|
|
37
|
+
<div class="">
|
|
38
|
+
<common-recursion-tree
|
|
39
|
+
:nodes="nodesLocal"
|
|
40
|
+
class="recursion-tree"
|
|
41
|
+
@get-nodes="onShowNodes"
|
|
42
|
+
@select-node="onSelectNode"
|
|
43
|
+
/>
|
|
44
|
+
</div>
|
|
45
|
+
</template>
|
|
46
|
+
</common-browse-blocks-title>
|
|
47
|
+
</template>
|
|
48
|
+
<template #secondBlock>
|
|
49
|
+
<common-browse-blocks-title
|
|
50
|
+
:width="blocksWidth[1]"
|
|
51
|
+
:title="localization.contents"
|
|
52
|
+
:sorting="secondBlockSorting"
|
|
53
|
+
@sort="onSortSecondBlock"
|
|
54
|
+
>
|
|
55
|
+
<template #content>
|
|
56
|
+
<common-browse-blocks-contents-files
|
|
57
|
+
:selected-folder-files="filesLocal"
|
|
58
|
+
:selected-file="props.selectedFile"
|
|
59
|
+
@select-file="onSelectFile"
|
|
60
|
+
/>
|
|
61
|
+
</template>
|
|
62
|
+
</common-browse-blocks-title>
|
|
63
|
+
</template>
|
|
64
|
+
<template #thirdBlock>
|
|
65
|
+
<common-browse-blocks-title
|
|
66
|
+
:width="blocksWidth[2]"
|
|
67
|
+
:title="localization.information"
|
|
68
|
+
>
|
|
69
|
+
<template v-if="info" #content>
|
|
70
|
+
<div
|
|
71
|
+
v-for="item in info"
|
|
72
|
+
:key="item.title"
|
|
73
|
+
class="info-container"
|
|
74
|
+
>
|
|
75
|
+
<common-browse-blocks-info-text
|
|
76
|
+
v-if="item.type === 'text'"
|
|
77
|
+
:title="item.title"
|
|
78
|
+
:value="item.value"
|
|
79
|
+
/>
|
|
80
|
+
<common-browse-blocks-info-size
|
|
81
|
+
v-if="item.type === 'size'"
|
|
82
|
+
:title="item.title"
|
|
83
|
+
:value="item.value"
|
|
84
|
+
/>
|
|
85
|
+
<common-browse-blocks-info-date
|
|
86
|
+
v-if="item.type === 'date'"
|
|
87
|
+
:title="item.title"
|
|
88
|
+
:value="item.value"
|
|
89
|
+
/>
|
|
90
|
+
</div>
|
|
91
|
+
</template>
|
|
92
|
+
</common-browse-blocks-title>
|
|
93
|
+
</template>
|
|
94
|
+
</common-browse-blocks-container>
|
|
95
|
+
<div v-if="props.fileTypes" class="ptm">
|
|
96
|
+
<b>{{ localization.fileType }}:</b>
|
|
97
|
+
<select
|
|
98
|
+
v-model="selectedFileTypeLocal"
|
|
99
|
+
:data-id="`${props.testId}-select`"
|
|
100
|
+
>
|
|
101
|
+
<option
|
|
102
|
+
v-for="item in props.fileTypes"
|
|
103
|
+
:key="item.value"
|
|
104
|
+
:value="item.value"
|
|
105
|
+
>
|
|
106
|
+
{{ item.text }}
|
|
107
|
+
</option>
|
|
108
|
+
</select>
|
|
109
|
+
</div>
|
|
110
|
+
</template>
|
|
111
|
+
</atoms-modal>
|
|
112
|
+
</template>
|
|
113
|
+
|
|
114
|
+
<script setup lang="ts">
|
|
115
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
116
|
+
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
117
|
+
import type { UI_T_BlocksWidth } from '~/components/common/browse/blocks/lib/models/types'
|
|
118
|
+
import type { UI_I_FileInfo } from '~/components/common/browse/lib/models/interfaces'
|
|
119
|
+
|
|
120
|
+
const props = defineProps<{
|
|
121
|
+
show: boolean
|
|
122
|
+
nodes: any[]
|
|
123
|
+
files: any[]
|
|
124
|
+
info: UI_I_FileInfo[] | null
|
|
125
|
+
selectedFile: any | null
|
|
126
|
+
fileTypes?: UI_I_OptionItem[]
|
|
127
|
+
selectedFileType?: any
|
|
128
|
+
testId?: string
|
|
129
|
+
}>()
|
|
130
|
+
const emits = defineEmits<{
|
|
131
|
+
(
|
|
132
|
+
event: 'get-nodes',
|
|
133
|
+
value: {
|
|
134
|
+
node: any | null
|
|
135
|
+
cb: () => void
|
|
136
|
+
}
|
|
137
|
+
): void
|
|
138
|
+
(event: 'select-node', value: any): void
|
|
139
|
+
(event: 'update:selected-file', value: any): void
|
|
140
|
+
(event: 'update:selected-file-type', value: any): void
|
|
141
|
+
}>()
|
|
142
|
+
|
|
143
|
+
const { $recursion }: any = useNuxtApp()
|
|
144
|
+
|
|
145
|
+
const nodesLocal = computed<any[]>(() => {
|
|
146
|
+
if (!firstBlockSorting.value[0]) return props.nodes
|
|
147
|
+
|
|
148
|
+
const nodesCopy = useDeepCopy(props.nodes)
|
|
149
|
+
$recursion.sortByProp(nodesCopy, 'name', firstBlockSorting.value[1], 'nodes')
|
|
150
|
+
|
|
151
|
+
return nodesCopy
|
|
152
|
+
})
|
|
153
|
+
const filesLocal = computed<any[]>(() => {
|
|
154
|
+
if (!secondBlockSorting.value[0]) return props.files
|
|
155
|
+
|
|
156
|
+
const value = secondBlockSorting.value[1] ? 1 : -1
|
|
157
|
+
return [...props.files].sort((a, b) => {
|
|
158
|
+
const first = a.name.toLowerCase()
|
|
159
|
+
const second = b.name.toLowerCase()
|
|
160
|
+
return first > second ? value : first < second ? -value : 0
|
|
161
|
+
})
|
|
162
|
+
})
|
|
163
|
+
|
|
164
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
165
|
+
|
|
166
|
+
const blocksWidth = ref<UI_T_BlocksWidth>([272, 272, 256])
|
|
167
|
+
|
|
168
|
+
const onChangeWidths = (width: number, index: number): void => {
|
|
169
|
+
blocksWidth.value[index] = width
|
|
170
|
+
}
|
|
171
|
+
const onSelectFile = (file: any): void => {
|
|
172
|
+
emits('update:selected-file', file)
|
|
173
|
+
}
|
|
174
|
+
const onSelectNode = (node: any): void => {
|
|
175
|
+
emits('select-node', node)
|
|
176
|
+
}
|
|
177
|
+
const onShowNodes = (data: { node: any | null; cb: () => void }): void => {
|
|
178
|
+
emits('get-nodes', data)
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const selectedFileTypeLocal = computed<any>({
|
|
182
|
+
get() {
|
|
183
|
+
return props.selectedFileType
|
|
184
|
+
},
|
|
185
|
+
set(newValue) {
|
|
186
|
+
emits('update:selected-file-type', newValue)
|
|
187
|
+
},
|
|
188
|
+
})
|
|
189
|
+
|
|
190
|
+
const firstBlockSorting = ref<[boolean, boolean]>([false, false])
|
|
191
|
+
const secondBlockSorting = ref<[boolean, boolean]>([false, false])
|
|
192
|
+
|
|
193
|
+
const onSortFirstBlock = (): void => {
|
|
194
|
+
firstBlockSorting.value = [true, !firstBlockSorting.value[1]]
|
|
195
|
+
}
|
|
196
|
+
const onSortSecondBlock = (): void => {
|
|
197
|
+
secondBlockSorting.value = [true, !secondBlockSorting.value[1]]
|
|
198
|
+
}
|
|
199
|
+
</script>
|
|
200
|
+
|
|
201
|
+
<style scoped lang="scss">
|
|
202
|
+
:deep(.recursion-tree) {
|
|
203
|
+
.tree-node-text-drag {
|
|
204
|
+
border-radius: 3px 0 0 3px;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
:deep(.modal-body) {
|
|
209
|
+
overflow: hidden;
|
|
210
|
+
min-height: 430px;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.info-container {
|
|
214
|
+
padding: 3px;
|
|
215
|
+
div {
|
|
216
|
+
line-height: 17px;
|
|
217
|
+
span {
|
|
218
|
+
font-size: 13px;
|
|
219
|
+
font-weight: 400;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.ptm {
|
|
225
|
+
padding-top: 5px;
|
|
226
|
+
|
|
227
|
+
select {
|
|
228
|
+
outline: none;
|
|
229
|
+
border-color: rgb(118, 118, 118);
|
|
230
|
+
color: rgb(133, 133, 133);
|
|
231
|
+
margin-left: 5px;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.filter-content {
|
|
236
|
+
display: flex;
|
|
237
|
+
justify-content: flex-end;
|
|
238
|
+
margin-bottom: 6px;
|
|
239
|
+
}
|
|
240
|
+
</style>
|