Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | 25x 25x 3x 3x 2x 3x 3x 3x 3x 3x 25x 5x 5x 4x 3x 1x 5x 1x 5x | /*
* Copyright 2021 Harness Inc. All rights reserved.
* Use of this source code is governed by the PolyForm Shield 1.0.0 license
* that can be found in the licenses directory at the root of this repository, also available at
* https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
*/
import type { FormikProps } from 'formik'
import type { UseStringsReturn } from 'framework/strings'
import { initialFormData, MapSplunkToServiceFieldNames } from './constants'
import type { MapSplunkQueryToService } from './types'
type UpdateSelectedQueriesMap = {
updatedMetric: string
oldMetric: string
mappedMetrics: Map<string, MapSplunkQueryToService>
formikProps: FormikProps<MapSplunkQueryToService | undefined>
}
export function updateSelectedMetricsMap({
updatedMetric,
oldMetric,
mappedMetrics,
formikProps
}: UpdateSelectedQueriesMap): any {
const updatedMap = new Map(mappedMetrics)
// in the case where user updates query name, update the key for current value
if (oldMetric !== formikProps.values?.metricName) {
updatedMap.delete(oldMetric)
}
// if newly created query create form object
Eif (!updatedMap.has(updatedMetric)) {
updatedMap.set(updatedMetric, { ...initialFormData, metricName: updatedMetric })
}
// update map with current form data
Eif (formikProps.values?.metricName) {
updatedMap.set(formikProps.values.metricName, formikProps.values as MapSplunkQueryToService)
}
return { selectedMetric: updatedMetric, mappedMetrics: updatedMap }
}
export function validateMappings(
getString: UseStringsReturn['getString'],
createdMetrics: string[],
selectedMetricIndex: number,
values?: MapSplunkQueryToService
): { [fieldName: string]: string } {
const requiredFieldErrors = {
...(!values?.metricName && {
[MapSplunkToServiceFieldNames.METRIC_NAME]: getString('cv.monitoringSources.queryNameValidation')
}),
...(!values?.query && {
[MapSplunkToServiceFieldNames.QUERY]: getString('cv.monitoringSources.gco.manualInputQueryModal.validation.query')
}),
...(!values?.serviceInstance && {
[MapSplunkToServiceFieldNames.SERVICE_INSTANCE]: getString(
'cv.monitoringSources.gcoLogs.validation.serviceInstance'
)
})
}
const duplicateNames = createdMetrics?.filter((metricName, index) => {
if (index === selectedMetricIndex) {
return false
}
return metricName === values?.metricName
})
if (values?.metricName && duplicateNames.length) {
requiredFieldErrors[MapSplunkToServiceFieldNames.METRIC_NAME] = getString(
'cv.monitoringSources.gcoLogs.validation.queryNameUnique'
)
}
return requiredFieldErrors
}
|