/* * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) * * This is free software, licensed under the GNU General Public License v3. * See /LICENSE for more information. */ import React from "react"; import PropTypes from "prop-types"; import { CheckBox } from "../../bootstrap/CheckBox"; import { PasswordInput } from "../../bootstrap/PasswordInput"; import { RadioSet } from "../../bootstrap/RadioSet"; import { Select } from "../../bootstrap/Select"; import { TextInput } from "../../bootstrap/TextInput"; import WiFiQRCode from "./WiFiQRCode"; import WifiGuestForm from "./WiFiGuestForm"; import { HELP_TEXTS, HTMODES, HWMODES } from "./constants"; WiFiForm.propTypes = { formData: PropTypes.shape( { devices: PropTypes.arrayOf(PropTypes.object) }, ).isRequired, formErrors: PropTypes.oneOfType([ PropTypes.object, PropTypes.array, ]), setFormValue: PropTypes.func.isRequired, hasGuestNetwork: PropTypes.bool, }; WiFiForm.defaultProps = { formData: { devices: [] }, setFormValue: () => { }, hasGuestNetwork: true, }; export default function WiFiForm({ formData, formErrors, setFormValue, hasGuestNetwork, disabled, }) { return formData.devices.map((device, index) => ( )); } DeviceForm.propTypes = { formData: PropTypes.shape({ id: PropTypes.number.isRequired, enabled: PropTypes.bool.isRequired, SSID: PropTypes.string.isRequired, password: PropTypes.string.isRequired, hidden: PropTypes.bool.isRequired, hwmode: PropTypes.string.isRequired, htmode: PropTypes.string.isRequired, channel: PropTypes.string.isRequired, guest_wifi: PropTypes.object.isRequired, }), formErrors: PropTypes.object.isRequired, setFormValue: PropTypes.func.isRequired, hasGuestNetwork: PropTypes.bool, deviceIndex: PropTypes.number, }; DeviceForm.defaultProps = { formErrors: {}, hasGuestNetwork: true, }; function DeviceForm({ formData, formErrors, setFormValue, hasGuestNetwork, deviceIndex, ...props }) { const deviceID = formData.id; return ( <>

{_(`Wi-Fi ${deviceID + 1}`)}

({ devices: { [deviceIndex]: { enabled: { $set: value } } } }), )} {...props} /> {formData.enabled ? ( <> ({ devices: { [deviceIndex]: { SSID: { $set: value }, }, }, }), )} {...props} >
( { devices: { [deviceIndex]: { password: { $set: value } } } } ), )} {...props} /> ( { devices: { [deviceIndex]: { hidden: { $set: value } } } } ), )} {...props} /> ({ devices: { [deviceIndex]: { hwmode: { $set: value }, channel: { $set: "0" }, }, }, }), )} {...props} /> ( { devices: { [deviceIndex]: { channel: { $set: value } } } } ), )} {...props} /> {hasGuestNetwork && ( )} ) : null} ); } function getChannelChoices(device) { const channelChoices = { 0: _("auto"), }; device.available_bands.forEach((availableBand) => { if (availableBand.hwmode !== device.hwmode) return; availableBand.available_channels.forEach((availableChannel) => { channelChoices[availableChannel.number.toString()] = ` ${availableChannel.number} (${availableChannel.frequency} MHz ${availableChannel.radar ? " ,DFS" : ""}) `; }); }); return channelChoices; } function getHtmodeChoices(device) { const htmodeChoices = {}; device.available_bands.forEach((availableBand) => { if (availableBand.hwmode !== device.hwmode) return; availableBand.available_htmodes.forEach((availableHtmod) => { htmodeChoices[availableHtmod] = HTMODES[availableHtmod]; }); }); return htmodeChoices; } function getHwmodeChoices(device) { return device.available_bands.map((availableBand) => ({ label: HWMODES[availableBand.hwmode], value: availableBand.hwmode, })); }