Skip to content

Commit 1ff27cd

Browse files
committed
feat: 优化即时预览操作前节点的展示
1 parent 4f818e3 commit 1ff27cd

2 files changed

Lines changed: 43 additions & 6 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sub-store-front-end",
3-
"version": "2.26.8",
3+
"version": "2.26.9",
44
"private": true,
55
"packageManager": "pnpm@11.0.9",
66
"scripts": {

src/views/CompareTable.vue

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,11 @@
128128
isProcessedVisible && isOriginalVisible,
129129
}"
130130
>
131-
<template v-for="[processed = {}, original = {}] in data" :key="processed.id">
131+
<template v-for="[processed, original] in data" :key="processed.id">
132132
<tr
133133
v-if="isProcessedVisible"
134134
class="compare-table-row processed-tr"
135+
:class="{ 'processed-tr--unpaired': !hasNodeDisplayInfo(original) }"
135136
@click="openNodeInfoPanel(processed)"
136137
>
137138
<td class="processed-item">
@@ -140,7 +141,7 @@
140141
<nut-tag class="type-tag">{{ processed.type }}</nut-tag
141142
>{{ processed.name }}
142143
</div>
143-
<div>{{ processed.server || processed.addresses?.join(',') }}:{{ processed.port || processed["local-port"] }}</div>
144+
<div v-if="formatNodeEndpoint(processed)">{{ formatNodeEndpoint(processed) }}</div>
144145
</div>
145146
</td>
146147
<td>
@@ -178,7 +179,7 @@
178179
</td>
179180
</tr>
180181
<tr
181-
v-if="isOriginalVisible"
182+
v-if="isOriginalVisible && hasNodeDisplayInfo(original)"
182183
class="compare-table-row original-tr"
183184
@click="openNodeInfoPanel(original)"
184185
>
@@ -187,7 +188,7 @@
187188
<div>
188189
{{ original.name }}
189190
</div>
190-
<div>{{ original.server || original.addresses?.join(',') }}:{{ original.port || original["local-port"] }}</div>
191+
<div v-if="formatNodeEndpoint(original)">{{ formatNodeEndpoint(original) }}</div>
191192
</div>
192193
</td>
193194
<td>
@@ -265,7 +266,7 @@
265266
<nut-tag class="type-tag">{{ node.type }} </nut-tag
266267
>{{ node.name }}
267268
</div>
268-
<div>{{ node.server || node.addresses?.join(',') }}:{{ node.port || node["local-port"] }}</div>
269+
<div v-if="formatNodeEndpoint(node)">{{ formatNodeEndpoint(node) }}</div>
269270
</div>
270271
</td>
271272
<td>
@@ -443,6 +444,37 @@
443444
return result;
444445
});
445446
447+
const normalizeEndpointPart = (value: unknown) => {
448+
if (value == null) {
449+
return '';
450+
}
451+
452+
if (Array.isArray(value)) {
453+
return value
454+
.map(item => normalizeEndpointPart(item))
455+
.filter(Boolean)
456+
.join(',');
457+
}
458+
459+
return String(value).trim();
460+
};
461+
462+
const formatNodeEndpoint = (node: Record<string, any> | null | undefined) => {
463+
const host = normalizeEndpointPart(node?.server)
464+
|| normalizeEndpointPart(node?.addresses);
465+
const port = normalizeEndpointPart(node?.port ?? node?.['local-port']);
466+
467+
if (host && port) {
468+
return `${host}:${port}`;
469+
}
470+
471+
return host || port;
472+
};
473+
474+
const hasNodeDisplayInfo = (node: Record<string, any> | null | undefined) => {
475+
return Boolean(node?.name || node?.type || formatNodeEndpoint(node));
476+
};
477+
446478
// 被过滤掉的节点:original 中未被 processed 匹配到的
447479
const filteredOriginalData = computed(() => {
448480
const original = originalData.value;
@@ -605,6 +637,11 @@
605637
border-bottom: none;
606638
}
607639
640+
.processed-tr--unpaired {
641+
padding-bottom: 20px;
642+
border-bottom: 1px solid var(--divider-color);
643+
}
644+
608645
.original-tr {
609646
padding-top: 10px;
610647
}

0 commit comments

Comments
 (0)