profile-pane 1.2.1 → 2.0.0-2b49b062
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -21
- package/lib/0SAVED-CVCard.d.ts +5 -0
- package/lib/0SAVED-CVCard.d.ts.map +1 -0
- package/lib/0SAVED-CVCard.js +71 -57
- package/lib/CVCard.d.ts +5 -0
- package/lib/CVCard.d.ts.map +1 -0
- package/lib/CVCard.js +79 -58
- package/lib/CVPresenter.d.ts +25 -0
- package/lib/CVPresenter.d.ts.map +1 -0
- package/lib/CVPresenter.js +87 -91
- package/lib/ChatWithMe.d.ts +5 -0
- package/lib/ChatWithMe.d.ts.map +1 -0
- package/lib/ChatWithMe.js +39 -131
- package/lib/FriendList.d.ts +6 -0
- package/lib/FriendList.d.ts.map +1 -0
- package/lib/FriendList.js +41 -49
- package/lib/ProfileCard.d.ts +4 -0
- package/lib/ProfileCard.d.ts.map +1 -0
- package/lib/ProfileCard.js +38 -36
- package/lib/ProfileView.d.ts +5 -0
- package/lib/ProfileView.d.ts.map +1 -0
- package/lib/ProfileView.js +67 -94
- package/lib/QRCodeCard.d.ts +5 -0
- package/lib/QRCodeCard.d.ts.map +1 -0
- package/lib/QRCodeCard.js +54 -47
- package/lib/SocialCard.d.ts +5 -0
- package/lib/SocialCard.d.ts.map +1 -0
- package/lib/SocialCard.js +56 -42
- package/lib/SocialPresenter.d.ts +12 -0
- package/lib/SocialPresenter.d.ts.map +1 -0
- package/lib/SocialPresenter.js +73 -73
- package/lib/StuffCard.d.ts +6 -0
- package/lib/StuffCard.d.ts.map +1 -0
- package/lib/StuffCard.js +52 -47
- package/lib/StuffPresenter.d.ts +14 -0
- package/lib/StuffPresenter.d.ts.map +1 -0
- package/lib/StuffPresenter.js +47 -76
- package/lib/addMeToYourFriends.d.ts +10 -0
- package/lib/addMeToYourFriends.d.ts.map +1 -0
- package/lib/addMeToYourFriends.js +88 -172
- package/lib/addMeToYourFriendsHelper.d.ts +6 -0
- package/lib/addMeToYourFriendsHelper.d.ts.map +1 -0
- package/lib/addMeToYourFriendsHelper.js +17 -14
- package/lib/baseStyles.d.ts +71 -0
- package/lib/baseStyles.d.ts.map +1 -0
- package/lib/baseStyles.js +75 -69
- package/lib/editProfilePane/editProfile.view.d.ts +13 -0
- package/lib/editProfilePane/editProfile.view.d.ts.map +1 -0
- package/lib/editProfilePane/editProfile.view.js +125 -117
- package/lib/editProfilePane/profile.dom.d.ts +4 -0
- package/lib/editProfilePane/profile.dom.d.ts.map +1 -0
- package/lib/editProfilePane/profile.dom.js +29 -13
- package/lib/index.d.ts +12 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +64 -127
- package/lib/presenter.d.ts +14 -0
- package/lib/presenter.d.ts.map +1 -0
- package/lib/presenter.js +52 -52
- package/lib/texts.d.ts +10 -0
- package/lib/texts.d.ts.map +1 -0
- package/lib/texts.js +16 -12
- package/package.json +32 -18
- package/lib/0SAVED-CVCard.js.map +0 -1
- package/lib/CVCard.js.map +0 -1
- package/lib/CVPresenter.js.map +0 -1
- package/lib/ChatWithMe.js.map +0 -1
- package/lib/FriendList.js.map +0 -1
- package/lib/ProfileCard.js.map +0 -1
- package/lib/ProfileView.js.map +0 -1
- package/lib/QRCodeCard.js.map +0 -1
- package/lib/SocialCard.js.map +0 -1
- package/lib/SocialPresenter.js.map +0 -1
- package/lib/StuffCard.js.map +0 -1
- package/lib/StuffPresenter.js.map +0 -1
- package/lib/addMeToYourFriends.js.map +0 -1
- package/lib/addMeToYourFriendsHelper.js.map +0 -1
- package/lib/baseStyles.js.map +0 -1
- package/lib/editProfilePane/editProfile.view.js.map +0 -1
- package/lib/editProfilePane/profile.dom.js.map +0 -1
- package/lib/editProfilePane/wrapped-profileFormText.js +0 -5
- package/lib/editProfilePane/wrapped-profileFormText.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/integration-tests/helpers/dataSetup.js +0 -74
- package/lib/integration-tests/helpers/dataSetup.js.map +0 -1
- package/lib/integration-tests/helpers/setup.js +0 -19
- package/lib/integration-tests/helpers/setup.js.map +0 -1
- package/lib/integration-tests/setup.js +0 -46
- package/lib/integration-tests/setup.js.map +0 -1
- package/lib/presenter.js.map +0 -1
- package/lib/texts.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# profile-pane
|
|
2
2
|
SolidOS pane that displays a personal profile page
|
|
3
3
|
|
|
4
|
-
This is a re-write that is going to replace the current profile pane
|
|
5
|
-
|
|
6
4
|

