From f3d1ab2f4fda0fd0218306da271d14462fda83b6 Mon Sep 17 00:00:00 2001 From: Horne Date: Wed, 30 Jan 2019 11:56:54 -0800 Subject: [PATCH 1/3] feat(data-structure): adds support for pt general info field --- src/dal/import/index.ts | 16 +++++++++++++++- src/models/target/index.ts | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/dal/import/index.ts b/src/dal/import/index.ts index 837d324..7e3ea9a 100644 --- a/src/dal/import/index.ts +++ b/src/dal/import/index.ts @@ -418,7 +418,7 @@ export async function importDocs(arr: ISpecDocument[]): Promise { stdDesc: fullStatement }); } - if (p.CFItemType === 'Target' && p !== jsonData.CFItems[jsonData.CFItems.length - 1]) { + if (p.CFItemType === 'Target' && p.abbreviatedStatement === target.shortCode) { target.description = fullStatement; } if (p.CFItemType === 'Clarification') { @@ -462,10 +462,24 @@ export async function importDocs(arr: ISpecDocument[]): Promise { } } } + getPTGeneralInfo(claim, jsonData); getAssociatedEvidence(claim, jsonData); getGenReqs(claim, jsonData); } +/** + * Finds and sets the special case target descriptions for a Performance Task document + * + * @param {IClaim} claim + * @param {ISpecDocument} jsonData + */ +function getPTGeneralInfo(claim: IClaim, jsonData: ISpecDocument) { + if(claim.target[0].interactionType === 'PT') { + const info = jsonData.CFItems.find(item => item.abbreviatedStatement === 'Performance Task (General Information)'); + claim.target[0].performanceInfo = info ? info.fullStatement : undefined; + } +} + /** * Builds the Related Evidence for Task Models * @param {IClaim} claim A reference to the in-progress CSE claim document diff --git a/src/models/target/index.ts b/src/models/target/index.ts index 8b6deca..216ea0e 100644 --- a/src/models/target/index.ts +++ b/src/models/target/index.ts @@ -34,6 +34,7 @@ export interface ITarget { standards: IStandards[]; DOK: IDOK[]; interactionType: string; + performanceInfo?: string; clarification: string; heading: string; evidence: IEvidence[]; From 0317647fe482132755bc7bbd05e927ae2f85da30 Mon Sep 17 00:00:00 2001 From: Horne Date: Wed, 30 Jan 2019 12:21:02 -0800 Subject: [PATCH 2/3] refactor(data-structure): improves pt information in data structure --- src/dal/import/index.ts | 13 ++++++++----- src/models/target/index.ts | 8 ++++++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/dal/import/index.ts b/src/dal/import/index.ts index 7e3ea9a..168da84 100644 --- a/src/dal/import/index.ts +++ b/src/dal/import/index.ts @@ -1,7 +1,7 @@ import fetch from 'node-fetch'; import { ISpecDocument, ICFAssociation } from './interfaces'; import { IClaim, ClaimExpansion } from '../../models/claim'; -import { IDOK, ITaskModel } from '../../models/target'; +import { IDOK, ITaskModel, IPerformanceInfo } from '../../models/target'; // This is required for translating specDocuments to an IClaim type // tslint:disable:no-unsafe-any no-any @@ -468,15 +468,18 @@ export async function importDocs(arr: ISpecDocument[]): Promise { } /** - * Finds and sets the special case target descriptions for a Performance Task document + * Finds and sets the special case General Information for a Performance Task document * * @param {IClaim} claim * @param {ISpecDocument} jsonData */ function getPTGeneralInfo(claim: IClaim, jsonData: ISpecDocument) { if(claim.target[0].interactionType === 'PT') { - const info = jsonData.CFItems.find(item => item.abbreviatedStatement === 'Performance Task (General Information)'); - claim.target[0].performanceInfo = info ? info.fullStatement : undefined; + const performanceInfoItem = jsonData.CFItems.find(item => item.abbreviatedStatement === 'Performance Task (General Information)'); + if(performanceInfoItem) { + const info: IPerformanceInfo = {title: 'Performance Task (General Information)', description: performanceInfoItem.fullStatement}; + claim.target[0].taskModels.push(info); + } } } @@ -492,7 +495,7 @@ function getPTGeneralInfo(claim: IClaim, jsonData: ISpecDocument) { association.destinationNodeURI.title.includes('Evidence Required ') ); - for (const taskModel of claim.target[0].taskModels) { + for (const taskModel of claim.target[0].taskModels as ITaskModel[]) { taskModel.relatedEvidence = []; for (const taskAssociation of taskAssociations) { if (taskAssociation.originNodeURI.title === taskModel.taskName) { diff --git a/src/models/target/index.ts b/src/models/target/index.ts index 216ea0e..fbc3594 100644 --- a/src/models/target/index.ts +++ b/src/models/target/index.ts @@ -34,7 +34,6 @@ export interface ITarget { standards: IStandards[]; DOK: IDOK[]; interactionType: string; - performanceInfo?: string; clarification: string; heading: string; evidence: IEvidence[]; @@ -46,6 +45,11 @@ export interface ITarget { dualText: string; accessibility: string; stem: IStem[]; - taskModels: ITaskModel[]; + taskModels: (ITaskModel | IPerformanceInfo)[]; rubrics: string[]; } + +export interface IPerformanceInfo { + title: string; + description: string; +} \ No newline at end of file From 436c818b9a902989f570b1f4d49965473ed3f4d6 Mon Sep 17 00:00:00 2001 From: Horne Date: Wed, 30 Jan 2019 12:29:01 -0800 Subject: [PATCH 3/3] fix(import): fixes missing target descriptions --- src/dal/import/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/dal/import/index.ts b/src/dal/import/index.ts index 168da84..2df4de2 100644 --- a/src/dal/import/index.ts +++ b/src/dal/import/index.ts @@ -418,7 +418,7 @@ export async function importDocs(arr: ISpecDocument[]): Promise { stdDesc: fullStatement }); } - if (p.CFItemType === 'Target' && p.abbreviatedStatement === target.shortCode) { + if (p.CFItemType === 'Target') { target.description = fullStatement; } if (p.CFItemType === 'Clarification') { @@ -474,6 +474,8 @@ export async function importDocs(arr: ISpecDocument[]): Promise { * @param {ISpecDocument} jsonData */ function getPTGeneralInfo(claim: IClaim, jsonData: ISpecDocument) { + const desc = jsonData.CFItems.find(i => i.CFItemType === 'Target' && i.abbreviatedStatement === claim.target[0].shortCode); + claim.target[0].description = desc ? desc.fullStatement : claim.target[0].description; if(claim.target[0].interactionType === 'PT') { const performanceInfoItem = jsonData.CFItems.find(item => item.abbreviatedStatement === 'Performance Task (General Information)'); if(performanceInfoItem) {