import React, { Component } from "react"; import PropTypes from "prop-types"; import { pull } from "lodash"; import Button from "components/buttons/Button"; import Dropdown from "components/forms/fields/Dropdown"; import Form from "components/forms/Form"; import formFieldInterface from "interfaces/form_field"; import InputField from "components/forms/fields/InputField"; import validate from "components/forms/ConfigurePackQueryForm/validate"; import { PLATFORM_DROPDOWN_OPTIONS, LOGGING_TYPE_OPTIONS, MIN_OSQUERY_VERSION_OPTIONS, } from "utilities/constants"; const baseClass = "configure-pack-query-form"; const fieldNames = [ "query_id", "interval", "logging_type", "platform", "shard", "version", ]; export class ConfigurePackQueryForm extends Component { static propTypes = { fields: PropTypes.shape({ interval: formFieldInterface.isRequired, logging_type: formFieldInterface.isRequired, platform: formFieldInterface.isRequired, version: formFieldInterface.isRequired, shard: formFieldInterface.isRequired, }).isRequired, formData: PropTypes.shape({ id: PropTypes.number, }), handleSubmit: PropTypes.func, onCancel: PropTypes.func, }; componentWillMount() { const { fields } = this.props; if (fields && fields.shard && !fields.shard.value) { fields.shard.value = ""; } } onCancel = (evt) => { evt.preventDefault(); const { formData, onCancel: handleCancel } = this.props; return handleCancel(formData); }; handlePlatformChoice = (value) => { const { fields: { platform }, } = this.props; const valArray = value.split(","); // Remove All if another OS is chosen if (valArray.indexOf("") === 0 && valArray.length > 1) { return platform.onChange(pull(valArray, "").join(",")); } // Remove OS if All is chosen if (valArray.length > 1 && valArray.indexOf("") > -1) { return platform.onChange(""); } return platform.onChange(value); }; renderCancelButton = () => { const { formData } = this.props; const { onCancel } = this; if (!formData.id) { return false; } return ( ); }; render() { const { fields, handleSubmit } = this.props; const { handlePlatformChoice, renderCancelButton } = this; // Uncontrolled form field defaults to snapshot if !fields.logging_type const loggingType = fields.logging_type.value || "snapshot"; return (
); } } export default Form(ConfigurePackQueryForm, { fields: fieldNames, validate, });