/** * 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 React from 'react'; import { FeatureFlag, isFeatureEnabled, t } from '@superset-ui/core'; import { ControlPanelConfig, ControlPanelsContainerProps, D3_TIME_FORMAT_DOCS, emitFilterControl, sections, sharedControls, } from '@superset-ui/chart-controls'; import { DEFAULT_FORM_DATA, EchartsTimeseriesContributionType } from '../types'; import { legendSection, richTooltipSection, showValueSectionWithoutStack, xAxisControl, } from '../../controls'; const { contributionMode, logAxis, markerEnabled, markerSize, minorSplitLine, rowLimit, truncateYAxis, yAxisBounds, zoomable, xAxisLabelRotation, } = DEFAULT_FORM_DATA; const config: ControlPanelConfig = { controlPanelSections: [ sections.legacyTimeseriesTime, { label: t('Query'), expanded: true, controlSetRows: [ isFeatureEnabled(FeatureFlag.GENERIC_CHART_AXES) ? [xAxisControl] : [], ['metrics'], ['groupby'], [ { name: 'contributionMode', config: { type: 'SelectControl', label: t('Contribution Mode'), default: contributionMode, choices: [ [null, 'None'], [EchartsTimeseriesContributionType.Row, 'Row'], [EchartsTimeseriesContributionType.Column, 'Series'], ], description: t('Calculate contribution per series or row'), }, }, ], ['adhoc_filters'], emitFilterControl, ['limit'], ['timeseries_limit_metric'], ['order_desc'], ['row_limit'], ], }, sections.advancedAnalyticsControls, sections.annotationsAndLayersControls, sections.forecastIntervalControls, sections.titleControls, { label: t('Chart Options'), expanded: true, controlSetRows: [ ['color_scheme'], ...showValueSectionWithoutStack, [ { name: 'markerEnabled', config: { type: 'CheckboxControl', label: t('Marker'), renderTrigger: true, default: markerEnabled, description: t( 'Draw a marker on data points. Only applicable for line types.', ), }, }, ], [ { name: 'markerSize', config: { type: 'SliderControl', label: t('Marker Size'), renderTrigger: true, min: 0, max: 20, default: markerSize, description: t( 'Size of marker. Also applies to forecast observations.', ), visibility: ({ controls }: ControlPanelsContainerProps) => Boolean(controls?.markerEnabled?.value), }, }, ], [ { name: 'zoomable', config: { type: 'CheckboxControl', label: t('Data Zoom'), default: zoomable, renderTrigger: true, description: t('Enable data zooming controls'), }, }, ], ...legendSection, [