in client/src/components/pipelines/launch/form/utilities/launch-form-modified-state.js [204:270]
function parametersCheck (form, parameters, state, preferences) {
if (!formItemInitialized(form, PARAMETERS) || !formItemInitialized(form, SYSTEM_PARAMETERS)) {
return false;
}
const formParams = form.getFieldValue(PARAMETERS);
const formSystemParams = form.getFieldValue(SYSTEM_PARAMETERS);
const formValue = {};
const prettyNames = {};
if (formParams && formParams.keys) {
for (let i = 0; i < formParams.keys.length; i++) {
const key = formParams.keys[i];
if (!formParams.params || !formParams.params.hasOwnProperty(key)) {
continue;
}
const parameter = formParams.params[key];
if (parameter && parameter.name && !isCustomCapability(parameter.name, preferences)) {
formValue[parameter.name] = parameter.value || '';
prettyNames[parameter.name] = parameter.pretty_name || '';
}
}
} else {
// 'form' value was not initialized yet -
// so it wasn't modified
return false;
}
if (formSystemParams && formSystemParams.keys) {
for (let i = 0; i < formSystemParams.keys.length; i++) {
const key = formSystemParams.keys[i];
if (!formSystemParams.params || !formSystemParams.params.hasOwnProperty(key)) {
continue;
}
const parameter = formSystemParams.params[key];
if (parameter && parameter.name && !isCustomCapability(parameter.name, preferences)) {
formValue[parameter.name] = parameter.value || '';
prettyNames[parameter.name] = parameter.pretty_name || '';
}
}
}
const initialData = Object.keys(parameters.parameters || {})
.filter(key => [
CP_CAP_LIMIT_MOUNTS,
...getSkippedSystemParametersList({state, props: {preferences}})
].indexOf(key) === -1)
.filter(key => !isCustomCapability(key, preferences))
.map(key => ({
key,
value: parameters.parameters[key].value || '',
prettyName: parameters.parameters[key].pretty_name || ''
}));
const initialValue = initialData.reduce((r, c) => ({...r, [c.key]: c.value}), {});
const initialPrettyName = initialData.reduce((r, c) => ({...r, [c.key]: c.prettyName}), {});
const check = (source, test) => {
const sourceEntries = Object.entries(source);
for (let i = 0; i < sourceEntries.length; i++) {
const [name, value] = sourceEntries[i];
if (!test.hasOwnProperty(name) || `${test[name]}` !== `${value}`) {
return true;
}
}
return false;
};
return Object.keys(formValue).length !== Object.keys(initialValue).length ||
check(formValue, initialValue) ||
check(initialValue, formValue) ||
check(initialPrettyName, prettyNames) ||
check(prettyNames, initialPrettyName);
}