Skip to content

Commit 4a11fc8

Browse files
author
Mukul Tayal
committed
hide and show lock keys functionality
1 parent 4815d32 commit 4a11fc8

File tree

4 files changed

+52
-10
lines changed

4 files changed

+52
-10
lines changed

src/components/EnvironmentOverride/DeploymentTemplateOverrideForm.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useEffect, useMemo, useState } from 'react'
1+
import React, { useEffect, useMemo, useRef, useState } from 'react'
22
import { useParams } from 'react-router-dom'
33
import { toast } from 'react-toastify'
44
import YAML from 'yaml'
@@ -66,6 +66,9 @@ export default function DeploymentTemplateOverrideForm({
6666
allowed: false,
6767
})
6868
const [disableSaveEligibleChanges, setDisableSaveEligibleChanges] = useState(false)
69+
const [hideLockedKeys, setHideLockedKeys] = useState(false)
70+
const hideLockKeysToggled = useRef(false)
71+
6972

7073
useEffect(() => {
7174
// Reset editor value on delete override action
@@ -108,7 +111,7 @@ export default function DeploymentTemplateOverrideForm({
108111
if (state.showLockedTemplateDiff) {
109112
// if locked keys
110113
if (!lockedConfigKeysWithLockType.allowed) {
111-
valuesOverride = getUnlockedJSON(lockedOverride, lockedConfigKeysWithLockType.config)
114+
valuesOverride = getUnlockedJSON(lockedOverride, lockedConfigKeysWithLockType.config,true).newDocument
112115
} else {
113116
// if allowed keys
114117
valuesOverride = getLockedJSON(lockedOverride, lockedConfigKeysWithLockType.config)
@@ -606,6 +609,9 @@ export default function DeploymentTemplateOverrideForm({
606609
convertVariables={convertVariablesOverride}
607610
setConvertVariables={setConvertVariables}
608611
groupedData={groupedData}
612+
hideLockedKeys={hideLockedKeys}
613+
lockedConfigKeysWithLockType={lockedConfigKeysWithLockType}
614+
hideLockKeysToggled={hideLockKeysToggled}
609615
/>
610616
)
611617
}
@@ -700,6 +706,10 @@ export default function DeploymentTemplateOverrideForm({
700706
componentType={3}
701707
setShowLockedDiffForApproval={setShowLockedDiffForApproval}
702708
setLockedConfigKeysWithLockType={setLockedConfigKeysWithLockType}
709+
setHideLockedKeys={setHideLockedKeys}
710+
hideLockedKeys={hideLockedKeys}
711+
hideLockKeysToggled={hideLockKeysToggled}
712+
inValidYaml={state.unableToParseYaml}
703713
/>
704714
{state.selectedTabIndex !== 2 && !state.showReadme && renderOverrideInfoStrip()}
705715
{renderValuesView()}

src/components/deploymentConfig/DeploymentConfig.tsx

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { Reducer, createContext, useContext, useEffect, useReducer, useState } from 'react'
1+
import React, { Reducer, createContext, useContext, useEffect, useReducer, useRef, useState } from 'react'
22
import { useHistory, useParams } from 'react-router'
33
import { toast } from 'react-toastify'
44
import {
@@ -87,6 +87,9 @@ export default function DeploymentConfig({
8787
)
8888
const [obj, , , error] = useJsonYaml(state.tempFormData, 4, 'yaml', true)
8989
const [, grafanaModuleStatus] = useAsync(() => getModuleInfo(ModuleNameMap.GRAFANA), [appId])
90+
const [hideLockedKeys, setHideLockedKeys] = useState(false)
91+
const hideLockKeysToggled = useRef(false)
92+
9093
const readOnlyPublishedMode = state.selectedTabIndex === 1 && isProtected && !!state.latestDraft
9194
const baseDeploymentAbortController = new AbortController()
9295

@@ -762,8 +765,8 @@ export default function DeploymentConfig({
762765

763766
if(state.showLockedTemplateDiff) {
764767
// if locked keys
765-
if(!lockedConfigKeysWithLockType.allowed) {
766-
valuesOverride = getUnlockedJSON(lockedOverride, lockedConfigKeysWithLockType.config)
768+
if (!lockedConfigKeysWithLockType.allowed) {
769+
valuesOverride = getUnlockedJSON(lockedOverride, lockedConfigKeysWithLockType.config, true).newDocument
767770
} else {
768771
// if allowed keys
769772
valuesOverride = getLockedJSON(lockedOverride, lockedConfigKeysWithLockType.config)
@@ -868,6 +871,9 @@ export default function DeploymentConfig({
868871
convertVariables={state.convertVariables}
869872
setConvertVariables={setConvertVariables}
870873
groupedData={state.groupedOptionsData}
874+
hideLockedKeys={hideLockedKeys}
875+
lockedConfigKeysWithLockType={lockedConfigKeysWithLockType}
876+
hideLockKeysToggled={hideLockKeysToggled}
871877
/>
872878
)
873879
}
@@ -957,6 +963,11 @@ export default function DeploymentConfig({
957963
setConvertVariables={setConvertVariables}
958964
componentType={3}
959965
setShowLockedDiffForApproval={setShowLockedDiffForApproval}
966+
setHideLockedKeys={setHideLockedKeys}
967+
hideLockedKeys={hideLockedKeys}
968+
setLockedConfigKeysWithLockType={setLockedConfigKeysWithLockType}
969+
hideLockKeysToggled={hideLockKeysToggled}
970+
inValidYaml={state.unableToParseYaml}
960971
/>
961972
{renderValuesView()}
962973
{state.showConfirmation && (

src/components/deploymentConfig/DeploymentTemplateView/DeploymentTemplateEditorView.tsx

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
CompareApprovalAndDraftSelectedOption,
88
} from '../types'
99
import { DEPLOYMENT_TEMPLATE_LABELS_KEYS, NO_SCOPED_VARIABLES_MESSAGE, getApprovalPendingOption } from '../constants'
10-
import { versionComparator } from '../../common'
10+
import { importComponentFromFELibrary, versionComparator } from '../../common'
1111
import { SortingOrder } from '../../app/types'
1212
import { getDefaultDeploymentTemplate, getDeploymentManisfest, getDeploymentTemplateData } from '../service'
1313
import YAML from 'yaml'
@@ -25,6 +25,8 @@ import { useParams } from 'react-router-dom'
2525
import { DeploymentConfigContext } from '../DeploymentConfig'
2626
import DeploymentTemplateGUIView from './DeploymentTemplateGUIView'
2727
import { toast } from 'react-toastify'
28+
import * as jsonpatch from 'fast-json-patch'
29+
const getLockFilteredTemplate = importComponentFromFELibrary('getLockFilteredTemplate', null, 'function')
2830

2931
export default function DeploymentTemplateEditorView({
3032
isEnvOverride,
@@ -39,6 +41,9 @@ export default function DeploymentTemplateEditorView({
3941
convertVariables,
4042
setConvertVariables,
4143
groupedData,
44+
hideLockedKeys,
45+
lockedConfigKeysWithLockType,
46+
hideLockKeysToggled
4247
}: DeploymentTemplateEditorViewProps) {
4348
const { appId, envId } = useParams<{ appId: string; envId: string }>()
4449
const { isUnSet, state, environments, dispatch } = useContext<DeploymentConfigContextType>(DeploymentConfigContext)
@@ -47,9 +52,9 @@ export default function DeploymentTemplateEditorView({
4752
const [filteredEnvironments, setFilteredEnvironments] = useState<DeploymentChartOptionType[]>([])
4853
const [filteredCharts, setFilteredCharts] = useState<DeploymentChartOptionType[]>([])
4954
const [globalChartRef, setGlobalChartRef] = useState(null)
55+
const removedPatches = useRef<Array<jsonpatch.Operation>>([])
5056
const isDeleteDraftState = state.latestDraft?.action === 3 && state.selectedCompareOption?.id === +envId
5157
const baseDeploymentAbortController = useRef(null)
52-
5358
const [showDraftData, setShowDraftData] = useState(false)
5459
const [draftManifestData, setDraftManifestData] = useState(null)
5560
const [draftLoading, setDraftLoading] = useState(false)
@@ -301,16 +306,29 @@ export default function DeploymentTemplateEditorView({
301306
const valueLHS = isIdMatch ? defaultValue : source[selectedOptionId] // fetch LHS data from respective cache store
302307

303308
// final value for LHS
304-
const lhs = convertVariables ? resolvedValuesLHS : valueLHS
309+
let lhs = convertVariables ? resolvedValuesLHS : valueLHS
305310

306311
// choose RHS value for comparison
307312
const shouldUseDraftData = state.selectedTabIndex !== 3 && showDraftData
308313
const selectedData = isValues ? state.tempFormData || state.draftValues : draftManifestData
309314
const valueRHS = shouldUseDraftData ? selectedData : value
310315

311316
// final value for RHS
312-
const rhs = convertVariables ? resolvedValuesRHS : valueRHS
313-
317+
let rhs = convertVariables ? resolvedValuesRHS : valueRHS
318+
if (getLockFilteredTemplate) {
319+
const { updatedLHS, updatedRHS } = getLockFilteredTemplate(
320+
hideLockedKeys,
321+
lhs,
322+
rhs,
323+
lockedConfigKeysWithLockType,
324+
removedPatches,
325+
hideLockKeysToggled,
326+
state.unableToParseYaml,
327+
)
328+
lhs = updatedLHS
329+
rhs = updatedRHS
330+
}
331+
314332
const renderCodeEditorHeading = () => (
315333
<CodeEditor.Header
316334
className={`code-editor__header flex left p-0-imp ${getOverrideClass()}`}

src/components/deploymentConfig/types.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,9 @@ export interface DeploymentTemplateEditorViewProps {
219219
convertVariables?: boolean
220220
setConvertVariables?: (convertVariables: boolean) => void
221221
groupedData?: any
222+
hideLockedKeys: boolean
223+
lockedConfigKeysWithLockType: ConfigKeysWithLockType
224+
hideLockKeysToggled: React.MutableRefObject<boolean>
222225
}
223226

224227
export interface DeploymentConfigContextType {

0 commit comments

Comments
 (0)