From 00243b0e5ef2cb20bbbaa74a778b58c8b81d9686 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Mon, 13 Jul 2026 02:48:08 +0100 Subject: [PATCH] Enhance ObjectProperty and OperationDisplay components to support dynamic type resolution and add subscription/unsubscription operations with corresponding icons. Update AuditLog model to handle new operation types and provide descriptive values for user actions. --- .../Dashboard/common/ObjectProperty.jsx | 4 ++++ .../Dashboard/common/OperationDisplay.jsx | 11 +++++++++++ src/database/models/AuditLog.js | 17 ++++++++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/components/Dashboard/common/ObjectProperty.jsx b/src/components/Dashboard/common/ObjectProperty.jsx index d531581..7d5cc5e 100644 --- a/src/components/Dashboard/common/ObjectProperty.jsx +++ b/src/components/Dashboard/common/ObjectProperty.jsx @@ -148,6 +148,10 @@ const ObjectProperty = ({ readOnly = readOnly(objectData, parentData) } + if (type && typeof type == 'function' && objectData) { + type = type(objectData, parentData) + } + if (!value) { value = getPropertyValue(objectData, name) } diff --git a/src/components/Dashboard/common/OperationDisplay.jsx b/src/components/Dashboard/common/OperationDisplay.jsx index 02aa6fb..85a02bf 100644 --- a/src/components/Dashboard/common/OperationDisplay.jsx +++ b/src/components/Dashboard/common/OperationDisplay.jsx @@ -4,6 +4,7 @@ import QuestionCircleIcon from '../../Icons/QuestionCircleIcon' import PlusIcon from '../../Icons/PlusIcon' import BinIcon from '../../Icons/BinIcon' import EditIcon from '../../Icons/EditIcon' +import BellIcon from '../../Icons/BellIcon' const OperationDisplay = ({ operation, @@ -30,6 +31,16 @@ const OperationDisplay = ({ tagIcon = tagColor = 'blue' break + case 'subscribe': + tagText = 'Subscribe' + tagIcon = + tagColor = 'orange' + break + case 'unsubscribe': + tagText = 'Unsubscribe' + tagIcon = + tagColor = 'orange' + break default: break } diff --git a/src/database/models/AuditLog.js b/src/database/models/AuditLog.js index 639c99b..11b2bac 100644 --- a/src/database/models/AuditLog.js +++ b/src/database/models/AuditLog.js @@ -90,10 +90,25 @@ export const AuditLog = { name: 'changes', label: 'Changes', columnWidth: 500, - type: 'propertyChanges', + type: (objectData) => { + return objectData.operation === 'subscribe' || + objectData.operation === 'unsubscribe' + ? 'text' + : 'propertyChanges' + }, objectType: (objectData) => { return objectData.parentType }, + value: (objectData) => { + if (objectData.operation === 'subscribe') { + return 'User subscribed to object.' + } + if (objectData.operation === 'unsubscribe') { + return 'User unsubscribed from object.' + } + + return objectData.changes + }, showCopy: true } ]