diff --git a/cypress/support/actions/variables/VariablesAction.ts b/cypress/support/actions/variables/VariablesAction.ts index 54ff2969..df5b8f16 100644 --- a/cypress/support/actions/variables/VariablesAction.ts +++ b/cypress/support/actions/variables/VariablesAction.ts @@ -16,7 +16,7 @@ export default class VariablesAction { } doAddVariable(name: string, value: string) { - environment.getAddButton().click(); + environment.getAddButton().first().click(); cy.get('.react-select__indicator').click({ force: true }); cy.get('#react-select-2-option-1').click(); diff --git a/src/components/AddVariable/index.js b/src/components/AddVariable/index.js index b0b8fea7..676de2c4 100644 --- a/src/components/AddVariable/index.js +++ b/src/components/AddVariable/index.js @@ -3,6 +3,7 @@ import { Mutation } from 'react-apollo'; import ButtonBootstrap from 'react-bootstrap/Button'; import ReactSelect from 'react-select'; +import { LoadingOutlined } from '@ant-design/icons'; import { Popconfirm } from 'antd'; import withLogic from 'components/AddVariable/logic'; import Button from 'components/Button'; @@ -31,7 +32,6 @@ export const AddVariable = ({ varEnvironment, varValues, varTarget, - noVars, varName, varValue, varScope, @@ -50,6 +50,9 @@ export const AddVariable = ({ setEnvironmentErrorAlert, setProjectErrorAlert, action, + loading, + prjEnvValues, + envValues, }) => { const [updateName, setUpdateName] = useState(varName); const [updateValue, setUpdateValue] = useState(varValue); @@ -73,22 +76,36 @@ export const AddVariable = ({ setProjectErrorAlert ? setProjectErrorAlert(true) : setEnvironmentErrorAlert(true); }; + const handlePermissionCheck = () => { + let waitForGQL = setTimeout(() => { + openModal(); + }, [1000]); + if (prjEnvValues || envValues) { + clearTimeout(waitForGQL); + openModal(); + } + }; + return ( {icon ? ( - ) : ( - + ) : !loading ? ( + Add + ) : ( + + + )}
- {noVars || !updateName ? `Add ${varTarget} Variable` : `Update ${varTarget} Variable`} + {!updateName ? `Add ${varTarget} Variable` : `Update ${varTarget} Variable`}
diff --git a/src/components/EnvironmentVariables/index.js b/src/components/EnvironmentVariables/index.js index 81e34fe4..f1332e87 100644 --- a/src/components/EnvironmentVariables/index.js +++ b/src/components/EnvironmentVariables/index.js @@ -132,33 +132,115 @@ const EnvironmentVariables = ({ environment, onVariableAdded }) => { setUpdateVarScope(rowScope); }; - const permissionCheck = (action, index = 0) => { + const permissionCheck = action => { + getEnvVarValues(); setOpenEnvVars(false); setAction(action); - valuesShow(index); - getEnvVarValues(); + }; + + const renderEnvValue = (envVar, index) => { + if (envVar.value.length >= 0 && !valueState[index]) { + return hashValue(envVar.value).substring(0, 25); + } else if (envVar.value.length >= 100 && valueState[index]) { + return envVar.value.substring(0, 25) + '..'; + } else if (envVar.value.length === 0 && valueState[index]) { + return Empty; + } else { + return envVar.value; + } + }; + + const renderPrjValue = (projEnvVar, index) => { + if (projEnvVar.value.length >= 0 && !prjValueState[index]) { + return hashValue(projEnvVar.value).substring(0, 25); + } else if (projEnvVar.value.length >= 100 && prjValueState[index]) { + return projEnvVar.value.substring(0, 25) + '..'; + } else if (projEnvVar.value.length === 0 && prjValueState[index]) { + return Empty; + } else { + return projEnvVar.value; + } + }; + + const renderEnvValues = (envVar, index) => { + if (envLoading) { + return
; + } + + if (envVar.value !== undefined) { + return ( + +
+
+ {renderEnvValue(envVar, index)} + valuesShow(index) : () => valuesHide(index)}> + + +
+ {envVar.value.length >= 100 && valueState[index] && ( + + )} +
+
+ ); + } + }; + + const renderPrjValues = (projEnvVar, index) => { + if (prjLoading) { + return
; + } + + if (projEnvVar.value !== undefined) { + return ( + +
+
+ {renderPrjValue(projEnvVar, index)} + prjValuesShow(index) : () => prjValuesHide(index)}> + + +
+ {projEnvVar.value.length >= 100 && prjValueState[index] && ( + + )} +
+
+ ); + } }; return ( - {environment.envVariables.length === 0 ? ( - <> - {environmentErrorAlert && ( - - )} -
+ <> + {environmentErrorAlert && ( + + )} +
+ +
+ {environmentErrorAlert ? ( + ) : ( { refresh={onVariableAdded} setEnvironmentErrorAlert={setEnvironmentErrorAlert} action="add" + loading={prjLoading && action === 'add'} + envValues={envValues} /> )} -
-
-
- -
- - ) : ( - <> - {environmentErrorAlert && ( - - )} -
- -
- - ) : ( - - )} - + {displayVars.length > 0 && ( -
+ )}
+
+ {!displayVars.length && ( + <> +
+
+ +
+
+ + )} + {displayVars.length > 0 && (
@@ -241,93 +300,7 @@ const EnvironmentVariables = ({ environment, onVariableAdded }) => {
{envVar.name}
{envVar.scope}
- {envLoading ? ( - -
-
-
-
- ) : envVar.value !== undefined ? ( - -
- {envVar.value.length === 0 && valueState[index] ? ( -
- Empty - valuesHide(index)}> - - -
- ) : envVar.value.length <= 100 && !valueState[index] ? ( -
- {hashValue(envVar.value).substring(0, 25)} - valuesShow(index)}> - - -
- ) : envVar.value.length <= 100 && valueState[index] ? ( -
- {envVar.value} - valuesHide(index)}> - - -
- ) : envVar.value.length >= 100 && !valueState[index] ? ( -
- {hashValue(envVar.value).substring(0, 25)} - valuesShow(index)}> - - -
- ) : envVar.value.length >= 100 && valueState[index] ? ( -
- ${envVar.value.substring(0, 25)}.. - valuesHide(index)}> - - -
- ) : ( - `${hashValue(envVar.value).substring(0, 25)}...` - )} - {envVar.value.length > 100 ? ( - - ) : ( - '' - )} -
-
- ) : ( - '' - )} + {renderEnvValues(envVar, index)}
@@ -385,43 +358,29 @@ const EnvironmentVariables = ({ environment, onVariableAdded }) => {
- - )} - {displayProjectVars.length === 0 ? ( - <> -
-
+ )} + + {displayVars.length !== 0 ?
: ''} + + <> + {projectErrorAlert && ( + + )} +
+ +
-
-
-
- -
-
- - ) : ( - <> -
- {projectErrorAlert && ( - - )} -
- -
- + + {displayProjectVars.length > 0 && ( -
+ )}
+
+ {!displayProjectVars.length && ( + <> +
+
+ +
+
+ + )} + {displayProjectVars.length > 0 && (
@@ -453,93 +423,7 @@ const EnvironmentVariables = ({ environment, onVariableAdded }) => {
{projEnvVar.name}
{projEnvVar.scope}
- {prjLoading ? ( - -
-
-
-
- ) : projEnvVar.value !== undefined ? ( - -
- {projEnvVar.value.length == 0 && prjValueState[index] ? ( -
- Empty - prjValuesHide(index)}> - - -
- ) : projEnvVar.value.length <= 100 && !prjValueState[index] ? ( -
- {hashValue(projEnvVar.value).substring(0, 25)} - prjValuesShow(index)}> - - -
- ) : projEnvVar.value.length <= 100 && prjValueState[index] ? ( -
- {projEnvVar.value} - prjValuesHide(index)}> - - -
- ) : projEnvVar.value.length >= 100 && !prjValueState[index] ? ( -
- {hashValue(projEnvVar.value).substring(0, 25)} - prjValuesShow(index)}> - - -
- ) : projEnvVar.value.length >= 100 && prjValueState[index] ? ( -
- ${projEnvVar.value.substring(0, 25)}.. - prjValuesHide(index)}> - - -
- ) : ( - `${hashValue(projEnvVar.value).substring(0, 25)}...` - )} - {projEnvVar.value.length > 100 ? ( - - ) : ( - '' - )} -
-
- ) : ( - '' - )} + {renderPrjValues(projEnvVar, index)}
); @@ -547,8 +431,8 @@ const EnvironmentVariables = ({ environment, onVariableAdded }) => {
- - )} + )} + ); }; diff --git a/src/components/ProjectVariables/index.js b/src/components/ProjectVariables/index.js index 01ac8197..29db26fd 100644 --- a/src/components/ProjectVariables/index.js +++ b/src/components/ProjectVariables/index.js @@ -33,7 +33,7 @@ const hashValue = value => { return hashedVal; }; -const ProjectVariables = ({ project, onVariableAdded, closeModal }) => { +const ProjectVariables = ({ project, onVariableAdded }) => { let displayVars = project.envVariables; let initValueState = new Array(displayVars.length).fill(false); @@ -88,82 +88,88 @@ const ProjectVariables = ({ project, onVariableAdded, closeModal }) => { setUpdateVarScope(rowScope); }; - const permissionCheck = (action, index = 0) => { + const permissionCheck = action => { + getPrjEnvVarValues(); setOpenPrjVars(false); setAction(action); - valuesShow(index); - getPrjEnvVarValues(); + }; + + const renderValue = (projEnvVar, index) => { + if (projEnvVar.value.length >= 0 && !valueState[index]) { + return hashValue(projEnvVar.value).substring(0, 25); + } else if (projEnvVar.value.length >= 100 && valueState[index]) { + return projEnvVar.value.substring(0, 25) + '..'; + } else if (projEnvVar.value.length === 0 && valueState[index]) { + return Empty; + } else { + return projEnvVar.value; + } + }; + + const renderValues = (projEnvVar, index) => { + if (prjLoading) { + return
; + } + + if (projEnvVar.value !== undefined) { + return ( + +
+
+ {renderValue(projEnvVar, index)} + valuesShow(index) : () => valuesHide(index)}> + + +
+ {projEnvVar.value.length >= 100 && valueState[index] && ( + + )} +
+
+ ); + } }; return ( - {displayVars.length === 0 ? ( - <> - {projectErrorAlert && ( - - )} -
- + <> + {projectErrorAlert && ( + + )} +
+ +
+ ) : ( )} -
-
-
- -
-
- - ) : ( - <> - {projectErrorAlert && ( - - )} -
- -
- - ) : ( - - )} - + + {displayVars.length > 0 && ( -
+ )}
+
+ {!displayVars.length && ( + <> +
+
+ +
+
+ + )} + {displayVars.length > 0 && (
@@ -196,93 +213,7 @@ const ProjectVariables = ({ project, onVariableAdded, closeModal }) => {
{projEnvVar.name}
{projEnvVar.scope}
- {prjLoading ? ( - -
-
-
-
- ) : projEnvVar.value !== undefined ? ( - -
- {projEnvVar.value.length === 0 && valueState[index] ? ( -
- Empty - valuesHide(index)}> - - -
- ) : projEnvVar.value.length <= 100 && !valueState[index] ? ( -
- {hashValue(projEnvVar.value).substring(0, 25)} - valuesShow(index)}> - - -
- ) : projEnvVar.value.length <= 100 && valueState[index] ? ( -
- {projEnvVar.value} - valuesHide(index)}> - - -
- ) : projEnvVar.value.length >= 100 && !valueState[index] ? ( -
- {hashValue(projEnvVar.value).substring(0, 25)} - valuesShow(index)}> - - -
- ) : projEnvVar.value.length >= 100 && valueState[index] ? ( -
- ${projEnvVar.value.substring(0, 25)}.. - valuesHide(index)}> - - -
- ) : ( - `${hashValue(projEnvVar.value).substring(0, 25)}...` - )} - {projEnvVar.value.length > 100 ? ( - - ) : ( - '' - )} -
-
- ) : ( - '' - )} + {renderValues(projEnvVar, index)}
@@ -338,8 +269,8 @@ const ProjectVariables = ({ project, onVariableAdded, closeModal }) => {
- - )} + )} + ); };