From 6ed07a360c5fe04c31d5f185aeb79bb9b253e8cb Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Thu, 15 Oct 2020 15:35:22 +0200 Subject: [PATCH 1/3] [ML] Fix tab ids for expanded row. --- .../components/transform_list/expanded_row.tsx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx index 4478edab0dba54..e03a061bfb3168 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx @@ -7,6 +7,7 @@ import React, { FC } from 'react'; import { EuiTabbedContent } from '@elastic/eui'; +import { htmlIdGenerator } from '@elastic/eui/lib/services'; import { Optional } from '@kbn/utility-types'; import { i18n } from '@kbn/i18n'; @@ -162,9 +163,11 @@ export const ExpandedRow: FC = ({ item }) => { position: 'left', }; + const tabId = htmlIdGenerator()(); + const tabs = [ { - id: `transform-details-tab-${item.id}`, + id: `transform-details-tab-${tabId}`, 'data-test-subj': 'transformDetailsTab', name: i18n.translate( 'xpack.transform.transformList.transformDetails.tabs.transformDetailsLabel', @@ -175,7 +178,7 @@ export const ExpandedRow: FC = ({ item }) => { content: , }, { - id: `transform-stats-tab-${item.id}`, + id: `transform-stats-tab-${tabId}`, 'data-test-subj': 'transformStatsTab', name: i18n.translate( 'xpack.transform.transformList.transformDetails.tabs.transformStatsLabel', @@ -186,13 +189,13 @@ export const ExpandedRow: FC = ({ item }) => { content: , }, { - id: `transform-json-tab-${item.id}`, + id: `transform-json-tab-${tabId}`, 'data-test-subj': 'transformJsonTab', name: 'JSON', content: , }, { - id: `transform-messages-tab-${item.id}`, + id: `transform-messages-tab-${tabId}`, 'data-test-subj': 'transformMessagesTab', name: i18n.translate( 'xpack.transform.transformList.transformDetails.tabs.transformMessagesLabel', @@ -203,7 +206,7 @@ export const ExpandedRow: FC = ({ item }) => { content: , }, { - id: `transform-preview-tab-${item.id}`, + id: `transform-preview-tab-${tabId}`, 'data-test-subj': 'transformPreviewTab', name: i18n.translate( 'xpack.transform.transformList.transformDetails.tabs.transformPreviewLabel', From bd22a43d9cae831048914e44ec54679bde07152a Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Thu, 15 Oct 2020 18:12:49 +0200 Subject: [PATCH 2/3] [ML] Fix import. --- .../components/transform_list/expanded_row.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx index e03a061bfb3168..a48ce82ed2a042 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx @@ -6,8 +6,7 @@ import React, { FC } from 'react'; -import { EuiTabbedContent } from '@elastic/eui'; -import { htmlIdGenerator } from '@elastic/eui/lib/services'; +import { htmlIdGenerator, EuiTabbedContent } from '@elastic/eui'; import { Optional } from '@kbn/utility-types'; import { i18n } from '@kbn/i18n'; From ad1f94eaabbaab021e38dab86970bc4f7ea405de Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Fri, 16 Oct 2020 16:56:20 +0200 Subject: [PATCH 3/3] [ML] Fix ID generation. --- .../transform_list/expanded_row.tsx | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx index a48ce82ed2a042..de45322d04987c 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx @@ -6,7 +6,7 @@ import React, { FC } from 'react'; -import { htmlIdGenerator, EuiTabbedContent } from '@elastic/eui'; +import { EuiTabbedContent } from '@elastic/eui'; import { Optional } from '@kbn/utility-types'; import { i18n } from '@kbn/i18n'; @@ -26,6 +26,23 @@ function getItemDescription(value: any) { return value.toString(); } +/** + * Creates a deterministic number based hash out of a string. + */ +export function stringHash(str: string): number { + let hash = 0; + let chr = 0; + if (str.length === 0) { + return hash; + } + for (let i = 0; i < str.length; i++) { + chr = str.charCodeAt(i); + hash = (hash << 5) - hash + chr; // eslint-disable-line no-bitwise + hash |= 0; // eslint-disable-line no-bitwise + } + return hash < 0 ? hash * -2 : hash; +} + interface Item { title: string; description: any; @@ -162,7 +179,7 @@ export const ExpandedRow: FC = ({ item }) => { position: 'left', }; - const tabId = htmlIdGenerator()(); + const tabId = stringHash(item.id); const tabs = [ {