From 8b4973ba0c7553e10c8f99cb871a115b841832d5 Mon Sep 17 00:00:00 2001 From: scespinoza Date: Fri, 16 Jan 2026 11:33:08 -0300 Subject: [PATCH 1/3] fix(de): moves empty results state within the table view --- src/components/ExplorerResults.tsx | 11 +---------- src/components/TableView.tsx | 7 ++++--- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/components/ExplorerResults.tsx b/src/components/ExplorerResults.tsx index 1c7a5f6..3dee4dc 100644 --- a/src/components/ExplorerResults.tsx +++ b/src/components/ExplorerResults.tsx @@ -221,16 +221,7 @@ function SuccessResult( cube }); - if (data?.length === 0 && !isLoading && !isError) { - return ( - } - title={t("results.error_emptyresult_title")} - description={t("results.error_emptyresult_detail")} - /> - ); - } + return ( }) => { }; const NoRecords = React.memo(() => { + const {translate: t} = useTranslation(); return ( -
- - No records to display. +
+ + {t("results.error_emptyresult_detail")}
); From 9388c6da34c60ae36b3a432b46b6599cc8949a5a Mon Sep 17 00:00:00 2001 From: scespinoza Date: Fri, 16 Jan 2026 11:36:25 -0300 Subject: [PATCH 2/3] fix(de): fix `ExplorerResults` props type definition. --- src/components/ExplorerResults.tsx | 3 ++- src/utils/types.ts | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/ExplorerResults.tsx b/src/components/ExplorerResults.tsx index 3dee4dc..1afe143 100644 --- a/src/components/ExplorerResults.tsx +++ b/src/components/ExplorerResults.tsx @@ -20,6 +20,7 @@ import {useSelector} from "react-redux"; import {useSettings} from "../hooks/settings"; import {useTranslation} from "../hooks/translation"; import {selectCurrentQueryItem, selectIsPreviewMode} from "../state/queries"; +import type {QueryResult} from "../utils/structs"; import type {PanelDescriptor, ViewProps} from "../utils/types"; import AddColumnsDrawer from "./DrawerMenu"; import {ExplorerTabs} from "./ExplorerTabs"; @@ -303,7 +304,7 @@ function SuccessResult( cube={cube} params={params} data={data as TData[]} - result={result} + result={result as QueryResult | undefined} table={table} isError={isError} isLoading={isLoading} diff --git a/src/utils/types.ts b/src/utils/types.ts index 789524e..0dbca07 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -41,6 +41,7 @@ export interface ViewProps = Record>; isError?: boolean; isLoading?: boolean; + isFetching?: boolean; data?: Record[]; columns?: MRT_ColumnDef[]; pagination?: MRT_PaginationState; From d5ab48f0323227836d0601b056611adfe73fecbc Mon Sep 17 00:00:00 2001 From: scespinoza Date: Thu, 29 Jan 2026 09:46:45 -0300 Subject: [PATCH 3/3] fixes column inference that caused disappearing measure filter --- src/utils/object.ts | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/src/utils/object.ts b/src/utils/object.ts index 7847b23..bc363fb 100644 --- a/src/utils/object.ts +++ b/src/utils/object.ts @@ -53,28 +53,34 @@ export function describeData( if (!entityResult) return null; const [entity] = entityResult; + let entityType: AnyResultColumn["entityType"]; + if (hasProperty(entity, "aggregator")) { + entityType = "measure"; + } else if (hasProperty(entity, "depth")) { + entityType = "level"; + } else { + entityType = "property"; + } + const typeSet = new Set(result.data.map(item => typeof item[column])); - const valueType = - typeSet.size === 1 - ? typeSet.has("number") - ? "number" - : typeSet.has("boolean") - ? "boolean" - : /* else */ "string" - : typeSet.has("number") - ? "number" - : "string"; + let valueType: AnyResultColumn["valueType"]; + if (entityType === "measure" || typeSet.has("number")) { + valueType = "number"; + } else if (typeSet.size === 1 && typeSet.has("boolean")) { + valueType = "boolean"; + } else { + valueType = "string"; + } + const isId = column !== entity.name; - const entityType = hasProperty(entity, "aggregator") - ? "measure" - : hasProperty(entity, "depth") - ? "level" - : "property"; + const caption = getCaption(entity, locale) || column; + const localeLabel = isId ? `${caption} ID` : caption; + return [ column, { label: column, - localeLabel: getCaption(entity, locale) + (isId ? " ID" : "") || column, + localeLabel, entity, entityType, isId,