This is an automated email from the ASF dual-hosted git repository.
e2corporation pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
The following commit(s) were added to refs/heads/main by this push:
new 79d2ff18 add transformations hook to write all logic about it in one
file. (#3371)
79d2ff18 is described below
commit 79d2ff18727fbe31e66e866ed3626228b318724d
Author: Likyh <[email protected]>
AuthorDate: Mon Oct 17 11:07:59 2022 +0800
add transformations hook to write all logic about it in one file. (#3371)
* fix: delete unused code
* fix: change a unappropriate function name
* refactor: move setting default value to a hook
* refactor: move all transformation logic to one hook
* fix: rename initializeDefaultTransformationSettingsIfNotExist to
initializeDefaultTransformation
* fix: fix for review
* refactor: change a name and delete unused configuredProject
* refactor: delete `configuredBoard` in the detail page and fix some bugs
* fix: fix for review (move changeCurrentProjectXXX to hook)
* fix: fix for review
Co-authored-by: linyh <[email protected]>
---
.../blueprints/BlueprintDataScopesDialog.jsx | 18 +-
.../blueprints/ProviderTransformationSettings.jsx | 24 --
.../components/blueprints/StandardStackedList.jsx | 1 -
.../create-workflow/DataTransformations.jsx | 88 ++---
.../blueprints/transformations/CICD/Deployment.jsx | 28 +-
.../hooks/data-scope/useTransformationsManager.jsx | 236 ++++++++++++
config-ui/src/hooks/useDataScopesManager.jsx | 369 +++++++------------
.../src/pages/blueprints/blueprint-settings.jsx | 52 +--
.../src/pages/blueprints/create-blueprint.jsx | 139 +++----
config-ui/src/pages/configure/settings/github.jsx | 162 +++------
config-ui/src/pages/configure/settings/gitlab.jsx | 13 +-
config-ui/src/pages/configure/settings/jenkins.jsx | 30 +-
config-ui/src/pages/configure/settings/jira.jsx | 402 +++++----------------
config-ui/src/pages/configure/settings/tapd.jsx | 16 -
14 files changed, 595 insertions(+), 983 deletions(-)
diff --git a/config-ui/src/components/blueprints/BlueprintDataScopesDialog.jsx
b/config-ui/src/components/blueprints/BlueprintDataScopesDialog.jsx
index 44e5e733..48d13c61 100644
--- a/config-ui/src/components/blueprints/BlueprintDataScopesDialog.jsx
+++ b/config-ui/src/components/blueprints/BlueprintDataScopesDialog.jsx
@@ -67,7 +67,6 @@ const BlueprintDataScopesDialog = (props) => {
configuredConnection,
configuredProject,
configuredBoard,
- configurationKey,
scopeConnection,
dataEntitiesList = [],
boardsList = [],
@@ -100,9 +99,10 @@ const BlueprintDataScopesDialog = (props) => {
setProjects = () => {},
setBoards = () => {},
setEntities = () => {},
- setConfiguredProject = () => {},
- setConfiguredBoard = () => {},
- setTransformationSettings = () => {},
+ checkTransformationHasChanged = () => false,
+ changeTransformationSettings = () => {},
+ checkConfiguredProjectTransformationHasChanged = () => false,
+ changeConfiguredProjectTransformationSettings = () => {},
addBoardTransformation = () => {},
addProjectTransformation = () => {},
fieldHasError = () => {},
@@ -231,11 +231,17 @@ const BlueprintDataScopesDialog = (props) => {
configuredConnection={configuredConnection}
configuredProject={configuredProject}
configuredBoard={configuredBoard}
- configurationKey={configurationKey}
addBoardTransformation={addBoardTransformation}
addProjectTransformation={addProjectTransformation}
isSaving={isSaving}
- setTransformationSettings={setTransformationSettings}
+ checkTransformationHasChanged={checkTransformationHasChanged}
+ changeTransformationSettings={changeTransformationSettings}
+ checkConfiguredProjectTransformationHasChanged={
+ checkConfiguredProjectTransformationHasChanged
+ }
+ changeConfiguredProjectTransformationSettings={
+ changeConfiguredProjectTransformationSettings
+ }
// onSave={handleTransformationSave}
// onCancel={handleTransformationCancel}
// onClear={handleTransformationClear}
diff --git
a/config-ui/src/components/blueprints/ProviderTransformationSettings.jsx
b/config-ui/src/components/blueprints/ProviderTransformationSettings.jsx
index a211e2c9..c8a40abe 100644
--- a/config-ui/src/components/blueprints/ProviderTransformationSettings.jsx
+++ b/config-ui/src/components/blueprints/ProviderTransformationSettings.jsx
@@ -35,38 +35,25 @@ const ProviderTransformationSettings = (props) => {
provider,
blueprint,
connection,
- configuredProject,
- configuredBoard,
- transformations = {},
transformation = {},
- entityIdKey,
- newTransformation = {},
boards = {},
- projects = {},
entities = {},
issueTypes = [],
fields = [],
onSettingsChange = () => {},
- changeTransformation = () => {},
isSaving = false,
isSavingConnection = false,
jiraProxyError,
isFetchingJIRA = false
} = props
- useEffect(() => {
- console.log('OVER HERE!!!', entityIdKey)
- }, [entityIdKey])
-
return (
<div className='transformation-settings' data-provider={provider?.id}>
{provider?.id === Providers.GITHUB && (
<GithubSettings
provider={provider}
connection={connection}
- configuredProject={configuredProject}
transformation={transformation}
- entityIdKey={entityIdKey}
onSettingsChange={onSettingsChange}
entities={entities[connection?.id]}
isSaving={isSaving}
@@ -78,9 +65,7 @@ const ProviderTransformationSettings = (props) => {
<GitlabSettings
provider={provider}
connection={connection}
- configuredProject={configuredProject}
transformation={transformation}
- entityIdKey={entityIdKey}
onSettingsChange={onSettingsChange}
entities={entities[connection?.id]}
isSaving={isSaving}
@@ -91,15 +76,10 @@ const ProviderTransformationSettings = (props) => {
{provider?.id === Providers.JIRA && (
<JiraSettings
provider={provider}
- blueprint={blueprint}
connection={connection}
- configuredBoard={configuredBoard}
- boards={boards}
issueTypes={issueTypes}
fields={fields}
transformation={transformation}
- entityIdKey={entityIdKey}
- transformations={transformations}
onSettingsChange={onSettingsChange}
entities={entities[connection?.id]}
isSaving={isSaving}
@@ -113,9 +93,7 @@ const ProviderTransformationSettings = (props) => {
<JenkinsSettings
provider={provider}
connection={connection}
- configuredProject={configuredProject}
transformation={transformation}
- entityIdKey={entityIdKey}
onSettingsChange={onSettingsChange}
entities={entities[connection?.id]}
isSaving={isSaving}
@@ -126,8 +104,6 @@ const ProviderTransformationSettings = (props) => {
<TapdSettings
provider={provider}
connection={connection}
- transformation={transformation}
- entityIdKey={entityIdKey}
onSettingsChange={onSettingsChange}
entities={entities[connection?.id]}
isSaving={isSaving}
diff --git a/config-ui/src/components/blueprints/StandardStackedList.jsx
b/config-ui/src/components/blueprints/StandardStackedList.jsx
index fd21d415..7e9fb793 100644
--- a/config-ui/src/components/blueprints/StandardStackedList.jsx
+++ b/config-ui/src/components/blueprints/StandardStackedList.jsx
@@ -30,7 +30,6 @@ import {
const StandardStackedList = (props) => {
const {
items = [],
- transformations = {},
className = 'selected-items-list',
connection,
activeItem,
diff --git
a/config-ui/src/components/blueprints/create-workflow/DataTransformations.jsx
b/config-ui/src/components/blueprints/create-workflow/DataTransformations.jsx
index f929cb3c..5c97401f 100644
---
a/config-ui/src/components/blueprints/create-workflow/DataTransformations.jsx
+++
b/config-ui/src/components/blueprints/create-workflow/DataTransformations.jsx
@@ -15,38 +15,20 @@
* limitations under the License.
*
*/
-import React, {
- Fragment,
- useEffect,
- useState,
- useCallback,
- useMemo
-} from 'react'
-import { isEqual } from 'lodash'
+import React, { useCallback, useEffect, useMemo, useState } from 'react'
import {
Button,
- Icon,
- Intent,
- InputGroup,
- MenuItem,
+ Card,
Divider,
Elevation,
- Card,
- Colors,
- Spinner,
- Tooltip,
- Position
+ Icon,
+ Intent,
+ MenuItem
} from '@blueprintjs/core'
import { Select } from '@blueprintjs/select'
import { integrationsData } from '@/data/integrations'
-import {
- Providers,
- ProviderTypes,
- ProviderIcons,
- ConnectionStatus,
- ConnectionStatusLabels
-} from '@/data/Providers'
-import { DataEntities, DataEntityTypes } from '@/data/DataEntities'
+import { ProviderIcons, Providers } from '@/data/Providers'
+import { DataEntityTypes } from '@/data/DataEntities'
import { DEFAULT_DATA_ENTITIES } from '@/data/BlueprintWorkflow'
import ConnectionTabs from '@/components/blueprints/ConnectionTabs'
@@ -66,18 +48,18 @@ const DataTransformations = (props) => {
boards = {},
issueTypes = [],
fields = [],
- transformations = {},
configuredConnection,
configuredProject,
configuredBoard,
- configurationKey,
handleConnectionTabChange = () => {},
prevStep = () => {},
addBoardTransformation = () => {},
addProjectTransformation = () => {},
activeTransformation = {},
- setTransformations = () => {},
- setTransformationSettings = () => {},
+ checkTransformationHasChanged = () => false,
+ changeTransformationSettings = () => {},
+ checkConfiguredProjectTransformationHasChanged = () => false,
+ changeConfiguredProjectTransformationSettings = () => {},
onSave = () => {},
onCancel = () => {},
onClear = () => {},
@@ -96,13 +78,6 @@ const DataTransformations = (props) => {
cardStyle = {}
} = props
- // Used to determine whether to display edit transformation or add
transformation
- const [initializeTransformations, setInitializeTransformations] =
useState({})
-
- useEffect(() => {
- setInitializeTransformations(transformations)
- }, [])
-
const noTransformationsAvailable = useMemo(
() =>
[Providers.TAPD].includes(configuredConnection?.provider) ||
@@ -136,19 +111,6 @@ const DataTransformations = (props) => {
)
const [activeEntity, setActiveEntity] = useState()
- const transformationHasChanged = useCallback(
- (item) => {
- const initializeTransform = initializeTransformations[item?.id]
- const storedTransform = transformations[item?.id]
- return (
- initializeTransform &&
- storedTransform &&
- !isEqual(initializeTransform, storedTransform)
- )
- },
- [initializeTransformations, transformations]
- )
-
useEffect(() => {
console.log('>>> PROJECT/BOARD SELECT LIST DATA...', entityList)
setActiveEntity(Array.isArray(entityList) ? entityList[0] : null)
@@ -162,6 +124,7 @@ const DataTransformations = (props) => {
addBoardTransformation(activeEntity?.entity)
break
case 'project':
+ default:
addProjectTransformation(activeEntity?.entity)
break
}
@@ -173,13 +136,6 @@ const DataTransformations = (props) => {
useDropdownSelector
])
- useEffect(() => {
- console.log(
- '>>> DATA TRANSFORMATIONS: DSM $configurationKey',
- configurationKey
- )
- }, [configurationKey])
-
return (
<div
className='workflow-step workflow-step-add-transformation'
@@ -330,13 +286,14 @@ const DataTransformations = (props) => {
<>
<StandardStackedList
items={projects}
- transformations={transformations}
className='selected-items-list
selected-projects-list'
connection={configuredConnection}
activeItem={configuredProject}
onAdd={addProjectTransformation}
onChange={addProjectTransformation}
- isEditing={transformationHasChanged}
+ isEditing={
+ checkConfiguredProjectTransformationHasChanged
+ }
/>
{projects[configuredConnection.id].length === 0 && (
<NoData
@@ -355,13 +312,14 @@ const DataTransformations = (props) => {
<>
<StandardStackedList
items={boards}
- transformations={transformations}
className='selected-items-list selected-boards-list'
connection={configuredConnection}
activeItem={configuredBoard}
onAdd={addBoardTransformation}
onChange={addBoardTransformation}
- isEditing={transformationHasChanged}
+ isEditing={
+ checkConfiguredProjectTransformationHasChanged
+ }
/>
{boards[configuredConnection.id].length === 0 && (
<NoData
@@ -406,22 +364,20 @@ const DataTransformations = (props) => {
DEFAULT_DATA_ENTITIES.some((dE) => dE.value ===
e.value)
) && (
<ProviderTransformationSettings
+ key={configuredProject?.id || configuredBoard?.id}
provider={integrationsData.find(
(i) => i.id === configuredConnection?.provider
)}
blueprint={blueprint}
connection={configuredConnection}
- configuredProject={configuredProject}
- configuredBoard={configuredBoard}
- entityIdKey={configurationKey}
issueTypes={issueTypes}
fields={fields}
boards={boards}
- projects={projects}
entities={dataEntities}
transformation={activeTransformation}
- transformations={transformations}
- onSettingsChange={setTransformationSettings}
+ onSettingsChange={
+ changeConfiguredProjectTransformationSettings
+ }
isSaving={isSaving}
isFetchingJIRA={isFetchingJIRA}
isSavingConnection={isSavingConnection}
diff --git
a/config-ui/src/components/blueprints/transformations/CICD/Deployment.jsx
b/config-ui/src/components/blueprints/transformations/CICD/Deployment.jsx
index b14069d2..15b46884 100644
--- a/config-ui/src/components/blueprints/transformations/CICD/Deployment.jsx
+++ b/config-ui/src/components/blueprints/transformations/CICD/Deployment.jsx
@@ -30,7 +30,6 @@ const Deployment = (props) => {
const {
provider,
transformation,
- entityIdKey,
isSaving = false,
onSettingsChange = () => {}
} = props
@@ -49,16 +48,13 @@ const Deployment = (props) => {
}, [transformation?.deploymentPattern, transformation?.productionPattern])
const handleChangeSelectValue = (sv) => {
- if (entityIdKey && sv === 0) {
- onSettingsChange(
- { deploymentPattern: undefined, productionPattern: undefined },
- entityIdKey
- )
- } else if (entityIdKey && sv === 1) {
- onSettingsChange(
- { deploymentPattern: '', productionPattern: '' },
- entityIdKey
- )
+ if (sv === 0) {
+ onSettingsChange({
+ deploymentPattern: undefined,
+ productionPattern: undefined
+ })
+ } else if (sv === 1) {
+ onSettingsChange({ deploymentPattern: '', productionPattern: '' })
}
setSelectValue(sv)
}
@@ -164,10 +160,7 @@ const Deployment = (props) => {
placeholder='(?i)deploy'
value={transformation?.deploymentPattern}
onChange={(e) =>
- onSettingsChange(
- { deploymentPattern: e.target.value },
- entityIdKey
- )
+ onSettingsChange({ deploymentPattern: e.target.value })
}
disabled={isSaving}
className='input'
@@ -196,10 +189,7 @@ const Deployment = (props) => {
placeholder='(?i)production'
value={transformation?.productionPattern}
onChange={(e) =>
- onSettingsChange(
- { productionPattern: e.target.value },
- entityIdKey
- )
+ onSettingsChange({ productionPattern: e.target.value })
}
disabled={isSaving}
className='input'
diff --git a/config-ui/src/hooks/data-scope/useTransformationsManager.jsx
b/config-ui/src/hooks/data-scope/useTransformationsManager.jsx
new file mode 100644
index 00000000..c846ca99
--- /dev/null
+++ b/config-ui/src/hooks/data-scope/useTransformationsManager.jsx
@@ -0,0 +1,236 @@
+/*
+ * 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 { useCallback, useState } from 'react'
+import { Providers } from '@/data/Providers'
+import TransformationSettings from '@/models/TransformationSettings'
+import { isEqual } from 'lodash'
+
+// TODO separate to each plugin
+const getDefaultTransformations = (provider) => {
+ let transforms = {}
+ switch (provider) {
+ case Providers.GITHUB:
+ transforms = {
+ prType: '',
+ prComponent: '',
+ prBodyClosePattern: '',
+ issueSeverity: '',
+ issueComponent: '',
+ issuePriority: '',
+ issueTypeRequirement: '',
+ issueTypeBug: '',
+ issueTypeIncident: '',
+ refdiff: null,
+ productionPattern: '',
+ deploymentPattern: ''
+ // stagingPattern: '',
+ // testingPattern: ''
+ }
+ break
+ case Providers.JIRA:
+ transforms = {
+ epicKeyField: '',
+ typeMappings: {},
+ storyPointField: '',
+ remotelinkCommitShaPattern: '',
+ bugTags: [],
+ incidentTags: [],
+ requirementTags: [],
+ // @todo: verify if jira utilizes deploy tag(s)?
+ productionPattern: '',
+ deploymentPattern: ''
+ // stagingPattern: '',
+ // testingPattern: ''
+ }
+ break
+ case Providers.JENKINS:
+ transforms = {
+ productionPattern: '',
+ deploymentPattern: ''
+ // stagingPattern: '',
+ // testingPattern: ''
+ }
+ break
+ case Providers.GITLAB:
+ transforms = {
+ productionPattern: '',
+ deploymentPattern: ''
+ // stagingPattern: '',
+ // testingPattern: ''
+ }
+ break
+ case Providers.TAPD:
+ // @todo: complete tapd transforms #2673
+ transforms = {
+ issueTypeRequirement: '',
+ issueTypeBug: '',
+ issueTypeIncident: '',
+ productionPattern: '',
+ deploymentPattern: ''
+ // stagingPattern: '',
+ // testingPattern: ''
+ }
+ break
+ }
+ return transforms
+}
+
+// manage transformations in one place
+const useTransformationsManager = () => {
+ const [transformations, setTransformations] = useState({})
+
+ const generateKey = (
+ connectionProvider,
+ connectionId,
+ projectNameOrBoard
+ ) => {
+ let key = `not-distinguished`
+ switch (connectionProvider) {
+ case Providers.GITHUB:
+ case Providers.GITLAB:
+ case Providers.JENKINS:
+ key = projectNameOrBoard?.id
+ break
+ case Providers.JIRA:
+ key = projectNameOrBoard?.id
+ break
+ }
+ return `${connectionProvider}/${connectionId}/${key}`
+ }
+
+ // change some setting in specific connection's specific transformation
+ const changeTransformationSettings = useCallback(
+ (connectionProvider, connectionId, projectNameOrBoard, settings) => {
+ const key = generateKey(
+ connectionProvider,
+ connectionId,
+ projectNameOrBoard
+ )
+ console.info(
+ '>> SETTING TRANSFORMATION SETTINGS PROJECT/BOARD...',
+ key,
+ settings
+ )
+ setTransformations((existingTransformations) => ({
+ ...existingTransformations,
+ [key]: new TransformationSettings({
+ ...existingTransformations[key],
+ ...settings
+ })
+ }))
+ },
+ [setTransformations]
+ )
+
+ // set a default value for connection's specific transformation
+ const initializeDefaultTransformation = useCallback(
+ (connectionProvider, connectionId, projectNameOrBoard) => {
+ const key = generateKey(
+ connectionProvider,
+ connectionId,
+ projectNameOrBoard
+ )
+ console.info(
+ '>> INIT DEFAULT TRANSFORMATION SETTINGS PROJECT/BOARD...',
+ key
+ )
+ if (!transformations[key]) {
+ setTransformations((old) => ({
+ ...old,
+ [key]: new TransformationSettings(
+ getDefaultTransformations(connectionProvider)
+ )
+ }))
+ }
+ },
+ [setTransformations, transformations]
+ )
+
+ // get specific connection's specific transformation
+ const getTransformation = useCallback(
+ (connectionProvider, connectionId, projectNameOrBoard) => {
+ const key = generateKey(
+ connectionProvider,
+ connectionId,
+ projectNameOrBoard
+ )
+ console.debug(
+ '>> useTransformationsManager.getTransformation...',
+
+ connectionProvider,
+ connectionId,
+ projectNameOrBoard
+ )
+ return transformations[key]
+ },
+ [transformations]
+ )
+
+ // clear connection's transformation
+ const clearTransformationSettings = useCallback(
+ (connectionProvider, connectionId, projectNameOrBoard) => {
+ if (!projectNameOrBoard) {
+ return
+ }
+ const key = generateKey(
+ connectionProvider,
+ connectionId,
+ projectNameOrBoard
+ )
+ console.info('>> CLEAR TRANSFORMATION SETTINGS PROJECT/BOARD...', key)
+ setTransformations((existingTransformations) => ({
+ ...existingTransformations,
+ [key]: null
+ }))
+ },
+ [setTransformations]
+ )
+
+ // check connection's transformation is changed
+ const checkTransformationHasChanged = useCallback(
+ (connectionProvider, connectionId, projectNameOrBoard) => {
+ const key = generateKey(
+ connectionProvider,
+ connectionId,
+ projectNameOrBoard
+ )
+ const storedTransform = transformations[key]
+ const defaultTransform = new TransformationSettings(
+ getDefaultTransformations(connectionProvider)
+ )
+ console.debug(
+ '>> useTransformationsManager.checkTransformationHasChanged ...',
+ key,
+ storedTransform,
+ defaultTransform
+ )
+ return !isEqual(defaultTransform, storedTransform)
+ },
+ [transformations]
+ )
+
+ return {
+ getTransformation,
+ changeTransformationSettings,
+ initializeDefaultTransformation,
+ clearTransformationSettings,
+ checkTransformationHasChanged
+ }
+}
+
+export default useTransformationsManager
diff --git a/config-ui/src/hooks/useDataScopesManager.jsx
b/config-ui/src/hooks/useDataScopesManager.jsx
index 71577c51..c7b84b9e 100644
--- a/config-ui/src/hooks/useDataScopesManager.jsx
+++ b/config-ui/src/hooks/useDataScopesManager.jsx
@@ -26,6 +26,7 @@ import GitlabProject from '@/models/GitlabProject'
import { ProviderIcons, ProviderLabels, Providers } from '@/data/Providers'
import { DataScopeModes } from '@/data/DataScopes'
import JenkinsJob from '@/models/JenkinsJob'
+import useTransformationsManager from
'@/hooks/data-scope/useTransformationsManager'
function useDataScopesManager({
mode = DataScopeModes.CREATE,
@@ -50,37 +51,17 @@ function useDataScopesManager({
const [boards, setBoards] = useState({})
const [projects, setProjects] = useState({})
const [entities, setEntities] = useState({})
- const [transformations, setTransformations] = useState({})
+ const {
+ getTransformation,
+ changeTransformationSettings,
+ initializeDefaultTransformation,
+ clearTransformationSettings,
+ checkTransformationHasChanged
+ } = useTransformationsManager()
const [enabledProviders, setEnabledProviders] = useState([])
const [configuredProject, setConfiguredProject] = useState(null)
const [configuredBoard, setConfiguredBoard] = useState(null)
- const configurationKey = useMemo(() => {
- let key = `C#${connection?.id}`
- switch (connection?.providerId) {
- case Providers.GITHUB:
- case Providers.GITLAB:
- case Providers.JENKINS:
- key = configuredProject?.id
- break
- case Providers.JIRA:
- key = configuredBoard?.id
- break
- case 'default':
- key = `C#${connection?.id}`
- break
- }
- console.log('>>> DSM: Active Configuration Key ===', key)
- return key
- }, [
- connection?.providerId,
- connection?.id,
- configuredProject?.id,
- configuredBoard?.id
- ])
-
- const activeProject = useMemo(() => configuredProject, [configuredProject])
- const activeBoard = useMemo(() => configuredBoard, [configuredBoard])
const selectedProjects = useMemo(
() => projects[connection?.id]?.map((p) => p && p?.id),
@@ -91,120 +72,20 @@ function useDataScopesManager({
[boards, connection?.id]
)
- const storedProjectTransformation = useMemo(
- () =>
- connection?.transformations &&
- connection?.transformations[
- connection?.projects?.findIndex((p) => p === configuredProject?.id)
- ],
- [connection, configuredProject?.id]
- )
- const storedBoardTransformation = useMemo(
- () =>
- connection?.transformations &&
- connection?.transformations[
- connection?.boardIds?.findIndex((b) => b === configuredBoard?.id)
- ],
- [connection, configuredBoard?.id]
- )
-
- const activeProjectTransformation = useMemo(
- () => transformations[activeProject?.id],
- [transformations, activeProject?.id]
- )
- const activeBoardTransformation = useMemo(
- () => transformations[activeBoard?.id],
- [transformations, activeBoard?.id]
- )
const activeTransformation = useMemo(
- () => transformations[configurationKey],
- [configurationKey, transformations]
- )
- // eslint-disable-next-line max-len
- // const activeTransformation = useMemo(() =>
transformations[connection?.providerId === Providers.JIRA ? configuredBoard?.id
: configuredProject?.id], [transformations, configuredProject?.id,
configuredBoard?.id, connection?.providerId])
-
- const getDefaultTransformations = useCallback((providerId) => {
- let transforms = {}
- switch (providerId) {
- case Providers.GITHUB:
- transforms = {
- prType: '',
- prComponent: '',
- prBodyClosePattern: '',
- issueSeverity: '',
- issueComponent: '',
- issuePriority: '',
- issueTypeRequirement: '',
- issueTypeBug: '',
- issueTypeIncident: '',
- refdiff: null,
- productionPattern: '',
- deploymentPattern: ''
- // stagingPattern: '',
- // testingPattern: ''
- }
- break
- case Providers.JIRA:
- transforms = {
- epicKeyField: '',
- typeMappings: {},
- storyPointField: '',
- remotelinkCommitShaPattern: '',
- bugTags: [],
- incidentTags: [],
- requirementTags: [],
- // @todo: verify if jira utilizes deploy tag(s)?
- productionPattern: '',
- deploymentPattern: ''
- // stagingPattern: '',
- // testingPattern: ''
- }
- break
- case Providers.JENKINS:
- transforms = {
- productionPattern: '',
- deploymentPattern: ''
- // stagingPattern: '',
- // testingPattern: ''
- }
- break
- case Providers.GITLAB:
- transforms = {
- productionPattern: '',
- deploymentPattern: ''
- // stagingPattern: '',
- // testingPattern: ''
- }
- break
- case Providers.TAPD:
- // @todo: complete tapd transforms #2673
- transforms = {
- issueTypeRequirement: '',
- issueTypeBug: '',
- issueTypeIncident: '',
- productionPattern: '',
- deploymentPattern: ''
- // stagingPattern: '',
- // testingPattern: ''
- }
- break
- }
- console.log(
- '>>>>> DATA SCOPES MANAGER: Getting Default Transformation Values for
PROVIDER Type ',
- providerId,
- transforms
- )
- return transforms
- }, [])
-
- const initializeTransformations = useCallback(
- (pV, cV, iDx) => ({
- ...pV,
- [cV]: new TransformationSettings(
- getDefaultTransformations(connection?.providerId, iDx)
- )
- }),
- [connection?.providerId, getDefaultTransformations]
+ () =>
+ getTransformation(
+ connection?.providerId,
+ connection?.id,
+ configuredProject || configuredBoard
+ ),
+ [
+ connection?.providerId,
+ connection?.id,
+ configuredProject,
+ configuredBoard,
+ getTransformation
+ ]
)
// @todo: generate scopes dynamically from $integrationsData (in future
Integrations Hook [plugin registry])
@@ -216,7 +97,6 @@ function useDataScopesManager({
entities = {},
boards = {},
projects = {},
- transformations = {},
defaultScope = { transformation: {}, options: {}, entities: [] }
) => {
console.log(
@@ -238,7 +118,9 @@ function useDataScopesManager({
// @todo: verify initial value of since date for jira provider
// since: new Date(),
},
- transformation: { ...transformations[b?.id] }
+ transformation: {
+ ...getTransformation(connection?.providerId, connection?.id, b)
+ }
}))
break
case Providers.GITLAB:
@@ -248,7 +130,9 @@ function useDataScopesManager({
projectId: Number(p.value),
title: p.title
},
- transformation: { ...transformations[p?.id] }
+ transformation: {
+ ...getTransformation(connection?.providerId, connection?.id, p)
+ }
}))
break
case Providers.JENKINS:
@@ -257,7 +141,9 @@ function useDataScopesManager({
options: {
jobName: p.value
},
- transformation: { ...transformations[p?.id] }
+ transformation: {
+ ...getTransformation(connection?.providerId, connection?.id, p)
+ }
}))
break
case Providers.GITHUB:
@@ -267,7 +153,9 @@ function useDataScopesManager({
owner: p.value.split('/')[0],
repo: p.value.split('/')[1]
},
- transformation: { ...transformations[p?.id] }
+ transformation: {
+ ...getTransformation(connection?.providerId, connection?.id, p)
+ }
}))
break
case Providers.TAPD:
@@ -281,7 +169,7 @@ function useDataScopesManager({
}
return Array.isArray(newScope) ? newScope.flat() : [newScope]
},
- []
+ [getTransformation]
)
const createProviderConnections = useCallback(
@@ -299,12 +187,11 @@ function useDataScopesManager({
cIdx,
entities,
boards,
- projects,
- transformations
+ projects
)
}))
},
- [boards, projects, entities, transformations, createProviderScopes]
+ [boards, projects, entities, createProviderScopes]
)
const modifyConnectionSettings = useCallback(() => {
@@ -333,34 +220,11 @@ function useDataScopesManager({
boards,
projects,
entities,
- transformations,
blueprint?.settings?.connections,
setSettings,
createProviderConnections
])
- const setTransformationSettings = useCallback(
- (settings, configuredEntity) => {
- console.log(
- '>>>>> DATA SCOPES MANAGER: SETTING TRANSFORMATION SETTINGS
PROJECT/BOARD...',
- configuredEntity,
- settings
- )
- setTransformations((existingTransformations) =>
- configuredEntity
- ? {
- ...existingTransformations,
- [configuredEntity]: new TransformationSettings({
- ...existingTransformations[configuredEntity],
- ...settings
- })
- }
- : existingTransformations
- )
- },
- [setTransformations]
- )
-
const getGithubProjects = useCallback(
(c) =>
c.scope.map(
@@ -661,16 +525,46 @@ function useDataScopesManager({
]
)
+ const checkConfiguredProjectTransformationHasChanged = useCallback(
+ (item) => {
+ return checkTransformationHasChanged(
+ configuredConnection?.provider,
+ configuredConnection?.id,
+ item
+ )
+ },
+ [
+ configuredConnection?.provider,
+ configuredConnection?.id,
+ checkTransformationHasChanged
+ ]
+ )
+
+ const changeConfiguredProjectTransformationSettings = useCallback(
+ (settings) => {
+ return changeTransformationSettings(
+ configuredConnection?.provider,
+ configuredConnection?.id,
+ configuredBoard || configuredProject,
+ settings
+ )
+ },
+ [
+ configuredConnection?.provider,
+ configuredConnection?.id,
+ configuredBoard,
+ configuredProject,
+ changeTransformationSettings
+ ]
+ )
+
useEffect(() => {
console.log(
'>>>>> DATA SCOPES MANAGER: INITIALIZING TRANSFORMATION RULES...',
- selectedProjects
- )
- console.log(
- '>>>>> DATA SCOPES MANAGER: INITIALIZING TRANSFORMATION RULES...',
+ selectedProjects,
selectedBoards
)
- }, [selectedProjects, selectedBoards, initializeTransformations])
+ }, [selectedProjects, selectedBoards])
useEffect(() => {
console.log('>>>>> DATA SCOPES MANAGER: CONFIGURED CONNECTION', connection)
@@ -687,7 +581,12 @@ function useDataScopesManager({
[connection?.id]: connection?.entityList || []
}))
connection?.projects.forEach((p, pIdx) =>
- setTransformationSettings(connection.transformations[pIdx], p?.id)
+ changeTransformationSettings(
+ connection?.provider?.id,
+ connection?.id,
+ p,
+ connection.transformations[pIdx]
+ )
)
break
case Providers.JIRA:
@@ -702,67 +601,66 @@ function useDataScopesManager({
...e,
[connection?.id]: connection?.entityList || []
}))
- connection?.boardIds.forEach((bId, bIdx) =>
- setTransformationSettings(connection.transformations[bIdx], bId)
+ connection?.boardsList.forEach((b, bIdx) =>
+ changeTransformationSettings(
+ connection?.provider?.id,
+ connection?.id,
+ b,
+ connection.transformations[bIdx]
+ )
)
break
}
- }, [connection, setTransformationSettings])
+ }, [connection, changeTransformationSettings])
useEffect(() => {
console.log('>>>>> DATA SCOPES MANAGER: Connection List...', connections)
modifyConnectionSettings()
- }, [
- connections,
- entities,
- projects,
- boards,
- transformations,
- modifyConnectionSettings
- ])
+ }, [connections, entities, projects, boards, modifyConnectionSettings])
useEffect(() => {
console.log('>>>>> DATA SCOPES MANAGER: INITIALIZE BOARDS...', boards)
- const boardTransformations = boards[connection?.id]
- if (
- Array.isArray(boardTransformations) &&
- boardTransformations?.length > 0
- ) {
- setTransformations((cT) => ({
- ...boardTransformations.reduce(initializeTransformations, {}),
- // Spread Current/Existing Transformations Settings
- ...cT
- }))
+ // FIXME: boards is board[][], rename it to boardsMap
+ const boardArray = boards[connection?.id]
+ if (Array.isArray(boardArray)) {
+ for (const board of boardArray) {
+ initializeDefaultTransformation(
+ connection?.providerId,
+ connection?.id,
+ board
+ )
+ }
}
- }, [boards, connection?.id, initializeTransformations])
+ }, [
+ boards,
+ connection?.providerId,
+ connection?.id,
+ initializeDefaultTransformation
+ ])
useEffect(() => {
console.log('>>>>> DATA SCOPES MANAGER: INITIALIZE PROJECTS...', projects)
- const projectTransformations = projects[connection?.id]
- if (Array.isArray(projectTransformations)) {
- setTransformations((cT) => ({
- ...projectTransformations.reduce(initializeTransformations, {}),
- // Spread Current/Existing Transformations Settings
- ...cT
- }))
+ const projectArray = projects[connection?.id]
+ if (Array.isArray(projectArray)) {
+ for (const project of projectArray) {
+ initializeDefaultTransformation(
+ connection?.providerId,
+ connection?.id,
+ project
+ )
+ }
}
- }, [projects, connection?.id, initializeTransformations])
-
- useEffect(() => {
- console.log('>>>>> DATA SCOPES MANAGER: DATA ENTITIES...', entities)
- }, [entities])
+ }, [
+ projects,
+ connection?.providerId,
+ connection?.id,
+ initializeDefaultTransformation
+ ])
useEffect(() => {
console.log('>>>>> DATA SCOPES MANAGER: DATA ENTITIES...', entities)
}, [entities])
- useEffect(() => {
- console.log(
- '>>>>> DATA SCOPES MANAGER: TRANSFORMATIONS...',
- transformations
- )
- }, [transformations])
-
useEffect(() => {
console.log(
'>>>>> DATA SCOPES MANAGER: CURRENT BLUEPRINT SETTINGS...',
@@ -777,20 +675,6 @@ function useDataScopesManager({
)
}, [activeTransformation])
- useEffect(() => {
- console.log(
- '>>>>> DATA SCOPES MANAGER: ACTIVE PROJECT TRANSFORMATION RULES...',
- activeProjectTransformation
- )
- }, [activeProjectTransformation])
-
- useEffect(() => {
- console.log(
- '>>>>> DATA SCOPES MANAGER: ACTIVE BOARD TRANSFORMATION RULES...',
- activeBoardTransformation
- )
- }, [activeBoardTransformation])
-
useEffect(() => {
console.log(
'>>>>> DATA SCOPES MANAGER: MEMOIZED ACTIVE CONNECTION...',
@@ -805,19 +689,12 @@ function useDataScopesManager({
boards,
projects,
entities,
- transformations,
configuredConnection,
configuredBoard,
configuredProject,
- configurationKey,
- storedProjectTransformation,
- storedBoardTransformation,
- activeBoardTransformation,
- activeProjectTransformation,
activeTransformation,
scopeConnection,
enabledProviders,
- // setActiveTransformation,
setNewConnections,
setConnections,
setScopeConnection,
@@ -828,17 +705,19 @@ function useDataScopesManager({
setBoards,
setProjects,
setEntities,
- setTransformations,
- setTransformationSettings,
- initializeTransformations,
- getDefaultTransformations,
+ getTransformation,
+ changeTransformationSettings,
+ initializeDefaultTransformation,
+ clearTransformationSettings,
+ checkTransformationHasChanged,
+ checkConfiguredProjectTransformationHasChanged,
+ changeConfiguredProjectTransformationSettings,
createProviderConnections,
createProviderScopes,
getJiraMappedBoards,
getDefaultEntities,
createNormalConnection,
createAdvancedConnection,
- modifyConnectionSettings,
setEnabledProviders
}
}
diff --git a/config-ui/src/pages/blueprints/blueprint-settings.jsx
b/config-ui/src/pages/blueprints/blueprint-settings.jsx
index 5095047a..ae4d47d7 100644
--- a/config-ui/src/pages/blueprints/blueprint-settings.jsx
+++ b/config-ui/src/pages/blueprints/blueprint-settings.jsx
@@ -170,15 +170,11 @@ const BlueprintSettings = (props) => {
boards,
projects,
entities,
- transformations,
scopeConnection,
- activeBoardTransformation,
- activeProjectTransformation,
activeTransformation,
configuredConnection,
configuredBoard,
configuredProject,
- configurationKey,
enabledProviders,
setConfiguredConnection,
setConfiguredBoard,
@@ -186,14 +182,17 @@ const BlueprintSettings = (props) => {
setBoards,
setProjects,
setEntities,
- setTransformations,
- setTransformationSettings,
+ getTransformation,
+ changeTransformationSettings,
+ clearTransformationSettings,
+ checkTransformationHasChanged,
+ checkConfiguredProjectTransformationHasChanged,
+ changeConfiguredProjectTransformationSettings,
// setActiveTransformation,
setConnections,
setScopeConnection,
setEnabledProviders,
createProviderConnections,
- createProviderScopes,
createNormalConnection,
createAdvancedConnection,
getJiraMappedBoards,
@@ -367,24 +366,7 @@ const BlueprintSettings = (props) => {
)
setBlueprintScopesDialogIsOpen(false)
setScopeConnection(null)
- // restore/revert data scope + settings on close (cancel)
- // setTransformations({})
- // switch (scopeConnection?.provider?.id) {
- // case Providers.GITHUB:
- // setActiveTransformation(activeProjectTransformation)
- // setProjects(p => ({ ...p, [configuredConnection?.id]:
scopeConnection?.projects }))
- // setEntities(e => ({ ...e, [configuredConnection?.id]:
scopeConnection?.entityList }))
- // break
- // case Providers.JIRA:
- // setActiveTransformation(activeBoardTransformation)
- // setBoards(b => ({...b, [configuredConnection?.id]:
scopeConnection?.boardsList }))
- // setEntities(e => ({ ...e, [configuredConnection?.id]:
scopeConnection?.entityList }))
- // break
- // }
}, [
- // activeProjectTransformation,
- // activeBoardTransformation,
- // configuredConnection,
setScopeConnection
// scopeConnection
])
@@ -836,7 +818,6 @@ const BlueprintSettings = (props) => {
activeSetting?.id,
getCronPreset,
blueprintSettings,
- transformations,
runTasksAdvanced
])
@@ -899,24 +880,8 @@ const BlueprintSettings = (props) => {
// isFetchingJIRA,
// jiraApiBoards,
scopeConnection
- // configuredProject, configuredBoard
])
- // useEffect(() => {
- // if (allJiraResources?.boards?.length > 0) {
- // // setBlueprintScopesDialogIsOpen(true)
- // }
- // }, [allJiraResources])
-
- // useEffect(() => {
- // console.log('>>> CONFIGURING / MODIFYING CONNECTION',
configuredConnection)
- // if (configuredConnection?.id) {
- // // setBoards({ [configuredConnection?.id]: [] })
- // // setProjects({ [configuredConnection?.id]: [] })
- // // setEntities({ [configuredConnection?.id]: [] })
- // }
- // }, [configuredConnection])
-
useEffect(() => {
if (
scopeConnection?.providerId === Providers.JIRA &&
@@ -1456,7 +1421,6 @@ const BlueprintSettings = (props) => {
configuredConnection={configuredConnection}
configuredProject={configuredProject}
configuredBoard={configuredBoard}
- configurationKey={configurationKey}
scopeConnection={scopeConnection}
activeTransformation={activeTransformation}
addProjectTransformation={addProjectTransformation}
@@ -1479,12 +1443,12 @@ const BlueprintSettings = (props) => {
jenkinsJobs={jenkinsJobs}
isFetchingJenkins={isFetchingJenkins}
jenkinsProxyError={jenkinsProxyError}
- setConfiguredProject={setConfiguredProject}
setConfiguredBoard={setConfiguredBoard}
setBoards={setBoards}
setProjects={setProjects}
setEntities={setEntities}
- setTransformationSettings={setTransformationSettings}
+ checkTransformationHasChanged={checkTransformationHasChanged}
+ changeTransformationSettings={changeTransformationSettings}
onOpening={handleBlueprintScopesDialogOpening}
onSave={handleBlueprintSave}
isSaving={isSaving}
diff --git a/config-ui/src/pages/blueprints/create-blueprint.jsx
b/config-ui/src/pages/blueprints/create-blueprint.jsx
index 3aa214f7..4a21cb63 100644
--- a/config-ui/src/pages/blueprints/create-blueprint.jsx
+++ b/config-ui/src/pages/blueprints/create-blueprint.jsx
@@ -192,7 +192,6 @@ const CreateBlueprint = (props) => {
boards,
projects,
entities: dataEntities,
- transformations,
activeTransformation,
setNewConnections: setBlueprintConnections,
setConfiguredConnection,
@@ -201,17 +200,18 @@ const CreateBlueprint = (props) => {
setBoards,
setProjects,
setEntities: setDataEntities,
- setTransformations,
- setTransformationSettings,
+ getTransformation,
+ changeTransformationSettings,
+ clearTransformationSettings,
+ checkTransformationHasChanged,
+ checkConfiguredProjectTransformationHasChanged,
+ changeConfiguredProjectTransformationSettings,
configuredConnection,
configuredProject,
configuredBoard,
- configurationKey,
createProviderScopes,
createProviderConnections,
- getDefaultTransformations,
- getDefaultEntities,
- initializeTransformations
+ getDefaultEntities
} = useDataScopesManager({ settings: blueprintSettings })
const {
@@ -397,18 +397,6 @@ const CreateBlueprint = (props) => {
password
})
- // const [configuredProject, setConfiguredProject] = useState(
- // // projects.length > 0 ? projects[0] : null
- // null
- // )
- // const [configuredBoard, setConfiguredBoard] = useState(
- // // boards.length > 0 ? boards[0] : null
- // null
- // )
-
- // eslint-disable-next-line max-len
- // const activeTransformation = useMemo(() =>
transformations[configuredProject?.id || configuredBoard?.id],
[transformations, configuredProject?.id, configuredBoard?.id])
-
// eslint-disable-next-line no-unused-vars
const isValidStep = useCallback((stepId) => {}, [])
@@ -530,15 +518,22 @@ const CreateBlueprint = (props) => {
'==> BOARD =',
configuredBoard
)
- setTransformations((existingTransformations) => ({
- ...existingTransformations,
- [configuredProject?.id]: {},
- [configuredBoard?.id]: {}
- }))
+ clearTransformationSettings(
+ configuredConnection?.provider,
+ configuredConnection?.id,
+ configuredProject
+ )
+ clearTransformationSettings(
+ configuredConnection?.provider,
+ configuredConnection?.id,
+ configuredBoard
+ )
setConfiguredProject(null)
setConfiguredBoard(null)
}, [
- setTransformations,
+ configuredConnection?.provider,
+ configuredConnection?.id,
+ clearTransformationSettings,
setConfiguredBoard,
setConfiguredProject,
configuredProject,
@@ -613,30 +608,13 @@ const CreateBlueprint = (props) => {
setConnectionDialogIsOpen(true)
}, [])
- // @note: replaced by definition in dsm hook!
- // const setTransformationSettings = useCallback(
- // (settings, configuredEntity) => {
- // console.log(
- // '>> SETTING TRANSFORMATION SETTINGS PROJECT/BOARD...',
- // configuredEntity,
- // settings
- // )
- // setTransformations((existingTransformations) => ({
- // ...existingTransformations,
- // [configuredEntity]: {
- // ...existingTransformations[configuredEntity],
- // ...settings,
- // },
- // }))
- // },
- // [setTransformations]
- // )
-
const handleTransformationSave = useCallback(
(settings, entity) => {
- console.log('>> SAVING / CLOSING Transformation Settings')
- // manual @save disabled, reactive auto-saving writes settings to
transform object...
- // setTransformationSettings(settings, entity)
+ console.log(
+ '>> SAVING / CLOSING Transformation Settings',
+ settings,
+ entity
+ )
setConfiguredProject(null)
setConfiguredBoard(null)
ToastNotification.clear()
@@ -846,7 +824,6 @@ const CreateBlueprint = (props) => {
setDataEntitiesList(
DEFAULT_DATA_ENTITIES.filter((d) => d.name !== 'ci-cd')
)
- // setConfiguredProject(projects.length > 0 ? projects[0] : null)
break
case Providers.JIRA:
setDataEntitiesList(
@@ -893,8 +870,7 @@ const CreateBlueprint = (props) => {
cIdx,
dataEntities,
boards,
- projects,
- transformations
+ projects
)
}))
}))
@@ -904,57 +880,18 @@ const CreateBlueprint = (props) => {
dataEntities,
boards,
projects,
- transformations,
validatePipeline,
createProviderScopes,
setBlueprintSettings
])
- useEffect(() => {
- console.log('>> PROJECTS LIST', projects)
- console.log('>> BOARDS LIST', boards)
-
- const projectTransformation = projects[configuredConnection?.id]?.map(
- (p) => p.id
- )
- const boardTransformation = boards[configuredConnection?.id]?.map(
- (b) => b.id
- )
- if (projectTransformation) {
- setTransformations((cT) => ({
- ...projectTransformation.reduce(initializeTransformations, {}),
- // Spread Current/Existing Transformations Settings
- ...cT
- }))
- }
- if (boardTransformation) {
- setTransformations((cT) => ({
- ...boardTransformation.reduce(initializeTransformations, {}),
- // Spread Current/Existing Transformations Settings
- ...cT
- }))
- }
- }, [
- projects,
- boards,
- configuredConnection,
- initializeTransformations,
- setTransformations
- ])
-
useEffect(() => {
console.log('>>> SELECTED PROJECT TO CONFIGURE...', configuredProject)
- // setActiveTransformation((aT) =>
- // configuredProject !== null ? transformations[configuredProject] : {}
- // )
setCanAdvanceNext(!configuredProject)
}, [configuredProject, setCanAdvanceNext])
useEffect(() => {
- console.log('>>> SELECTED BOARD TO CONFIGURE...', configuredBoard?.id)
- // setActiveTransformation((aT) =>
- // configuredBoard ? transformations[configuredBoard?.id] : aT
- // )
+ console.log('>>> SELECTED BOARD TO CONFIGURE...', configuredBoard)
setCanAdvanceNext(!configuredBoard)
}, [configuredBoard, setCanAdvanceNext])
@@ -1198,21 +1135,29 @@ const CreateBlueprint = (props) => {
configuredConnection={configuredConnection}
configuredProject={configuredProject}
configuredBoard={configuredBoard}
- configurationKey={configurationKey}
handleConnectionTabChange={handleConnectionTabChange}
prevStep={prevStep}
addBoardTransformation={addBoardTransformation}
addProjectTransformation={addProjectTransformation}
- transformations={transformations}
activeTransformation={activeTransformation}
- setTransformations={setTransformations}
- setTransformationSettings={setTransformationSettings}
- isSaving={isSaving}
- isSavingConnection={isSavingConnection}
- isRunning={isRunning}
+ checkTransformationHasChanged={
+ checkTransformationHasChanged
+ }
+ changeTransformationSettings={
+ changeTransformationSettings
+ }
+ checkConfiguredProjectTransformationHasChanged={
+ checkConfiguredProjectTransformationHasChanged
+ }
+ changeConfiguredProjectTransformationSettings={
+ changeConfiguredProjectTransformationSettings
+ }
onSave={handleTransformationSave}
onCancel={handleTransformationCancel}
onClear={handleTransformationClear}
+ isSaving={isSaving}
+ isSavingConnection={isSavingConnection}
+ isRunning={isRunning}
fieldHasError={fieldHasError}
getFieldError={getFieldError}
jiraProxyError={jiraProxyError}
diff --git a/config-ui/src/pages/configure/settings/github.jsx
b/config-ui/src/pages/configure/settings/github.jsx
index 525afd73..b9ef32d9 100644
--- a/config-ui/src/pages/configure/settings/github.jsx
+++ b/config-ui/src/pages/configure/settings/github.jsx
@@ -41,39 +41,23 @@ export default function GithubSettings(props) {
connection,
entities = [],
transformation = {},
- entityIdKey,
isSaving,
isSavingConnection,
- onSettingsChange = () => {},
- configuredProject
+ onSettingsChange = () => {}
} = props
-
- // eslint-disable-next-line no-unused-vars
- const [errors, setErrors] = useState([])
const [enableAdditionalCalculations, setEnableAdditionalCalculations] =
useState(false)
- // eslint-disable-next-line no-unused-vars
- const handleSettingsChange = useCallback(
- (setting) => {
- onSettingsChange(setting, configuredProject?.id)
- },
- [onSettingsChange, configuredProject]
- )
-
- const handleAdditionalSettings = useCallback(
- (setting) => {
- setEnableAdditionalCalculations(setting)
- onSettingsChange(
- {
- refdiff: setting
- ? { tagsOrder: '', tagsPattern: '', tagsLimit: 10 }
- : null
- },
- configuredProject?.id
- )
+ const handleAdditionalEnable = useCallback(
+ (enable) => {
+ setEnableAdditionalCalculations(enable)
+ onSettingsChange({
+ refdiff: enable
+ ? { tagsOrder: '', tagsPattern: '', tagsLimit: 10 }
+ : null
+ })
},
- [setEnableAdditionalCalculations, configuredProject, onSettingsChange]
+ [setEnableAdditionalCalculations, onSettingsChange]
)
useEffect(() => {
@@ -84,16 +68,6 @@ export default function GithubSettings(props) {
setEnableAdditionalCalculations(!!transformation?.refdiff)
}, [transformation])
- useEffect(() => {
- console.log(
- '>>>> GITHUB: ENABLE GITHUB ADDITIONAL SETTINGS..?',
- enableAdditionalCalculations
- )
- if (enableAdditionalCalculations === 'disabled') {
- // onSettingsChange({gitextractorCalculation: ''}, configuredProject)
- }
- }, [enableAdditionalCalculations])
-
return (
<>
{entities.some((e) => e.value === DataEntityTypes.TICKET) && (
@@ -124,10 +98,7 @@ export default function GithubSettings(props) {
// defaultValue={transformation?.issueSeverity}
value={transformation?.issueSeverity}
onChange={(e) =>
- onSettingsChange(
- { issueSeverity: e.target.value },
- configuredProject?.id
- )
+ onSettingsChange({ issueSeverity: e.target.value })
}
disabled={isSaving || isSavingConnection}
className='input'
@@ -150,10 +121,7 @@ export default function GithubSettings(props) {
placeholder='component/(.*)$'
value={transformation?.issueComponent}
onChange={(e) =>
- onSettingsChange(
- { issueComponent: e.target.value },
- configuredProject?.id
- )
+ onSettingsChange({ issueComponent: e.target.value })
}
disabled={isSaving || isSavingConnection}
className='input'
@@ -175,10 +143,7 @@ export default function GithubSettings(props) {
placeholder='(highest|high|medium|low)$'
value={transformation?.issuePriority}
onChange={(e) =>
- onSettingsChange(
- { issuePriority: e.target.value },
- configuredProject?.id
- )
+ onSettingsChange({ issuePriority: e.target.value })
}
disabled={isSaving || isSavingConnection}
className='input'
@@ -200,10 +165,7 @@ export default function GithubSettings(props) {
placeholder='(feat|feature|proposal|requirement)$'
value={transformation?.issueTypeRequirement}
onChange={(e) =>
- onSettingsChange(
- { issueTypeRequirement: e.target.value },
- configuredProject?.id
- )
+ onSettingsChange({ issueTypeRequirement: e.target.value })
}
disabled={isSaving || isSavingConnection}
className='input'
@@ -225,10 +187,7 @@ export default function GithubSettings(props) {
placeholder='(bug|broken)$'
value={transformation?.issueTypeBug}
onChange={(e) =>
- onSettingsChange(
- { issueTypeBug: e.target.value },
- configuredProject?.id
- )
+ onSettingsChange({ issueTypeBug: e.target.value })
}
disabled={isSaving || isSavingConnection}
className='input'
@@ -261,10 +220,7 @@ export default function GithubSettings(props) {
placeholder='(incident|p0|p1|p2)$'
value={transformation?.issueTypeIncident}
onChange={(e) =>
- onSettingsChange(
- { issueTypeIncident: e.target.value },
- configuredProject?.id
- )
+ onSettingsChange({ issueTypeIncident: e.target.value })
}
disabled={isSaving || isSavingConnection}
className='input'
@@ -276,18 +232,16 @@ export default function GithubSettings(props) {
</>
)}
- {entities.some((e) => e.value === DataEntityTypes.DEVOPS) &&
- configuredProject && (
- <Deployment
- provider={provider}
- entities={entities}
- entityIdKey={entityIdKey}
- transformation={transformation}
- connection={connection}
- onSettingsChange={onSettingsChange}
- isSaving={isSaving || isSavingConnection}
- />
- )}
+ {entities.some((e) => e.value === DataEntityTypes.DEVOPS) && (
+ <Deployment
+ provider={provider}
+ entities={entities}
+ transformation={transformation}
+ connection={connection}
+ onSettingsChange={onSettingsChange}
+ isSaving={isSaving || isSavingConnection}
+ />
+ )}
{entities.some((e) => e.value === DataEntityTypes.CODE_REVIEW) && (
<>
@@ -316,12 +270,7 @@ export default function GithubSettings(props) {
id='github-pr-type'
placeholder='type/(.*)$'
value={transformation?.prType}
- onChange={(e) =>
- onSettingsChange(
- { prType: e.target.value },
- configuredProject?.id
- )
- }
+ onChange={(e) => onSettingsChange({ prType: e.target.value
})}
disabled={isSaving || isSavingConnection}
className='input'
maxLength={255}
@@ -342,10 +291,7 @@ export default function GithubSettings(props) {
placeholder='component/(.*)$'
value={transformation?.prComponent}
onChange={(e) =>
- onSettingsChange(
- { prComponent: e.target.value },
- configuredProject?.id
- )
+ onSettingsChange({ prComponent: e.target.value })
}
disabled={isSaving || isSavingConnection}
className='input'
@@ -433,10 +379,7 @@ export default function GithubSettings(props) {
// eslint-disable-next-line max-len
placeholder='(?mi)(fix|close|resolve|fixes|closes|resolves|fixed|closed|resolved)[\s]*.*(((and
)?(#|https:\/\/github.com\/%s\/%s\/issues\/)\d+[ ]*)+)'
onChange={(e) =>
- onSettingsChange(
- { prBodyClosePattern: e.target.value },
- configuredProject?.id
- )
+ onSettingsChange({ prBodyClosePattern: e.target.value })
}
disabled={isSaving || isSavingConnection}
fill
@@ -452,7 +395,7 @@ export default function GithubSettings(props) {
checked={enableAdditionalCalculations}
label='Enable calculation of commit and issue difference'
onChange={(e) =>
- handleAdditionalSettings(!enableAdditionalCalculations)
+ handleAdditionalEnable(!enableAdditionalCalculations)
}
/>
{enableAdditionalCalculations && (
@@ -472,15 +415,12 @@ export default function GithubSettings(props) {
placeholder='10'
allowNumericCharactersOnly={true}
onValueChange={(tagsLimitNumeric) =>
- onSettingsChange(
- {
- refdiff: {
- ...transformation?.refdiff,
- tagsLimit: tagsLimitNumeric
- }
- },
- configuredProject?.id
- )
+ onSettingsChange({
+ refdiff: {
+ ...transformation?.refdiff,
+ tagsLimit: tagsLimitNumeric
+ }
+ })
}
value={transformation?.refdiff?.tagsLimit}
/>
@@ -497,15 +437,12 @@ export default function GithubSettings(props) {
placeholder='(regex)$'
value={transformation?.refdiff?.tagsPattern}
onChange={(e) =>
- onSettingsChange(
- {
- refdiff: {
- ...transformation?.refdiff,
- tagsPattern: e.target.value
- }
- },
- configuredProject?.id
- )
+ onSettingsChange({
+ refdiff: {
+ ...transformation?.refdiff,
+ tagsPattern: e.target.value
+ }
+ })
}
disabled={isSaving || isSavingConnection}
className='input'
@@ -524,15 +461,12 @@ export default function GithubSettings(props) {
placeholder='reverse semver'
value={transformation?.refdiff?.tagsOrder}
onChange={(e) =>
- onSettingsChange(
- {
- refdiff: {
- ...transformation?.refdiff,
- tagsOrder: e.target.value
- }
- },
- configuredProject?.id
- )
+ onSettingsChange({
+ refdiff: {
+ ...transformation?.refdiff,
+ tagsOrder: e.target.value
+ }
+ })
}
disabled={isSaving || isSavingConnection}
className='input'
diff --git a/config-ui/src/pages/configure/settings/gitlab.jsx
b/config-ui/src/pages/configure/settings/gitlab.jsx
index 1af832fc..91de1f9c 100644
--- a/config-ui/src/pages/configure/settings/gitlab.jsx
+++ b/config-ui/src/pages/configure/settings/gitlab.jsx
@@ -28,29 +28,18 @@ export default function GitlabSettings(props) {
connection,
entities = [],
transformation = {},
- entityIdKey,
provider,
- configuredProject,
isSaving = false,
isSavingConnection = false,
onSettingsChange = () => {}
} = props
- useEffect(() => {
- console.log(
- '>>>> GITLAB: TRANSFORMATION SETTINGS OBJECT....',
- transformation
- )
- }, [transformation])
-
return (
<>
- {entities.some((e) => e.value === DataEntityTypes.DEVOPS) &&
- configuredProject ? (
+ {entities.some((e) => e.value === DataEntityTypes.DEVOPS) ? (
<Deployment
provider={provider}
entities={entities}
- entityIdKey={entityIdKey}
transformation={transformation}
connection={connection}
onSettingsChange={onSettingsChange}
diff --git a/config-ui/src/pages/configure/settings/jenkins.jsx
b/config-ui/src/pages/configure/settings/jenkins.jsx
index 9d937571..25174311 100644
--- a/config-ui/src/pages/configure/settings/jenkins.jsx
+++ b/config-ui/src/pages/configure/settings/jenkins.jsx
@@ -43,37 +43,10 @@ export default function JenkinsSettings(props) {
connection,
entities = [],
transformation = {},
- entityIdKey,
isSaving = false,
isSavingConnection = false,
- onSettingsChange = () => {},
- configuredProject
+ onSettingsChange = () => {}
} = props
- const history = useHistory()
- const { providerId, connectionId } = useParams()
-
- // eslint-disable-next-line max-len
- const [errors, setErrors] = useState([])
-
- const cancel = () => {
- history.push(`/integrations/${provider.id}`)
- }
-
- // useEffect(() => {
- // setErrors(['This integration doesn’t require any configuration.'])
- // }, [])
-
- useEffect(() => {
- onSettingsChange({
- errors,
- providerId,
- connectionId
- })
- }, [errors, onSettingsChange, connectionId, providerId])
-
- useEffect(() => {
- console.log('>>> JENKINS: DATA ENTITIES...', entities)
- }, [entities])
return (
<>
@@ -81,7 +54,6 @@ export default function JenkinsSettings(props) {
<Deployment
provider={provider}
entities={entities}
- entityIdKey={entityIdKey}
transformation={transformation}
connection={connection}
onSettingsChange={onSettingsChange}
diff --git a/config-ui/src/pages/configure/settings/jira.jsx
b/config-ui/src/pages/configure/settings/jira.jsx
index 2ec55e15..8c397802 100644
--- a/config-ui/src/pages/configure/settings/jira.jsx
+++ b/config-ui/src/pages/configure/settings/jira.jsx
@@ -55,191 +55,50 @@ export default function JiraSettings(props) {
const {
provider,
connection,
- blueprint,
- entities = [],
- configuredBoard,
+ issueTypes = [],
+ fields: fieldsList = [],
transformation = {},
- entityIdKey,
- transformations = {},
- isSaving,
onSettingsChange = () => {},
- issueTypes = [],
- fields = [],
- // eslint-disable-next-line no-unused-vars
- boards = {},
+ entities = [],
+ isSaving,
+ isSavingConnection = false,
jiraProxyError,
isFetchingJIRA = false
} = props
- const [typeMappingBug, setTypeMappingBug] = useState([])
- const [typeMappingIncident, setTypeMappingIncident] = useState([])
- const [typeMappingRequirement, setTypeMappingRequirement] = useState([])
- const [typeMappingAll, setTypeMappingAll] = useState({})
// eslint-disable-next-line no-unused-vars
const [statusMappings, setStatusMappings] = useState()
const [jiraIssueEpicKeyField, setJiraIssueEpicKeyField] = useState('')
const [jiraIssueStoryPointField, setJiraIssueStoryPointField] = useState('')
const [remoteLinkCommitSha, setRemoteLinkCommitSha] = useState('')
- // eslint-disable-next-line max-len
- // const savedRequirementTags = useMemo(() =>
transformation?.requirementTags || [], [transformation?.requirementTags,
configuredBoard?.id])
- // eslint-disable-next-line max-len
- // const savedBugTags = useMemo(() => transformation?.bugTags || [],
[transformation?.bugTags, configuredBoard?.id])
- // eslint-disable-next-line max-len
- // const savedIncidentTags = useMemo(() => transformation?.incidentTags ||
[], [transformation?.incidentTags, configuredBoard?.id])
-
- // @todo: lift higher to dsm hook
- const savedRequirementTags = useMemo(
- () =>
- boards[connection?.id]
- ? boards[connection?.id].reduce(
- (pV, cV, iDx) => ({
- ...pV,
- [cV?.id]: connection?.transformations
- ? connection?.transformations[iDx]?.requirementTags
- : transformation?.requirementTags
- }),
- {}
- )
- : {},
- [
- connection?.id,
- boards,
- connection?.transformations,
- transformation?.requirementTags
- ]
- )
- const savedBugTags = useMemo(
- () =>
- boards[connection?.id]
- ? boards[connection?.id].reduce(
- (pV, cV, iDx) => ({
- ...pV,
- [cV?.id]: connection?.transformations
- ? connection?.transformations[iDx]?.bugTags
- : transformation?.bugTags
- }),
- {}
- )
- : {},
- [
- connection?.id,
- boards,
- connection?.transformations,
- transformation?.bugTags
- ]
- )
- const savedIncidentTags = useMemo(
- () =>
- boards[connection?.id]
- ? boards[connection?.id].reduce(
- (pV, cV, iDx) => ({
- ...pV,
- [cV?.id]: connection?.transformations
- ? connection?.transformations[iDx]?.incidentTags
- : transformation?.incidentTags
- }),
- {}
- )
- : {},
- [
- connection?.id,
- boards,
- connection?.transformations,
- transformation?.incidentTags
- ]
- )
-
- const [requirementTags, setRequirementTags] = useState(savedRequirementTags)
- const [bugTags, setBugTags] = useState(savedBugTags)
- const [incidentTags, setIncidentTags] = useState(savedIncidentTags)
+ const [requirementTags, setRequirementTags] = useState([])
+ const [bugTags, setBugTags] = useState([])
+ const [incidentTags, setIncidentTags] = useState([])
const allChosenTagsInThisBoard = useMemo(
() => [
- ...(Array.isArray(requirementTags[configuredBoard?.id])
- ? requirementTags[configuredBoard?.id]
- : []),
- ...(Array.isArray(bugTags[configuredBoard?.id])
- ? bugTags[configuredBoard?.id]
- : []),
- ...(Array.isArray(incidentTags[configuredBoard?.id])
- ? incidentTags[configuredBoard?.id]
- : [])
+ ...(Array.isArray(requirementTags) ? requirementTags : []),
+ ...(Array.isArray(bugTags) ? bugTags : []),
+ ...(Array.isArray(incidentTags) ? incidentTags : [])
],
- [configuredBoard?.id, requirementTags, bugTags, incidentTags]
+ [requirementTags, bugTags, incidentTags]
)
- const [fieldsList, setFieldsList] = useState(fields)
-
- useEffect(() => {
- if (configuredBoard?.id) {
- onSettingsChange({ typeMappings: typeMappingAll }, configuredBoard?.id)
- }
- }, [typeMappingAll, onSettingsChange, configuredBoard?.id])
-
- useEffect(() => {
- setTypeMappingAll((ma) => ({
- ...ma,
- ...(typeMappingBug || [])
- .map((r) => createTypeMapObject(r.value, MAPPING_TYPES.Bug))
- .reduce((c, p) => ({ ...c, ...p }), {})
- }))
- }, [typeMappingBug])
-
- useEffect(() => {
- setTypeMappingAll((ma) => ({
- ...ma,
- ...(typeMappingIncident || [])
- .map((r) => createTypeMapObject(r.value, MAPPING_TYPES.Incident))
- .reduce((c, p) => ({ ...c, ...p }), {})
- }))
- }, [typeMappingIncident])
-
useEffect(() => {
- setTypeMappingAll((ma) => ({
- ...ma,
- ...(typeMappingRequirement || [])
- .map((r) => createTypeMapObject(r.value, MAPPING_TYPES.Requirement))
- .reduce((c, p) => ({ ...c, ...p }), {})
- }))
- }, [typeMappingRequirement])
+ console.log('>>> JIRA SETTINGS :: FIELDS LIST DATA CHANGED!', fieldsList)
+ }, [fieldsList])
useEffect(() => {
- if (configuredBoard?.id) {
- setTypeMappingAll({})
- setTypeMappingRequirement(requirementTags[configuredBoard?.id])
- onSettingsChange(
- { requirementTags: requirementTags[configuredBoard?.id] },
- configuredBoard?.id
- )
- }
- }, [requirementTags, configuredBoard?.id, onSettingsChange])
+ setBugTags(transformation?.bugTags || [])
+ }, [transformation?.bugTags])
useEffect(() => {
- if (configuredBoard?.id) {
- setTypeMappingAll({})
- setTypeMappingBug(bugTags[configuredBoard?.id])
- onSettingsChange(
- { bugTags: bugTags[configuredBoard?.id] },
- configuredBoard?.id
- )
- }
- }, [bugTags, configuredBoard?.id, onSettingsChange])
+ setIncidentTags(transformation?.incidentTags || [])
+ }, [transformation?.incidentTags])
useEffect(() => {
- if (configuredBoard?.id) {
- setTypeMappingAll({})
- setTypeMappingIncident(incidentTags[configuredBoard?.id])
- onSettingsChange(
- { incidentTags: incidentTags[configuredBoard?.id] },
- configuredBoard?.id
- )
- }
- }, [incidentTags, configuredBoard?.id, onSettingsChange])
-
- useEffect(() => {
- console.log('>>> JIRA SETTINGS :: FIELDS LIST DATA CHANGED!', fields)
- setFieldsList(fields)
- }, [fields])
+ setRequirementTags(transformation?.requirementTags || [])
+ }, [transformation?.requirementTags])
useEffect(() => {
setJiraIssueEpicKeyField(
@@ -255,31 +114,29 @@ export default function JiraSettings(props) {
useEffect(() => {
setRemoteLinkCommitSha(transformation?.remotelinkCommitShaPattern || '')
- }, [fieldsList, transformation?.remotelinkCommitShaPattern])
-
- useEffect(() => {
- console.log('>>>> CONFIGURING BOARD....', configuredBoard)
- }, [configuredBoard])
+ }, [transformation?.remotelinkCommitShaPattern])
useEffect(() => {
- console.log('>>>> MY SAVED JIRA REQUIREMENT TAGS...', savedRequirementTags)
- }, [savedRequirementTags])
-
- useEffect(() => {
- console.log('>>>> MY SAVED JIRA BUG TAGS...', savedBugTags)
- }, [savedBugTags])
-
- useEffect(() => {
- console.log('>>>> MY SAVED JIRA INCIDENT TAGS...', savedIncidentTags)
- }, [savedIncidentTags])
+ console.log('>>> JIRA SETTINGS :: TRANSFORMATION OBJECT!', transformation)
+ }, [transformation])
- useEffect(() => {
- console.log('>>> JIRA SETTINGS :: CONNECTION OBJECT!', connection)
- }, [connection])
+ const typeMappingAll = useMemo(
+ () =>
+ [
+ ...bugTags.map((r) => createTypeMapObject(r.value, MAPPING_TYPES.Bug)),
+ ...(incidentTags || []).map((r) =>
+ createTypeMapObject(r.value, MAPPING_TYPES.Incident)
+ ),
+ ...requirementTags.map((r) =>
+ createTypeMapObject(r.value, MAPPING_TYPES.Requirement)
+ )
+ ].reduce((c, p) => ({ ...c, ...p }), {}),
+ [bugTags, incidentTags, requirementTags]
+ )
useEffect(() => {
- console.log('>>> JIRA SETTINGS :: TRANSFORMATION OBJECT!', transformation)
- }, [transformation])
+ onSettingsChange({ typeMappings: typeMappingAll })
+ }, [typeMappingAll, onSettingsChange])
return (
<>
@@ -324,9 +181,7 @@ export default function JiraSettings(props) {
inline={true}
fill={true}
items={issueTypes}
- // selectedItems={savedTags}
- // selectedItems={requirementTags[configuredBoard?.id]}
- selectedItems={requirementTags[configuredBoard?.id]}
+ selectedItems={requirementTags}
activeItem={null}
itemPredicate={(query, item) =>
item?.title.toLowerCase().indexOf(query.toLowerCase()) >= 0
@@ -340,9 +195,7 @@ export default function JiraSettings(props) {
key={item.value}
onClick={handleClick}
text={
- requirementTags[configuredBoard?.id]?.some(
- (t) => t.value === item.value
- ) ? (
+ requirementTags.some((t) => t.value === item.value) ? (
<>
<img src={item.iconUrl} width={12} height={12} />{'
'}
{item.title}{' '}
@@ -357,7 +210,7 @@ export default function JiraSettings(props) {
}
style={{
marginBottom: '2px',
- fontWeight: requirementTags[configuredBoard?.id]?.some(
+ fontWeight: requirementTags.some(
(t) => t.value === item.value
)
? 700
@@ -375,34 +228,18 @@ export default function JiraSettings(props) {
}}
noResults={<MenuItem disabled={true} text='No results.' />}
onRemove={(item) => {
- // setRequirementTags((rT) => rT.filter(t => t.id !==
item.id))
- setRequirementTags((rT) => ({
- ...rT,
- [configuredBoard?.id]: rT[configuredBoard?.id]?.filter(
- (t) => t.id !== item.id
- )
- }))
+ const newValue = requirementTags.filter(
+ (t) => t.id !== item.id
+ )
+ setRequirementTags(newValue)
+ onSettingsChange({ requirementTags: newValue })
}}
onItemSelect={(item) => {
- // setRequirementTags((rT) => !rT.includes(item) ? [...rT,
item] : [...rT])
- setRequirementTags((rT) =>
- !rT[configuredBoard?.id]?.some(
- (t) => t.value === item.value
- )
- ? {
- ...rT,
- [configuredBoard?.id]: [
- ...(rT[configuredBoard?.id] || []),
- item
- ]
- }
- : {
- ...rT,
- [configuredBoard?.id]: [
- ...(rT[configuredBoard?.id] || [])
- ]
- }
- )
+ const newValue = !requirementTags.includes(item)
+ ? [...requirementTags, item]
+ : [...requirementTags]
+ setRequirementTags(newValue)
+ onSettingsChange({ requirementTags: newValue })
}}
/>
</div>
@@ -415,12 +252,10 @@ export default function JiraSettings(props) {
disabled={requirementTags?.length === 0 || isSaving}
intent={Intent.NONE}
minimal={false}
- onClick={() =>
- setRequirementTags((rT) => ({
- ...rT,
- [configuredBoard?.id]: []
- }))
- }
+ onClick={() => {
+ setRequirementTags([])
+ onSettingsChange({ requirementTags: [] })
+ }}
style={{
borderTopLeftRadius: 0,
borderBottomLeftRadius: 0,
@@ -461,7 +296,7 @@ export default function JiraSettings(props) {
inline={true}
fill={true}
items={issueTypes}
- selectedItems={bugTags[configuredBoard?.id]}
+ selectedItems={bugTags}
activeItem={null}
itemPredicate={(query, item) =>
item?.title.toLowerCase().indexOf(query.toLowerCase()) >= 0
@@ -475,9 +310,7 @@ export default function JiraSettings(props) {
key={item.value}
onClick={handleClick}
text={
- bugTags[configuredBoard?.id]?.some(
- (t) => t.value === item.value
- ) ? (
+ bugTags.some((t) => t.value === item.value) ? (
<>
<img src={item.iconUrl} width={12} height={12} />{'
'}
{item.title}{' '}
@@ -492,9 +325,7 @@ export default function JiraSettings(props) {
}
style={{
marginBottom: '2px',
- fontWeight: bugTags[configuredBoard?.id]?.some(
- (t) => t.value === item.value
- )
+ fontWeight: bugTags.some((t) => t.value === item.value)
? 700
: 'normal'
}}
@@ -510,34 +341,16 @@ export default function JiraSettings(props) {
}}
noResults={<MenuItem disabled={true} text='No results.' />}
onRemove={(item) => {
- // setBugTags((bT) => bT.filter(t => t.id !== item.id))
- setBugTags((bT) => ({
- ...bT,
- [configuredBoard?.id]: bT[configuredBoard?.id]?.filter(
- (t) => t.id !== item.id
- )
- }))
+ const newValue = bugTags.filter((t) => t.id !== item.id)
+ setBugTags(newValue)
+ onSettingsChange({ bugTags: newValue })
}}
onItemSelect={(item) => {
- // setBugTags((bT) => !bT.includes(item) ? [...bT, item] :
[...bT])
- setBugTags((bT) =>
- !bT[configuredBoard?.id]?.some(
- (t) => t.value === item.value
- )
- ? {
- ...bT,
- [configuredBoard?.id]: [
- ...(bT[configuredBoard?.id] || []),
- item
- ]
- }
- : {
- ...bT,
- [configuredBoard?.id]: [
- ...(bT[configuredBoard?.id] || [])
- ]
- }
- )
+ const newValue = !bugTags.includes(item)
+ ? [...bugTags, item]
+ : [...bugTags]
+ setBugTags(newValue)
+ onSettingsChange({ bugTags: newValue })
}}
/>
</div>
@@ -550,9 +363,10 @@ export default function JiraSettings(props) {
disabled={bugTags.length === 0 || isSaving}
intent={Intent.NONE}
minimal={false}
- onClick={() =>
- setBugTags((bT) => ({ ...bT, [configuredBoard?.id]: [] }))
- }
+ onClick={() => {
+ setBugTags([])
+ onSettingsChange({ bugTags: [] })
+ }}
style={{
borderTopLeftRadius: 0,
borderBottomLeftRadius: 0,
@@ -602,7 +416,7 @@ export default function JiraSettings(props) {
inline={true}
fill={true}
items={issueTypes}
- selectedItems={incidentTags[configuredBoard?.id]}
+ selectedItems={incidentTags}
activeItem={null}
itemPredicate={(query, item) =>
item?.title.toLowerCase().indexOf(query.toLowerCase()) >= 0
@@ -616,9 +430,7 @@ export default function JiraSettings(props) {
key={item.value}
onClick={handleClick}
text={
- incidentTags[configuredBoard?.id]?.some(
- (t) => t.value === item.value
- ) ? (
+ incidentTags.some((t) => t.value === item.value) ? (
<>
<img src={item.iconUrl} width={12} height={12} />{'
'}
{item.title}{' '}
@@ -633,7 +445,7 @@ export default function JiraSettings(props) {
}
style={{
marginBottom: '2px',
- fontWeight: incidentTags[configuredBoard?.id]?.some(
+ fontWeight: incidentTags.some(
(t) => t.value === item.value
)
? 700
@@ -651,34 +463,16 @@ export default function JiraSettings(props) {
}}
noResults={<MenuItem disabled={true} text='No results.' />}
onRemove={(item) => {
- // setIncidentTags((iT) => iT.filter(t => t.id !== item.id))
- setIncidentTags((iT) => ({
- ...iT,
- [configuredBoard?.id]: iT[configuredBoard?.id]?.filter(
- (t) => t.id !== item.id
- )
- }))
+ const newValue = incidentTags.filter((t) => t.id !== item.id)
+ setIncidentTags(newValue)
+ onSettingsChange({ incidentTags: newValue })
}}
onItemSelect={(item) => {
- // setIncidentTags((iT) => !iT.includes(item) ? [...iT,
item] : [...iT])
- setIncidentTags((iT) =>
- !iT[configuredBoard?.id]?.some(
- (t) => t.value === item.value
- )
- ? {
- ...iT,
- [configuredBoard?.id]: [
- ...(iT[configuredBoard?.id] || []),
- item
- ]
- }
- : {
- ...iT,
- [configuredBoard?.id]: [
- ...(iT[configuredBoard?.id] || [])
- ]
- }
- )
+ const newValue = !incidentTags.includes(item)
+ ? [...incidentTags, item]
+ : incidentTags
+ setIncidentTags(newValue)
+ onSettingsChange({ incidentTags: newValue })
}}
/>
</div>
@@ -691,12 +485,10 @@ export default function JiraSettings(props) {
disabled={incidentTags.length === 0 || isSaving}
intent={Intent.NONE}
minimal={false}
- onClick={() =>
- setIncidentTags((iT) => ({
- ...iT,
- [configuredBoard?.id]: []
- }))
- }
+ onClick={() => {
+ setIncidentTags([])
+ onSettingsChange({ incidentTags: [] })
+ }}
style={{
borderTopLeftRadius: 0,
borderBottomLeftRadius: 0,
@@ -773,10 +565,7 @@ export default function JiraSettings(props) {
}
onItemSelect={(item) => {
setJiraIssueEpicKeyField(item)
- onSettingsChange(
- { epicKeyField: item?.value },
- configuredBoard?.id
- )
+ onSettingsChange({ epicKeyField: item?.value })
}}
popoverProps={{
position: Position.TOP
@@ -808,7 +597,7 @@ export default function JiraSettings(props) {
minimal={false}
onClick={() => {
setJiraIssueEpicKeyField('')
- onSettingsChange({ epicKeyField: '' }, configuredBoard?.id)
+ onSettingsChange({ epicKeyField: '' })
}}
/>
</ButtonGroup>
@@ -895,10 +684,7 @@ export default function JiraSettings(props) {
}
onItemSelect={(item) => {
setJiraIssueStoryPointField(item)
- onSettingsChange(
- { storyPointField: item?.value },
- configuredBoard?.id
- )
+ onSettingsChange({ storyPointField: item?.value })
}}
popoverProps={{
position: Position.TOP
@@ -931,10 +717,7 @@ export default function JiraSettings(props) {
minimal={false}
onClick={() => {
setJiraIssueStoryPointField('')
- onSettingsChange(
- { storyPointField: '' },
- configuredBoard?.id
- )
+ onSettingsChange({ storyPointField: '' })
}}
/>
</ButtonGroup>
@@ -974,10 +757,9 @@ export default function JiraSettings(props) {
placeholder='/commit/([0-9a-f]{40})$'
value={remoteLinkCommitSha}
onChange={(e) =>
- onSettingsChange(
- { remotelinkCommitShaPattern: e.target.value },
- configuredBoard?.id
- )
+ onSettingsChange({
+ remotelinkCommitShaPattern: e.target.value
+ })
}
disabled={isSaving}
className='input'
diff --git a/config-ui/src/pages/configure/settings/tapd.jsx
b/config-ui/src/pages/configure/settings/tapd.jsx
index 251fe714..3d472a98 100644
--- a/config-ui/src/pages/configure/settings/tapd.jsx
+++ b/config-ui/src/pages/configure/settings/tapd.jsx
@@ -30,27 +30,11 @@ export default function TapdSettings(props) {
onSettingsChange = () => {}
} = props
const history = useHistory()
- const { providerId, connectionId } = useParams()
-
- // eslint-disable-next-line max-len
- const [errors, setErrors] = useState([])
const cancel = () => {
history.push(`/integrations/${provider.id}`)
}
- // useEffect(() => {
- // setErrors(['This integration doesn’t require any configuration.'])
- // }, [])
-
- useEffect(() => {
- onSettingsChange({
- errors,
- providerId,
- connectionId
- })
- }, [errors, onSettingsChange, connectionId, providerId])
-
return (
<>
<div className='headlineContainer'>