Skip to content

Commit

Permalink
Added tooltip in aggregation
Browse files Browse the repository at this point in the history
  • Loading branch information
harshada8989 committed Oct 4, 2022
1 parent 8742fa3 commit f6bf582
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 62 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,16 @@
* SPDX-License-Identifier: Apache-2.0
*/
import React, { Fragment } from 'react';
import { EuiButtonIcon, EuiLink, EuiPanel, EuiSpacer, EuiText, EuiTitle } from '@elastic/eui';
import {
EuiButtonIcon,
EuiIcon,
EuiLink,
EuiPanel,
EuiSpacer,
EuiText,
EuiTitle,
EuiToolTip,
} from '@elastic/eui';
import { isArray } from 'lodash';
import {
ConfigListEntry,
Expand All @@ -25,16 +34,42 @@ export const DataConfigPanelFields = ({
handleServiceRemove,
handleServiceEdit,
}: DataConfigPanelFieldProps) => {
const isAggregation = sectionName === AGGREGATIONS;
const isHeatMapAddButton = (name: string) => {
if (!list || !isArray(list) || visType !== VIS_CHART_TYPES.HeatMap) return false;
return name === AGGREGATIONS ? list.length >= 1 : list.length >= 2;
};

const tooltipIcon = <EuiIcon type="iInCircle" color="text" size="m" className="info-icon" />;
const crossIcon = (index: number) => (
<EuiButtonIcon
color="subdued"
iconType="cross"
aria-label="clear-field"
iconSize="s"
onClick={() => handleServiceRemove(index, sectionName)}
/>
);

const aggregationToolTip = (iconToDisplay: JSX.Element) => (
<EuiToolTip
position="right"
content="At least one metric is required to render a chart"
delay="regular"
anchorClassName="eui-textTruncate"
>
{iconToDisplay}
</EuiToolTip>
);

return (
<div className="panel_section">
<EuiTitle size="xxs" className="panel_title">
<h3>{sectionName}</h3>
</EuiTitle>
<div style={{ display: 'flex' }}>
<EuiTitle size="xxs" className="panel_title">
<h3>{sectionName}</h3>
</EuiTitle>
{isAggregation && aggregationToolTip(tooltipIcon)}
</div>
<EuiSpacer size="s" />
{isArray(list) &&
list.map((obj: ConfigListEntry, index: number) => (
Expand All @@ -46,17 +81,10 @@ export const DataConfigPanelFields = ({
tabIndex={0}
onClick={() => handleServiceEdit(false, index, sectionName)}
>
{obj[CUSTOM_LABEL] ||
`${sectionName === AGGREGATIONS ? obj.aggregation : ''} ${obj.label}`}
{obj[CUSTOM_LABEL] || `${isAggregation ? obj.aggregation : ''} ${obj.label}`}
</EuiLink>
</EuiText>
<EuiButtonIcon
color="subdued"
iconType="cross"
aria-label="clear-field"
iconSize="s"
onClick={() => handleServiceRemove(index, sectionName)}
/>
{isAggregation ? aggregationToolTip(crossIcon(index)) : crossIcon(index)}
</EuiPanel>
<EuiSpacer size="s" />
</Fragment>
Expand All @@ -69,7 +97,10 @@ export const DataConfigPanelFields = ({
aria-label="add-field"
iconSize="s"
color="primary"
disabled={sectionName === GROUPBY && visType === VIS_CHART_TYPES.Line}
disabled={
(sectionName === GROUPBY && visType === VIS_CHART_TYPES.Line) ||
visType === VIS_CHART_TYPES.Scatter
}
onClick={() => handleServiceAdd(sectionName)}
/>
</EuiPanel>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,15 +62,7 @@ export const DataConfigPanelItem = ({
queryManager,
}: DataConfigPanelProps) => {
const dispatch = useDispatch();
const {
tabId,
handleQuerySearch,
handleQueryChange,
setTempQuery,
fetchData,
changeVisualizationConfig,
curVisId,
} = useContext<any>(TabContext);
const { tabId, handleQueryChange, fetchData, curVisId } = useContext<any>(TabContext);
const { data } = visualizations;
const { data: vizData = {}, metadata: { fields = [] } = {} } = data?.rawVizData;
const {
Expand All @@ -89,43 +81,6 @@ export const DataConfigPanelItem = ({
setConfigList({
...userConfigs.dataConfig,
});
} else if (some(SPECIAL_RENDERING_VIZS, (visType) => visType === visualizations.vis.name)) {
// any vis that doesn't conform normal metrics/dimensions data confiurations
setConfigList({
...DEFAULT_DATA_CONFIGS[visualizations.vis.name],
});
} else {
// default
const statsTokens = queryManager.queryParser().parse(data.query.rawQuery).getStats();
if (!statsTokens) {
setConfigList({
metrics: [],
dimensions: [],
});
} else {
const fieldInfo = statsTokens.groupby?.span?.span_expression?.field;
setConfigList({
metrics: statsTokens.aggregations.map((agg) => ({
alias: agg.alias,
label: agg.function?.value_expression,
name: agg.function?.value_expression,
aggregation: agg.function?.name,
})),
dimensions: statsTokens.groupby?.group_fields?.map((agg) => ({
label: agg.name ?? '',
name: agg.name ?? '',
})),
span: {
time_field: statsTokens.groupby?.span?.span_expression?.field
? [getStandardedOuiField(fieldInfo, 'timestamp')]
: [],
interval: statsTokens.groupby?.span?.span_expression?.literal_value ?? '0',
unit: statsTokens.groupby?.span?.span_expression?.time_unit
? [getStandardedOuiField(statsTokens.groupby?.span?.span_expression?.time_unit)]
: [],
},
});
}
}
}, [userConfigs?.dataConfig, visualizations.vis.name]);

Expand Down Expand Up @@ -386,7 +341,7 @@ export const DataConfigPanelItem = ({
[configList[GROUPBY]]
);

const Breakdowns = useMemo(() => {
const Breakdowns = () => {
return (
<>
<div className="services">
Expand Down Expand Up @@ -414,7 +369,7 @@ export const DataConfigPanelItem = ({
</div>
</>
);
}, [configList[GROUPBY], configList.breakdowns]);
};

const DateHistogram = useMemo(() => {
return (
Expand Down

0 comments on commit f6bf582

Please sign in to comment.