AAE-21967 use column id to retrieve variable column types (#9629)

* AAE-21967 use column id to retrieve variable column types

* AAE-21967 fix variable mapper units
This commit is contained in:
Wojciech Duda
2024-04-30 15:08:16 +02:00
committed by GitHub
parent f401b8c13e
commit 74d558c376
6 changed files with 29 additions and 38 deletions

View File

@@ -26,7 +26,7 @@ describe('ProcessListDatatableAdapter', () => {
const viewModel: ProcessInstanceCloudListViewModel = { const viewModel: ProcessInstanceCloudListViewModel = {
id: '1', id: '1',
variablesMap: { variablesMap: {
columnDisplayName1: getProcessInstanceVariableMock({ type: 'number' }) columnId1: getProcessInstanceVariableMock({ type: 'number' })
} }
}; };
@@ -38,7 +38,7 @@ describe('ProcessListDatatableAdapter', () => {
}; };
const column: DataColumn<ProcessListDataColumnCustomData> = getDataColumnMock({ const column: DataColumn<ProcessListDataColumnCustomData> = getDataColumnMock({
title: 'columnDisplayName1', id: 'columnId1',
customData: { customData: {
assignedVariableDefinitionIds: ['1'], assignedVariableDefinitionIds: ['1'],
variableDefinitionsPayload: ['processKey/variableName'], variableDefinitionsPayload: ['processKey/variableName'],

View File

@@ -20,17 +20,13 @@ import { ProcessListDataColumnCustomData, PROCESS_LIST_CUSTOM_VARIABLE_COLUMN }
import { ProcessInstanceCloudListViewModel } from '../models/perocess-instance-cloud-view.model'; import { ProcessInstanceCloudListViewModel } from '../models/perocess-instance-cloud-view.model';
export class ProcessListDatatableAdapter extends ObjectDataTableAdapter { export class ProcessListDatatableAdapter extends ObjectDataTableAdapter {
constructor( constructor(data: ProcessInstanceCloudListViewModel[], schema: DataColumn<ProcessListDataColumnCustomData>[]) {
data: ProcessInstanceCloudListViewModel[],
schema: DataColumn<ProcessListDataColumnCustomData>[]
) {
super(data, schema); super(data, schema);
} }
getColumnType(row: DataRow, col: DataColumn<ProcessListDataColumnCustomData>): string { getColumnType(row: DataRow, col: DataColumn<ProcessListDataColumnCustomData>): string {
if (col.customData?.columnType === PROCESS_LIST_CUSTOM_VARIABLE_COLUMN) { if (col.customData?.columnType === PROCESS_LIST_CUSTOM_VARIABLE_COLUMN) {
const variableDisplayName = col.title; const columnType = row.obj.variablesMap?.[col.id]?.type;
const columnType = row.obj.variablesMap?.[variableDisplayName]?.type;
return columnType ?? 'text'; return columnType ?? 'text';
} }

View File

@@ -32,7 +32,7 @@ describe('VariableMapperService', () => {
const viewModel = service.mapVariablesByColumnTitle([objectWithVariables], [column]); const viewModel = service.mapVariablesByColumnTitle([objectWithVariables], [column]);
expect(viewModel[0].variablesMap[column.title].type).toEqual(expectedColumnType); expect(viewModel[0].variablesMap[column.id].type).toEqual(expectedColumnType);
}; };
beforeEach(() => { beforeEach(() => {
@@ -58,11 +58,11 @@ describe('VariableMapperService', () => {
}; };
}); });
it('should map variables by column title', () => { it('should map variables by column id', () => {
const expectedObjectWithVariableMap = { const expectedObjectWithVariableMap = {
...objectWithVariables, ...objectWithVariables,
variablesMap: { variablesMap: {
[column.title]: variable [column.id]: variable
} }
}; };

View File

@@ -23,7 +23,7 @@ import { DataColumnType } from '@alfresco/adf-extensions';
@Injectable({ providedIn: 'root' }) @Injectable({ providedIn: 'root' })
export class VariableMapperService { export class VariableMapperService {
mapVariablesByColumnTitle <T extends { variables?: ProcessInstanceVariable[] }>( mapVariablesByColumnTitle<T extends { variables?: ProcessInstanceVariable[] }>(
instancesList: T[] = [], instancesList: T[] = [],
columnsSchema: DataColumn<ProcessListDataColumnCustomData>[] = [] columnsSchema: DataColumn<ProcessListDataColumnCustomData>[] = []
): Array<WithVariablesMap<T>> { ): Array<WithVariablesMap<T>> {
@@ -34,19 +34,22 @@ export class VariableMapperService {
return instance; return instance;
} }
const variablesMap = (instance.variables ?? []).reduce<{[columnTitle: string]: ProcessInstanceVariable}>((variableAccumulator, variable) => { const variablesMap = (instance.variables ?? []).reduce<{ [columnTitle: string]: ProcessInstanceVariable }>(
const processVariableDefinitionPayload = `${variable.processDefinitionKey}/${variable.name}`; (variableAccumulator, variable) => {
const processVariableDefinitionPayload = `${variable.processDefinitionKey}/${variable.name}`;
const column = columnsByVariables[processVariableDefinitionPayload]; const column = columnsByVariables[processVariableDefinitionPayload];
if (column) { if (column) {
variableAccumulator[column] = { variableAccumulator[column] = {
...variable, ...variable,
type: this.mapProcessVariableTypes(variable.type) type: this.mapProcessVariableTypes(variable.type)
}; };
} }
return variableAccumulator; return variableAccumulator;
}, {}); },
{}
);
return { return {
...instance, ...instance,
@@ -57,20 +60,16 @@ export class VariableMapperService {
return rowsViewModel; return rowsViewModel;
} }
private mapColumnKeysByVariable( private mapColumnKeysByVariable(columnsSchema: DataColumn<ProcessListDataColumnCustomData>[]): { [key: string]: string } {
columnsSchema: DataColumn<ProcessListDataColumnCustomData>[]
): { [key: string]: string } {
const columnsByVariables = columnsSchema const columnsByVariables = columnsSchema
.filter(column => !!column.customData) .filter((column) => !!column.customData)
.reduce<{ [key: string]: string }>((columnsByVariable, column) => { .reduce<{ [key: string]: string }>((columnsByVariable, column) => {
const columnTitle = column.title;
const variables = column.customData.variableDefinitionsPayload; const variables = column.customData.variableDefinitionsPayload;
variables.forEach((key) => { variables.forEach((key) => {
columnsByVariable[key] = columnTitle; columnsByVariable[key] = column.id;
}); });
return columnsByVariable; return columnsByVariable;
}, {}); }, {});
return columnsByVariables; return columnsByVariables;

View File

@@ -36,7 +36,7 @@ describe('TasksListDatatableAdapter', () => {
const viewModel: TaskInstanceCloudListViewModel = { const viewModel: TaskInstanceCloudListViewModel = {
...cloudModel, ...cloudModel,
variablesMap: { variablesMap: {
columnDisplayName1: processVariable columnId1: processVariable
} }
}; };
@@ -48,7 +48,7 @@ describe('TasksListDatatableAdapter', () => {
}; };
const column: DataColumn<ProcessListDataColumnCustomData> = getDataColumnMock({ const column: DataColumn<ProcessListDataColumnCustomData> = getDataColumnMock({
title: 'columnDisplayName1', id: 'columnId1',
customData: { customData: {
assignedVariableDefinitionIds: ['variableDefinitionId'], assignedVariableDefinitionIds: ['variableDefinitionId'],
variableDefinitionsPayload: ['processKey/variableName'], variableDefinitionsPayload: ['processKey/variableName'],

View File

@@ -20,17 +20,13 @@ import { ProcessListDataColumnCustomData, PROCESS_LIST_CUSTOM_VARIABLE_COLUMN }
import { TaskInstanceCloudListViewModel } from '../models/task-cloud-view.model'; import { TaskInstanceCloudListViewModel } from '../models/task-cloud-view.model';
export class TasksListDatatableAdapter extends ObjectDataTableAdapter { export class TasksListDatatableAdapter extends ObjectDataTableAdapter {
constructor( constructor(data: TaskInstanceCloudListViewModel[], schema: DataColumn<ProcessListDataColumnCustomData>[]) {
data: TaskInstanceCloudListViewModel[],
schema: DataColumn<ProcessListDataColumnCustomData>[]
) {
super(data, schema); super(data, schema);
} }
getColumnType(row: DataRow, col: DataColumn<ProcessListDataColumnCustomData>): string { getColumnType(row: DataRow, col: DataColumn<ProcessListDataColumnCustomData>): string {
if (col.customData?.columnType === PROCESS_LIST_CUSTOM_VARIABLE_COLUMN) { if (col.customData?.columnType === PROCESS_LIST_CUSTOM_VARIABLE_COLUMN) {
const variableDisplayName = col.title; const columnType = row.obj.variablesMap?.[col.id]?.type;
const columnType = row.obj.variablesMap?.[variableDisplayName]?.type;
return columnType ?? 'text'; return columnType ?? 'text';
} }