function parametersCheck()

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);
}