From 72cb883d807fb851ce47916bd7f653ba3c476219 Mon Sep 17 00:00:00 2001 From: Tim Roes Date: Wed, 3 Feb 2021 16:02:36 +0100 Subject: [PATCH] [Graph] Disable runtime fields showing up in Graph (#90010) * [Graph] Disable runtime fields * Fix jest test Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../services/persistence/deserialize.test.ts | 26 ++++++++++++++++--- .../services/persistence/deserialize.ts | 6 ++++- .../state_management/datasource.test.ts | 2 +- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts b/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts index 815f5ad3ecaf..5ac51227cacb 100644 --- a/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts +++ b/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts @@ -5,7 +5,7 @@ */ import { GraphWorkspaceSavedObject, IndexPatternSavedObject, Workspace } from '../../types'; -import { migrateLegacyIndexPatternRef, savedWorkspaceToAppState } from './deserialize'; +import { migrateLegacyIndexPatternRef, savedWorkspaceToAppState, mapFields } from './deserialize'; import { createWorkspace } from '../../angular/graph_client_workspace'; import { outlinkEncoders } from '../../helpers/outlink_encoders'; import { IndexPattern } from '../../../../../../src/plugins/data/public'; @@ -119,9 +119,9 @@ describe('deserialize', () => { savedWorkspace, { getNonScriptedFields: () => [ - { name: 'field1', type: 'string', aggregatable: true }, - { name: 'field2', type: 'string', aggregatable: true }, - { name: 'field3', type: 'string', aggregatable: true }, + { name: 'field1', type: 'string', aggregatable: true, isMapped: true }, + { name: 'field2', type: 'string', aggregatable: true, isMapped: true }, + { name: 'field3', type: 'string', aggregatable: true, isMapped: true }, ], } as IndexPattern, workspace @@ -236,4 +236,22 @@ describe('deserialize', () => { expect(workspacePayload).toEqual(savedWorkspace); }); }); + + describe('mapFields', () => { + it('should not include unmapped fields', () => { + const indexPattern = { + getNonScriptedFields: () => [ + { name: 'field1', type: 'string', aggregatable: true, isMapped: true }, + { name: 'field2', type: 'string', aggregatable: true, isMapped: true }, + { name: 'runtimeField', type: 'string', aggregatable: true, isMapped: false }, + { name: 'field3', type: 'string', aggregatable: true, isMapped: true }, + ], + } as IndexPattern; + expect(mapFields(indexPattern).map(({ name }) => name)).toEqual([ + 'field1', + 'field2', + 'field3', + ]); + }); + }); }); diff --git a/x-pack/plugins/graph/public/services/persistence/deserialize.ts b/x-pack/plugins/graph/public/services/persistence/deserialize.ts index a25e4b7e5e3d..61bba7efe5ef 100644 --- a/x-pack/plugins/graph/public/services/persistence/deserialize.ts +++ b/x-pack/plugins/graph/public/services/persistence/deserialize.ts @@ -104,7 +104,11 @@ export function mapFields(indexPattern: IndexPattern): WorkspaceField[] { return indexPattern .getNonScriptedFields() .filter( - (field) => !blockedFieldNames.includes(field.name) && !indexPatternsUtils.isNestedField(field) + (field) => + // Make sure to only include mapped fields, e.g. no index pattern runtime fields + field.isMapped && + !blockedFieldNames.includes(field.name) && + !indexPatternsUtils.isNestedField(field) ) .map((field, index) => ({ name: field.name, diff --git a/x-pack/plugins/graph/public/state_management/datasource.test.ts b/x-pack/plugins/graph/public/state_management/datasource.test.ts index 13b7080d776a..4dc4dd3059b5 100644 --- a/x-pack/plugins/graph/public/state_management/datasource.test.ts +++ b/x-pack/plugins/graph/public/state_management/datasource.test.ts @@ -25,7 +25,7 @@ describe('datasource saga', () => { get: jest.fn(() => Promise.resolve({ title: 'test-pattern', - getNonScriptedFields: () => [{ name: 'field1', type: 'string' }], + getNonScriptedFields: () => [{ name: 'field1', type: 'string', isMapped: true }], } as IndexPattern) ), },