Fixes for joins

This commit is contained in:
2023-05-01 15:12:51 -05:00
parent ca8834dec2
commit 74f0876de4
2 changed files with 30 additions and 7 deletions

View File

@ -26,6 +26,7 @@ import {QTableMetaData} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QT
import {QJobComplete} from "@kingsrook/qqq-frontend-core/lib/model/processes/QJobComplete"; import {QJobComplete} from "@kingsrook/qqq-frontend-core/lib/model/processes/QJobComplete";
import {QJobError} from "@kingsrook/qqq-frontend-core/lib/model/processes/QJobError"; import {QJobError} from "@kingsrook/qqq-frontend-core/lib/model/processes/QJobError";
import {QRecord} from "@kingsrook/qqq-frontend-core/lib/model/QRecord"; import {QRecord} from "@kingsrook/qqq-frontend-core/lib/model/QRecord";
import {QFilterCriteria} from "@kingsrook/qqq-frontend-core/lib/model/query/QFilterCriteria";
import {QQueryFilter} from "@kingsrook/qqq-frontend-core/lib/model/query/QQueryFilter"; import {QQueryFilter} from "@kingsrook/qqq-frontend-core/lib/model/query/QQueryFilter";
import {QueryJoin} from "@kingsrook/qqq-frontend-core/lib/model/query/QueryJoin"; import {QueryJoin} from "@kingsrook/qqq-frontend-core/lib/model/query/QueryJoin";
import {Alert, Collapse, TablePagination} from "@mui/material"; import {Alert, Collapse, TablePagination} from "@mui/material";
@ -52,6 +53,7 @@ import {DataGridPro, GridCallbackDetails, GridColDef, GridColumnMenuContainer, G
import {GridColumnsPanelProps} from "@mui/x-data-grid/components/panel/GridColumnsPanel"; import {GridColumnsPanelProps} from "@mui/x-data-grid/components/panel/GridColumnsPanel";
import {gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector} from "@mui/x-data-grid/hooks/features/columns/gridColumnsSelector"; import {gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector} from "@mui/x-data-grid/hooks/features/columns/gridColumnsSelector";
import {GridRowModel} from "@mui/x-data-grid/models/gridRows"; import {GridRowModel} from "@mui/x-data-grid/models/gridRows";
import {finance} from "faker";
import FormData from "form-data"; import FormData from "form-data";
import React, {forwardRef, useContext, useEffect, useReducer, useRef, useState} from "react"; import React, {forwardRef, useContext, useEffect, useReducer, useRef, useState} from "react";
import {useLocation, useNavigate, useSearchParams} from "react-router-dom"; import {useLocation, useNavigate, useSearchParams} from "react-router-dom";
@ -351,6 +353,18 @@ function RecordQuery({table, launchProcess}: Props): JSX.Element
} }
} }
}); });
filterModel.items.forEach((item) =>
{
// todo - some test if there is a value? see FilterUtils.buildQFilterFromGridFilter (re-use if needed)
const fieldName = item.columnField;
if(fieldName.indexOf(".") > -1)
{
visibleJoinTables.add(fieldName.split(".")[0]);
}
});
return (visibleJoinTables); return (visibleJoinTables);
}; };
@ -403,7 +417,10 @@ function RecordQuery({table, launchProcess}: Props): JSX.Element
} }
let tooltipHTML = <div> let tooltipHTML = <div>
You are viewing results from the {tableMetaData.label} table joined with the {joinLabelsString} table{joinLabels.length == 1 ? "" : "s"} You are viewing results from the {tableMetaData.label} table joined with {joinLabels.length} other table{joinLabels.length == 1 ? "" : "s"}:
<ul style={{marginLeft: "1rem"}}>
{joinLabels.map((name) => <li key={name}>{name}</li>)}
</ul>
</div> </div>
return( return(

View File

@ -59,12 +59,15 @@ export default class DataGridUtils
{ {
const join = tableMetaData.exposedJoins[i]; const join = tableMetaData.exposedJoins[i];
const fields = [ ...join.joinTable.fields.values() ]; if(join?.joinTable?.fields?.values())
fields.forEach((field) =>
{ {
let fieldName = join.joinTable.name + "." + field.name; const fields = [...join.joinTable.fields.values()];
row[fieldName] = ValueUtils.getDisplayValue(field, record, "query", fieldName); fields.forEach((field) =>
}); {
let fieldName = join.joinTable.name + "." + field.name;
row[fieldName] = ValueUtils.getDisplayValue(field, record, "query", fieldName);
});
}
} }
} }
@ -107,7 +110,10 @@ export default class DataGridUtils
joinLinkBase += joinLinkBase.endsWith("/") ? "" : "/"; joinLinkBase += joinLinkBase.endsWith("/") ? "" : "/";
} }
this.addColumnsForTable(join.joinTable, joinLinkBase, columns, columnSort, join.joinTable.name + ".", join.label + ": "); if(join?.joinTable?.fields?.values())
{
this.addColumnsForTable(join.joinTable, joinLinkBase, columns, columnSort, join.joinTable.name + ".", join.label + ": ");
}
} }
} }