fix(plugin-chart-echarts): Apply temporary filters to Query B in explore (#18998)
* fix(explore): Extra filters not applied to query b in mixed timeseries * Add return type * Apply review comment * Fix non-dnd filters
This commit is contained in:
parent
5a5ff99c37
commit
9f834e8317
|
|
@ -80,7 +80,7 @@ export const dndEntity: typeof dndGroupByControl = {
|
|||
export const dnd_adhoc_filters: SharedControlConfig<'DndFilterSelect'> = {
|
||||
type: 'DndFilterSelect',
|
||||
label: t('Filters'),
|
||||
default: null,
|
||||
default: [],
|
||||
description: '',
|
||||
mapStateToProps: ({ datasource, form_data }) => ({
|
||||
columns: datasource?.columns.filter(c => c.filterable) || [],
|
||||
|
|
|
|||
|
|
@ -458,7 +458,7 @@ const x_axis_time_format: SharedControlConfig<'SelectControl'> = {
|
|||
const adhoc_filters: SharedControlConfig<'AdhocFilterControl'> = {
|
||||
type: 'AdhocFilterControl',
|
||||
label: t('Filters'),
|
||||
default: null,
|
||||
default: [],
|
||||
description: '',
|
||||
mapStateToProps: ({ datasource, form_data }) => ({
|
||||
columns: datasource?.columns.filter(c => c.filterable) || [],
|
||||
|
|
|
|||
|
|
@ -0,0 +1,84 @@
|
|||
# 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.
|
||||
"""change_adhoc_filter_b_from_none_to_empty_array
|
||||
|
||||
Revision ID: 7293b0ca7944
|
||||
Revises: b8d3a24d9131
|
||||
Create Date: 2022-03-02 16:41:36.350540
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = "7293b0ca7944"
|
||||
down_revision = "ab9a9d86e695"
|
||||
|
||||
|
||||
import json
|
||||
|
||||
from alembic import op
|
||||
from sqlalchemy import Column, Integer, String, Text
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
|
||||
from superset import db
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
|
||||
class Slice(Base):
|
||||
__tablename__ = "slices"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
params = Column(Text)
|
||||
viz_type = Column(String(250))
|
||||
|
||||
|
||||
def upgrade():
|
||||
bind = op.get_bind()
|
||||
session = db.Session(bind=bind)
|
||||
|
||||
for slc in session.query(Slice).filter(Slice.viz_type == "mixed_timeseries").all():
|
||||
try:
|
||||
params = json.loads(slc.params)
|
||||
|
||||
adhoc_filters_b = params.get("adhoc_filters_b", None)
|
||||
if not adhoc_filters_b:
|
||||
params["adhoc_filters_b"] = []
|
||||
slc.params = json.dumps(params, sort_keys=True)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
session.commit()
|
||||
session.close()
|
||||
|
||||
|
||||
def downgrade():
|
||||
bind = op.get_bind()
|
||||
session = db.Session(bind=bind)
|
||||
|
||||
for slc in session.query(Slice).filter(Slice.viz_type == "mixed_timeseries").all():
|
||||
try:
|
||||
params = json.loads(slc.params)
|
||||
|
||||
adhoc_filters_b = params.get("adhoc_filters_b", [])
|
||||
if not adhoc_filters_b:
|
||||
del params["adhoc_filters_b"]
|
||||
slc.params = json.dumps(params, sort_keys=True)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
session.commit()
|
||||
session.close()
|
||||
|
|
@ -1081,11 +1081,13 @@ def merge_extra_form_data(form_data: Dict[str, Any]) -> None:
|
|||
{"isExtra": True, **fltr} for fltr in append_adhoc_filters # type: ignore
|
||||
)
|
||||
if append_filters:
|
||||
adhoc_filters.extend(
|
||||
simple_filter_to_adhoc({"isExtra": True, **fltr}) # type: ignore
|
||||
for fltr in append_filters
|
||||
if fltr
|
||||
)
|
||||
for key, value in form_data.items():
|
||||
if re.match("adhoc_filter.*", key):
|
||||
value.extend(
|
||||
simple_filter_to_adhoc({"isExtra": True, **fltr}) # type: ignore
|
||||
for fltr in append_filters
|
||||
if fltr
|
||||
)
|
||||
|
||||
|
||||
def merge_extra_filters(form_data: Dict[str, Any]) -> None:
|
||||
|
|
|
|||
Loading…
Reference in New Issue