Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

Commit

Permalink
fix(chart): chart updates are not retained (apache#23627)
Browse files Browse the repository at this point in the history
(cherry picked from commit f5b1711)
  • Loading branch information
justinpark authored and john-bodley committed Apr 27, 2023
1 parent 99bb1a1 commit b1cac84
Show file tree
Hide file tree
Showing 7 changed files with 371 additions and 135 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,10 @@ export function interceptExploreJson() {
}

export function interceptExploreGet() {
cy.intercept('GET', `/api/v1/explore/?slice_id=**`).as('getExplore');
cy.intercept({
method: 'GET',
url: /api\/v1\/explore\/\?(form_data_key|dashboard_page_id|slice_id)=.*/,
}).as('getExplore');
}

export function setFilter(filter: string, option: string) {
Expand Down
79 changes: 79 additions & 0 deletions superset-frontend/spec/fixtures/mockDashboardFormData.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/* eslint-disable theme-colors/no-literal-colors */
import { JsonObject } from '@superset-ui/core';

export const getDashboardFormData = (overrides: JsonObject = {}) => ({
label_colors: {
Girls: '#FF69B4',
Boys: '#ADD8E6',
girl: '#FF69B4',
boy: '#ADD8E6',
},
shared_label_colors: {
boy: '#ADD8E6',
girl: '#FF69B4',
},
color_scheme: 'd3Category20b',
extra_filters: [
{
col: '__time_range',
op: '==',
val: 'No filter',
},
{
col: '__time_grain',
op: '==',
val: 'P1D',
},
{
col: '__time_col',
op: '==',
val: 'ds',
},
],
extra_form_data: {
filters: [
{
col: 'name',
op: 'IN',
val: ['Aaron'],
},
{
col: 'num_boys',
op: '<=',
val: 10000,
},
{
col: {
sqlExpression: 'totally viable sql expression',
expressionType: 'SQL',
label: 'My column',
},
op: 'IN',
val: ['Value1', 'Value2'],
},
],
granularity_sqla: 'ds',
time_range: 'Last month',
time_grain_sqla: 'PT1S',
},
dashboardId: 2,
...overrides,
});
87 changes: 87 additions & 0 deletions superset-frontend/spec/fixtures/mockExploreFormData.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { JsonObject } from '@superset-ui/core';

export const getExploreFormData = (overrides: JsonObject = {}) => ({
adhoc_filters: [
{
clause: 'WHERE' as const,
expressionType: 'SIMPLE' as const,
operator: 'IN' as const,
subject: 'gender',
comparator: ['boys'],
filterOptionName: '123',
},
{
clause: 'WHERE' as const,
expressionType: 'SQL' as const,
operator: null,
subject: null,
comparator: null,
sqlExpression: "name = 'John'",
filterOptionName: '456',
},
{
clause: 'WHERE' as const,
expressionType: 'SQL' as const,
operator: null,
subject: null,
comparator: null,
sqlExpression: "city = 'Warsaw'",
filterOptionName: '567',
},
{
clause: 'WHERE' as const,
expressionType: 'SIMPLE' as const,
operator: 'TEMPORAL_RANGE' as const,
subject: 'ds',
comparator: 'No filter',
filterOptionName: '678',
},
],
adhoc_filters_b: [
{
clause: 'WHERE' as const,
expressionType: 'SQL' as const,
operator: null,
subject: null,
comparator: null,
sqlExpression: "country = 'Poland'",
filterOptionName: '789',
},
],
applied_time_extras: {},
color_scheme: 'supersetColors',
datasource: '2__table',
granularity_sqla: 'ds',
groupby: ['gender'],
metric: {
aggregate: 'SUM',
column: {
column_name: 'num',
type: 'BIGINT',
},
expressionType: 'SIMPLE',
label: 'Births',
},
slice_id: 46,
time_range: '100 years ago : now',
viz_type: 'pie',
...overrides,
});
4 changes: 3 additions & 1 deletion superset-frontend/src/explore/components/SaveModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,9 @@ class SaveModal extends React.Component<SaveModalProps, SaveModalState> {

const searchParams = new URLSearchParams(window.location.search);
searchParams.set('save_action', this.state.action);
searchParams.delete('form_data_key');
if (this.state.action !== 'overwrite') {
searchParams.delete('form_data_key');
}
if (this.state.action === 'saveas') {
searchParams.set('slice_id', value.id.toString());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,135 +18,10 @@
*/

import { JsonObject } from '@superset-ui/core';
import { getExploreFormData } from 'spec/fixtures/mockExploreFormData';
import { getDashboardFormData } from 'spec/fixtures/mockDashboardFormData';
import { getFormDataWithDashboardContext } from './getFormDataWithDashboardContext';

const getExploreFormData = (overrides: JsonObject = {}) => ({
adhoc_filters: [
{
clause: 'WHERE' as const,
expressionType: 'SIMPLE' as const,
operator: 'IN' as const,
subject: 'gender',
comparator: ['boys'],
filterOptionName: '123',
},
{
clause: 'WHERE' as const,
expressionType: 'SQL' as const,
operator: null,
subject: null,
comparator: null,
sqlExpression: "name = 'John'",
filterOptionName: '456',
},
{
clause: 'WHERE' as const,
expressionType: 'SQL' as const,
operator: null,
subject: null,
comparator: null,
sqlExpression: "city = 'Warsaw'",
filterOptionName: '567',
},
{
clause: 'WHERE' as const,
expressionType: 'SIMPLE' as const,
operator: 'TEMPORAL_RANGE' as const,
subject: 'ds',
comparator: 'No filter',
filterOptionName: '678',
},
],
adhoc_filters_b: [
{
clause: 'WHERE' as const,
expressionType: 'SQL' as const,
operator: null,
subject: null,
comparator: null,
sqlExpression: "country = 'Poland'",
filterOptionName: '789',
},
],
applied_time_extras: {},
color_scheme: 'supersetColors',
datasource: '2__table',
granularity_sqla: 'ds',
groupby: ['gender'],
metric: {
aggregate: 'SUM',
column: {
column_name: 'num',
type: 'BIGINT',
},
expressionType: 'SIMPLE',
label: 'Births',
},
slice_id: 46,
time_range: '100 years ago : now',
viz_type: 'pie',
...overrides,
});

const getDashboardFormData = (overrides: JsonObject = {}) => ({
label_colors: {
Girls: '#FF69B4',
Boys: '#ADD8E6',
girl: '#FF69B4',
boy: '#ADD8E6',
},
shared_label_colors: {
boy: '#ADD8E6',
girl: '#FF69B4',
},
color_scheme: 'd3Category20b',
extra_filters: [
{
col: '__time_range',
op: '==',
val: 'No filter',
},
{
col: '__time_grain',
op: '==',
val: 'P1D',
},
{
col: '__time_col',
op: '==',
val: 'ds',
},
],
extra_form_data: {
filters: [
{
col: 'name',
op: 'IN',
val: ['Aaron'],
},
{
col: 'num_boys',
op: '<=',
val: 10000,
},
{
col: {
sqlExpression: 'totally viable sql expression',
expressionType: 'SQL',
label: 'My column',
},
op: 'IN',
val: ['Value1', 'Value2'],
},
],
granularity_sqla: 'ds',
time_range: 'Last month',
time_grain_sqla: 'PT1S',
},
dashboardId: 2,
...overrides,
});

const getExpectedResultFormData = (overrides: JsonObject = {}) => ({
adhoc_filters: [
{
Expand Down
Loading

0 comments on commit b1cac84

Please sign in to comment.