From 34fc6fe612cc5a3ed373f0e938118c15177b0613 Mon Sep 17 00:00:00 2001 From: Lydia Ross Date: Fri, 4 Jan 2019 09:35:01 +0000 Subject: [PATCH 1/3] Adds statement creator for cancelled face to face --- src/examples/completedFaceToFace.ts | 4 +- src/statementConstants/verbs.ts | 1 + src/statementCreators/canceledFaceToFace.ts | 57 +++++++++++++++++++++ 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 src/statementCreators/canceledFaceToFace.ts diff --git a/src/examples/completedFaceToFace.ts b/src/examples/completedFaceToFace.ts index e67865a..480b906 100644 --- a/src/examples/completedFaceToFace.ts +++ b/src/examples/completedFaceToFace.ts @@ -1,6 +1,6 @@ -import completedFaceToFace from '../statementCreators/completedFaceToFace'; +import canceledFaceToFace from '../statementCreators/canceledFaceToFace'; -const statement = completedFaceToFace({ +const statement = canceledFaceToFace({ actionDate: new Date(), activityUrl: 'https://demo.example.org/courses/demo-course', siteUrl: 'https://demo.example.org', diff --git a/src/statementConstants/verbs.ts b/src/statementConstants/verbs.ts index f877d83..a21b5d7 100644 --- a/src/statementConstants/verbs.ts +++ b/src/statementConstants/verbs.ts @@ -15,6 +15,7 @@ export const assigned = createVerb('https://w3id.org/xapi/acrossx/verbs/was-assi export const attended = createVerb('http://activitystrea.ms/schema/1.0/attend', 'attended'); export const bookmarked = createVerb('http://id.tincanapi.com/verb/bookmarked', 'bookmarked'); export const called = createVerb('http://id.tincanapi.com/verb/called', 'called'); +export const canceled = createVerb('https://w3id.org/xapi/dod-isd/verbs/canceled', 'canceled'); export const commentedOn = createVerb('http://adlnet.gov/expapi/verbs/commented', 'commented on'); export const completed = createVerb('http://adlnet.gov/expapi/verbs/completed', 'completed'); export const created = createVerb('http://activitystrea.ms/schema/1.0/create', 'created'); diff --git a/src/statementCreators/canceledFaceToFace.ts b/src/statementCreators/canceledFaceToFace.ts new file mode 100644 index 0000000..dcd88fe --- /dev/null +++ b/src/statementCreators/canceledFaceToFace.ts @@ -0,0 +1,57 @@ +import UserSiteAction from '../actionUtils/UserSiteAction'; +import { faceToFace, site, source } from '../statementConstants/activityTypes'; +import { canceled } from '../statementConstants/verbs'; +import createActivity from '../statementUtils/createActivity'; +import createAgent from '../statementUtils/createAgent'; +import createTimestamp from '../statementUtils/createTimestamp'; +import { Extensions, Statement } from '../statementUtils/types'; + +export interface CanceledFaceToFaceAction extends UserSiteAction { + /** The URL where the activity can be accessed. */ + readonly activityUrl: string; + + /** The human readable name for the activity. */ + readonly activityName?: string; + + /** Additional properties of the activity. */ + readonly activityExtensions?: Extensions; +} + +/** + * Creates an xAPI Statement to represent a user planning a face-to-face meeting. + */ +export default function canceledFaceToFace(action: CanceledFaceToFaceAction): Statement { + return { + timestamp: createTimestamp(action.actionDate), + actor: createAgent({ + displayName: action.userDisplayName, + id: action.userId, + idProviderUrl: action.userIdProviderUrl, + email: action.userEmail, + }), + verb: canceled, + object: createActivity({ + type: faceToFace, + url: action.activityUrl, + name: action.activityName, + extensions: action.activityExtensions, + }), + context: { + platform: action.platformName, + language: 'en', + extensions: action.contextExtensions, + contextActivities: { + grouping: [createActivity({ + type: site, + url: action.siteUrl, + name: action.siteName, + })], + category: [createActivity({ + type: source, + url: action.platformUrl, + name: action.platformName, + })], + }, + }, + }; +} From 0e6af3695a4b08ceef29d80a264454473dada700 Mon Sep 17 00:00:00 2001 From: Lydia Ross Date: Fri, 4 Jan 2019 10:54:22 +0000 Subject: [PATCH 2/3] Updates comments --- src/statementCreators/canceledFaceToFace.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/statementCreators/canceledFaceToFace.ts b/src/statementCreators/canceledFaceToFace.ts index dcd88fe..2f1fdba 100644 --- a/src/statementCreators/canceledFaceToFace.ts +++ b/src/statementCreators/canceledFaceToFace.ts @@ -18,7 +18,7 @@ export interface CanceledFaceToFaceAction extends UserSiteAction { } /** - * Creates an xAPI Statement to represent a user planning a face-to-face meeting. + * Creates an xAPI Statement to represent a user canceling a face-to-face meeting. */ export default function canceledFaceToFace(action: CanceledFaceToFaceAction): Statement { return { From 8caf077e08b80519b4c3ed2208fcc36dc188c008 Mon Sep 17 00:00:00 2001 From: Lydia Ross Date: Fri, 4 Jan 2019 10:58:00 +0000 Subject: [PATCH 3/3] Adds example implementation file --- src/examples/canceledFaceToFace.ts | 16 ++++++++++++++++ src/examples/completedFaceToFace.ts | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 src/examples/canceledFaceToFace.ts diff --git a/src/examples/canceledFaceToFace.ts b/src/examples/canceledFaceToFace.ts new file mode 100644 index 0000000..480b906 --- /dev/null +++ b/src/examples/canceledFaceToFace.ts @@ -0,0 +1,16 @@ +import canceledFaceToFace from '../statementCreators/canceledFaceToFace'; + +const statement = canceledFaceToFace({ + actionDate: new Date(), + activityUrl: 'https://demo.example.org/courses/demo-course', + siteUrl: 'https://demo.example.org', + siteName: 'Demo Example Site', + platformUrl: 'https://example.org', + platformName: 'Example Platform', + userId: '123', + userIdProviderUrl: 'https://demo.example.org', + userEmail: 'demo@example.org', + userDisplayName: 'Demo User', +}); + +export default statement; diff --git a/src/examples/completedFaceToFace.ts b/src/examples/completedFaceToFace.ts index 480b906..e67865a 100644 --- a/src/examples/completedFaceToFace.ts +++ b/src/examples/completedFaceToFace.ts @@ -1,6 +1,6 @@ -import canceledFaceToFace from '../statementCreators/canceledFaceToFace'; +import completedFaceToFace from '../statementCreators/completedFaceToFace'; -const statement = canceledFaceToFace({ +const statement = completedFaceToFace({ actionDate: new Date(), activityUrl: 'https://demo.example.org/courses/demo-course', siteUrl: 'https://demo.example.org',