Skip to content
Snippets Groups Projects
Unverified Commit 04453ea4 authored by Ryan Laurie's avatar Ryan Laurie Committed by GitHub
Browse files

Disable erroring json filters (#23872)

* disable erroring json filters
* better summarize action handling
parent 0348dd13
No related branches found
No related tags found
No related merge requests found
/* eslint-disable react/prop-types */
import React from "react";
import { t } from "ttag";
import { TYPE, isa } from "metabase/lib/types";
import Filter from "metabase-lib/lib/queries/structured/Filter";
import FilterPopover from "metabase/query_builder/components/filters/FilterPopover";
const INVALID_TYPES = [TYPE.Structured];
export default function ColumnFilterDrill({ question, clicked }) {
const query = question.query();
if (
......@@ -13,6 +15,7 @@ export default function ColumnFilterDrill({ question, clicked }) {
!query.isEditable() ||
!clicked ||
!clicked.column ||
INVALID_TYPES.some(type => isa(clicked.column.base_type, type)) ||
clicked.column.field_ref == null ||
clicked.value !== undefined
) {
......
/* eslint-disable react/prop-types */
import { t } from "ttag";
import { TYPE, isa } from "metabase/lib/types";
import _ from "underscore";
const DENYLIST_TYPES = [
TYPE.PK,
......@@ -15,7 +14,7 @@ export default ({ question, clicked }) => {
!clicked ||
!clicked.column ||
clicked.value !== undefined ||
_.any(DENYLIST_TYPES, t => isa(clicked.column.semantic_type, t)) ||
DENYLIST_TYPES.some(t => isa(clicked.column.semantic_type, t)) ||
!question.query().isEditable()
) {
return [];
......
/* eslint-disable react/prop-types */
import React from "react";
import { jt } from "ttag";
import { isFK, isPK } from "metabase/lib/types";
import { isFK, isPK, TYPE, isa } from "metabase/lib/types";
import { isLocalField } from "metabase/lib/query/field_ref";
import { isDate, isNumeric } from "metabase/lib/schema_metadata";
import { singularize, pluralize, stripId } from "metabase/lib/formatting";
const INVALID_TYPES = [TYPE.Structured];
function getFiltersForColumn(column) {
if (isNumeric(column) || isDate(column)) {
return [
......@@ -14,11 +17,13 @@ function getFiltersForColumn(column) {
{ name: "=", operator: "=" },
{ name: "", operator: "!=" },
];
} else {
} else if (!INVALID_TYPES.some(type => isa(column.base_type, type))) {
return [
{ name: "=", operator: "=" },
{ name: "", operator: "!=" },
];
} else {
return [];
}
}
......
import { t } from "ttag";
import Dimension from "metabase-lib/lib/Dimension";
import { TYPE, isa } from "metabase/lib/types";
const INVALID_TYPES = [TYPE.Structured];
export default ({ question, clicked }) => {
const query = question.query();
......@@ -11,6 +14,7 @@ export default ({ question, clicked }) => {
!clicked ||
!clicked.column ||
clicked.value !== undefined ||
INVALID_TYPES.some(type => isa(clicked.column.base_type, type)) ||
!clicked.column.source
) {
return [];
......
/* eslint-disable react/prop-types */
import { fieldRefForColumn } from "metabase/lib/dataset";
import { t } from "ttag";
import _ from "underscore";
import { TYPE, isa } from "metabase/lib/types";
import {
getAggregationOperator,
isCompatibleAggregationOperatorForField,
} from "metabase/lib/schema_metadata";
import { t } from "ttag";
const INVALID_TYPES = [TYPE.Structured];
const AGGREGATIONS = {
sum: {
......@@ -26,7 +31,11 @@ const AGGREGATIONS = {
export default ({ question, clicked = {} }) => {
const { column, value } = clicked;
if (!column || value !== undefined) {
if (
!column ||
value !== undefined ||
_.any(INVALID_TYPES, type => isa(clicked.column.base_type, type))
) {
return [];
}
......
......@@ -18,7 +18,7 @@ import { BulkFilterItem } from "../BulkFilterItem";
import { SegmentFilterSelect } from "../BulkFilterSelect";
import { InlineOperatorSelector } from "../InlineOperatorSelector";
import { ListRoot, ListRow, FilterContainer } from "./BulkFilterList.styled";
import { sortDimensions } from "./utils";
import { sortDimensions, isDimensionValid } from "./utils";
export interface BulkFilterListProps {
query: StructuredQuery;
......@@ -43,7 +43,10 @@ const BulkFilterList = ({
}: BulkFilterListProps): JSX.Element => {
const [dimensions, segments] = useMemo(
() => [
options.filter(isDimensionOption).sort(sortDimensions),
options
.filter(isDimensionOption)
.filter(isDimensionValid)
.sort(sortDimensions),
options.filter(isSegmentOption),
],
[options],
......
......@@ -57,3 +57,6 @@ const getSortValue = (dimensionOption: DimensionOption): number => {
export const sortDimensions = (a: DimensionOption, b: DimensionOption) =>
getSortValue(a) - getSortValue(b);
export const isDimensionValid = (dimensionOption: DimensionOption) =>
dimensionOption.dimension.field().base_type !== "type/Structured";
......@@ -146,8 +146,12 @@ class ChartClickActions extends Component {
}
const groupedClickActions = _.groupBy(clickActions, "section");
if (groupedClickActions["sum"] && groupedClickActions["sum"].length === 1) {
if (groupedClickActions?.["sum"]?.length === 1) {
// if there's only one "sum" click action, merge it into "summarize" and change its button type and icon
if (!groupedClickActions?.["summarize"]) {
groupedClickActions["summarize"] = [];
}
groupedClickActions["summarize"].push({
...groupedClickActions["sum"][0],
buttonType: "horizontal",
......@@ -156,8 +160,8 @@ class ChartClickActions extends Component {
delete groupedClickActions["sum"];
}
const hasOnlyOneSortAction = groupedClickActions["sort"]?.length === 1;
if (clicked.column?.source === "native" && hasOnlyOneSortAction) {
// restyle the Formatting action for SQL columns
if (hasOnlyOneSortAction) {
// restyle the Formatting action when there is only one option
groupedClickActions["sort"][0] = {
...groupedClickActions["sort"][0],
buttonType: "horizontal",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment