This is an automated email from the ASF dual-hosted git repository.

mintsweet pushed a commit to branch feat-5949
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git

commit 9dd3c00226a61aa82d2106e05342925512c581c1
Author: mintsweet <[email protected]>
AuthorDate: Wed Oct 18 19:18:43 2023 +1300

    feat(config-ui): improve the transformation for github and gitlab
---
 config-ui/src/plugins/register/github/styled.ts    |  24 +---
 .../src/plugins/register/github/transformation.tsx | 130 +++++++++++---------
 config-ui/src/plugins/register/gitlab/styled.ts    |  24 +---
 .../src/plugins/register/gitlab/transformation.tsx | 132 +++++++++++----------
 4 files changed, 155 insertions(+), 155 deletions(-)

diff --git a/config-ui/src/plugins/register/github/styled.ts 
b/config-ui/src/plugins/register/github/styled.ts
index e97be4235..107a79d6f 100644
--- a/config-ui/src/plugins/register/github/styled.ts
+++ b/config-ui/src/plugins/register/github/styled.ts
@@ -48,28 +48,16 @@ export const Transformation = styled.div`
 export const CICD = styled.div`
   h3 {
     margin-top: 16px;
-
-    .switch {
-      display: inline-flex;
-      align-items: center;
-      margin-left: 16px;
-      font-size: 14px;
-      font-weight: 400;
-
-      .bp5-switch {
-        margin-bottom: 0;
-      }
-    }
   }
 
