Skip to content

Commit

Permalink
[UX] Fix map color variance and apply proper filter for extended stats (
Browse files Browse the repository at this point in the history
elastic#81106)

Fixes: elastic#81208 correctly coloring the UX map
  • Loading branch information
shahzad31 authored and andrewvc committed Oct 21, 2020
1 parent 633dc4f commit 53b208e
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
ViewMode,
isErrorEmbeddable,
} from '../../../../../../../../src/plugins/embeddable/public';
import { getLayerList } from './LayerList';
import { useLayerList } from './useLayerList';
import { useUrlParams } from '../../../../hooks/useUrlParams';
import { RenderTooltipContentParams } from '../../../../../../maps/public';
import { MapToolTip } from './MapToolTip';
Expand Down Expand Up @@ -55,6 +55,8 @@ export function EmbeddedMapComponent() {

const mapFilters = useMapFilters();

const layerList = useLayerList();

const [embeddable, setEmbeddable] = useState<
MapEmbeddable | ErrorEmbeddable | undefined
>();
Expand Down Expand Up @@ -148,7 +150,7 @@ export function EmbeddedMapComponent() {

if (embeddableObject && !isErrorEmbeddable(embeddableObject)) {
embeddableObject.setRenderTooltipContent(renderTooltipContent);
await embeddableObject.setLayerList(getLayerList());
await embeddableObject.setLayerList(layerList);
}

setEmbeddable(embeddableObject);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {
REGION_NAME,
TRANSACTION_DURATION_COUNTRY,
TRANSACTION_DURATION_REGION,
} from './LayerList';
} from './useLayerList';
import { RenderTooltipContentParams } from '../../../../../../maps/public';
import { I18LABELS } from '../translations';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { storiesOf } from '@storybook/react';
import React from 'react';
import { EuiThemeProvider } from '../../../../../../../observability/public';
import { MapToolTip } from '../MapToolTip';
import { COUNTRY_NAME, TRANSACTION_DURATION_COUNTRY } from '../LayerList';
import { COUNTRY_NAME, TRANSACTION_DURATION_COUNTRY } from '../useLayerList';

storiesOf('app/RumDashboard/VisitorsRegionMap', module)
.addDecorator((storyFn) => <EuiThemeProvider>{storyFn()}</EuiThemeProvider>)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ export const mockLayerList = [
id: '3657625d-17b0-41ef-99ba-3a2b2938655c',
indexPatternTitle: 'apm-*',
term: 'client.geo.country_iso_code',
whereQuery: {
language: 'kuery',
query:
'transaction.type : "page-load" and service.name : "undefined"',
},
metrics: [
{
type: 'avg',
Expand Down Expand Up @@ -95,6 +100,11 @@ export const mockLayerList = [
id: 'e62a1b9c-d7ff-4fd4-a0f6-0fdc44bb9e41',
indexPatternTitle: 'apm-*',
term: 'client.geo.region_iso_code',
whereQuery: {
language: 'kuery',
query:
'transaction.type : "page-load" and service.name : "undefined"',
},
metrics: [{ type: 'avg', field: 'transaction.duration.us' }],
indexPatternId: 'apm_static_index_pattern_id',
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@
* you may not use this file except in compliance with the Elastic License.
*/

import { renderHook } from '@testing-library/react-hooks';
import { mockLayerList } from './__mocks__/regions_layer.mock';
import { getLayerList } from '../LayerList';
import { useLayerList } from '../useLayerList';

describe('LayerList', () => {
describe('getLayerList', () => {
test('it returns the region layer', () => {
const layerList = getLayerList();
expect(layerList).toStrictEqual(mockLayerList);
});
describe('useLayerList', () => {
test('it returns the region layer', () => {
const { result } = renderHook(() => useLayerList());
expect(result.current).toStrictEqual(mockLayerList);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,14 @@ import {
} from '../../../../../../maps/common/constants';

import { APM_STATIC_INDEX_PATTERN_ID } from '../../../../../../../../src/plugins/apm_oss/public';
import { useUrlParams } from '../../../../hooks/useUrlParams';
import {
SERVICE_NAME,
TRANSACTION_TYPE,
} from '../../../../../common/elasticsearch_fieldnames';
import { TRANSACTION_PAGE_LOAD } from '../../../../../common/transaction_types';

const ES_TERM_SOURCE: ESTermSourceDescriptor = {
const ES_TERM_SOURCE_COUNTRY: ESTermSourceDescriptor = {
type: 'ES_TERM_SOURCE',
id: '3657625d-17b0-41ef-99ba-3a2b2938655c',
indexPatternTitle: 'apm-*',
Expand All @@ -39,6 +45,26 @@ const ES_TERM_SOURCE: ESTermSourceDescriptor = {
applyGlobalQuery: true,
};

const ES_TERM_SOURCE_REGION: ESTermSourceDescriptor = {
type: 'ES_TERM_SOURCE',
id: 'e62a1b9c-d7ff-4fd4-a0f6-0fdc44bb9e41',
indexPatternTitle: 'apm-*',
term: 'client.geo.region_iso_code',
metrics: [{ type: AGG_TYPE.AVG, field: 'transaction.duration.us' }],
whereQuery: {
query: 'transaction.type : "page-load"',
language: 'kuery',
},
indexPatternId: APM_STATIC_INDEX_PATTERN_ID,
};

const getWhereQuery = (serviceName: string) => {
return {
query: `${TRANSACTION_TYPE} : "${TRANSACTION_PAGE_LOAD}" and ${SERVICE_NAME} : "${serviceName}"`,
language: 'kuery',
};
};

export const REGION_NAME = 'region_name';
export const COUNTRY_NAME = 'name';

Expand All @@ -56,7 +82,11 @@ interface VectorLayerDescriptor extends BaseVectorLayerDescriptor {
sourceDescriptor: EMSFileSourceDescriptor;
}

export function getLayerList() {
export function useLayerList() {
const { urlParams } = useUrlParams();

const { serviceName } = urlParams;

const baseLayer: LayerDescriptor = {
sourceDescriptor: { type: 'EMS_TMS', isAutoSelect: true },
id: 'b7af286d-2580-4f47-be93-9653d594ce7e',
Expand All @@ -69,6 +99,8 @@ export function getLayerList() {
type: 'VECTOR_TILE',
};

ES_TERM_SOURCE_COUNTRY.whereQuery = getWhereQuery(serviceName!);

const getLayerStyle = (fieldName: string): VectorStyleDescriptor => {
return {
type: 'VECTOR',
Expand Down Expand Up @@ -119,7 +151,7 @@ export function getLayerList() {
joins: [
{
leftField: 'iso2',
right: ES_TERM_SOURCE,
right: ES_TERM_SOURCE_COUNTRY,
},
],
sourceDescriptor: {
Expand All @@ -138,18 +170,13 @@ export function getLayerList() {
type: 'VECTOR',
};

ES_TERM_SOURCE_REGION.whereQuery = getWhereQuery(serviceName!);

const pageLoadDurationByAdminRegionLayer: VectorLayerDescriptor = {
joins: [
{
leftField: 'region_iso_code',
right: {
type: 'ES_TERM_SOURCE',
id: 'e62a1b9c-d7ff-4fd4-a0f6-0fdc44bb9e41',
indexPatternTitle: 'apm-*',
term: 'client.geo.region_iso_code',
metrics: [{ type: AGG_TYPE.AVG, field: 'transaction.duration.us' }],
indexPatternId: APM_STATIC_INDEX_PATTERN_ID,
},
right: ES_TERM_SOURCE_REGION,
},
],
sourceDescriptor: {
Expand All @@ -166,6 +193,7 @@ export function getLayerList() {
visible: true,
type: 'VECTOR',
};

return [
baseLayer,
pageLoadDurationByCountryLayer,
Expand Down

0 comments on commit 53b208e

Please sign in to comment.