|
|
7
5
|
|
|
8
6
|
## Contribute
|
|
@@ -29,10 +27,6 @@ If this is the case, simply run "npm audit fix" and upgrade the repository. It s
|
|
|
29
27
|
|
|
30
28
|
Unit tests use `jest` and are placed next to the tested file as `*.spec.ts` files.
|
|
31
29
|
|
|
32
|
-
#### Integration tests
|
|
33
|
-
|
|
34
|
-
Integration tests verify the rendering of the whole pane (with mocked HTTP requests) and are placed under `./src/integration-tests`.
|
|
35
|
-
|
|
36
30
|
### Dev Server
|
|
37
31
|
|
|
38
32
|
Start a webpack dev server:
|
|
@@ -41,8 +35,7 @@ Start a webpack dev server:
|
|
|
41
35
|
npm start
|
|
42
36
|
```
|
|
43
37
|
|
|
44
|
-
Visit `http://localhost:8080/` to render the pane. Adjust `const webIdToShow` in `./dev/index.ts` to show a
|
|
45
|
-
different profile.
|
|
38
|
+
Visit `http://localhost:8080/` to render the pane. Adjust `const webIdToShow` in `./dev/index.ts` to show a different profile.
|
|
46
39
|
|
|
47
40
|
### Build
|
|
48
41
|
|
|
@@ -52,16 +45,3 @@ npm run build
|
|
|
52
45
|
|
|
53
46
|
The build is done by `tsc`, webpack is only used as dev server and not for production build.
|
|
54
47
|
|
|
55
|
-
### Check before committing
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
npm run check
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
This does lint, build and test.
|
|
62
|
-
|
|
63
|
-
### Notes
|
|
64
|
-
|
|
65
|
-
If suddenly many tests fail, it may be that the installation has ended up with
|
|
66
|
-
two different instances of solid-logic. Run `npm list solid-logic` and make sure there is only one.
|
|
67
|
-
Otherwise `rm -rf node_modules package-lock.json && npm install` should fix it.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { TemplateResult } from 'lit-html';
|
|
2
|
+
import { ProfilePresentation } from './presenter';
|
|
3
|
+
import { CVPresentation } from './CVPresenter';
|
|
4
|
+
export declare const CVCard: (profileBasics: ProfilePresentation, cvData: CVPresentation) => TemplateResult;
|
|
5
|
+
//# sourceMappingURL=0SAVED-CVCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0SAVED-CVCard.d.ts","sourceRoot":"","sources":["../src/0SAVED-CVCard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,MAAM,UAAU,CAAA;AAS/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAW9C,eAAO,MAAM,MAAM,GACjB,eAAe,mBAAmB,EAClC,QAAQ,cAAc,KACrB,cA6BF,CAAA"}
|
package/lib/0SAVED-CVCard.js
CHANGED
|
@@ -1,76 +1,90 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
6
|
-
var __assign = (this && this.__assign) || function () {
|
|
7
|
-
__assign = Object.assign || function(t) {
|
|
8
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
-
s = arguments[i];
|
|
10
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
-
t[p] = s[p];
|
|
12
|
-
}
|
|
13
|
-
return t;
|
|
14
|
-
};
|
|
15
|
-
return __assign.apply(this, arguments);
|
|
16
|
-
};
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
18
6
|
exports.CVCard = void 0;
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
var
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
7
|
+
var _litHtml = require("lit-html");
|
|
8
|
+
var _baseStyles = require("./baseStyles");
|
|
9
|
+
var _styleMap = require("lit-html/directives/style-map.js");
|
|
10
|
+
const styles = {
|
|
11
|
+
image: (0, _styleMap.styleMap)((0, _baseStyles.fullWidth)()),
|
|
12
|
+
intro: (0, _styleMap.styleMap)({
|
|
13
|
+
...(0, _baseStyles.textGray)(),
|
|
14
|
+
...(0, _baseStyles.textCenter)()
|
|
15
|
+
}),
|
|
16
|
+
card: (0, _styleMap.styleMap)((0, _baseStyles.card)()),
|
|
17
|
+
info: (0, _styleMap.styleMap)({
|
|
18
|
+
...(0, _baseStyles.paddingSmall)(),
|
|
19
|
+
...(0, _baseStyles.textLeft)()
|
|
20
|
+
})
|
|
28
21
|
};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
22
|
+
const CVCard = (profileBasics, cvData) => {
|
|
23
|
+
const {
|
|
24
|
+
rolesByType,
|
|
25
|
+
skills,
|
|
26
|
+
languages
|
|
27
|
+
} = cvData;
|
|
28
|
+
const nameStyle = (0, _styleMap.styleMap)({
|
|
29
|
+
...(0, _baseStyles.heading)(),
|
|
30
|
+
// "text-decoration": "underline",
|
|
31
|
+
color: profileBasics.highlightColor // was "text-decoration-color"
|
|
32
|
+
});
|
|
33
|
+
if (renderRoles(rolesByType['FutureRole']) || renderRoles(rolesByType['CurrentRole']) || renderRoles(rolesByType['PastRole']) || renderSkills(skills) || renderLanguages(languages)) {
|
|
34
|
+
return (0, _litHtml.html)`
|
|
35
|
+
<div data-testid="curriculum-vitae" style="${styles.card}">
|
|
36
|
+
<div style=${styles.info}>
|
|
37
|
+
<h3 style=${nameStyle}>Bio</h3>
|
|
38
|
+
<div style=${styles.info}>${renderRoles(rolesByType['FutureRole'])}</div>
|
|
39
|
+
<hr />
|
|
40
|
+
<div style=${styles.info}>${renderRoles(rolesByType['CurrentRole'])}</div>
|
|
41
|
+
<hr />
|
|
42
|
+
<div style=${styles.info}>${renderRoles(rolesByType['PastRole'])}</div>
|
|
43
|
+
<hr />
|
|
44
|
+
<h3 style=${nameStyle}>Skills</h3>
|
|
45
|
+
<div style=${styles.info}>${renderSkills(skills)}</div>
|
|
46
|
+
<h3 style=${nameStyle}>Languages</h3>
|
|
47
|
+
<div style=${styles.info}>${renderLanguages(languages)}</div>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
`;
|
|
51
|
+
}
|
|
52
|
+
return (0, _litHtml.html)``;
|
|
38
53
|
};
|
|
39
54
|
exports.CVCard = CVCard;
|
|
40
55
|
function renderRole(role) {
|
|
41
|
-
|
|
42
|
-
|
|
56
|
+
return role ? (0, _litHtml.html)`<div style="margin-top: 0.3em; margin-bottom: 0.3em;">
|
|
57
|
+
<b>${role.orgName}</b>
|
|
58
|
+
<span>${strToUpperCase(role.roleText)}</span>
|
|
59
|
+
<span>${role.dates}</span>
|
|
60
|
+
</div> ` : (0, _litHtml.html)``;
|
|
43
61
|
}
|
|
44
62
|
function renderRoles(roles) {
|
|
45
|
-
|
|
46
|
-
return (0, lit_html_1.html)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["", "", ""], ["", "", ""])), renderRole(roles[0]), roles.length > 1 ? renderRoles(roles.slice(1)) : (0, lit_html_1.html)(templateObject_5 || (templateObject_5 = __makeTemplateObject([""], [""]))));
|
|
63
|
+
if (roles[0] > '') return (0, _litHtml.html)`${renderRole(roles[0])}${roles.length > 1 ? renderRoles(roles.slice(1)) : (0, _litHtml.html)``}`;
|
|
47
64
|
}
|
|
48
65
|
function renderSkill(skill) {
|
|
49
|
-
|
|
50
|
-
|
|
66
|
+
return skill ? (0, _litHtml.html)`<div style="margin: 0.5em;">
|
|
67
|
+
<p style="text-align: center;">${skill}</p>
|
|
68
|
+
</div> ` : (0, _litHtml.html)``;
|
|
51
69
|
}
|
|
52
70
|
function renderSkills(skills) {
|
|
53
|
-
|
|
54
|
-
return (0, lit_html_1.html)(templateObject_10 || (templateObject_10 = __makeTemplateObject(["", " ", ""], ["", " ", ""])), renderSkill(strToUpperCase(skills[0])), skills.length > 1 ? renderSkills(skills.slice(1)) : (0, lit_html_1.html)(templateObject_9 || (templateObject_9 = __makeTemplateObject([""], [""]))));
|
|
71
|
+
if (skills[0] > '') return (0, _litHtml.html)`${renderSkill(strToUpperCase(skills[0]))} ${skills.length > 1 ? renderSkills(skills.slice(1)) : (0, _litHtml.html)``}`;
|
|
55
72
|
}
|
|
56
73
|
function renderLan(language) {
|
|
57
|
-
|
|
58
|
-
|
|
74
|
+
return language ? (0, _litHtml.html)`<div style="margin: 0.5em;">
|
|
75
|
+
<p style="text-align: center;">${language}</p>
|
|
76
|
+
</div> ` : (0, _litHtml.html)``;
|
|
59
77
|
}
|
|
60
78
|
function renderLanguages(languages) {
|
|
61
|
-
|
|
62
|
-
return (0, lit_html_1.html)(templateObject_14 || (templateObject_14 = __makeTemplateObject(["", "", ""], ["", "", ""])), renderLan(languages[0]), languages.length > 1 ? renderLanguages(languages.slice(1)) : (0, lit_html_1.html)(templateObject_13 || (templateObject_13 = __makeTemplateObject([""], [""]))));
|
|
79
|
+
if (languages[0] > '') return (0, _litHtml.html)`${renderLan(languages[0])}${languages.length > 1 ? renderLanguages(languages.slice(1)) : (0, _litHtml.html)``}`;
|
|
63
80
|
}
|
|
64
81
|
function strToUpperCase(str) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
strCase[i].substring(1);
|
|
70
|
-
}
|
|
71
|
-
return strCase.join(' ');
|
|
82
|
+
if (str && str[0] > '') {
|
|
83
|
+
const strCase = str.split(' ');
|
|
84
|
+
for (let i = 0; i < strCase.length; i++) {
|
|
85
|
+
strCase[i] = strCase[i].charAt(0).toUpperCase() + strCase[i].substring(1);
|
|
72
86
|
}
|
|
73
|
-
return '';
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
87
|
+
return strCase.join(' ');
|
|
88
|
+
}
|
|
89
|
+
return '';
|
|
90
|
+
}
|
package/lib/CVCard.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { TemplateResult } from 'lit-html';
|
|
2
|
+
import { ProfilePresentation } from './presenter';
|
|
3
|
+
import { CVPresentation } from './CVPresenter';
|
|
4
|
+
export declare const CVCard: (profileBasics: ProfilePresentation, cvData: CVPresentation) => TemplateResult;
|
|
5
|
+
//# sourceMappingURL=CVCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CVCard.d.ts","sourceRoot":"","sources":["../src/CVCard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,MAAM,UAAU,CAAA;AAS/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAa9C,eAAO,MAAM,MAAM,GACjB,eAAe,mBAAmB,EAClC,QAAQ,cAAc,KACrB,cAgCF,CAAA"}
|
package/lib/CVCard.js
CHANGED
|
@@ -1,78 +1,99 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
6
|
-
var __assign = (this && this.__assign) || function () {
|
|
7
|
-
__assign = Object.assign || function(t) {
|
|
8
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
-
s = arguments[i];
|
|
10
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
-
t[p] = s[p];
|
|
12
|
-
}
|
|
13
|
-
return t;
|
|
14
|
-
};
|
|
15
|
-
return __assign.apply(this, arguments);
|
|
16
|
-
};
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
18
6
|
exports.CVCard = void 0;
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
var
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
7
|
+
var _litHtml = require("lit-html");
|
|
8
|
+
var _baseStyles = require("./baseStyles");
|
|
9
|
+
var _styleMap = require("lit-html/directives/style-map.js");
|
|
10
|
+
const styles = {
|
|
11
|
+
image: (0, _styleMap.styleMap)((0, _baseStyles.fullWidth)()),
|
|
12
|
+
intro: (0, _styleMap.styleMap)({
|
|
13
|
+
...(0, _baseStyles.textGray)(),
|
|
14
|
+
...(0, _baseStyles.textCenter)()
|
|
15
|
+
}),
|
|
16
|
+
card: (0, _styleMap.styleMap)((0, _baseStyles.card)()),
|
|
17
|
+
info: (0, _styleMap.styleMap)({
|
|
18
|
+
...(0, _baseStyles.paddingSmall)(),
|
|
19
|
+
...(0, _baseStyles.textLeft)()
|
|
20
|
+
}),
|
|
21
|
+
tools: (0, _styleMap.styleMap)({
|
|
22
|
+
...(0, _baseStyles.paddingSmall)(),
|
|
23
|
+
...(0, _baseStyles.textRight)()
|
|
24
|
+
})
|
|
29
25
|
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
26
|
+
const CVCard = (profileBasics, cvData) => {
|
|
27
|
+
const {
|
|
28
|
+
rolesByType,
|
|
29
|
+
skills,
|
|
30
|
+
languages
|
|
31
|
+
} = cvData;
|
|
32
|
+
const nameStyle = (0, _styleMap.styleMap)({
|
|
33
|
+
...(0, _baseStyles.heading)(),
|
|
34
|
+
// "text-decoration": "underline",
|
|
35
|
+
color: profileBasics.highlightColor // was "text-decoration-color"
|
|
36
|
+
});
|
|
37
|
+
if (renderRoles(rolesByType['FutureRole']) || renderRoles(rolesByType['CurrentRole']) || renderRoles(rolesByType['PastRole']) || renderSkills(skills) || renderLanguages(languages)) {
|
|
38
|
+
return (0, _litHtml.html)`
|
|
39
|
+
<div>
|
|
40
|
+
<div data-testid="curriculum-vitae" style="${styles.card}">
|
|
41
|
+
<div style=${styles.info}>
|
|
42
|
+
<h3 style=${nameStyle}>Bio</h3>
|
|
43
|
+
<div style=${styles.info}>${renderRoles(rolesByType['FutureRole'])}</div>
|
|
44
|
+
<hr />
|
|
45
|
+
<div style=${styles.info}>${renderRoles(rolesByType['CurrentRole'])}</div>
|
|
46
|
+
<hr />
|
|
47
|
+
<div style=${styles.info}>${renderRoles(rolesByType['PastRole'])}</div>
|
|
48
|
+
<hr />
|
|
49
|
+
<h3 style=${nameStyle}>Skills</h3>
|
|
50
|
+
<div style=${styles.info}>${renderSkills(skills)}</div>
|
|
51
|
+
<h3 style=${nameStyle}>Languages</h3>
|
|
52
|
+
<div style=${styles.info}>${renderLanguages(languages)}</div>
|
|
53
|
+
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
`;
|
|
58
|
+
}
|
|
59
|
+
return (0, _litHtml.html)``;
|
|
39
60
|
};
|
|
40
61
|
exports.CVCard = CVCard;
|
|
41
62
|
function renderRole(role) {
|
|
42
|
-
|
|
43
|
-
|
|
63
|
+
return role ? (0, _litHtml.html)`<div style="margin-top: 0.3em; margin-bottom: 0.3em;">
|
|
64
|
+
<b>${role.orgName}</b>
|
|
65
|
+
<span>${strToUpperCase(role.roleText)}</span>
|
|
66
|
+
<span>${role.dates}</span>
|
|
67
|
+
</div> ` : (0, _litHtml.html)``;
|
|
44
68
|
}
|
|
45
69
|
function renderRoles(roles) {
|
|
46
|
-
|
|
47
|
-
return (0, lit_html_1.html)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["", "", ""], ["", "", ""])), renderRole(roles[0]), roles.length > 1 ? renderRoles(roles.slice(1)) : (0, lit_html_1.html)(templateObject_5 || (templateObject_5 = __makeTemplateObject([""], [""]))));
|
|
70
|
+
if (roles[0] > '') return (0, _litHtml.html)`${renderRole(roles[0])}${roles.length > 1 ? renderRoles(roles.slice(1)) : (0, _litHtml.html)``}`;
|
|
48
71
|
}
|
|
49
72
|
function renderSkill(skill) {
|
|
50
|
-
|
|
51
|
-
|
|
73
|
+
return skill ? (0, _litHtml.html)`<div style="margin: 0.5em;">
|
|
74
|
+
<p style="text-align: center;">${skill}</p>
|
|
75
|
+
</div> ` : (0, _litHtml.html)``;
|
|
52
76
|
}
|
|
53
77
|
function renderSkills(skills) {
|
|
54
|
-
|
|
55
|
-
return (0, lit_html_1.html)(templateObject_10 || (templateObject_10 = __makeTemplateObject(["", " ", ""], ["", " ", ""])), renderSkill(strToUpperCase(skills[0])), skills.length > 1 ? renderSkills(skills.slice(1)) : (0, lit_html_1.html)(templateObject_9 || (templateObject_9 = __makeTemplateObject([""], [""]))));
|
|
78
|
+
if (skills[0] > '') return (0, _litHtml.html)`${renderSkill(strToUpperCase(skills[0]))} ${skills.length > 1 ? renderSkills(skills.slice(1)) : (0, _litHtml.html)``}`;
|
|
56
79
|
}
|
|
57
80
|
function renderLan(language) {
|
|
58
|
-
|
|
59
|
-
|
|
81
|
+
return language ? (0, _litHtml.html)`<div style="margin: 0.5em;">
|
|
82
|
+
<p style="text-align: center;">${language}</p>
|
|
83
|
+
</div> ` : (0, _litHtml.html)``;
|
|
60
84
|
}
|
|
61
85
|
function renderLanguages(languages) {
|
|
62
|
-
|
|
63
|
-
return (0, lit_html_1.html)(templateObject_14 || (templateObject_14 = __makeTemplateObject(["", "", ""], ["", "", ""])), renderLan(languages[0]), languages.length > 1 ? renderLanguages(languages.slice(1)) : (0, lit_html_1.html)(templateObject_13 || (templateObject_13 = __makeTemplateObject([""], [""]))));
|
|
86
|
+
if (languages[0] > '') return (0, _litHtml.html)`${renderLan(languages[0])}${languages.length > 1 ? renderLanguages(languages.slice(1)) : (0, _litHtml.html)``}`;
|
|
64
87
|
}
|
|
65
88
|
function strToUpperCase(str) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
strCase[i].substring(1);
|
|
71
|
-
}
|
|
72
|
-
return strCase.join(' ');
|
|
89
|
+
if (str && str[0] > '') {
|
|
90
|
+
const strCase = str.split(' ');
|
|
91
|
+
for (let i = 0; i < strCase.length; i++) {
|
|
92
|
+
strCase[i] = strCase[i].charAt(0).toUpperCase() + strCase[i].substring(1);
|
|
73
93
|
}
|
|
74
|
-
return '';
|
|
94
|
+
return strCase.join(' ');
|
|
95
|
+
}
|
|
96
|
+
return '';
|
|
75
97
|
}
|
|
76
|
-
|
|
77
|
-
// ends
|
|
78
|
-
//# sourceMappingURL=CVCard.js.map
|
|
98
|
+
|
|
99
|
+
// ends
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { LiveStore, NamedNode, Literal, Node, Store } from 'rdflib';
|
|
2
|
+
export interface Role {
|
|
3
|
+
startDate?: Literal;
|
|
4
|
+
endDate: Literal;
|
|
5
|
+
dates: string;
|
|
6
|
+
orgName: string;
|
|
7
|
+
roleText: string;
|
|
8
|
+
orgHomePage?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface CVPresentation {
|
|
11
|
+
rolesByType: RolesByType;
|
|
12
|
+
skills: string[];
|
|
13
|
+
languages: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface RolesByType {
|
|
16
|
+
PastRole: Role[];
|
|
17
|
+
CurrentRole: Role[];
|
|
18
|
+
FutureRole: Role[];
|
|
19
|
+
}
|
|
20
|
+
export declare const typesOfRole: string[];
|
|
21
|
+
export declare function skillAsText(store: Store, sk: Node): string;
|
|
22
|
+
export declare function languageAsText(store: Store, lan: Node): string;
|
|
23
|
+
export declare function datesAsText(startDate?: Literal, endDate?: Literal): string;
|
|
24
|
+
export declare function presentCV(subject: NamedNode, store: LiveStore): CVPresentation;
|
|
25
|
+
//# sourceMappingURL=CVPresenter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CVPresenter.d.ts","sourceRoot":"","sources":["../src/CVPresenter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAa,IAAI,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAG9E,MAAM,WAAW,IAAI;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AACD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,UAAU,EAAE,IAAI,EAAE,CAAC;CACpB;AAID,eAAO,MAAM,WAAW,UAA4C,CAAA;AAEpE,wBAAgB,WAAW,CAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,GAAE,MAAM,CAW1D;AAED,wBAAgB,cAAc,CAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,GAAE,MAAM,CAM9D;AAED,wBAAgB,WAAW,CAAE,SAAS,CAAC,EAAC,OAAO,EAAE,OAAO,CAAC,EAAC,OAAO,GAAE,MAAM,CAIxE;AAiDD,wBAAgB,SAAS,CACvB,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,SAAS,GACf,cAAc,CAoBhB"}
|
package/lib/CVPresenter.js
CHANGED
|
@@ -1,104 +1,100 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
exports
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
6
|
exports.datesAsText = datesAsText;
|
|
7
|
+
exports.languageAsText = languageAsText;
|
|
7
8
|
exports.presentCV = presentCV;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var
|
|
11
|
-
|
|
9
|
+
exports.skillAsText = skillAsText;
|
|
10
|
+
exports.typesOfRole = void 0;
|
|
11
|
+
var _rdflib = require("rdflib");
|
|
12
|
+
var _solidUi = require("solid-ui");
|
|
13
|
+
const ORG = (0, _rdflib.Namespace)('http://www.w3.org/ns/org#');
|
|
14
|
+
const typesOfRole = exports.typesOfRole = ['PastRole', 'CurrentRole', 'FutureRole'];
|
|
12
15
|
function skillAsText(store, sk) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (manual && manual[0] > "")
|
|
23
|
-
return manual;
|
|
24
|
-
return '¿¿¿ skill ???';
|
|
16
|
+
if (sk.termType === 'Literal') return sk.value; // Not normal but allow this
|
|
17
|
+
const publicId = store.anyJS(sk, _solidUi.ns.solid('publicId'));
|
|
18
|
+
if (publicId) {
|
|
19
|
+
const name = store.anyJS(publicId, _solidUi.ns.schema('name'));
|
|
20
|
+
if (name) return name; // @@ check language and get name in diff language if necessary
|
|
21
|
+
}
|
|
22
|
+
const manual = store.anyJS(sk, _solidUi.ns.vcard('role'));
|
|
23
|
+
if (manual && manual[0] > '') return manual;
|
|
24
|
+
return '¿¿¿ skill ???';
|
|
25
25
|
}
|
|
26
26
|
function languageAsText(store, lan) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return solid_ui_1.utils.label(publicId, true); // @@ check language and get name in diff language if necessary
|
|
32
|
-
return '-';
|
|
27
|
+
if (lan.termType === 'Literal') return lan.value; // Not normal but allow this
|
|
28
|
+
const publicId = store.anyJS(lan, _solidUi.ns.solid('publicId'));
|
|
29
|
+
if (publicId) return _solidUi.utils.label(publicId, true); // @@ check language and get name in diff language if necessary
|
|
30
|
+
return '-';
|
|
33
31
|
}
|
|
34
32
|
function datesAsText(startDate, endDate) {
|
|
35
|
-
|
|
36
|
-
(endDate ? endDate.value.slice(0, 10) : '') + ')'
|
|
37
|
-
: '';
|
|
33
|
+
return startDate ? '(' + startDate.value.slice(0, 10) + ' to ' + (endDate ? endDate.value.slice(0, 10) : '') + ')' : '';
|
|
38
34
|
}
|
|
39
35
|
function getRolesByType(store, subject) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (publicId) {
|
|
58
|
-
publicIdName = store.anyJS(publicId, solid_ui_1.ns.schema('name'));
|
|
59
|
-
}
|
|
60
|
-
var orgName = publicIdName || orgNameGiven;
|
|
61
|
-
var escoRole = store.any(membership, ORG('role'));
|
|
62
|
-
if (escoRole) {
|
|
63
|
-
roleName = store.anyJS(escoRole, solid_ui_1.ns.schema('name'));
|
|
64
|
-
}
|
|
65
|
-
var roleText0 = store.anyJS(membership, solid_ui_1.ns.vcard('role'));
|
|
66
|
-
var roleText = (roleText0 && roleName) ? roleName + ' - ' + roleText0
|
|
67
|
-
: roleText0 || roleName;
|
|
68
|
-
var item = {
|
|
69
|
-
startDate: startDate,
|
|
70
|
-
endDate: endDate,
|
|
71
|
-
orgName: orgName,
|
|
72
|
-
roleText: roleText,
|
|
73
|
-
dates: dates,
|
|
74
|
-
orgHomePage: orgHomePage
|
|
75
|
-
};
|
|
76
|
-
for (var _a = 0, typesOfRole_1 = exports.typesOfRole; _a < typesOfRole_1.length; _a++) {
|
|
77
|
-
var t = typesOfRole_1[_a];
|
|
78
|
-
if (store.holds(membership, solid_ui_1.ns.rdf('type'), solid_ui_1.ns.solid(t))) {
|
|
79
|
-
rolesByType[t].push(item);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
36
|
+
const memberships = store.each(null, ORG('member'), subject, null);
|
|
37
|
+
const rolesByType = {
|
|
38
|
+
PastRole: [],
|
|
39
|
+
CurrentRole: [],
|
|
40
|
+
FutureRole: []
|
|
41
|
+
};
|
|
42
|
+
for (const membership of memberships) {
|
|
43
|
+
let orgHomePage, orgNameGiven, publicIdName, roleName, publicId;
|
|
44
|
+
// Things should have start dates but we will be very lenient in this view
|
|
45
|
+
const startDate = store.any(membership, _solidUi.ns.schema('startDate'));
|
|
46
|
+
const endDate = store.any(membership, _solidUi.ns.schema('endDate'));
|
|
47
|
+
const dates = datesAsText(startDate, endDate);
|
|
48
|
+
const organization = store.any(membership, ORG('organization'));
|
|
49
|
+
if (organization) {
|
|
50
|
+
orgNameGiven = store.anyJS(organization, _solidUi.ns.schema('name'));
|
|
51
|
+
orgHomePage = store.any(organization, _solidUi.ns.schema('uri'));
|
|
52
|
+
publicId = store.any(organization, _solidUi.ns.solid('publicId'));
|
|
82
53
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
function presentCV(subject, store) {
|
|
86
|
-
var rolesByType = getRolesByType(store, subject);
|
|
87
|
-
// Most recent thing most relevant -> sort by end date
|
|
88
|
-
for (var _i = 0, typesOfRole_2 = exports.typesOfRole; _i < typesOfRole_2.length; _i++) {
|
|
89
|
-
var t = typesOfRole_2[_i];
|
|
90
|
-
rolesByType[t].sort(function (x, y) {
|
|
91
|
-
if (x.endDate && y.endDate) {
|
|
92
|
-
return x.endDate > y.endDate ? -1 : 1;
|
|
93
|
-
}
|
|
94
|
-
return x.startDate > y.startDate ? -1 : 1;
|
|
95
|
-
});
|
|
54
|
+
if (publicId) {
|
|
55
|
+
publicIdName = store.anyJS(publicId, _solidUi.ns.schema('name'));
|
|
96
56
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
57
|
+
const orgName = publicIdName || orgNameGiven;
|
|
58
|
+
const escoRole = store.any(membership, ORG('role'));
|
|
59
|
+
if (escoRole) {
|
|
60
|
+
roleName = store.anyJS(escoRole, _solidUi.ns.schema('name'));
|
|
61
|
+
}
|
|
62
|
+
const roleText0 = store.anyJS(membership, _solidUi.ns.vcard('role'));
|
|
63
|
+
const roleText = roleText0 && roleName ? roleName + ' - ' + roleText0 : roleText0 || roleName;
|
|
64
|
+
const item = {
|
|
65
|
+
startDate: startDate,
|
|
66
|
+
endDate,
|
|
67
|
+
orgName,
|
|
68
|
+
roleText,
|
|
69
|
+
dates,
|
|
70
|
+
orgHomePage
|
|
71
|
+
};
|
|
72
|
+
for (const t of typesOfRole) {
|
|
73
|
+
if (store.holds(membership, _solidUi.ns.rdf('type'), _solidUi.ns.solid(t))) {
|
|
74
|
+
rolesByType[t].push(item);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return rolesByType;
|
|
103
79
|
}
|
|
104
|
-
|
|
80
|
+
function presentCV(subject, store) {
|
|
81
|
+
const rolesByType = getRolesByType(store, subject);
|
|
82
|
+
// Most recent thing most relevant -> sort by end date
|
|
83
|
+
for (const t of typesOfRole) {
|
|
84
|
+
rolesByType[t].sort(function (x, y) {
|
|
85
|
+
if (x.endDate && y.endDate) {
|
|
86
|
+
return x.endDate > y.endDate ? -1 : 1;
|
|
87
|
+
}
|
|
88
|
+
return x.startDate > y.startDate ? -1 : 1;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
const skills = store.each(subject, _solidUi.ns.schema('skills')).map(sk => skillAsText(store, sk));
|
|
92
|
+
const languagesInStore = store.anyJS(subject, _solidUi.ns.schema('knowsLanguage'));
|
|
93
|
+
let languages = [];
|
|
94
|
+
if (languagesInStore) languages = languagesInStore.map(lan => languageAsText(store, lan));
|
|
95
|
+
return {
|
|
96
|
+
rolesByType,
|
|
97
|
+
skills,
|
|
98
|
+
languages
|
|
99
|
+
};
|
|
100
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { TemplateResult } from 'lit-html';
|
|
2
|
+
import { DataBrowserContext } from 'pane-registry';
|
|
3
|
+
import { NamedNode } from 'rdflib';
|
|
4
|
+
export declare const ChatWithMe: (subject: NamedNode, context: DataBrowserContext) => TemplateResult;
|
|
5
|
+
//# sourceMappingURL=ChatWithMe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatWithMe.d.ts","sourceRoot":"","sources":["../src/ChatWithMe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAKlC,eAAO,MAAM,UAAU,GACrB,SAAS,SAAS,EAClB,SAAS,kBAAkB,KAC1B,cAwCF,CAAA"}
|