Keep columnStats, RecordGridWidget columns sorted by-section, not alpha.

This commit is contained in:
2023-04-26 12:49:35 -05:00
parent 4f90b50001
commit 47463ad315
4 changed files with 29 additions and 26 deletions

View File

@ -66,7 +66,7 @@ function RecordGridWidget({widgetMetaData, data}: Props): JSX.Element
// note - tablePath may be null, if the user doesn't have access to the table. // // note - tablePath may be null, if the user doesn't have access to the table. //
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
const childTablePath = data.tablePath ? data.tablePath + (data.tablePath.endsWith("/") ? "" : "/") : data.tablePath; const childTablePath = data.tablePath ? data.tablePath + (data.tablePath.endsWith("/") ? "" : "/") : data.tablePath;
const columns = DataGridUtils.setupGridColumns(tableMetaData, childTablePath); const columns = DataGridUtils.setupGridColumns(tableMetaData, childTablePath, null, "bySection");
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
// do not not show the foreign-key column of the parent table // // do not not show the foreign-key column of the parent table //

View File

@ -127,7 +127,7 @@ function ColumnStats({tableMetaData, fieldMetaData, filter}: Props): JSX.Element
fakeTableMetaData.sections.push(new QTableSection({fieldNames: [fieldMetaData.name, "count"]})); fakeTableMetaData.sections.push(new QTableSection({fieldNames: [fieldMetaData.name, "count"]}));
const rows = DataGridUtils.makeRows(valueCounts, fakeTableMetaData); const rows = DataGridUtils.makeRows(valueCounts, fakeTableMetaData);
const columns = DataGridUtils.setupGridColumns(fakeTableMetaData); const columns = DataGridUtils.setupGridColumns(fakeTableMetaData, null, null, "bySection");
columns.forEach((c) => columns.forEach((c) =>
{ {
c.width = 200; c.width = 200;

View File

@ -474,7 +474,7 @@ function RecordQuery({table, launchProcess}: Props): JSX.Element
{ {
let linkBase = metaData.getTablePath(table); let linkBase = metaData.getTablePath(table);
linkBase += linkBase.endsWith("/") ? "" : "/"; linkBase += linkBase.endsWith("/") ? "" : "/";
const columns = DataGridUtils.setupGridColumns(tableMetaData, linkBase, metaData); const columns = DataGridUtils.setupGridColumns(tableMetaData, linkBase, metaData, "alphabetical");
setColumnsModel(columns); setColumnsModel(columns);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -89,10 +89,10 @@ export default class DataGridUtils
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/
public static setupGridColumns = (tableMetaData: QTableMetaData, linkBase: string = "", metaData?: QInstance): GridColDef[] => public static setupGridColumns = (tableMetaData: QTableMetaData, linkBase: string = "", metaData?: QInstance, columnSort: "bySection" | "alphabetical" = "alphabetical"): GridColDef[] =>
{ {
const columns = [] as GridColDef[]; const columns = [] as GridColDef[];
this.addColumnsForTable(tableMetaData, linkBase, columns, null); this.addColumnsForTable(tableMetaData, linkBase, columns, columnSort, null, null);
if(tableMetaData.exposedJoins) if(tableMetaData.exposedJoins)
{ {
@ -107,7 +107,7 @@ export default class DataGridUtils
joinLinkBase += joinLinkBase.endsWith("/") ? "" : "/"; joinLinkBase += joinLinkBase.endsWith("/") ? "" : "/";
} }
this.addColumnsForTable(join.joinTable, joinLinkBase, columns, join.joinTable.name + ".", join.label + ": "); this.addColumnsForTable(join.joinTable, joinLinkBase, columns, columnSort, join.joinTable.name + ".", join.label + ": ");
} }
} }
@ -118,36 +118,39 @@ export default class DataGridUtils
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/
private static addColumnsForTable(tableMetaData: QTableMetaData, linkBase: string, columns: GridColDef[], namePrefix?: string, labelPrefix?: string) private static addColumnsForTable(tableMetaData: QTableMetaData, linkBase: string, columns: GridColDef[], columnSort: "bySection" | "alphabetical" = "alphabetical", namePrefix?: string, labelPrefix?: string)
{ {
/* const sortedKeys: string[] = [];
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
// this sorted by sections - e.g., manual sorting by the meta-data... // // this sorted by sections - e.g., manual sorting by the meta-data... //
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
const sortedKeys: string[] = []; if(columnSort === "bySection")
for (let i = 0; i < tableMetaData.sections.length; i++)
{ {
const section = tableMetaData.sections[i]; for (let i = 0; i < tableMetaData.sections.length; i++)
if (!section.fieldNames)
{ {
continue; const section = tableMetaData.sections[i];
} if (!section.fieldNames)
{
continue;
}
for (let j = 0; j < section.fieldNames.length; j++) for (let j = 0; j < section.fieldNames.length; j++)
{ {
sortedKeys.push(section.fieldNames[j]); sortedKeys.push(section.fieldNames[j]);
}
} }
} }
*/ else // columnSort = "alphabetical"
///////////////////////////
// sort by labels... mmm //
///////////////////////////
const sortedKeys = [...tableMetaData.fields.keys()];
sortedKeys.sort((a: string, b: string): number =>
{ {
return (tableMetaData.fields.get(a).label.localeCompare(tableMetaData.fields.get(b).label)) ///////////////////////////
}) // sort by labels... mmm //
///////////////////////////
sortedKeys.sort((a: string, b: string): number =>
{
return (tableMetaData.fields.get(a).label.localeCompare(tableMetaData.fields.get(b).label))
})
}
sortedKeys.forEach((key) => sortedKeys.forEach((key) =>
{ {