diff --git a/ui-ngx/src/app/core/services/script/node-script-test.service.ts b/ui-ngx/src/app/core/services/script/node-script-test.service.ts index d6272d58b7..411f5d2216 100644 --- a/ui-ngx/src/app/core/services/script/node-script-test.service.ts +++ b/ui-ngx/src/app/core/services/script/node-script-test.service.ts @@ -23,6 +23,7 @@ import { NodeScriptTestDialogComponent, NodeScriptTestDialogData } from '@shared/components/dialog/node-script-test-dialog.component'; +import { sortObjectKeys } from '@core/utils'; @Injectable({ providedIn: 'root' @@ -75,6 +76,8 @@ export class NodeScriptTestService { deviceName: 'Test Device', ts: new Date().getTime() + '' }; + } else { + metadata = sortObjectKeys(metadata) as {[key: string]: string}; } if (!msgType) { msgType = 'POST_TELEMETRY_REQUEST'; diff --git a/ui-ngx/src/app/core/utils.ts b/ui-ngx/src/app/core/utils.ts index f8ccb6ae61..fff70435bf 100644 --- a/ui-ngx/src/app/core/utils.ts +++ b/ui-ngx/src/app/core/utils.ts @@ -510,3 +510,10 @@ export function padValue(val: any, dec: number): string { strVal = (n ? '-' : '') + strVal; return strVal; } + +export function sortObjectKeys(obj: object): object{ + return Object.keys(obj).sort().reduce((acc,key)=>{ + acc[key]=obj[key]; + return acc; + },{}); +} diff --git a/ui-ngx/src/app/modules/home/components/event/event-table-config.ts b/ui-ngx/src/app/modules/home/components/event/event-table-config.ts index 0d99ed3eb7..f5ce96c2e4 100644 --- a/ui-ngx/src/app/modules/home/components/event/event-table-config.ts +++ b/ui-ngx/src/app/modules/home/components/event/event-table-config.ts @@ -38,6 +38,7 @@ import { EventContentDialogComponent, EventContentDialogData } from '@home/components/event/event-content-dialog.component'; +import { sortObjectKeys } from '@core/utils'; export class EventTableConfig extends EntityTableConfig { @@ -233,11 +234,17 @@ export class EventTableConfig extends EntityTableConfig { if ($event) { $event.stopPropagation(); } + let sortedContent: string; + try { + sortedContent = JSON.stringify(sortObjectKeys(JSON.parse(content))); + } catch() { + sortedContent = content; + } this.dialog.open(EventContentDialogComponent, { disableClose: true, panelClass: ['tb-dialog', 'tb-fullscreen-dialog'], data: { - content, + constent: sortedContent, title, contentType }