perspective sorting

This commit is contained in:
Jan Prochazka
2022-07-31 12:10:56 +02:00
parent 7694864fe7
commit 452dba7f32
8 changed files with 230 additions and 32 deletions

View File

@@ -95,6 +95,9 @@ export abstract class PerspectiveTreeNode {
get filterType(): FilterType {
return 'string';
}
get columnName() {
return null;
}
getChildMatchColumns() {
return [];
@@ -181,6 +184,25 @@ export abstract class PerspectiveTreeNode {
conditions,
};
}
getOrderBy(table: TableInfo): PerspectiveDataLoadProps['orderBy'] {
const res = _compact(
this.childNodes.map(node => {
const sort = this.config?.sort?.find(x => x.uniqueName == node.uniqueName);
if (sort) {
return {
columnName: node.columnName,
order: sort.order,
};
}
})
);
return res.length > 0
? res
: table?.primaryKey?.columns.map(x => ({ columnName: x.columnName, order: 'ASC' })) || [
{ columnName: table?.columns[0].columnName, order: 'ASC' },
];
}
}
export class PerspectiveTableColumnNode extends PerspectiveTreeNode {
@@ -237,7 +259,7 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode {
),
dataColumns: this.getDataLoadColumns(),
databaseConfig: this.databaseConfig,
orderBy: this.refTable?.primaryKey?.columns.map(x => x.columnName) || [this.refTable.columns[0].columnName],
orderBy: this.getOrderBy(this.refTable),
condition: this.getChildrenCondition(),
};
}
@@ -252,6 +274,10 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode {
return this.column.columnName;
}
get columnName() {
return this.column.columnName;
}
get fieldName() {
return this.codeName + 'Ref';
}
@@ -322,7 +348,7 @@ export class PerspectiveTableNode extends PerspectiveTreeNode {
pureName: this.table.pureName,
dataColumns: this.getDataLoadColumns(),
databaseConfig: this.databaseConfig,
orderBy: this.table.primaryKey?.columns.map(x => x.columnName) || [this.table.columns[0].columnName],
orderBy: this.getOrderBy(this.table),
condition: this.getChildrenCondition(),
};
}
@@ -397,7 +423,7 @@ export class PerspectiveTableReferenceNode extends PerspectiveTableNode {
),
dataColumns: this.getDataLoadColumns(),
databaseConfig: this.databaseConfig,
orderBy: this.table.primaryKey?.columns.map(x => x.columnName) || [this.table.columns[0].columnName],
orderBy: this.getOrderBy(this.table),
condition: this.getChildrenCondition(),
};
}