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 {QJobError} from "@kingsrook/qqq-frontend-core/lib/model/processes/QJobError";
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 {QueryJoin} from "@kingsrook/qqq-frontend-core/lib/model/query/QueryJoin";
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 {gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector} from "@mui/x-data-grid/hooks/features/columns/gridColumnsSelector";
import {GridRowModel} from "@mui/x-data-grid/models/gridRows";
import {finance} from "faker";
import FormData from "form-data";
import React, {forwardRef, useContext, useEffect, useReducer, useRef, useState} from "react";
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);
};
@ -403,7 +417,10 @@ function RecordQuery({table, launchProcess}: Props): JSX.Element
}
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>
return(

View File

@ -59,12 +59,15 @@ export default class DataGridUtils
{
const join = tableMetaData.exposedJoins[i];
const fields = [ ...join.joinTable.fields.values() ];
fields.forEach((field) =>
if(join?.joinTable?.fields?.values())
{
let fieldName = join.joinTable.name + "." + field.name;
row[fieldName] = ValueUtils.getDisplayValue(field, record, "query", fieldName);
});
const fields = [...join.joinTable.fields.values()];
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("/") ? "" : "/";
}
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 + ": ");
}
}
}