import { Query, Mutation } from 'react-apollo' import gql from 'graphql-tag' import { QUERY_PROJECTS } from './ProjectList' const ADD_CHARACTERIZATION = gql` mutation ADD_CHARACTERIZATION($name: String!, $projectVersion: ID!) { createCharacterization(name: $name, projectVersion: $projectVersion) { id name projectVersion { id name } measurementRuns { id name } } } ` const QUERY_PROJECT_VERSIONS = gql` query QUERY_PROJECT_VERSIONS($projectId: ID!) { projectVersions(where: { project: { id: $projectId } }) { id name } } ` class CharacterziationForm extends React.Component { state = { id: null, name: '', project: null, projectVersion: null } toState = event => { this.setState({ [event.target.name]: event.target.value }) } render () { return ( {(addCharacterization, { data, error, loading }) => (
{ event.preventDefault() const { data } = await addCharacterization() const { createCharacterization } = data this.setState({ id: createCharacterization.id }) }} >
{({ data, error, loading }) => { if (error) { return

Error loading project: ${error.message}

} if (loading) return

Loading data...

if (!data || !data.projects.length) { return

No project found.

} const { projects } = data if (!this.state.project && projects.length) { this.setState({ project: projects[0].id }) } return ( <> {({ data, error, loading }) => { if (error) { return (

Error loading project version: ${error.message}

) } if (loading) return

Loading data...

if (!data || !data.projectVersions.length) { return

No project version found.

} const { projectVersions } = data if (!this.state.projectVersion) { this.setState({ projectVersion: projectVersions[0].id }) } return ( <>
) }}
)}
) } } export default CharacterziationForm