Skip to content

Commit cb14011

Browse files
committed
content: generateArtistCredit
1 parent bbfecd7 commit cb14011

File tree

3 files changed

+103
-63
lines changed

3 files changed

+103
-63
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import {empty} from '#sugar';
2+
3+
export default {
4+
contentDependencies: [
5+
'generateArtistCreditWikiEditsPart',
6+
'linkContribution',
7+
],
8+
9+
extraDependencies: ['html', 'language'],
10+
11+
query: (contributions) => ({
12+
normalContributions:
13+
contributions
14+
.filter(contrib => !contrib.annotation?.startsWith(`edits for wiki`)),
15+
16+
wikiEditContributions:
17+
contributions
18+
.filter(contrib => contrib.annotation?.startsWith(`edits for wiki`)),
19+
}),
20+
21+
relations: (relation, query, _contributions) => ({
22+
contributionLinks:
23+
query.normalContributions
24+
.map(contrib => relation('linkContribution', contrib)),
25+
26+
wikiEditsPart:
27+
relation('generateArtistCreditWikiEditsPart',
28+
query.wikiEditContributions),
29+
}),
30+
31+
data: (query, _contributions) => ({
32+
hasWikiEdits:
33+
!empty(query.wikiEditContributions),
34+
}),
35+
36+
slots: {
37+
showAnnotation: {type: 'boolean', default: true},
38+
showExternalLinks: {type: 'boolean', default: true},
39+
showChronology: {type: 'boolean', default: true},
40+
41+
trimAnnotation: {type: 'boolean', default: false},
42+
43+
chronologyKind: {type: 'string'},
44+
45+
stringKey: {type: 'string'},
46+
},
47+
48+
generate(data, relations, slots, {language}) {
49+
const contributionsList =
50+
language.formatConjunctionList(
51+
relations.contributionLinks.map(link =>
52+
link.slots({
53+
showAnnotation: slots.showAnnotation,
54+
showExternalLinks: slots.showExternalLinks,
55+
showChronology: slots.showChronology,
56+
57+
trimAnnotation: slots.trimAnnotation,
58+
59+
chronologyKind: slots.chronologyKind,
60+
})));
61+
62+
return language.$(slots.stringKey, {
63+
[language.onlyIfOptions]: ['artists'],
64+
65+
artists:
66+
(data.hasWikiEdits
67+
? language.encapsulate('misc.artistLink.withEditsForWiki', capsule =>
68+
language.$(capsule, {
69+
// It's nonsense to display "+ edits" without
70+
// having any regular contributions, also.
71+
[language.onlyIfOptions]: ['artists'],
72+
73+
artists: contributionsList,
74+
edits:
75+
relations.wikiEditsPart.slots({
76+
showAnnotation: slots.showAnnotation,
77+
}),
78+
}))
79+
: contributionsList),
80+
});
81+
},
82+
};

src/content/dependencies/generateReleaseInfoContributionsLineWikiEditsPart.js src/content/dependencies/generateArtistCreditWikiEditsPart.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export default {
55
'linkContribution',
66
],
77

8-
extraDependencies: ['language'],
8+
extraDependencies: ['html', 'language'],
99

1010
relations: (relation, contributions) => ({
1111
textWithTooltip:
@@ -19,7 +19,11 @@ export default {
1919
.map(contrib => relation('linkContribution', contrib)),
2020
}),
2121

22-
generate: (relations, {language}) =>
22+
slots: {
23+
showAnnotation: {type: 'boolean', default: true},
24+
},
25+
26+
generate: (relations, slots, {language}) =>
2327
language.encapsulate('misc.artistLink.withEditsForWiki', capsule =>
2428
relations.textWithTooltip.slots({
2529
attributes:
@@ -41,7 +45,7 @@ export default {
4145
language.formatConjunctionList(
4246
relations.contributionLinks.map(link =>
4347
link.slots({
44-
showAnnotation: true,
48+
showAnnotation: slots.showAnnotation,
4549
trimAnnotation: true,
4650
preventTooltip: true,
4751
}))),
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,27 @@
1-
import {empty} from '#sugar';
2-
31
export default {
4-
contentDependencies: [
5-
'generateReleaseInfoContributionsLineWikiEditsPart',
6-
'linkContribution',
7-
],
8-
9-
extraDependencies: ['html', 'language'],
10-
11-
query: (contributions) => ({
12-
normalContributions:
13-
contributions
14-
.filter(contrib => !contrib.annotation?.startsWith(`edits for wiki`)),
15-
16-
wikiEditContributions:
17-
contributions
18-
.filter(contrib => contrib.annotation?.startsWith(`edits for wiki`)),
19-
}),
2+
contentDependencies: ['generateArtistCredit'],
3+
extraDependencies: ['html'],
204

21-
relations: (relation, query, _contributions) => ({
22-
contributionLinks:
23-
query.normalContributions
24-
.map(contrib => relation('linkContribution', contrib)),
25-
26-
wikiEditsPart:
27-
relation('generateReleaseInfoContributionsLineWikiEditsPart',
28-
query.wikiEditContributions),
29-
}),
30-
31-
data: (query, _contributions) => ({
32-
hasWikiEdits:
33-
!empty(query.wikiEditContributions),
5+
relations: (relation, contributions) => ({
6+
credit:
7+
relation('generateArtistCredit', contributions),
348
}),
359

3610
slots: {
37-
showAnnotation: {type: 'boolean', default: true},
38-
showExternalLinks: {type: 'boolean', default: true},
39-
showChronology: {type: 'boolean', default: true},
40-
4111
stringKey: {type: 'string'},
4212
chronologyKind: {type: 'string'},
4313
},
4414

45-
generate(data, relations, slots, {language}) {
46-
const contributionsList =
47-
language.formatConjunctionList(
48-
relations.contributionLinks.map(link =>
49-
link.slots({
50-
showAnnotation: slots.showAnnotation,
51-
showExternalLinks: slots.showExternalLinks,
52-
showChronology: slots.showChronology,
53-
chronologyKind: slots.chronologyKind,
54-
})));
15+
generate: (relations, slots) =>
16+
relations.credit.slots({
17+
showAnnotation: true,
18+
showExternalLinks: true,
19+
showChronology: true,
5520

56-
return language.$(slots.stringKey, {
57-
[language.onlyIfOptions]: ['artists'],
21+
trimAnnotation: false,
5822

59-
artists:
60-
(data.hasWikiEdits
61-
? language.encapsulate('misc.artistLink.withEditsForWiki', capsule =>
62-
language.$(capsule, {
63-
// It's nonsense to display "+ edits" without
64-
// having any regular contributions, also.
65-
[language.onlyIfOptions]: ['artists'],
23+
stringKey: slots.stringKey,
6624

67-
artists: contributionsList,
68-
edits: relations.wikiEditsPart,
69-
}))
70-
: contributionsList),
71-
});
72-
},
25+
chronologyKind: slots.chronologyKind,
26+
}),
7327
};

0 commit comments

Comments
 (0)