separateLinkedGroup static method
List<PlutoColumnGroupPair>
separateLinkedGroup({
- required List<
PlutoColumnGroup> columnGroupList, - required List<
PlutoColumn> columns,
Separate groups according to the order of columns
.
There are columns A, B, C, D, E If A and B are the same group, they are included as the same group.
If C and E are in the same group, but there is D included in another group in the middle, C and E are in the same group but separated.
Implementation
static List<PlutoColumnGroupPair> separateLinkedGroup({
required List<PlutoColumnGroup> columnGroupList,
required List<PlutoColumn> columns,
}) {
if (columnGroupList.isEmpty || columns.isEmpty) {
return [];
}
List<PlutoColumnGroupPair> separatedColumns = [];
PlutoColumnGroup? previousGroup;
List<PlutoColumn> linkedColumns = <PlutoColumn>[];
for (int i = 0; i < columns.length; i += 1) {
final column = columns[i];
final field = column.field;
final foundGroup = getGroupIfExistsFromList(
field: field,
columnGroupList: columnGroupList,
) ??
PlutoColumnGroup(
key: ValueKey(field),
title: field,
fields: [field],
expandedColumn: true,
);
previousGroup ??= foundGroup;
if (previousGroup.key != foundGroup.key) {
separatedColumns.add(PlutoColumnGroupPair(
group: previousGroup,
columns: linkedColumns,
));
linkedColumns = [];
previousGroup = foundGroup;
}
linkedColumns.add(column);
if (i == columns.length - 1) {
separatedColumns.add(PlutoColumnGroupPair(
group: foundGroup,
columns: linkedColumns,
));
}
}
return separatedColumns;
}