-  .text {
+  .text,
+  .sub-text {
     display: flex;
     align-items: baseline;
-    margin-top: 16px;
-    padding-left: 24px;
+    margin-bottom: 8px;
+  }
 
-    .bp5-radio {
-      margin-right: 0;
-    }
+  .sub-text {
+    padding-left: 28px;
   }
 `;
diff --git a/config-ui/src/plugins/register/github/transformation.tsx 
b/config-ui/src/plugins/register/github/transformation.tsx
index ee3deb944..397df17fe 100644
--- a/config-ui/src/plugins/register/github/transformation.tsx
+++ b/config-ui/src/plugins/register/github/transformation.tsx
@@ -17,7 +17,7 @@
  */
 
 import { useState, useEffect } from 'react';
-import { FormGroup, InputGroup, TextArea, Tag, Switch, Icon, Intent, Colors } 
from '@blueprintjs/core';
+import { FormGroup, InputGroup, TextArea, Tag, Checkbox, Icon, Intent, Colors 
} from '@blueprintjs/core';
 
 import { ExternalLink, HelpTooltip, Divider } from '@/components';
 import { DOC_URL } from '@/release';
@@ -31,26 +31,28 @@ interface Props {
 }
 
 export const GitHubTransformation = ({ entities, transformation, 
setTransformation }: Props) => {
-  const [enableCICD, setEnableCICD] = useState(true);
+  const [useCustom, setUseCustom] = useState(false);
 
   useEffect(() => {
-    if (!transformation.deploymentPattern) {
-      setEnableCICD(false);
+    if (transformation.deploymentPattern || transformation.productionPattern) {
+      setUseCustom(true);
+    } else {
+      setUseCustom(false);
     }
-  }, []);
+  }, [transformation]);
 
-  const handleChangeEnableCICD = (e: React.FormEvent<HTMLInputElement>) => {
+  const handleChangeUseCustom = (e: React.FormEvent<HTMLInputElement>) => {
     const checked = (e.target as HTMLInputElement).checked;
 
     if (!checked) {
       setTransformation({
         ...transformation,
-        deploymentPattern: undefined,
-        productionPattern: undefined,
+        deploymentPattern: '',
+        productionPattern: '',
       });
     }
 
-    setEnableCICD(checked);
+    setUseCustom(checked);
   };
 
   return (
@@ -188,57 +190,67 @@ export const GitHubTransformation = ({ entities, 
transformation, setTransformati
             <Tag minimal intent={Intent.PRIMARY} style={{ marginLeft: 8 }}>
               DORA
             </Tag>
-            <div className="switch">
-              <span>Enable</span>
-              <Switch alignIndicator="right" inline checked={enableCICD} 
onChange={handleChangeEnableCICD} />
-            </div>
           </h3>
-          {enableCICD && (
-            <>
-              <p>
-                Use Regular Expression to define Deployments in DevLake in 
order to measure DORA metrics.{' '}
-                <ExternalLink 
link={DOC_URL.PLUGIN.GITHUB.TRANSFORMATION}>Learn more</ExternalLink>
-              </p>
-              <div style={{ marginTop: 16 }}>Convert a GitHub Workflow run as 
a DevLake Deployment when: </div>
-              <div className="text">
-                <span>
-                  The name of the <strong>GitHub workflow run</strong> or 
<strong>one of its jobs</strong> matches
-                </span>
-                <InputGroup
-                  style={{ width: 200, margin: '0 8px' }}
-                  placeholder="(deploy|push-image)"
-                  value={transformation.deploymentPattern ?? ''}
-                  onChange={(e) =>
-                    setTransformation({
-                      ...transformation,
-                      deploymentPattern: e.target.value,
-                      productionPattern: !e.target.value ? '' : 
transformation.productionPattern,
-                    })
-                  }
-                />
-                <i style={{ color: '#E34040' }}>*</i>
-                <HelpTooltip content="GitHub Workflow Runs: 
https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow";
 />
-              </div>
-              <div className="text">
-                <span>If the name also matches</span>
-                <InputGroup
-                  style={{ width: 200, margin: '0 8px' }}
-                  disabled={!transformation.deploymentPattern}
-                  placeholder="prod(.*)"
-                  value={transformation.productionPattern ?? ''}
-                  onChange={(e) =>
-                    setTransformation({
-                      ...transformation,
-                      productionPattern: e.target.value,
-                    })
-                  }
-                />
-                <span>, this Deployment is a ‘Production Deployment’</span>
-                <HelpTooltip content="If you leave this field empty, all 
DevLake Deployments will be tagged as in the Production environment. " />
-              </div>
-            </>
-          )}
-          <Divider />
+          <p style={{ marginBottom: 16 }}>
+            Use Regular Expression to define Deployments in DevLake in order 
to measure DORA metrics.{' '}
+            <ExternalLink link={DOC_URL.PLUGIN.GITHUB.TRANSFORMATION}>Learn 
more</ExternalLink>
+          </p>
+          <div className="text">
+            <Checkbox disabled checked />
+            <span>Convert a GitHub Workflow to a DevLake Deployment </span>
+          </div>
+          <div className="sub-text">
+            <span>If its environment name matches</span>
+            <InputGroup
+              style={{ width: 180, margin: '0 8px' }}
+              placeholder="(?i)prod(.*)"
+              value={transformation.envNamePattern}
+              onChange={(e) =>
+                setTransformation({
+                  ...transformation,
+                  envNamePattern: e.target.value,
+                })
+              }
+            />
+            <span>, this deployment is a ‘Production Deployment’</span>
+          </div>
+          <div className="text">
+            <Checkbox checked={useCustom} onChange={handleChangeUseCustom} />
+            <span>Convert a GitHub Workflow to a DevLake Deployment</span>
+          </div>
+          <div className="sub-text">
+            <span>Its branch/tag name or one of its jobs matches</span>
+            <InputGroup
+              style={{ width: 180, margin: '0 8px' }}
+              placeholder="(deploy|push-image)"
+              value={transformation.deploymentPattern ?? ''}
+              onChange={(e) =>
+                setTransformation({
+                  ...transformation,
+                  deploymentPattern: e.target.value,
+                  productionPattern: !e.target.value ? '' : 
transformation.productionPattern,
+                })
+              }
+            />
+            <i style={{ color: '#E34040' }}>*</i>
+            <HelpTooltip content="GitHub Workflow Runs: 
https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow";
 />
+          </div>
+          <div className="sub-text">
+            <span>If the name also matches</span>
+            <InputGroup
+              style={{ width: 180, margin: '0 8px' }}
+              placeholder="prod(.*)"
+              value={transformation.productionPattern ?? ''}
+              onChange={(e) =>
+                setTransformation({
+                  ...transformation,
+                  productionPattern: e.target.value,
+                })
+              }
+            />
+            <span>, this Deployment is a ‘Production Deployment’</span>
+            <HelpTooltip content="If you leave this field empty, all 
Deployments will be tagged as in the Production environment. " />
+          </div>
         </S.CICD>
       )}
       {entities.includes('CODEREVIEW') && (
diff --git a/config-ui/src/plugins/register/gitlab/styled.ts 
b/config-ui/src/plugins/register/gitlab/styled.ts
index dd82971ed..88bf19ae1 100644
--- a/config-ui/src/plugins/register/gitlab/styled.ts
+++ b/config-ui/src/plugins/register/gitlab/styled.ts
@@ -23,28 +23,16 @@ export const Transformation = styled.div``;
 export const CICD = styled.div`
   h3 {
     margin-top: 16px;
-
-    .switch {
-      display: inline-flex;
-      align-items: center;
-      margin-left: 16px;
-      font-size: 14px;
-      font-weight: 400;
-
-      .bp5-switch {
-        margin-bottom: 0;
-      }
-    }
   }
 
-  .text {
+  .text,
+  .sub-text {
     display: flex;
     align-items: baseline;
-    margin-top: 16px;
-    padding-left: 24px;
+    margin-bottom: 8px;
+  }
 
-    .bp5-radio {
-      margin-right: 0;
-    }
+  .sub-text {
+    padding-left: 28px;
   }
 `;
diff --git a/config-ui/src/plugins/register/gitlab/transformation.tsx 
b/config-ui/src/plugins/register/gitlab/transformation.tsx
index ee006745a..5c09f239f 100644
--- a/config-ui/src/plugins/register/gitlab/transformation.tsx
+++ b/config-ui/src/plugins/register/gitlab/transformation.tsx
@@ -17,9 +17,9 @@
  */
 
 import { useState, useEffect } from 'react';
-import { Tag, Intent, Switch, InputGroup } from '@blueprintjs/core';
+import { Tag, Intent, Checkbox, InputGroup } from '@blueprintjs/core';
 
-import { ExternalLink, HelpTooltip, Divider } from '@/components';
+import { ExternalLink, HelpTooltip } from '@/components';
 import { DOC_URL } from '@/release';
 
 import * as S from './styled';
@@ -31,26 +31,28 @@ interface Props {
 }
 
 export const GitLabTransformation = ({ entities, transformation, 
setTransformation }: Props) => {
-  const [enableCICD, setEnableCICD] = useState(true);
+  const [useCustom, setUseCustom] = useState(false);
 
   useEffect(() => {
-    if (!transformation.deploymentPattern) {
-      setEnableCICD(false);
+    if (transformation.deploymentPattern || transformation.productionPattern) {
+      setUseCustom(true);
+    } else {
+      setUseCustom(false);
     }
-  }, []);
+  }, [transformation]);
 
-  const handleChangeCICDEnable = (e: React.FormEvent<HTMLInputElement>) => {
+  const handleChangeUseCustom = (e: React.FormEvent<HTMLInputElement>) => {
     const checked = (e.target as HTMLInputElement).checked;
 
     if (!checked) {
       setTransformation({
         ...transformation,
-        deploymentPattern: undefined,
-        productionPattern: undefined,
+        deploymentPattern: '',
+        productionPattern: '',
       });
     }
 
-    setEnableCICD(checked);
+    setUseCustom(checked);
   };
 
   return (
@@ -63,57 +65,67 @@ export const GitLabTransformation = ({ entities, 
transformation, setTransformati
             <Tag minimal intent={Intent.PRIMARY} style={{ marginLeft: 8 }}>
               DORA
             </Tag>
-            <div className="switch">
-              <span>Enable</span>
-              <Switch alignIndicator="right" inline checked={enableCICD} 
onChange={handleChangeCICDEnable} />
-            </div>
           </h3>
-          {enableCICD && (
-            <>
-              <p>
-                Use Regular Expression to define Deployments in DevLake in 
order to measure DORA metrics.{' '}
-                <ExternalLink 
link={DOC_URL.PLUGIN.GITLAB.TRANSFORMATION}>Learn more</ExternalLink>
-              </p>
-              <div style={{ marginTop: 16 }}>Convert a GitLab Pipeline as a 
DevLake Deployment when: </div>
-              <div className="text">
-                <span>
-                  Its branch/tag name or <strong>one of its jobs</strong> 
matches
-                </span>
-                <InputGroup
-                  style={{ width: 200, margin: '0 8px' }}
-                  placeholder="(deploy|push-image)"
-                  value={transformation.deploymentPattern ?? ''}
-                  onChange={(e) =>
-                    setTransformation({
-                      ...transformation,
-                      deploymentPattern: e.target.value,
-                      productionPattern: !e.target.value ? '' : 
transformation.productionPattern,
-                    })
-                  }
-                />
-                <i style={{ color: '#E34040' }}>*</i>
-                <HelpTooltip content="GitLab Pipelines: 
https://docs.gitlab.com/ee/ci/pipelines/"; />
-              </div>
-              <div className="text">
-                <span>If the name also matches</span>
-                <InputGroup
-                  style={{ width: 200, margin: '0 8px' }}
-                  disabled={!transformation.deploymentPattern}
-                  placeholder="prod(.*)"
-                  value={transformation.productionPattern ?? ''}
-                  onChange={(e) =>
-                    setTransformation({
-                      ...transformation,
-                      productionPattern: e.target.value,
-                    })
-                  }
-                />
-                <span>, this Deployment is a ‘Production Deployment’</span>
-                <HelpTooltip content="If you leave this field empty, all 
DevLake Deployments will be tagged as in the Production environment. " />
-              </div>
-            </>
-          )}
-          <Divider />
+          <p style={{ marginBottom: 16 }}>
+            Use Regular Expression to define Deployments in DevLake in order 
to measure DORA metrics.{' '}
+            <ExternalLink link={DOC_URL.PLUGIN.GITLAB.TRANSFORMATION}>Learn 
more</ExternalLink>
+          </p>
+          <div className="text">
+            <Checkbox disabled checked />
+            <span>Convert a GitLab Deployment to a DevLake Deployment</span>
+          </div>
+          <div className="sub-text">
+            <span>If its environment name matches</span>
+            <InputGroup
+              style={{ width: 180, margin: '0 8px' }}
+              placeholder="(?i)prod(.*)"
+              value={transformation.envNamePattern}
+              onChange={(e) =>
+                setTransformation({
+                  ...transformation,
+                  envNamePattern: e.target.value,
+                })
+              }
+            />
+            <span>, this deployment is a ‘Production Deployment’</span>
+          </div>
+          <div className="text">
+            <Checkbox checked={useCustom} onChange={handleChangeUseCustom} />
+            <span>Convert a GitLab Pipeline as a DevLake Deployment 
when:</span>
+          </div>
+          <div className="sub-text">
+            <span>Its branch/tag name or one of its jobs matches</span>
+            <InputGroup
+              style={{ width: 180, margin: '0 8px' }}
+              placeholder="(deploy|push-image)"
+              value={transformation.deploymentPattern ?? ''}
+              onChange={(e) =>
+                setTransformation({
+                  ...transformation,
+                  deploymentPattern: e.target.value,
+                  productionPattern: !e.target.value ? '' : 
transformation.productionPattern,
+                })
+              }
+            />
+            <i style={{ color: '#E34040' }}>*</i>
+            <HelpTooltip content="GitLab Pipelines: 
https://docs.gitlab.com/ee/ci/pipelines/"; />
+          </div>
+          <div className="sub-text">
+            <span>If the name also matches</span>
+            <InputGroup
+              style={{ width: 180, margin: '0 8px' }}
+              placeholder="prod(.*)"
+              value={transformation.productionPattern ?? ''}
+              onChange={(e) =>
+                setTransformation({
+                  ...transformation,
+                  productionPattern: e.target.value,
+                })
+              }
+            />
+            <span>, this deployment is a ‘Production Deployment’</span>
+            <HelpTooltip content="If you leave this field empty, all 
Deployments will be tagged as in the Production environment. " />
+          </div>
         </S.CICD>
       )}
     </S.Transformation>

Reply via email to