diff --git a/assets/components/LogViewer/LogDetails.vue b/assets/components/LogViewer/LogDetails.vue
index 490b5fc1..25bc3e71 100644
--- a/assets/components/LogViewer/LogDetails.vue
+++ b/assets/components/LogViewer/LogDetails.vue
@@ -48,7 +48,9 @@
| Field |
Value |
- |
+
+
+ |
@@ -85,21 +87,11 @@ function toggleField(key: string[]) {
visibleKeys.value = new Map(fields.value.map(({ key }) => [key, true]));
}
- const enabled = visibleKeys.value.get(key);
+ const enabled = visibleKeys.value.get(key) ?? true;
+
visibleKeys.value.set(key, !enabled);
}
-function toggleAll(e: Event) {
- if (visibleKeys.value.size === 0) {
- visibleKeys.value = new Map(fields.value.map(({ key }) => [key, true]));
- }
-
- const enabled = e.target instanceof HTMLInputElement && e.target.checked;
- for (const key of visibleKeys.value.keys()) {
- visibleKeys.value.set(key, enabled);
- }
-}
-
const fields = computed({
get() {
const fieldsWithValue: { key: string[]; value: any; enabled: boolean }[] = [];
@@ -116,7 +108,7 @@ const fields = computed({
for (const [key, value] of allFields) {
if ([...visibleKeys.value.keys()].findIndex((k) => arrayEquals(k, key)) === -1) {
- fieldsWithValue.push({ key, value, enabled: false });
+ fieldsWithValue.push({ key, value, enabled: true });
}
}
}
@@ -132,6 +124,18 @@ const fields = computed({
},
});
+const toggleAllFields = computed({
+ get: () => fields.value.every(({ enabled }) => enabled),
+ set(value) {
+ if (visibleKeys.value.size === 0) {
+ visibleKeys.value = new Map(fields.value.map(({ key }) => [key, true]));
+ }
+ for (const key of visibleKeys.value.keys()) {
+ visibleKeys.value.set(key, value);
+ }
+ },
+});
+
function syntaxHighlight(json: any) {
json = JSON.stringify(json, null, 2);
return json.replace(
@@ -149,7 +153,7 @@ function syntaxHighlight(json: any) {
} else if (/null/.test(match)) {
cls = "json-null";
}
- return '' + match + "";
+ return `${match}`;
},
);
}
diff --git a/assets/models/LogEntry.ts b/assets/models/LogEntry.ts
index bffd8031..9f6c7e03 100644
--- a/assets/models/LogEntry.ts
+++ b/assets/models/LogEntry.ts
@@ -1,5 +1,5 @@
import { Component, ComputedRef, Ref } from "vue";
-import { flattenJSON, getDeep } from "@/utils";
+import { flattenJSON } from "@/utils";
import ComplexLogItem from "@/components/LogViewer/ComplexLogItem.vue";
import SimpleLogItem from "@/components/LogViewer/SimpleLogItem.vue";
import ContainerEventLogItem from "@/components/LogViewer/ContainerEventLogItem.vue";
@@ -85,10 +85,14 @@ export class ComplexLogEntry extends LogEntry {
if (visibleKeys.value.size === 0) {
return flattenJSON(message);
} else {
- const keys = Array.from(visibleKeys.value.entries())
- .filter(([, value]) => value)
- .map(([key]) => key);
- return keys.reduce((acc, attr) => ({ ...acc, [attr.join(".")]: getDeep(message, attr) }), {});
+ const flatJSON = flattenJSON(message);
+ for (const [keys, enabled] of visibleKeys.value.entries()) {
+ const key = keys.join(".");
+ if (!enabled) {
+ delete flatJSON[key];
+ }
+ }
+ return flatJSON;
}
});
} else {