UNPKG

profile-pane

Version:

A SolidOS compatible pane to display a personal profile page

104 lines 4.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.typesOfRole = void 0; exports.skillAsText = skillAsText; exports.languageAsText = languageAsText; exports.datesAsText = datesAsText; exports.presentCV = presentCV; var rdflib_1 = require("rdflib"); var solid_ui_1 = require("solid-ui"); var ORG = (0, rdflib_1.Namespace)('http://www.w3.org/ns/org#'); exports.typesOfRole = ['PastRole', 'CurrentRole', 'FutureRole']; function skillAsText(store, sk) { if (sk.termType === 'Literal') return sk.value; // Not normal but allow this var publicId = store.anyJS(sk, solid_ui_1.ns.solid('publicId')); if (publicId) { var name_1 = store.anyJS(publicId, solid_ui_1.ns.schema('name')); if (name_1) return name_1; // @@ check language and get name in diff language if necessary } var manual = store.anyJS(sk, solid_ui_1.ns.vcard('role')); if (manual && manual[0] > "") return manual; return '¿¿¿ skill ???'; } function languageAsText(store, lan) { if (lan.termType === 'Literal') return lan.value; // Not normal but allow this var publicId = store.anyJS(lan, solid_ui_1.ns.solid('publicId')); if (publicId) return solid_ui_1.utils.label(publicId, true); // @@ check language and get name in diff language if necessary return '-'; } function datesAsText(startDate, endDate) { return startDate ? '(' + startDate.value.slice(0, 10) + ' to ' + (endDate ? endDate.value.slice(0, 10) : '') + ')' : ''; } function getRolesByType(store, subject) { var memberships = store.each(null, ORG('member'), subject, null); var rolesByType = { PastRole: [], CurrentRole: [], FutureRole: [] }; for (var _i = 0, memberships_1 = memberships; _i < memberships_1.length; _i++) { var membership = memberships_1[_i]; var orgHomePage = void 0, orgNameGiven = void 0, publicIdName = void 0, roleName = void 0, publicId // Things should have start dates but we will be very lenient in this view = void 0; // Things should have start dates but we will be very lenient in this view var startDate = store.any(membership, solid_ui_1.ns.schema('startDate')); var endDate = store.any(membership, solid_ui_1.ns.schema('endDate')); var dates = datesAsText(startDate, endDate); var organization = store.any(membership, ORG('organization')); if (organization) { orgNameGiven = store.anyJS(organization, solid_ui_1.ns.schema('name')); orgHomePage = store.any(organization, solid_ui_1.ns.schema('uri')); publicId = store.any(organization, solid_ui_1.ns.solid('publicId')); } if (publicId) { publicIdName = store.anyJS(publicId, solid_ui_1.ns.schema('name')); } var orgName = publicIdName || orgNameGiven; var escoRole = store.any(membership, ORG('role')); if (escoRole) { roleName = store.anyJS(escoRole, solid_ui_1.ns.schema('name')); } var roleText0 = store.anyJS(membership, solid_ui_1.ns.vcard('role')); var roleText = (roleText0 && roleName) ? roleName + ' - ' + roleText0 : roleText0 || roleName; var item = { startDate: startDate, endDate: endDate, orgName: orgName, roleText: roleText, dates: dates, orgHomePage: orgHomePage }; for (var _a = 0, typesOfRole_1 = exports.typesOfRole; _a < typesOfRole_1.length; _a++) { var t = typesOfRole_1[_a]; if (store.holds(membership, solid_ui_1.ns.rdf('type'), solid_ui_1.ns.solid(t))) { rolesByType[t].push(item); } } } return rolesByType; } function presentCV(subject, store) { var rolesByType = getRolesByType(store, subject); // Most recent thing most relevant -> sort by end date for (var _i = 0, typesOfRole_2 = exports.typesOfRole; _i < typesOfRole_2.length; _i++) { var t = typesOfRole_2[_i]; rolesByType[t].sort(function (x, y) { if (x.endDate && y.endDate) { return x.endDate > y.endDate ? -1 : 1; } return x.startDate > y.startDate ? -1 : 1; }); } var skills = store.each(subject, solid_ui_1.ns.schema('skills')).map(function (sk) { return skillAsText(store, sk); }); var languagesInStore = store.anyJS(subject, solid_ui_1.ns.schema('knowsLanguage')); var languages = []; if (languagesInStore) languages = languagesInStore.map(function (lan) { return languageAsText(store, lan); }); return { rolesByType: rolesByType, skills: skills, languages: languages }; } //# sourceMappingURL=CVPresenter.js.map