Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ describe('Horizontal FilterBar', () => {
cy.get(nativeFilters.filtersPanel.filterGear).click({
force: true,
});
cy.get('.ant-dropdown-menu').should('be.visible');
cy.getBySel('filter-bar__create-filter').should('exist');
cy.getBySel('filterbar-action-buttons').should('exist');
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,7 @@ describe('Native filters', () => {
cy.get(nativeFilters.filtersPanel.filterGear).click({
force: true,
});
cy.get('.ant-dropdown-menu').should('be.visible');
cy.get(nativeFilters.filterFromDashboardView.createFilterButton).should(
'be.visible',
);
Expand Down Expand Up @@ -405,6 +406,8 @@ describe('Native filters', () => {
it('Verify setting options and tooltips for value filter', () => {
enterNativeFilterEditModal(false);
cy.contains('Filter value is required').scrollIntoView();
cy.get('body').trigger('mousemove', { clientX: 0, clientY: 0 });
cy.wait(300);

cy.contains('Filter value is required').should('be.visible').click({
force: true,
Expand Down
10 changes: 8 additions & 2 deletions superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ export function enterNativeFilterEditModal(waitForDataset = true) {
cy.get(nativeFilters.filtersPanel.filterGear).click({
force: true,
});
cy.get('.ant-dropdown-menu').should('be.visible');
cy.get(nativeFilters.filterFromDashboardView.createFilterButton).click({
force: true,
});
Expand All @@ -252,7 +253,9 @@ export function enterNativeFilterEditModal(waitForDataset = true) {
* @summary helper for adding new filter
************************************************************************* */
export function clickOnAddFilterInModal() {
return cy.get(nativeFilters.modal.addNewFilterButton).click({ force: true });
cy.get('[data-test="new-item-dropdown-button"]').trigger('mouseover');
cy.get('.ant-dropdown-menu').should('be.visible');
cy.contains('.ant-dropdown-menu-item', 'Add filter').click();
}

/** ************************************************************************
Expand Down Expand Up @@ -459,10 +462,13 @@ export function checkNativeFilterTooltip(index: number, value: string) {
cy.get(nativeFilters.filterConfigurationSections.infoTooltip)
.eq(index)
.trigger('mouseover');
cy.contains(`${value}`);
cy.contains(`${value}`).should('be.visible');
cy.wait(100);
cy.get(nativeFilters.filterConfigurationSections.infoTooltip)
.eq(index)
.trigger('mouseout');
cy.get('body').trigger('mousemove', { clientX: 0, clientY: 0 });
cy.wait(500);
}

/** ************************************************************************
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export type HandlerFunction = (...args: unknown[]) => void;
export enum Behavior {
InteractiveChart = 'INTERACTIVE_CHART',
NativeFilter = 'NATIVE_FILTER',
ChartCustomization = 'CHART_CUSTOMIZATION',

/**
* Include `DRILL_TO_DETAIL` behavior if plugin handles `contextmenu` event
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ export const EXTRA_FORM_DATA_OVERRIDE_REGULAR_MAPPINGS: Record<
time_grain: 'time_grain',
time_range: 'time_range',
time_compare: 'time_compare',
visible_deckgl_layers: 'visible_deckgl_layers',
};

export const EXTRA_FORM_DATA_OVERRIDE_REGULAR_KEYS = Object.keys(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ export * from './types/Column';
export * from './types/Datasource';
export * from './types/Metric';
export * from './types/Query';
export * from './types/Dashboard';

export * from './api/v1/types';
export { default as makeApi } from './api/v1/makeApi';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@

import { AdhocFilter, DataMask } from '@superset-ui/core';

export interface ColumnOption {
label: string;
value: string;
}

export interface NativeFilterColumn {
name: string;
displayName?: string;
Expand All @@ -44,6 +49,11 @@ export enum NativeFilterType {
Divider = 'DIVIDER',
}

export enum ChartCustomizationType {
ChartCustomization = 'CHART_CUSTOMIZATION',
Divider = 'CHART_CUSTOMIZATION_DIVIDER',
}

export enum DataMaskType {
NativeFilters = 'nativeFilters',
CrossFilters = 'crossFilters',
Expand All @@ -61,9 +71,7 @@ export type Filter = {
name: string;
scope: NativeFilterScope;
filterType: string;
// for now there will only ever be one target
// when multiple targets are supported, change this to Target[]
targets: [Partial<NativeFilterTarget>];
targets: Partial<NativeFilterTarget>[];
controlValues: {
[key: string]: any;
};
Expand All @@ -80,6 +88,35 @@ export type Filter = {
description: string;
};

export type ChartCustomization = {
id: string;
type: typeof ChartCustomizationType.ChartCustomization;
name: string;
filterType: string;
targets: Partial<NativeFilterTarget>[];
scope: NativeFilterScope;
chartsInScope?: number[];
tabsInScope?: string[];
cascadeParentIds?: string[];
defaultDataMask: DataMask;
controlValues: {
sortAscending?: boolean;
sortMetric?: string;
[key: string]: any;
};
description?: string;
removed?: boolean;
};

export type ChartCustomizationDivider = Partial<
Omit<ChartCustomization, 'id' | 'type'>
> & {
id: string;
title: string;
description: string;
type: typeof ChartCustomizationType.Divider;
};

export type AppliedFilter = {
values: {
filters: Record<string, any>[];
Expand Down Expand Up @@ -146,10 +183,30 @@ export function isFilterDivider(
return filterElement.type === NativeFilterType.Divider;
}

export function isChartCustomization(
filterElement:
| Filter
| Divider
| ChartCustomization
| ChartCustomizationDivider,
): filterElement is ChartCustomization {
return filterElement.type === ChartCustomizationType.ChartCustomization;
}

export function isChartCustomizationDivider(
filterElement: ChartCustomization | ChartCustomizationDivider,
): filterElement is ChartCustomizationDivider {
return filterElement.type === ChartCustomizationType.Divider;
}

export type FilterConfiguration = Array<Filter | Divider>;

export type Filters = {
[filterId: string]: Filter | Divider;
[filterId: string]:
| Filter
| Divider
| ChartCustomization
| ChartCustomizationDivider;
};

export type PartialFilters = {
Expand All @@ -162,6 +219,22 @@ export type NativeFiltersState = {
hoveredFilterId?: string;
};

export type ChartCustomizationConfiguration = Array<
ChartCustomization | ChartCustomizationDivider
>;

export type ChartCustomizations = {
[chartCustomizationId: string]:
| ChartCustomization
| ChartCustomizationDivider;
};

export type PartialChartCustomizations = {
[chartCustomizationId: string]: Partial<
ChartCustomizations[keyof ChartCustomizations]
>;
};

export type DashboardComponentMetadata = {
nativeFilters: NativeFiltersState;
dataMask: DataMaskStateWithId;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,8 @@ export interface QueryObject
series_columns?: QueryFormColumn[];
series_limit?: number;
series_limit_metric?: Maybe<QueryFormMetric>;

visible_deckgl_layers?: number[];
}

export interface QueryContext {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,10 @@ export type ExtraFormDataOverrideRegular = Partial<
> &
Partial<Pick<SqlaFormData, 'granularity'>> &
Partial<Pick<BaseFormData, 'time_range'>> &
Partial<Pick<QueryObject, 'time_column' | 'time_grain' | 'time_compare'>>;
Partial<Pick<QueryObject, 'time_column' | 'time_grain' | 'time_compare'>> & {
/** deck.gl layer visibility filter - controls which layers are visible in deck.gl multi-layer charts */
visible_deckgl_layers?: number[];
};

/** These parameters override those already present in the form data/query object */
export type ExtraFormDataOverride = ExtraFormDataOverrideRegular &
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import DeckGL from '@deck.gl/react';
import type { Layer } from '@deck.gl/core';
import { JsonObject, JsonValue, usePrevious } from '@superset-ui/core';
import { styled } from '@apache-superset/core/ui';
import { Device } from '@luma.gl/core';
import Tooltip, { TooltipProps } from './components/Tooltip';
import 'mapbox-gl/dist/mapbox-gl.css';
import { Viewport } from './utils/fitViewport';
Expand Down Expand Up @@ -168,7 +169,10 @@ export const DeckGLContainer = memo(
layers={layers()}
viewState={viewState}
onViewStateChange={onViewStateChange}
onAfterRender={(context: any) => {
onAfterRender={(context: {
device: Device;
gl: WebGL2RenderingContext;
}) => {
glContextRef.current = context.gl;
}}
>
Expand Down
Loading
Loading