Skip to content

Commit 634fa06

Browse files
committed
feat(orga): display unaquired badges
1 parent 0c02df5 commit 634fa06

File tree

6 files changed

+84
-74
lines changed

6 files changed

+84
-74
lines changed

Diff for: orga/app/components/campaign/badges.gjs

+21-37
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,37 @@
11
import PixTooltip from '@1024pix/pix-ui/components/pix-tooltip';
2-
import { service } from '@ember/service';
3-
import Component from '@glimmer/component';
42
import { t } from 'ember-intl';
5-
export default class BadgeList extends Component {
6-
@service intl;
7-
// computeTitle(badge, isAcquired) {
8-
// return `${badge.title} - ${isAcquired ? 'acquis' : 'non acquis'}`;
9-
// }
103

11-
get acquiredBadgeIds() {
12-
return this.args.acquiredBadges.map(({ id }) => id);
13-
}
4+
const isAcquired = (badge, acquiredBadges) => {
5+
let acquired = false;
6+
acquiredBadges.forEach((acquiredBadge) => {
7+
if (acquiredBadge.id === badge.id) {
8+
acquired = true;
9+
}
10+
});
11+
return acquired;
12+
};
1413

15-
async isBadgeAcquired(badge) {
16-
// const badges = await this.args.acquiredBadges;
17-
// console.log({ badges, badge, acquiredBadges });
18-
19-
const value = this.acquiredBadgeIds.some(({ id }) => id === badge.id);
20-
console.log(badge.id, value);
21-
return value;
22-
}
23-
24-
<template>
25-
{{#each @badges as |badge|}}
26-
27-
{{log (this.isBadgeAcquired badge @acquiredBadges)}}
28-
- -
29-
{{(this.isBadgeAcquired badge @acquiredBadges)}}
30-
{{!-- <PixTooltip @id="badge-tooltip-{{badge.id}}" @position="bottom" @isInline={{true}}>
14+
<template>
15+
{{#each @badges as |badge|}}
16+
<PixTooltip @id="badge-tooltip-{{badge.id}}" @position="bottom-left" @isInline={{true}}>
3117
<:triggerElement>
3218
<img
3319
src={{badge.imageUrl}}
3420
alt={{badge.altMessage}}
3521
tabindex="0"
36-
class={{if (isUnAcquired badge @acquiredBadges) "badge--unacquired" "coucou"}}
22+
class={{unless (isAcquired badge @acquiredBadges) "badge--unacquired"}}
3723
aria-describedby="badge-tooltip-{{badge.id}}"
3824
/>
3925
</:triggerElement>
4026
<:tooltip>
4127
{{badge.title}}
4228
-
43-
{{badge.id}}
44-
{{#if (isUnAcquired badge @acquiredBadges)}}
45-
pas acquis
46-
{{else}}
47-
acquis
48-
{{/if}}
29+
{{if
30+
(isAcquired badge @acquiredBadges)
31+
(t "pages.campaign-results.table.badge-tooltip.acquired")
32+
(t "pages.campaign-results.table.badge-tooltip.unacquired")
33+
}}
4934
</:tooltip>
50-
</PixTooltip> --}}
51-
{{/each}}
52-
</template>
53-
}
35+
</PixTooltip>
36+
{{/each}}
37+
</template>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { render } from '@1024pix/ember-testing-library';
2+
import Badges from 'pix-orga/components/campaign/badges';
3+
import { module, test } from 'qunit';
4+
5+
import setupIntlRenderingTest from '../../../helpers/setup-intl-rendering';
6+
7+
module('Integration | Component | Campaign | Badges', function (hooks) {
8+
setupIntlRenderingTest(hooks);
9+
10+
test('should render badge images for each one hey', async function (assert) {
11+
// given
12+
const badges = [
13+
{ id: 1, title: 'badge1', imageUrl: 'img1.svg', altMessage: 'alt-img1' },
14+
{ id: 2, title: 'badge2', imageUrl: 'img2.svg', altMessage: 'alt-img2' },
15+
];
16+
const acquiredBadges = [];
17+
// when
18+
const screen = await render(<template><Badges @badges={{badges}} @acquiredBadges={{acquiredBadges}} /></template>);
19+
// then
20+
const badgeImages = screen.getAllByRole('img');
21+
assert.strictEqual(badgeImages.length, 2);
22+
assert.strictEqual(badgeImages[0].getAttribute('src'), 'img1.svg');
23+
assert.strictEqual(badgeImages[0].getAttribute('alt'), 'alt-img1');
24+
25+
assert.strictEqual(badgeImages[1].getAttribute('src'), 'img2.svg');
26+
assert.strictEqual(badgeImages[1].getAttribute('alt'), 'alt-img2');
27+
});
28+
29+
test('should render acquired in the title', async function (assert) {
30+
// given
31+
const badges = [{ title: 'badge1', imageUrl: 'img1', altMessage: 'alt-img1' }];
32+
const acquiredBadges = [];
33+
34+
// when
35+
const screen = await render(<template><Badges @badges={{badges}} @acquiredBadges={{acquiredBadges}} /></template>);
36+
37+
// then
38+
assert.ok(screen.getByText(/badge1 - Non acquis/i));
39+
});
40+
test('should render unacquired in the title', async function (assert) {
41+
// given
42+
const badges = [{ title: 'badge1', imageUrl: 'img1', altMessage: 'alt-img1' }];
43+
const acquiredBadges = [badges[0]];
44+
45+
// when
46+
const screen = await render(<template><Badges @badges={{badges}} @acquiredBadges={{acquiredBadges}} /></template>);
47+
48+
// then
49+
assert.ok(screen.getByText(/badge1 - Acquis/i));
50+
});
51+
});

Diff for: orga/tests/integration/components/campaign/badges-test.js

-37
This file was deleted.

Diff for: orga/translations/en.json

+4
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,10 @@
634634
},
635635
"result": "Result",
636636
"table": {
637+
"badge-tooltip": {
638+
"acquired": "Acquired",
639+
"unacquired": "Unacquired"
640+
},
637641
"caption": "This table lists the participants who have shared their results. For each participant, it shows their surname, first name and elements of results.",
638642
"column": {
639643
"ariaSharedResultCount": "Number of sent results",

Diff for: orga/translations/fr.json

+4
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,10 @@
640640
},
641641
"result": "Résultat",
642642
"table": {
643+
"badge-tooltip": {
644+
"acquired": "Acquis",
645+
"unacquired": "Non acquis"
646+
},
643647
"caption": "Ce tableau comporte la liste des participants ayant partagé leurs résultats. Il indique pour chaque participant leur nom, prénom et des éléments de résultats.",
644648
"column": {
645649
"ariaSharedResultCount": "Nombre de résultats envoyés",

Diff for: orga/translations/nl.json

+4
Original file line numberDiff line numberDiff line change
@@ -598,6 +598,10 @@
598598
},
599599
"result": "Resultaat",
600600
"table": {
601+
"badge-tooltip": {
602+
"acquired": "Verworven",
603+
"unacquired": "Niet verworven"
604+
},
601605
"caption": "In deze tabel staan de deelnemers die hun resultaten hebben gedeeld. Voor elke deelnemer worden de achternaam, voornaam en resultaten weergegeven.",
602606
"column": {
603607
"ariaSharedResultCount": "Aantal verzonden resultaten",

0 commit comments

Comments
 (0)