Browse Source

Finished characterization form.

Tomi Cvetic 5 năm trước cách đây
mục cha
commit
ddafe4c92e

+ 1 - 1
backend/schema.graphql

@@ -8,7 +8,7 @@ type Query {
 }
 
 type Mutation {
-  createCharacterization(data: CharacterizationCreateInput!): Characterization!
+  createCharacterization(name: String!, projectVersion: ID!): Characterization!
   createUser(name: String!, email: String!, abbreviation: String!, password: String!): User!
   userLogin(email: String!, password: String!): User!
   userLogout: String!

+ 14 - 7
backend/src/resolvers.js

@@ -22,12 +22,8 @@ const Mutation = {
         email,
         password
       }
-    },
-      info
-    )
-    console.log(user)
+    }, info)
     const token = jwt.sign({ userId: user.id }, process.env.APP_SECRET)
-    console.log(token)
     context.response.cookie('token', token, {
       httpOnly: true,
       maxAge: 7 * 24 * 3600 * 1000
@@ -44,14 +40,25 @@ const Mutation = {
     context.response.cookie('token', token, {
       httpOnly: true,
       maxAge: 7 * 24 * 3600 * 1000
-    })
+    }, info)
     return user
   },
   userLogout: async (parent, args, context, info) => {
     context.response.clearCookie('token')
     return 'Logged out.'
   },
-  createCharacterization: forwardTo('db')
+  createCharacterization: async (parent, args, context, info) => {
+    const characterization = await context.db.mutation.createCharacterization({
+      data: {
+        name: args.name,
+        projectVersion: {
+          connect: { id: args.projectVersion }
+        }
+      }
+    }, info)
+    console.log(characterization)
+    return characterization
+  }
 }
 
 const resolvers = {

+ 10 - 9
frontend/components/CharacterizationForm.js

@@ -3,8 +3,8 @@ import gql from 'graphql-tag'
 import { QUERY_PROJECTS } from './ProjectList'
 
 const ADD_CHARACTERIZATION = gql`
-  mutation ADD_CHARACTERIZATION($name: String!, $projectVersion: ID!, $measurementRuns: [MeasurementRun!]) {
-    createCharacterization(data: {name: $name, projectVersion: $projectVersion, measurementRuns: $measurementRuns}) {
+  mutation ADD_CHARACTERIZATION($name: String!, $projectVersion: ID!) {
+    createCharacterization(name: $name, projectVersion: $projectVersion) {
       id
       name
       projectVersion {
@@ -30,10 +30,10 @@ const QUERY_PROJECT_VERSIONS = gql`
 
 class CharacterziationForm extends React.Component {
   state = {
+    id: null,
     name: '',
     project: null,
-    projectVersion: null,
-    measurementRuns: null
+    projectVersion: null
   }
 
   toState = event => {
@@ -44,10 +44,11 @@ class CharacterziationForm extends React.Component {
     return (
       <Mutation mutation={ADD_CHARACTERIZATION} variables={this.state}>
         {(addCharacterization, { data, error, loading }) => (
-          <form onSubmit={event => {
+          <form onSubmit={async event => {
             event.preventDefault()
-            console.log(this.state)
-            addCharacterization()
+            const { data } = await addCharacterization()
+            const { createCharacterization } = data
+            this.setState({ id: createCharacterization.id })
           }}>
             <fieldset>
               <label htmlFor="name">Characterization name</label>
@@ -63,11 +64,11 @@ class CharacterziationForm extends React.Component {
                   if (!data) return (<p>No project found.</p>)
 
                   const { projects } = data
+                  if (!this.state.project) this.setState({ project: projects[0].id })
                   return (
                     <>
                       <label htmlFor="project">Project</label>
                       <select name="project" id="project" onChange={this.toState}>
-                        <option value={null}>---</option>
                         {data.projects.map(project => <option key={project.id} value={project.id}>{project.name}</option>)}
                       </select>
                       <Query query={QUERY_PROJECT_VERSIONS} variables={{ projectId: this.state.project }}>
@@ -77,11 +78,11 @@ class CharacterziationForm extends React.Component {
                           if (!data) return (<p>No project version found.</p>)
 
                           const { projectVersions } = data
+                          if (!this.state.projectVersion) this.setState({ projectVersion: projectVersions[0].id })
                           return (
                             <>
                               <label htmlFor="projectVersion"></label>
                               <select name="projectVersion" id="projectVersion" onChange={this.toState}>
-                                <option value={null}>---</option>
                                 {data.projectVersions.map(projectVersion =>
                                   <option key={projectVersion.id} value={projectVersion.id}>{projectVersion.name}</option>
                                 )}