Commit 5833ac3521a0b01bfdbb9ce1fc9f850be056411f
Committed by
GitHub
Merge pull request #3281 from vvlladd28/improvement/sort-meta-key
Add sort metadata key for rule chain
Showing
3 changed files
with
19 additions
and
3 deletions
@@ -23,6 +23,7 @@ import { | @@ -23,6 +23,7 @@ import { | ||
23 | NodeScriptTestDialogComponent, | 23 | NodeScriptTestDialogComponent, |
24 | NodeScriptTestDialogData | 24 | NodeScriptTestDialogData |
25 | } from '@shared/components/dialog/node-script-test-dialog.component'; | 25 | } from '@shared/components/dialog/node-script-test-dialog.component'; |
26 | +import { sortObjectKeys } from '@core/utils'; | ||
26 | 27 | ||
27 | @Injectable({ | 28 | @Injectable({ |
28 | providedIn: 'root' | 29 | providedIn: 'root' |
@@ -71,10 +72,12 @@ export class NodeScriptTestService { | @@ -71,10 +72,12 @@ export class NodeScriptTestService { | ||
71 | } | 72 | } |
72 | if (!metadata) { | 73 | if (!metadata) { |
73 | metadata = { | 74 | metadata = { |
74 | - deviceType: 'default', | ||
75 | deviceName: 'Test Device', | 75 | deviceName: 'Test Device', |
76 | + deviceType: 'default', | ||
76 | ts: new Date().getTime() + '' | 77 | ts: new Date().getTime() + '' |
77 | }; | 78 | }; |
79 | + } else { | ||
80 | + metadata = sortObjectKeys(metadata); | ||
78 | } | 81 | } |
79 | if (!msgType) { | 82 | if (!msgType) { |
80 | msgType = 'POST_TELEMETRY_REQUEST'; | 83 | msgType = 'POST_TELEMETRY_REQUEST'; |
@@ -510,3 +510,10 @@ export function padValue(val: any, dec: number): string { | @@ -510,3 +510,10 @@ export function padValue(val: any, dec: number): string { | ||
510 | strVal = (n ? '-' : '') + strVal; | 510 | strVal = (n ? '-' : '') + strVal; |
511 | return strVal; | 511 | return strVal; |
512 | } | 512 | } |
513 | + | ||
514 | +export function sortObjectKeys<T>(obj: T): T { | ||
515 | + return Object.keys(obj).sort().reduce((acc, key) => { | ||
516 | + acc[key] = obj[key]; | ||
517 | + return acc; | ||
518 | + }, {} as T); | ||
519 | +} |
@@ -38,6 +38,7 @@ import { | @@ -38,6 +38,7 @@ import { | ||
38 | EventContentDialogComponent, | 38 | EventContentDialogComponent, |
39 | EventContentDialogData | 39 | EventContentDialogData |
40 | } from '@home/components/event/event-content-dialog.component'; | 40 | } from '@home/components/event/event-content-dialog.component'; |
41 | +import { sortObjectKeys } from '@core/utils'; | ||
41 | 42 | ||
42 | export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> { | 43 | export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> { |
43 | 44 | ||
@@ -209,7 +210,7 @@ export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> { | @@ -209,7 +210,7 @@ export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> { | ||
209 | icon: 'more_horiz', | 210 | icon: 'more_horiz', |
210 | isEnabled: (entity) => entity.body.metadata ? entity.body.metadata.length > 0 : false, | 211 | isEnabled: (entity) => entity.body.metadata ? entity.body.metadata.length > 0 : false, |
211 | onAction: ($event, entity) => this.showContent($event, entity.body.metadata, | 212 | onAction: ($event, entity) => this.showContent($event, entity.body.metadata, |
212 | - 'event.metadata', ContentType.JSON) | 213 | + 'event.metadata', ContentType.JSON, true) |
213 | }, | 214 | }, |
214 | '40px'), | 215 | '40px'), |
215 | new EntityActionTableColumn<Event>('error', 'event.error', | 216 | new EntityActionTableColumn<Event>('error', 'event.error', |
@@ -229,10 +230,15 @@ export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> { | @@ -229,10 +230,15 @@ export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> { | ||
229 | } | 230 | } |
230 | } | 231 | } |
231 | 232 | ||
232 | - showContent($event: MouseEvent, content: string, title: string, contentType: ContentType = null): void { | 233 | + showContent($event: MouseEvent, content: string, title: string, contentType: ContentType = null, sortKeys = false): void { |
233 | if ($event) { | 234 | if ($event) { |
234 | $event.stopPropagation(); | 235 | $event.stopPropagation(); |
235 | } | 236 | } |
237 | + if (contentType === ContentType.JSON && sortKeys) { | ||
238 | + try { | ||
239 | + content = JSON.stringify(sortObjectKeys(JSON.parse(content))); | ||
240 | + } catch (e) {} | ||
241 | + } | ||
236 | this.dialog.open<EventContentDialogComponent, EventContentDialogData>(EventContentDialogComponent, { | 242 | this.dialog.open<EventContentDialogComponent, EventContentDialogData>(EventContentDialogComponent, { |
237 | disableClose: true, | 243 | disableClose: true, |
238 | panelClass: ['tb-dialog', 'tb-fullscreen-dialog'], | 244 | panelClass: ['tb-dialog', 'tb-fullscreen-dialog'], |