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;
}