import React, { Component, Fragment } from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import { Trans, withNamespaces } from 'react-i18next'; import { DHCP_STATUS_RESPONSE } from '../../../helpers/constants'; import Form from './Form'; import Leases from './Leases'; import Interface from './Interface'; import Card from '../../ui/Card'; import Accordion from '../../ui/Accordion'; class Dhcp extends Component { handleFormSubmit = (values) => { this.props.setDhcpConfig(values); }; handleToggle = (config) => { this.props.toggleDhcp(config); } getToggleDhcpButton = () => { const { config, check, processingDhcp, processingConfig, } = this.props.dhcp; const otherDhcpFound = check && check.otherServer && check.otherServer.found === DHCP_STATUS_RESPONSE.YES; const filledConfig = Object.keys(config).every((key) => { if (key === 'enabled' || key === 'icmp_timeout_msec') { return true; } return config[key]; }); if (config.enabled) { return ( ); } return ( ); } getActiveDhcpMessage = (t, check) => { const { found } = check.otherServer; if (found === DHCP_STATUS_RESPONSE.ERROR) { return (
dhcp_error
{check.otherServer.error}
); } return (
{found === DHCP_STATUS_RESPONSE.YES ? (
dhcp_found
) : (
dhcp_not_found
)}
); } getDhcpWarning = (check) => { if (check.otherServer.found === DHCP_STATUS_RESPONSE.NO) { return ''; } return (
dhcp_warning
); } getStaticIpWarning = (t, check, interfaceName) => { if (check.staticIP.static === DHCP_STATUS_RESPONSE.ERROR) { return (
dhcp_static_ip_error
{check.staticIP.error}

); } else if ( check.staticIP.static === DHCP_STATUS_RESPONSE.NO && check.staticIP.ip && interfaceName ) { return (
example, ]} values={{ interfaceName, ipAddress: check.staticIP.ip, }} > dhcp_dynamic_ip_found

); } return ''; } render() { const { t, dhcp } = this.props; const statusButtonClass = classnames({ 'btn btn-primary btn-standard': true, 'btn btn-primary btn-standard btn-loading': dhcp.processingStatus, }); const { enabled, interface_name, ...values } = dhcp.config; return (
{!dhcp.processing &&

{this.getToggleDhcpButton()}
{!enabled && dhcp.check && {this.getStaticIpWarning(t, dhcp.check, interface_name)} {this.getActiveDhcpMessage(t, dhcp.check)} {this.getDhcpWarning(dhcp.check)} } }
{!dhcp.processing && dhcp.config.enabled &&
}
); } } Dhcp.propTypes = { dhcp: PropTypes.object, toggleDhcp: PropTypes.func, getDhcpStatus: PropTypes.func, setDhcpConfig: PropTypes.func, findActiveDhcp: PropTypes.func, handleSubmit: PropTypes.func, t: PropTypes.func, }; export default withNamespaces()(Dhcp);