From e76a223e8acafc31b2a565a94d5b01bd0494398f Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Tue, 9 Jun 2026 11:56:25 +0800 Subject: [PATCH] fix(redis): allow resizing zset score column --- .../src/components/redis/RedisValueViewer.vue | 65 ++++++++++++++++--- 1 file changed, 57 insertions(+), 8 deletions(-) diff --git a/apps/desktop/src/components/redis/RedisValueViewer.vue b/apps/desktop/src/components/redis/RedisValueViewer.vue index 640811b975..761af0276d 100644 --- a/apps/desktop/src/components/redis/RedisValueViewer.vue +++ b/apps/desktop/src/components/redis/RedisValueViewer.vue @@ -78,6 +78,9 @@ const isResizingMemberSheet = ref(false); const hashTableRef = ref(null); const hashFieldWidth = ref(280); const isResizingHashColumns = ref(false); +const zsetTableRef = ref(null); +const zsetScoreWidth = ref(220); +const isResizingZsetColumns = ref(false); type RedisValueView = "json" | "raw"; const REDIS_JSON_WRAP_STORAGE_KEY = "dbx-redis-json-word-wrap"; const stringValueView = ref("raw"); @@ -97,6 +100,9 @@ const memberRawJsonHtml = computed(() => const hashGridStyle = computed(() => ({ gridTemplateColumns: `${hashFieldWidth.value}px minmax(12rem, 1fr) 84px`, })); +const zsetGridStyle = computed(() => ({ + gridTemplateColumns: `${zsetScoreWidth.value}px minmax(0, 1fr) 84px`, +})); const selectedMemberCanEdit = computed( () => selectedMemberContext.value != null && canEditRedisMemberDetail(selectedMemberContext.value.kind), ); @@ -116,6 +122,8 @@ let memberSheetResizeStartX = 0; let memberSheetResizeStartWidth = 0; let hashResizeStartX = 0; let hashResizeStartWidth = 0; +let zsetResizeStartX = 0; +let zsetResizeStartWidth = 0; type RedisMemberContext = | { kind: "list"; index: number } @@ -491,6 +499,33 @@ function startResizeHashColumns(event: PointerEvent) { window.addEventListener("pointerup", stopResizeHashColumns); } +function clampZsetScoreWidth(width: number) { + const containerWidth = zsetTableRef.value?.clientWidth ?? 900; + const min = 120; + const max = Math.max(min, containerWidth - 220); + return Math.min(max, Math.max(min, width)); +} + +function stopResizeZsetColumns() { + isResizingZsetColumns.value = false; + window.removeEventListener("pointermove", resizeZsetColumns); + window.removeEventListener("pointerup", stopResizeZsetColumns); +} + +function resizeZsetColumns(event: PointerEvent) { + if (!isResizingZsetColumns.value) return; + const delta = event.clientX - zsetResizeStartX; + zsetScoreWidth.value = clampZsetScoreWidth(zsetResizeStartWidth + delta); +} + +function startResizeZsetColumns(event: PointerEvent) { + isResizingZsetColumns.value = true; + zsetResizeStartX = event.clientX; + zsetResizeStartWidth = zsetScoreWidth.value; + window.addEventListener("pointermove", resizeZsetColumns); + window.addEventListener("pointerup", stopResizeZsetColumns); +} + function startEditMember() { memberEditValue.value = selectedMemberDetail.value.text; isEditingMember.value = true; @@ -717,6 +752,7 @@ onMounted(() => { onBeforeUnmount(() => { stopResizeMemberSheet(); stopResizeHashColumns(); + stopResizeZsetColumns(); }); @@ -1090,7 +1126,7 @@ onBeforeUnmount(() => { -
+
{{ collectionCountLabel("members", collectionItems.length, data.total) @@ -1102,9 +1138,15 @@ onBeforeUnmount(() => { >Add
-
-
Score
-
Member
+
+
+ Score +
+
+
Member
{