-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathsummarizeActivity.js
76 lines (62 loc) · 2.02 KB
/
summarizeActivity.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
var namespace = require('./namespace')
var summarizeTopLevel = require('./summarizeTopLevel')
var summarizeUsage = require('./summarizeUsage')
var summarizeAssociation = require('./summarizeAssociation')
var uriToMeta = require('../uriToMeta')
var URI = require('sboljs').URI
var ProvActivity = require('sboljs/lib/ProvActivity')
function summarizeActivity (activity, req, sbol, remote, graphUri) {
if (activity instanceof URI) {
return uriToMeta(activity, req)
}
if (!(activity instanceof ProvActivity)) {
return uriToMeta(activity.uri, req)
}
var summary = {
types: types(activity),
startedAtTime: summarizeDateTime(activity.startedAtTime),
endedAtTime: summarizeDateTime(activity.endedAtTime),
usages: summarizeUsages(activity, req, sbol, remote, graphUri),
associations: summarizeAssociations(activity, req, sbol, remote, graphUri)
}
return Object.assign(summary, summarizeTopLevel(activity, req, sbol, remote, graphUri))
}
function types (componentDefinition) {
return componentDefinition.types.map((uri) => {
uri = '' + uri
var prefix = namespace.sbol
if (uri.indexOf(prefix) === 0) {
var sbolTerm = uri.slice(prefix.length)
return {
uri: uri,
term: uri,
description: { name: sbolTerm }
}
}
return {
uri: uri
}
})
}
function summarizeDateTime (dateTime) {
if (dateTime && dateTime !== '') {
dateTime = dateTime.toISOString().split('Z')[0]
return dateTime.replace('T', ' ').replace('Z', '')
}
return null
}
function summarizeUsages (activity, req, sbol, remote, graphUri) {
var usages = []
activity.usages.forEach((usage) => {
usages.push(summarizeUsage(usage, req, sbol, remote, graphUri))
})
return usages
}
function summarizeAssociations (activity, req, sbol, remote, graphUri) {
var associations = []
activity.associations.forEach((association) => {
associations.push(summarizeAssociation(association, req, sbol, remote, graphUri))
})
return associations
}
module.exports = summarizeActivity