Changeset View
Changeset View
Standalone View
Standalone View
codemeta_generation.js
Show All 30 Lines | const directCodemetaFields = [ | ||||
'codeRepository', | 'codeRepository', | ||||
'contIntegration', | 'contIntegration', | ||||
'dateCreated', | 'dateCreated', | ||||
'datePublished', | 'datePublished', | ||||
'dateModified', | 'dateModified', | ||||
'issueTracker', | 'issueTracker', | ||||
'name', | 'name', | ||||
'version', | 'version', | ||||
'identifier', | |||||
'description', | |||||
'applicationCategory', | |||||
//keywords TODO:keywords array | |||||
'releaseNotes', | |||||
'funding', | |||||
'runtimePlatform', | |||||
//softwareRequiremnts, | |||||
'operatingSystem', | |||||
'developmentStatus', | |||||
//relatedLink | |||||
'programmingLanguage', | |||||
'isPartOf', | |||||
//'referencePublication' | |||||
// "@type": "ScholarlyArticle", | |||||
// "idendifier": "https://doi.org/xx.xxxx/xxxx.xxxx.xxxx", | |||||
// "name": "title of publication" | |||||
]; | ]; | ||||
// Names of codemeta properties with a matching HTML field name, | // Names of codemeta properties with a matching HTML field name, | ||||
// in a Person object | // in a Person object | ||||
const directPersonCodemetaFields = [ | const directPersonCodemetaFields = [ | ||||
'givenName', | 'givenName', | ||||
'familyName', | 'familyName', | ||||
'email', | 'email', | ||||
'affiliation' | |||||
]; | |||||
const directKeywordCodemetaFields = [ | |||||
'keyword' | |||||
]; | ]; | ||||
function generatePerson(idPrefix) { | function generatePerson(idPrefix) { | ||||
var doc = { | var doc = { | ||||
"@type": "Person", | "@type": "Person", | ||||
"@id": getIfSet(`#${idPrefix}_id`), | "@id": getIfSet(`#${idPrefix}_id`), | ||||
} | } | ||||
directPersonCodemetaFields.forEach(function (item, index) { | directPersonCodemetaFields.forEach(function (item, index) { | ||||
Show All 9 Lines | function generatePersons(prefix) { | ||||
for (let personId = 1; personId <= nbPersons; personId++) { | for (let personId = 1; personId <= nbPersons; personId++) { | ||||
persons.push(generatePerson(`${prefix}_${personId}`)); | persons.push(generatePerson(`${prefix}_${personId}`)); | ||||
} | } | ||||
return persons; | return persons; | ||||
} | } | ||||
function generateArray(idPrefix,prefix) { | |||||
return getIfSet(`#${idPrefix}_${prefix}`); | |||||
} | |||||
function generateArrays(prefix) { | |||||
var array = []; | |||||
var nbArray = getNbArray(prefix); | |||||
for (let ArrayId = 1; ArrayId <= nbArray; ArrayId++) { | |||||
array.push(generateArray(`${prefix}_${ArrayId}`,prefix)); | |||||
} | |||||
return array; | |||||
} | |||||
function generateCodemeta() { | function generateCodemeta() { | ||||
var inputForm = document.querySelector('#inputForm'); | var inputForm = document.querySelector('#inputForm'); | ||||
var codemetaText, errorHTML; | var codemetaText, errorHTML; | ||||
if (inputForm.checkValidity()) { | if (inputForm.checkValidity()) { | ||||
var doc = { | var doc = { | ||||
"@context": "https://doi.org/10.5063/schema/codemeta-2.0", | "@context": "https://doi.org/10.5063/schema/codemeta-2.0", | ||||
"@type": "SoftwareSourceCode", | "@type": "SoftwareSourceCode", | ||||
"license": SPDX_PREFIX + getIfSet('#license'), | "license": SPDX_PREFIX + getIfSet('#license'), | ||||
}; | }; | ||||
// Generate most fields | // Generate most fields | ||||
directCodemetaFields.forEach(function (item, index) { | directCodemetaFields.forEach(function (item, index) { | ||||
doc[item] = getIfSet('#' + item) | doc[item] = getIfSet('#' + item) | ||||
}); | }); | ||||
// Generate dynamic fields | // Generate dynamic fields | ||||
doc = Object.assign(doc, { | doc = Object.assign(doc, { | ||||
"author": generatePersons('author'), | "author": generatePersons('author'), | ||||
"contributor": generatePersons('contributor'), | "contributor": generatePersons('contributor'), | ||||
"keyword" : generateArrays('keyword'), | |||||
"software_requirements" : generateArrays('software_requirements'), | |||||
}); | }); | ||||
codemetaText = JSON.stringify(doc, null, 4); | codemetaText = JSON.stringify(doc, null, 4); | ||||
errorHTML = ""; | errorHTML = ""; | ||||
} | } | ||||
else { | else { | ||||
codemetaText = ""; | codemetaText = ""; | ||||
errorHTML = "invalid input (see error above)"; | errorHTML = "invalid input (see error above)"; | ||||
▲ Show 20 Lines • Show All 63 Lines • Show Last 20 Lines |