From e7d895567a157fdc92210900c82f6908a6e2942c Mon Sep 17 00:00:00 2001 From: vato007 Date: Sat, 17 Aug 2024 13:57:44 +0930 Subject: [PATCH] Update object definitions in list and map --- .../object-field/object-field.component.ts | 2 -- .../proto-definition.service.spec.ts | 13 +++++++++++- .../proto-definition.service.ts | 20 ++++++++++++++++++- test.proto | 1 + 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/app/editor/object-field/object-field.component.ts b/src/app/editor/object-field/object-field.component.ts index 882e53f..7857240 100644 --- a/src/app/editor/object-field/object-field.component.ts +++ b/src/app/editor/object-field/object-field.component.ts @@ -2,9 +2,7 @@ import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, - OnInit, computed, - effect, forwardRef, input, model, diff --git a/src/app/proto-definition-selector/proto-definition.service.spec.ts b/src/app/proto-definition-selector/proto-definition.service.spec.ts index 6c6405e..effbd12 100644 --- a/src/app/proto-definition-selector/proto-definition.service.spec.ts +++ b/src/app/proto-definition-selector/proto-definition.service.spec.ts @@ -34,6 +34,7 @@ message Test { NestedMessage hello10 = 10; EnumTest enum_test = 11; myimportedpackage.ImportedMessage imported_message = 12; + repeated ReferenceMessage obj_list = 13; } message ReferenceMessage { @@ -68,7 +69,7 @@ describe('TestService', () => { expect(converted.name).toBe('Test'); - expect(converted.values.length).toBe(12); + expect(converted.values.length).toBe(13); checkNameAndType(converted, 'hello', MessageTypeEnum.String); checkNameAndType(converted, 'hello2', MessageTypeEnum.Numeric); checkNameAndType(converted, 'hello3', MessageTypeEnum.Numeric); @@ -81,6 +82,7 @@ describe('TestService', () => { checkNameAndType(converted, 'hello10', MessageTypeEnum.Object); checkNameAndType(converted, 'enumTest', MessageTypeEnum.Enum); checkNameAndType(converted, 'importedMessage', MessageTypeEnum.Object); + checkNameAndType(converted, 'objList', MessageTypeEnum.List); const listMessage = converted.values[6].configuration as ListMessage; expect(listMessage.subConfiguration.type).toBe(MessageTypeEnum.String); @@ -126,6 +128,15 @@ describe('TestService', () => { const enumMessage = converted.values[10].configuration as EnumMessage; expect(enumMessage.options.length).toBe(1); expect(enumMessage.options[0]).toBe('Hello'); + + const objectListMessage = converted.values[12].configuration as ListMessage; + expect(objectListMessage.type).toBe(MessageTypeEnum.List); + expect(objectListMessage.subConfiguration.type).toBe( + MessageTypeEnum.Object + ); + const objectListNestedMessage = + objectListMessage.subConfiguration as ObjectMessage; + expect(objectListNestedMessage.messageDefinition.values.length).toBe(2); }); }); diff --git a/src/app/proto-definition-selector/proto-definition.service.ts b/src/app/proto-definition-selector/proto-definition.service.ts index e4a1d2a..84ea6b1 100644 --- a/src/app/proto-definition-selector/proto-definition.service.ts +++ b/src/app/proto-definition-selector/proto-definition.service.ts @@ -82,9 +82,27 @@ export class ProtoDefinitionService { .map((messageObject) => messageObject as ProtoMessage); for (const messageObject of standardMessages) { for (const value of messageObject.values) { + let configuration: MessageConfiguration | null = null; if (value.configuration.type === MessageTypeEnum.Object) { + configuration = value.configuration; + } else if (value.configuration.type === MessageTypeEnum.List) { + const listConfiguration = value.configuration as ListMessage; + if ( + listConfiguration.subConfiguration.type === MessageTypeEnum.Object + ) { + configuration = listConfiguration.subConfiguration; + } + } else if (value.configuration.type === MessageTypeEnum.Map) { + const listConfiguration = value.configuration as MapMessage; + if ( + listConfiguration.valueConfiguration.type === MessageTypeEnum.Object + ) { + configuration = listConfiguration.valueConfiguration; + } + } + if (configuration) { this.populateNestedObject( - value.configuration as ObjectMessage, + configuration as ObjectMessage, messageObject.packageName!, standardMessages ); diff --git a/test.proto b/test.proto index 981dd45..2567a54 100644 --- a/test.proto +++ b/test.proto @@ -15,6 +15,7 @@ message Test { ReferenceMessage hello9 = 9; NestedMessage hello10 = 10; EnumTest enum_test = 11; + repeated ReferenceMessage obj_list = 12; } message ReferenceMessage {