diff --git a/src/qqq/components/widgets/misc/RecordGridWidget.tsx b/src/qqq/components/widgets/misc/RecordGridWidget.tsx index c167468..9e02e0d 100644 --- a/src/qqq/components/widgets/misc/RecordGridWidget.tsx +++ b/src/qqq/components/widgets/misc/RecordGridWidget.tsx @@ -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. // ///////////////////////////////////////////////////////////////////////////////// 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 // diff --git a/src/qqq/pages/records/query/ColumnStats.tsx b/src/qqq/pages/records/query/ColumnStats.tsx index 36f4dd5..d540721 100644 --- a/src/qqq/pages/records/query/ColumnStats.tsx +++ b/src/qqq/pages/records/query/ColumnStats.tsx @@ -127,7 +127,7 @@ function ColumnStats({tableMetaData, fieldMetaData, filter}: Props): JSX.Element fakeTableMetaData.sections.push(new QTableSection({fieldNames: [fieldMetaData.name, "count"]})); const rows = DataGridUtils.makeRows(valueCounts, fakeTableMetaData); - const columns = DataGridUtils.setupGridColumns(fakeTableMetaData); + const columns = DataGridUtils.setupGridColumns(fakeTableMetaData, null, null, "bySection"); columns.forEach((c) => { c.width = 200; diff --git a/src/qqq/pages/records/query/RecordQuery.tsx b/src/qqq/pages/records/query/RecordQuery.tsx index 397fd40..597667a 100644 --- a/src/qqq/pages/records/query/RecordQuery.tsx +++ b/src/qqq/pages/records/query/RecordQuery.tsx @@ -474,7 +474,7 @@ function RecordQuery({table, launchProcess}: Props): JSX.Element { let linkBase = metaData.getTablePath(table); linkBase += linkBase.endsWith("/") ? "" : "/"; - const columns = DataGridUtils.setupGridColumns(tableMetaData, linkBase, metaData); + const columns = DataGridUtils.setupGridColumns(tableMetaData, linkBase, metaData, "alphabetical"); setColumnsModel(columns); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/qqq/utils/DataGridUtils.tsx b/src/qqq/utils/DataGridUtils.tsx index f9c8d48..f9df0e1 100644 --- a/src/qqq/utils/DataGridUtils.tsx +++ b/src/qqq/utils/DataGridUtils.tsx @@ -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[]; - this.addColumnsForTable(tableMetaData, linkBase, columns, null); + this.addColumnsForTable(tableMetaData, linkBase, columns, columnSort, null, null); if(tableMetaData.exposedJoins) { @@ -107,7 +107,7 @@ export default class DataGridUtils 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... // //////////////////////////////////////////////////////////////////////// - const sortedKeys: string[] = []; - for (let i = 0; i < tableMetaData.sections.length; i++) + if(columnSort === "bySection") { - const section = tableMetaData.sections[i]; - if (!section.fieldNames) + for (let i = 0; i < tableMetaData.sections.length; i++) { - continue; - } + const section = tableMetaData.sections[i]; + if (!section.fieldNames) + { + continue; + } - for (let j = 0; j < section.fieldNames.length; j++) - { - sortedKeys.push(section.fieldNames[j]); + for (let j = 0; j < section.fieldNames.length; j++) + { + sortedKeys.push(section.fieldNames[j]); + } } } - */ - - /////////////////////////// - // sort by labels... mmm // - /////////////////////////// - const sortedKeys = [...tableMetaData.fields.keys()]; - sortedKeys.sort((a: string, b: string): number => + else // columnSort = "alphabetical" { - 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) => {