Skip to content
Snippets Groups Projects
Commit a0adcc98 authored by Tom Robinson's avatar Tom Robinson
Browse files

Misc cleanup / flow fixes

parent 10498efb
No related branches found
No related tags found
No related merge requests found
Showing
with 56 additions and 48 deletions
......@@ -79,6 +79,11 @@ export default class Question {
*/
_parameterValues: ParameterValues;
/**
* Bound update function, if any
*/
_update: ?QuestionUpdateFn
/**
* Question constructor
*/
......@@ -86,7 +91,7 @@ export default class Question {
metadata: Metadata,
card: CardObject,
parameterValues?: ParameterValues,
update?: QuestionUpdateFn,
update?: ?QuestionUpdateFn,
) {
this._metadata = metadata;
this._card = card;
......@@ -158,8 +163,10 @@ export default class Question {
// TODO: if update returns a new card, create a new Question based on that and return it
if (update) {
update(this, ...args);
} else {
} else if (this._update) {
this._update(this, ...args);
} else {
throw new Error("Question update function not provided or bound");
}
}
......
......@@ -8,6 +8,12 @@ import Icon from "metabase/components/Icon.jsx";
import ListSearchField from "metabase/components/ListSearchField.jsx";
import { List, CellMeasurer, CellMeasurerCache } from "react-virtualized";
export type RenderItemWrapper = (
item: any,
itemIndex: number,
children?: any,
) => React$Element;
export default class AccordianList extends Component {
constructor(props, context) {
super(props, context);
......@@ -54,6 +60,7 @@ export default class AccordianList extends Component {
itemIsClickable: PropTypes.func,
renderItem: PropTypes.func,
renderSectionIcon: PropTypes.func,
renderItemWrapper: PropTypes.func,
getItemClasses: PropTypes.func,
alwaysTogglable: PropTypes.bool,
alwaysExpanded: PropTypes.bool,
......
......@@ -59,7 +59,7 @@ export default (name: string, icon: string, fieldFilter: FieldFilter) => ({
popover: ({ onChangeCardAndRun, onClose }: ClickActionPopoverProps) => (
<BreakoutPopover
query={query}
fieldOptions={breakoutOptions}
breakoutOptions={breakoutOptions}
onCommitBreakout={breakout => {
const nextCard = question.pivot([breakout], dimensions).card();
......
/* @flow weak */
/* @flow */
import React from "react";
......@@ -11,14 +11,21 @@ import { format } from "metabase/lib/expressions/formatter";
import FieldName from "./FieldName";
const AggregationName = ({
aggregation,
query,
// DEPRECATED:
tableMetadata = query && query.tableMetadata(),
customFields = query && query.expressions(),
}) =>
NamedClause.isNamed(aggregation) ? (
import type { Aggregation } from "metabase/meta/types/Query";
import StructuredQuery from "metabase-lib/lib/queries/StructuredQuery";
type Props = {
aggregation: Aggregation,
query: StructuredQuery,
};
const AggregationName = ({ aggregation, query }: Props) => {
const tableMetadata = query.tableMetadata();
const customFields = query.expressions();
if (!tableMetadata) {
return null;
}
return NamedClause.isNamed(aggregation) ? (
<NamedAggregation aggregation={aggregation} />
) : AggregationClause.isCustom(aggregation) ? (
<CustomAggregation
......@@ -38,6 +45,7 @@ const AggregationName = ({
customFields={customFields}
/>
);
};
const NamedAggregation = ({ aggregation }) => (
<span>{NamedClause.getName(aggregation)}</span>
......
import React from "react";
import type { Breakout as BreakoutT } from "metabase/meta/types/Query";
import Metadata from "metabase-lib/lib/metadata/Metadata";
import FieldName from "./FieldName.jsx";
type Props = {
breakout: BreakoutT,
query: any,
};
const Breakout = ({ breakout, query, ...props }) => (
<FieldName
field={breakout}
tableMetadata={query.tableMetadata()}
query={query}
{...props}
/>
);
export default Breakout;
/* @flow */
import React from "react";
import type { Breakout as BreakoutT } from "metabase/meta/types/Query";
import Metadata from "metabase-lib/lib/metadata/Metadata";
import type { Breakout } from "metabase/meta/types/Query";
import StructuredQuery from "metabase-lib/lib/queries/StructuredQuery";
import FieldName from "./FieldName.jsx";
type Props = {
breakout: BreakoutT,
query: any,
breakout: Breakout,
query: StructuredQuery,
};
const BreakoutName = ({ breakout, query, ...props }) => (
const BreakoutName = ({ breakout, query, ...props }: Props) => (
<FieldName field={breakout} query={query} {...props} />
);
......
......@@ -6,24 +6,23 @@ import FieldList from "metabase/query_builder/components/FieldList.jsx";
import type { Breakout } from "metabase/meta/types/Query";
import type { TableMetadata, FieldOptions } from "metabase/meta/types/Metadata";
import StructuredQuery from "metabase-lib/lib/queries/StructuredQuery";
type Props = {
maxHeight?: number,
breakout?: Breakout,
query?: Query,
tableMetadata?: TableMetadata,
breakoutOptions?: FieldOptions,
onCommitBreakout: (breakout: Breakout) => void,
query: StructuredQuery,
breakoutOptions?: FieldOptions,
onClose?: () => void,
maxHeight?: number,
alwaysExpanded?: boolean,
};
const BreakoutPopover = ({
breakout,
query,
tableMetadata = query.tableMetadata(),
breakoutOptions = query.breakoutOptions(),
onCommitBreakout,
query,
breakoutOptions,
onClose,
maxHeight,
alwaysExpanded,
......@@ -31,15 +30,15 @@ const BreakoutPopover = ({
<FieldList
className="text-green"
maxHeight={maxHeight}
tableMetadata={tableMetadata}
field={breakout}
fieldOptions={breakoutOptions}
fieldOptions={breakoutOptions || query.breakoutOptions()}
onFieldChange={field => {
onCommitBreakout(field);
if (onClose) {
onClose();
}
}}
tableMetadata={query.tableMetdata()}
enableSubDimensions
alwaysExpanded={alwaysExpanded}
/>
......
......@@ -25,6 +25,7 @@ type Props = {
options: { run: boolean },
) => void,
features: GuiQueryEditorFeatures,
onClose?: () => void,
};
type State = {
......@@ -42,6 +43,7 @@ export class ExtendedOptionsPopover extends Component {
datasetQuery: PropTypes.object.isRequired,
tableMetadata: PropTypes.object,
setDatasetQuery: PropTypes.func.isRequired,
onClose: PropTypes.func,
};
static defaultProps = {
......
......@@ -14,6 +14,7 @@ import Dimension, { BinnedDimension } from "metabase-lib/lib/Dimension";
import type { ConcreteField } from "metabase/meta/types/Query";
import type Table from "metabase-lib/lib/metadata/Table";
import type { RenderItemWrapper } from "metabase/components/AccordianList.jsx";
// import type { Section } from "metabase/components/AccordianList";
export type AccordianListItem = {};
......@@ -26,6 +27,7 @@ export type AccordianListSection = {
type Props = {
className?: string,
maxHeight?: number,
width?: number,
field: ?ConcreteField,
onFieldChange: (field: ConcreteField) => void,
......@@ -40,6 +42,8 @@ type Props = {
useOriginalDimension?: boolean,
hideSectionHeader?: boolean,
renderItemWrapper?: RenderItemWrapper,
};
type State = {
......
......@@ -99,6 +99,7 @@ export default class TableInteractive extends Component {
columnHasResized: { [key: number]: boolean };
columnNeedsResize: { [key: number]: boolean };
_div: HTMLElement;
_totalContentWidth: ?number;
header: GridComponent;
grid: GridComponent;
......
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