theforeman/foreman

View on GitHub
webpack/assets/javascripts/react_app/routes/FiltersForm/EditFiltersFormPage.js

Summary

Maintainability
A
0 mins
Test Coverage
import React from 'react';
import PropTypes from 'prop-types';
import PageLayout from '../common/PageLayout/PageLayout';
import { translate as __, sprintf } from '../../common/I18n';
import { useAPI } from '../../common/hooks/API/APIHooks';
import { FiltersForm } from './FiltersForm';

const EditFiltersFormPage = ({
  match: {
    params: { id },
  },
  history,
}) => {
  const { response } = useAPI('get', `/api/filters/${id}`);
  const roleName = response?.role?.name || '';
  const roleId = response?.role?.id || '';
  const breadcrumbOptions = {
    breadcrumbItems: [
      { caption: __('Roles'), url: '/roles' },
      {
        caption: roleName,
        url: `/filters?role_id=${roleId}`,
      },
      {
        caption: sprintf(
          __('Edit %s Resource Filter'),
          response.resource_type_label
        ),
      },
    ],
    isSwitchable: true,
    resource: {
      resourceUrl: '/api/v2/filters',
      resourceFilter: `role_id=${roleId}`,
      nameField: 'resource_type_label',
      switcherItemUrl: '/filters/:id/edit',
    },
  };

  return (
    <PageLayout
      header={__('Filter')}
      searchable={false}
      breadcrumbOptions={breadcrumbOptions}
    >
      {roleName.length ? (
        <FiltersForm
          isNew={false}
          roleName={roleName}
          roleId={roleId}
          data={response}
          history={history}
        />
      ) : (
        <div />
      )}
    </PageLayout>
  );
};

EditFiltersFormPage.propTypes = {
  location: PropTypes.shape({
    search: PropTypes.string.isRequired,
  }).isRequired,
  match: PropTypes.shape({
    params: PropTypes.shape({
      id: PropTypes.string.isRequired,
    }).isRequired,
  }).isRequired,
  history: PropTypes.object.isRequired,
};

export default EditFiltersFormPage;