in public/pages/CreateMonitor/containers/CreateMonitor/utils/monitorToFormik.js [32:72]
export default function monitorToFormik(monitor) {
const formikValues = _.cloneDeep(FORMIK_INITIAL_VALUES);
if (!monitor) return formikValues;
const {
name,
monitor_type,
enabled,
schedule: { cron: { expression: cronExpression = formikValues.cronExpression, timezone } = {} },
inputs,
ui_metadata: { schedule = {}, search = {} } = {},
} = monitor;
// Default searchType to query, because if there is no ui_metadata or search then it was created through API or overwritten by API
// In that case we don't want to guess on the UI what selections a user made, so we will default to just showing the extraction query
const { searchType = 'query', fieldName } = search;
const isAD = searchType === SEARCH_TYPE.AD;
return {
/* INITIALIZE WITH DEFAULTS */
...formikValues,
/* CONFIGURE MONITOR */
name,
disabled: !enabled,
/* This will overwrite the fields in use by Monitor from ui_metadata */
...schedule,
cronExpression,
/* DEFINE MONITOR */
monitor_type,
...search,
searchType,
fieldName: fieldName ? [{ label: fieldName }] : [],
timezone: timezone ? [{ label: timezone }] : [],
detectorId: isAD ? _.get(inputs, INPUTS_DETECTOR_ID) : undefined,
index: inputs[0].search.indices.map((index) => ({ label: index })),
adResultIndex: isAD ? _.get(inputs, '0.search.indices.0') : undefined,
query: JSON.stringify(inputs[0].search.query, null, 4),
};
}