Skip to content

Commit 5534c90

Browse files
committed
feat: use polymorphic foreign resources on record_id field to add ability to navigate to changed record from show view
AdminForth/1802/make-record-id-clickable
1 parent a431b65 commit 5534c90

1 file changed

Lines changed: 20 additions & 2 deletions

File tree

index.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import type {
77
import dayjs from 'dayjs'
88
import utc from 'dayjs/plugin/utc.js';
99

10-
import { AdminForthPlugin, AllowedActionsEnum, AdminForthSortDirections, AdminForthDataTypes, HttpExtra, ActionCheckSource, Filters, } from "adminforth";
10+
import { AdminForthPlugin, AllowedActionsEnum, AdminForthSortDirections, AdminForthDataTypes, HttpExtra, ActionCheckSource, Filters, afLogger, } from "adminforth";
1111
import { PluginOptions } from "./types.js";
1212

1313
dayjs.extend(utc);
@@ -222,7 +222,7 @@ export default class AuditLogPlugin extends AdminForthPlugin {
222222
}
223223

224224

225-
modifyResourceConfig(adminforth: IAdminForth, resourceConfig: AdminForthResource) {
225+
modifyResourceConfig(adminforth: IAdminForth, resourceConfig: AdminForthResource) {
226226
super.modifyResourceConfig(adminforth, resourceConfig);
227227
this.adminforth = adminforth;
228228
const auditLogResourceData = this.adminforth.config.resources.find((r) => r.resourceId === resourceConfig.resourceId);
@@ -332,5 +332,23 @@ modifyResourceConfig(adminforth: IAdminForth, resourceConfig: AdminForthResource
332332

333333
})
334334
columnToModify.enum = existingResources;
335+
336+
const recordIdColumn = resourceConfig.columns.find((c) => c.name === this.options.resourceColumns.resourceRecordIdColumnName);
337+
if (!recordIdColumn.foreignResource) {
338+
for (const resource of existingResources) {
339+
if(!recordIdColumn.foreignResource?.polymorphicResources) {
340+
recordIdColumn.foreignResource = {
341+
polymorphicResources: [],
342+
polymorphicOn: this.options.resourceColumns.resourceIdColumnName
343+
};
344+
}
345+
recordIdColumn.foreignResource.polymorphicResources.push({
346+
resourceId: resource.value,
347+
whenValue: resource.value
348+
});
349+
}
350+
} else {
351+
afLogger.warn(`AuditLogPlugin: Record Id column already has foreignResource. We recomend to remove it, so we can setup it to connect audit log resource with logged resource.`);
352+
}
335353
}
336354
}

0 commit comments

Comments
 (0)