Skip to content

Commit c1d3131

Browse files
authored
fix: unfound fields are shown by default instead of hidden (#3342)
1 parent 6f7c1d8 commit c1d3131

File tree

2 files changed

+28
-20
lines changed

2 files changed

+28
-20
lines changed

assets/components/LogViewer/LogDetails.vue

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@
4848
<tr>
4949
<th class="w-60">Field</th>
5050
<th class="mobile-hidden">Value</th>
51-
<th class="w-20"><input type="checkbox" class="toggle toggle-primary" @change="toggleAll($event)" /></th>
51+
<th class="w-20">
52+
<input type="checkbox" class="toggle toggle-primary" v-model="toggleAllFields" title="Toggle all" />
53+
</th>
5254
</tr>
5355
</thead>
5456
<tbody ref="list">
@@ -85,19 +87,9 @@ function toggleField(key: string[]) {
8587
visibleKeys.value = new Map<string[], boolean>(fields.value.map(({ key }) => [key, true]));
8688
}
8789
88-
const enabled = visibleKeys.value.get(key);
89-
visibleKeys.value.set(key, !enabled);
90-
}
91-
92-
function toggleAll(e: Event) {
93-
if (visibleKeys.value.size === 0) {
94-
visibleKeys.value = new Map<string[], boolean>(fields.value.map(({ key }) => [key, true]));
95-
}
90+
const enabled = visibleKeys.value.get(key) ?? true;
9691
97-
const enabled = e.target instanceof HTMLInputElement && e.target.checked;
98-
for (const key of visibleKeys.value.keys()) {
99-
visibleKeys.value.set(key, enabled);
100-
}
92+
visibleKeys.value.set(key, !enabled);
10193
}
10294
10395
const fields = computed({
@@ -116,7 +108,7 @@ const fields = computed({
116108
117109
for (const [key, value] of allFields) {
118110
if ([...visibleKeys.value.keys()].findIndex((k) => arrayEquals(k, key)) === -1) {
119-
fieldsWithValue.push({ key, value, enabled: false });
111+
fieldsWithValue.push({ key, value, enabled: true });
120112
}
121113
}
122114
}
@@ -132,6 +124,18 @@ const fields = computed({
132124
},
133125
});
134126
127+
const toggleAllFields = computed({
128+
get: () => fields.value.every(({ enabled }) => enabled),
129+
set(value) {
130+
if (visibleKeys.value.size === 0) {
131+
visibleKeys.value = new Map<string[], boolean>(fields.value.map(({ key }) => [key, true]));
132+
}
133+
for (const key of visibleKeys.value.keys()) {
134+
visibleKeys.value.set(key, value);
135+
}
136+
},
137+
});
138+
135139
function syntaxHighlight(json: any) {
136140
json = JSON.stringify(json, null, 2);
137141
return json.replace(
@@ -149,7 +153,7 @@ function syntaxHighlight(json: any) {
149153
} else if (/null/.test(match)) {
150154
cls = "json-null";
151155
}
152-
return '<span class="' + cls + '">' + match + "</span>";
156+
return `<span class="${cls}">${match}</span>`;
153157
},
154158
);
155159
}

assets/models/LogEntry.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Component, ComputedRef, Ref } from "vue";
2-
import { flattenJSON, getDeep } from "@/utils";
2+
import { flattenJSON } from "@/utils";
33
import ComplexLogItem from "@/components/LogViewer/ComplexLogItem.vue";
44
import SimpleLogItem from "@/components/LogViewer/SimpleLogItem.vue";
55
import ContainerEventLogItem from "@/components/LogViewer/ContainerEventLogItem.vue";
@@ -85,10 +85,14 @@ export class ComplexLogEntry extends LogEntry<JSONObject> {
8585
if (visibleKeys.value.size === 0) {
8686
return flattenJSON(message);
8787
} else {
88-
const keys = Array.from(visibleKeys.value.entries())
89-
.filter(([, value]) => value)
90-
.map(([key]) => key);
91-
return keys.reduce((acc, attr) => ({ ...acc, [attr.join(".")]: getDeep(message, attr) }), {});
88+
const flatJSON = flattenJSON(message);
89+
for (const [keys, enabled] of visibleKeys.value.entries()) {
90+
const key = keys.join(".");
91+
if (!enabled) {
92+
delete flatJSON[key];
93+
}
94+
}
95+
return flatJSON;
9296
}
9397
});
9498
} else {

0 commit comments

Comments
 (0)