private gridDataConverter()

in web/frontend/src/app/pages/streams/modules/schema-editor/components/diff/grid/grid.component.ts [128:222]


  private gridDataConverter(changes: ClassDescriptorChangeModel[]): GridRowDataModel[] {
    const editedFields = new Set();
    const convertedChanges = [];

    const addedParentClasses = new Set<string>();
    const removedParentClasses = new Set<string>();

    const addedClassNames = this.schemaEditorService.addedClassNames;
    const removedClassNames = this.schemaEditorService.removedClassNames;

    changes.forEach((change: ClassDescriptorChangeModel) => {
      const CHANGE_SOURCE = change.target || change.source;
      const allSchemaTypes = this.schemaService.schema.all.map(item => item.name);
      if (addedClassNames.has(CHANGE_SOURCE.name) || addedClassNames.has(CHANGE_SOURCE.parent)) {
        if (!addedParentClasses.has(CHANGE_SOURCE.parent) && CHANGE_SOURCE.parent && !allSchemaTypes.includes(CHANGE_SOURCE.parent)) {
          convertedChanges.push({
            groupName: null,
            name: CHANGE_SOURCE.parent,
            status: `Created type "${CHANGE_SOURCE.parent}"`,
            resolution: '',
            _props: {
              hasErrors: false
            }
          });
          addedParentClasses.add(CHANGE_SOURCE.parent);
        }

        convertedChanges.push({
          groupName: null,
          name: CHANGE_SOURCE.name,
          status: `Created type "${CHANGE_SOURCE.name}"`,
          resolution: '',
          _props: {
            hasErrors: false
          }
        });
      } else if (removedClassNames.has(CHANGE_SOURCE.name) || removedClassNames.has(CHANGE_SOURCE.parent)) {
        if (!removedParentClasses.has(CHANGE_SOURCE.parent) && CHANGE_SOURCE.parent && !allSchemaTypes.includes(CHANGE_SOURCE.parent)) {
          convertedChanges.push({
            groupName: null,
            name: CHANGE_SOURCE.parent,
            status: `Removed type "${CHANGE_SOURCE.parent}"`,
            resolution: '',
            _props: {
              hasErrors: false
            }
          });
          removedParentClasses.add(CHANGE_SOURCE.parent);
        }

        convertedChanges.push({
          groupName: null,
          name: CHANGE_SOURCE.name,
          status: `Removed type "${CHANGE_SOURCE.name}"`,
          resolution: '',
          _props: {
            hasErrors: false
          }
        });
      } else {
        convertedChanges.push({
          groupName: null,
          name: CHANGE_SOURCE.name,
          status: `Change impact: ${change.changeImpact}, target: "${CHANGE_SOURCE.name}"`,
          resolution: '',
          _props: {
            hasErrors: false
          }
        });
      }

      change.fieldChanges.forEach((field) => {
        const CHANGE_SOURCE = change.target || change.source,
          FIELD_SOURCE = field.target || field.source;
        if (this.schemaEditorService.editedFieldNames.has(FIELD_SOURCE.name) && !editedFields.has(FIELD_SOURCE.name)) {
          convertedChanges.push({
            groupName: CHANGE_SOURCE.name,
            name: FIELD_SOURCE.name,
            status: field.status,
            resolution: field.changeImpact,
            _props: {
              hasErrors: field.hasErrors,
              ...(field.defaultValue === null && field.defaultValueRequired
                ? {defaultValueRequired: true}
                : {}),
              dataType: FIELD_SOURCE.type,
              nullable: FIELD_SOURCE.type.nullable,
            },
          });
          editedFields.add(FIELD_SOURCE.name);
        }
      })
    });
    return convertedChanges;
  }