diff --git a/src/qqq/components/widgets/misc/FilterAndColumnsSetupWidget.tsx b/src/qqq/components/widgets/misc/FilterAndColumnsSetupWidget.tsx
index 4a22fe9..49e3faa 100644
--- a/src/qqq/components/widgets/misc/FilterAndColumnsSetupWidget.tsx
+++ b/src/qqq/components/widgets/misc/FilterAndColumnsSetupWidget.tsx
@@ -44,7 +44,7 @@ import RecordQuery from "qqq/pages/records/query/RecordQuery";
import Client from "qqq/utils/qqq/Client";
import FilterUtils from "qqq/utils/qqq/FilterUtils";
import TableUtils from "qqq/utils/qqq/TableUtils";
-import React, {useContext, useEffect, useRef, useState} from "react";
+import React, {useContext, useEffect, useMemo, useRef, useState} from "react";
interface FilterAndColumnsSetupWidgetProps
{
@@ -106,6 +106,8 @@ export default function FilterAndColumnsSetupWidget({isEditable: isEditableProp,
const [warning, setWarning] = useState(null as string);
const [widgetFailureAlertContent, setWidgetFailureAlertContent] = useState(null as string);
+ const omitExposedJoins: string[] = widgetData?.omitExposedJoins ?? [];
+
//////////////////////////////////////////////////////////////////////////////////////////////////
// we'll actually keep 2 copies of the query filter around here - //
// the one in the record (as json) is one that the backend likes (e.g., possible values as ids) //
@@ -441,7 +443,7 @@ export default function FilterAndColumnsSetupWidget({isEditable: isEditableProp,
- {label ?? "Query Filter"}
+ {label ?? widgetData.label ?? widgetMetaData.label ?? "Query Filter"}
{!hideSortBy && {mayShowQuery() && getCurrentSortIndicator(frontendQueryFilter, tableMetaData, null)}}
{
@@ -454,7 +456,7 @@ export default function FilterAndColumnsSetupWidget({isEditable: isEditableProp,
{
isEditable &&
-
+
}
{
@@ -501,6 +503,7 @@ export default function FilterAndColumnsSetupWidget({isEditable: isEditableProp,
initialQueryFilter={frontendQueryFilter}
initialColumns={columns}
apiVersion={apiVersion}
+ omitExposedJoins={omitExposedJoins}
/>
)}
@@ -510,7 +513,7 @@ export default function FilterAndColumnsSetupWidget({isEditable: isEditableProp,
- Edit Filters and Columns
+ Edit Filters {hideColumns ? "" : " and Columns"}
{
showHelp("modalSubheader") &&
@@ -527,6 +530,7 @@ export default function FilterAndColumnsSetupWidget({isEditable: isEditableProp,
initialQueryFilter={usingDefaultEmptyFilter ? null : frontendQueryFilter}
initialColumns={columns}
apiVersion={apiVersion}
+ omitExposedJoins={omitExposedJoins}
/>
}
diff --git a/src/qqq/pages/records/query/RecordQuery.tsx b/src/qqq/pages/records/query/RecordQuery.tsx
index fc4e606..0c199f7 100644
--- a/src/qqq/pages/records/query/RecordQuery.tsx
+++ b/src/qqq/pages/records/query/RecordQuery.tsx
@@ -89,15 +89,16 @@ export type QueryScreenUsage = "queryScreen" | "reportSetup"
interface Props
{
- table?: QTableMetaData;
- apiVersion?: ApiVersion;
- launchProcess?: QProcessMetaData;
- usage?: QueryScreenUsage;
- isModal?: boolean;
- isPreview?: boolean;
- initialQueryFilter?: QQueryFilter;
- initialColumns?: QQueryColumns;
- allowVariables?: boolean;
+ table?: QTableMetaData,
+ apiVersion?: ApiVersion,
+ launchProcess?: QProcessMetaData,
+ usage?: QueryScreenUsage,
+ isModal?: boolean,
+ isPreview?: boolean,
+ initialQueryFilter?: QQueryFilter,
+ initialColumns?: QQueryColumns,
+ allowVariables?: boolean,
+ omitExposedJoins?: string[]
}
///////////////////////////////////////////////////////
@@ -130,7 +131,7 @@ const getLoadingScreen = (isModal: boolean) =>
**
** Yuge component. The best. Lots of very smart people are saying so.
*******************************************************************************/
-const RecordQuery = forwardRef(({table, apiVersion, usage, isModal, isPreview, allowVariables, initialQueryFilter, initialColumns}: Props, ref) =>
+const RecordQuery = forwardRef(({table, apiVersion, usage, isModal, isPreview, allowVariables, initialQueryFilter, initialColumns, omitExposedJoins}: Props, ref) =>
{
const tableName = table.name;
const [searchParams] = useSearchParams();
@@ -2834,6 +2835,7 @@ const RecordQuery = forwardRef(({table, apiVersion, usage, isModal, isPreview, a
idPrefix="columns"
tableMetaData={tableMetaData}
showTableHeaderEvenIfNoExposedJoins={true}
+ omitExposedJoins={omitExposedJoins}
placeholder="Search Fields"
buttonProps={{sx: columnMenuButtonStyles}}
buttonChildren={<>view_week_outline Columns ({view.queryColumns.getVisibleColumnCount()}) keyboard_arrow_down>}
@@ -2975,6 +2977,7 @@ const RecordQuery = forwardRef(({table, apiVersion, usage, isModal, isPreview, a
setMode={doSetMode}
savedViewsComponent={savedViewsComponent}
columnMenuComponent={buildColumnMenu()}
+ omitExposedJoins={omitExposedJoins}
/>
}
@@ -3000,7 +3003,8 @@ const RecordQuery = forwardRef(({table, apiVersion, usage, isModal, isPreview, a
metaData: metaData,
queryFilter: queryFilter,
updateFilter: doSetQueryFilter,
- allowVariables: allowVariables
+ allowVariables: allowVariables,
+ omitExposedJoins: omitExposedJoins,
}
}}
localeText={{