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) return (

No project found.

) const { projects } = data if (!this.state.project) 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) return (

No project version found.

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