Remove common module, add friendy name editing, add enum options editing, fix list option warning
This commit is contained in:
@@ -1,9 +1,7 @@
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
||||
import { MatButtonModule } from '@angular/material/button';
|
||||
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
||||
import {
|
||||
EDITABLE_MESSAGE_TYPES,
|
||||
ListMessage,
|
||||
MessageConfiguration,
|
||||
MessageTypeEnum,
|
||||
@@ -11,13 +9,18 @@ import {
|
||||
ProtoMessage,
|
||||
} from '../../model/proto-message.model';
|
||||
import { DefinitionEditorFieldComponent } from './definition-editor-field/definition-editor-field.component';
|
||||
import { MatFormFieldModule } from '@angular/material/form-field';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
import { MatInputModule } from '@angular/material/input';
|
||||
|
||||
@Component({
|
||||
selector: 'app-definition-editor',
|
||||
imports: [
|
||||
CommonModule,
|
||||
FormsModule,
|
||||
MatButtonModule,
|
||||
MatDialogModule,
|
||||
MatFormFieldModule,
|
||||
MatInputModule,
|
||||
DefinitionEditorFieldComponent,
|
||||
],
|
||||
template: `
|
||||
@@ -25,6 +28,14 @@ import { DefinitionEditorFieldComponent } from './definition-editor-field/defini
|
||||
<mat-dialog-content>
|
||||
@for (field of editableMessages; track $index) {
|
||||
<h3>{{ field.name }}</h3>
|
||||
<mat-form-field>
|
||||
<mat-label>Friendly Name</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[(ngModel)]="field.friendlyName"
|
||||
placeholder="Optional"
|
||||
/>
|
||||
</mat-form-field>
|
||||
<app-definition-editor-field
|
||||
[fieldConfiguration]="field.configuration"
|
||||
></app-definition-editor-field>
|
||||
@@ -40,26 +51,5 @@ import { DefinitionEditorFieldComponent } from './definition-editor-field/defini
|
||||
export class DefinitionEditorComponent {
|
||||
protected protoMessage = inject<ProtoMessage>(MAT_DIALOG_DATA);
|
||||
|
||||
protected editableMessages = this.protoMessage.values.filter((message) =>
|
||||
this.filterMessageConfiguration(message.configuration)
|
||||
);
|
||||
|
||||
private filterMessageConfiguration(
|
||||
configuration: MessageConfiguration
|
||||
): boolean {
|
||||
if (configuration.type === MessageTypeEnum.List) {
|
||||
return this.filterMessageConfiguration(
|
||||
(configuration as ListMessage).subConfiguration
|
||||
);
|
||||
}
|
||||
if (configuration.type === MessageTypeEnum.Object) {
|
||||
// Ensure at least one nested message can be configured
|
||||
return !!(configuration as ObjectMessage).messageDefinition.values.find(
|
||||
(message) => this.filterMessageConfiguration(message.configuration)
|
||||
);
|
||||
}
|
||||
|
||||
// Note: Map can always be configured, as key needs to be a string or numeric type
|
||||
return EDITABLE_MESSAGE_TYPES.includes(configuration.type);
|
||||
}
|
||||
protected editableMessages = this.protoMessage.values;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user