/* eslint-disable camelcase */
import React, { useState, useEffect, useCallback } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { Wizard } from '@patternfly/react-core';
import { get } from 'foremanReact/redux/API';
import { translate as __ } from 'foremanReact/common/I18n';
import history from 'foremanReact/history';
import CategoryAndTemplate from './steps/CategoryAndTemplate/';
import { AdvancedFields } from './steps/AdvancedFields/AdvancedFields';
import { JOB_TEMPLATE } from './JobWizardConstants';
import { selectTemplateError } from './JobWizardSelectors';
import Schedule from './steps/Schedule/';
import './JobWizard.scss';
export const JobWizard = () => {
const [jobTemplateID, setJobTemplateID] = useState(null);
const [category, setCategory] = useState('');
const [advancedValues, setAdvancedValues] = useState({});
const dispatch = useDispatch();
const setDefaults = useCallback(
({
data: {
advanced_template_inputs,
effective_user,
job_template: { executionTimeoutInterval, description_format },
},
}) => {
const advancedTemplateValues = {};
const advancedInputs = advanced_template_inputs;
if (advancedInputs) {
advancedInputs.forEach(input => {
advancedTemplateValues[input.name] = input?.default || '';
});
}
setAdvancedValues(currentAdvancedValues => ({
...currentAdvancedValues,
effectiveUserValue: effective_user?.value || '',
timeoutToKill: executionTimeoutInterval || '',
templateValues: advancedTemplateValues,
description: description_format || '',
}));
},
[]
);
useEffect(() => {
if (jobTemplateID) {
dispatch(
get({
key: JOB_TEMPLATE,
url: `/ui_job_wizard/template/${jobTemplateID}`,
handleSuccess: setDefaults,
})
);
}
}, [jobTemplateID, setDefaults, dispatch]);
const templateError = !!useSelector(selectTemplateError);
const isTemplate = !templateError && !!jobTemplateID;
const steps = [
{
name: __('Category and Template'),
component: (
Target Hosts
, canJumpTo: isTemplate, }, { name: __('Advanced Fields'), component: (Review Details
, nextButtonText: 'Run', canJumpTo: isTemplate, }, ]; return (