From 268775a192301cbaca84fb27dbf6d6fb70baa8da Mon Sep 17 00:00:00 2001 From: ahamelers <audrey@ahamelers.com> Date: Thu, 7 Feb 2019 21:01:51 +0000 Subject: [PATCH] change data stored from pubmed, createManuscript function --- .../citation-search/PubMedSearch.jsx | 28 +++++++++++++++---- .../submission-wizard/CreateSetupPage.jsx | 26 ++++------------- .../submission-wizard/operations.js | 18 ++++++++++-- .../entities/manuscript/data-access.js | 9 +++++- .../entities/manuscript/resolvers.js | 4 +-- .../entities/manuscript/typeDefs.graphqls | 16 ++++++++++- server/xpub-server/schema/epmc.graphqls | 7 +---- 7 files changed, 70 insertions(+), 38 deletions(-) diff --git a/app/components/citation-search/PubMedSearch.jsx b/app/components/citation-search/PubMedSearch.jsx index f14a19de4..e81ef4dff 100755 --- a/app/components/citation-search/PubMedSearch.jsx +++ b/app/components/citation-search/PubMedSearch.jsx @@ -167,20 +167,36 @@ class PubMedSearch extends React.Component { journalId: journal.id, meta: { title: result.title, - articleIds: [ + volume: result.volume, + issue: result.issue, + location: { + fpage: result.pages.split('-')[0], + lpage: result.pages.split('-').pop(), + elocationId: result.elocationid, + }, + publicationDates: [ { - pubIdType: 'pmid', - id: result.uid, + type: !result.volume && !result.pages ? 'epub' : 'ppub', + date, }, ], - publicationDates: [ + articleIds: [ { - type: 'ppub', - date, + pubIdType: 'pmid', + id: result.uid, }, ], }, } + if ( + result.articleids && + result.articleids.find(i => i.idtype === 'doi') + ) { + citationData.meta.articleIds.push({ + pubIdType: 'doi', + id: result.articleids.find(i => i.idtype === 'doi').value, + }) + } this.props.citationData(citationData) } } diff --git a/app/components/submission-wizard/CreateSetupPage.jsx b/app/components/submission-wizard/CreateSetupPage.jsx index 9405aa88b..e3650b138 100755 --- a/app/components/submission-wizard/CreateSetupPage.jsx +++ b/app/components/submission-wizard/CreateSetupPage.jsx @@ -5,22 +5,20 @@ import { SplitPage, InfoPanel, StepPanel } from '../ui' import PubMedSearch from '../citation-search' import CreateHeader from './CreateHeader' import CreateInfo from './CreateInfo' -import { CREATE_MANUSCRIPT, UPDATE_MANUSCRIPT, CREATE_NOTE } from './operations' +import { CREATE_MANUSCRIPT, CREATE_NOTE } from './operations' const manuscriptSetup = async ( citationData, createNote, createManuscript, - updateManuscript, history, ) => { if (citationData) { const { note, ...citation } = citationData - const created = await createManuscript() - const { id } = created.data.createManuscript - await updateManuscript({ - variables: { data: { id, ...citation } }, + const created = await createManuscript({ + variables: { data: { ...citation } }, }) + const { id } = created.data.createManuscript if (note) { await createNote({ variables: { @@ -42,12 +40,7 @@ const showInfo = e => { e.currentTarget.children[1].classList.toggle('hidden') } -const CreateSetup = ({ - history, - createNote, - createManuscript, - updateManuscript, -}) => ( +const CreateSetup = ({ history, createNote, createManuscript }) => ( <SplitPage> <StepPanel> <div> @@ -55,13 +48,7 @@ const CreateSetup = ({ <H2>Citation</H2> <PubMedSearch citationData={d => - manuscriptSetup( - d, - createNote, - createManuscript, - updateManuscript, - history, - ) + manuscriptSetup(d, createNote, createManuscript, history) } /> </div> @@ -79,6 +66,5 @@ const CreateSetup = ({ export default compose( graphql(CREATE_MANUSCRIPT, { name: 'createManuscript' }), - graphql(UPDATE_MANUSCRIPT, { name: 'updateManuscript' }), graphql(CREATE_NOTE, { name: 'createNote' }), )(CreateSetup) diff --git a/app/components/submission-wizard/operations.js b/app/components/submission-wizard/operations.js index 13ebd2bd2..1dee4742e 100644 --- a/app/components/submission-wizard/operations.js +++ b/app/components/submission-wizard/operations.js @@ -110,9 +110,23 @@ export const REPLACE_MANUSCRIPT = gql` ` export const CREATE_MANUSCRIPT = gql` - mutation CreateManuscript { - createManuscript { + mutation CreateManuscript($data: CreateManuscriptInput!) { + createManuscript(data: $data) { id + status + formState + meta { + title + articleIds { + pubIdType + id + } + publicationDates { + type + date + } + unmatchedJournal + } } } ` diff --git a/server/xpub-model/entities/manuscript/data-access.js b/server/xpub-model/entities/manuscript/data-access.js index 1bc7a8049..6b68dfcef 100644 --- a/server/xpub-model/entities/manuscript/data-access.js +++ b/server/xpub-model/entities/manuscript/data-access.js @@ -67,7 +67,14 @@ class Manuscript extends EpmcBaseModel { }, 'meta,volume': { type: ['string', 'null'] }, 'meta,issue': { type: ['string', 'null'] }, - 'meta,location': { type: ['string', 'null'] }, + 'meta,location': { + type: ['object', 'null'], + properties: { + fpage: { type: ['string', 'null'] }, + lpage: { type: ['string', 'null'] }, + elocationId: { type: ['string', 'null'] }, + }, + }, 'meta,fundingGroup': { type: ['array', 'null'], items: { diff --git a/server/xpub-server/entities/manuscript/resolvers.js b/server/xpub-server/entities/manuscript/resolvers.js index 4bf654766..77ff5a0e6 100644 --- a/server/xpub-server/entities/manuscript/resolvers.js +++ b/server/xpub-server/entities/manuscript/resolvers.js @@ -61,13 +61,13 @@ const resolvers = { }, Mutation: { - async createManuscript(_, vars, { user }) { + async createManuscript(_, { data }, { user }) { if (!user) { throw new Error('Not logged in') } const organizationId = await OrganizationManager.getEuropePMCPlusID() - const saved = await ManuscriptManager.create(user, organizationId) + const saved = await ManuscriptManager.create(data, user, organizationId) logger.debug('saved: ', saved) return saved }, diff --git a/server/xpub-server/entities/manuscript/typeDefs.graphqls b/server/xpub-server/entities/manuscript/typeDefs.graphqls index ade791d6d..52d1535fe 100644 --- a/server/xpub-server/entities/manuscript/typeDefs.graphqls +++ b/server/xpub-server/entities/manuscript/typeDefs.graphqls @@ -30,7 +30,7 @@ extend type Query { } extend type Mutation { - createManuscript: Manuscript! + createManuscript(data: CreateManuscriptInput!): Manuscript! deleteManuscript(id: ID!): Boolean! replaceManuscript(keepId: ID!, throwId: ID!): Boolean! updateManuscript(data: ManuscriptInput!): Manuscript! @@ -47,8 +47,16 @@ input ManuscriptInput { meta: ManuscriptMetaInput } +input CreateManuscriptInput { + journalId: ID + meta: ManuscriptMetaInput +} + input ManuscriptMetaInput { title: String + volume: String + issue: String + location: [LocationInput] articleIds: [ArticleIdInput] publicationDates: [MetaDateInput] fundingGroup: [FundingGroupInput] @@ -56,6 +64,12 @@ input ManuscriptMetaInput { unmatchedJournal: String } +input LocationInput { + fpage: String + lpage: String + elocationId: String +} + input ArticleIdInput { pubIdType: String id: String diff --git a/server/xpub-server/schema/epmc.graphqls b/server/xpub-server/schema/epmc.graphqls index c6f545de4..744ad5453 100644 --- a/server/xpub-server/schema/epmc.graphqls +++ b/server/xpub-server/schema/epmc.graphqls @@ -33,14 +33,9 @@ extend type ManuscriptMeta { unmatchedJournal: String } -union Location = Pages | Elocation - -type Pages { +type Location { fpage: String lpage: String -} - -type Elocation { elocationId: String } -- GitLab