From dd6ebfd8d0d6217a081e75069425a8d0d0e49c05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Fran=C3=A7ois?= Date: Tue, 8 Oct 2024 11:49:07 +0200 Subject: [PATCH] :art: feat(junior) show specific mission logo Co-authored-by: rouxxi Co-authored-by: Aurelie Crouillebois --- api/src/school/domain/models/Mission.js | 2 + .../repositories/mission-repository.js | 1 + .../serializers/mission-serializer.js | 1 + .../repositories/mission-repository_test.js | 81 +++++++++++++++++++ .../mission-card/completed-mission-card.gjs | 2 +- .../components/mission-card/mission-card.gjs | 64 +++++++++------ junior/app/models/mission.js | 1 + .../styles/components/mission-card/card.scss | 6 ++ .../templates/identified/missions/list.hbs | 1 + .../identified/missions/mission/index.hbs | 6 +- .../images/mission/icon/area-code-1.svg | 27 ------- .../images/mission/icon/area-code-2.svg | 17 ---- .../images/mission/icon/area-code-3.svg | 22 ----- .../images/mission/icon/area-code-4.svg | 23 ------ ...hed-icon.svg => pix-junior-logo-white.svg} | 0 15 files changed, 138 insertions(+), 116 deletions(-) delete mode 100644 junior/public/images/mission/icon/area-code-1.svg delete mode 100644 junior/public/images/mission/icon/area-code-2.svg delete mode 100644 junior/public/images/mission/icon/area-code-3.svg delete mode 100644 junior/public/images/mission/icon/area-code-4.svg rename junior/public/images/mission/icon/{finished-icon.svg => pix-junior-logo-white.svg} (100%) diff --git a/api/src/school/domain/models/Mission.js b/api/src/school/domain/models/Mission.js index 382fa089bc8..85843d74c87 100644 --- a/api/src/school/domain/models/Mission.js +++ b/api/src/school/domain/models/Mission.js @@ -4,6 +4,7 @@ class Mission { constructor({ id, name, + cardImageUrl, competenceId, competenceName, thematicId, @@ -19,6 +20,7 @@ class Mission { } = {}) { this.id = id; this.name = name; + this.cardImageUrl = cardImageUrl; this.competenceId = competenceId; this.competenceName = competenceName; this.thematicId = thematicId; diff --git a/api/src/school/infrastructure/repositories/mission-repository.js b/api/src/school/infrastructure/repositories/mission-repository.js index 525de2705ad..e3a17ccdec1 100644 --- a/api/src/school/infrastructure/repositories/mission-repository.js +++ b/api/src/school/infrastructure/repositories/mission-repository.js @@ -15,6 +15,7 @@ function _toDomain(data, locale) { return new Mission({ id: data.id, name: translatedName, + cardImageUrl: data.cardImageUrl, competenceId: data.competenceId, thematicId: data.thematicId, learningObjectives: translatedLearningObjectives, diff --git a/api/src/school/infrastructure/serializers/mission-serializer.js b/api/src/school/infrastructure/serializers/mission-serializer.js index 9b552e9900c..55c78e098fd 100644 --- a/api/src/school/infrastructure/serializers/mission-serializer.js +++ b/api/src/school/infrastructure/serializers/mission-serializer.js @@ -4,6 +4,7 @@ const serialize = function (missions) { return new Serializer('missions', { attributes: [ 'name', + 'cardImageUrl', 'areaCode', 'validatedObjectives', 'learningObjectives', diff --git a/api/tests/school/integration/infrastructure/repositories/mission-repository_test.js b/api/tests/school/integration/infrastructure/repositories/mission-repository_test.js index 73fa48368b8..5458d88ab8c 100644 --- a/api/tests/school/integration/infrastructure/repositories/mission-repository_test.js +++ b/api/tests/school/integration/infrastructure/repositories/mission-repository_test.js @@ -75,4 +75,85 @@ describe('Integration | Repository | mission-repository', function () { }); }); }); + + describe('#findAllActiveMissions', function () { + context('when there are active missions', function () { + it('should return all active mission', async function () { + // given + const expectedMission = new Mission({ + id: 1, + name: 'nameThemaFR1', + competenceId: 'competenceId', + thematicId: 'thematicId', + cardImageUrl: 'super-url', + learningObjectives: 'learningObjectivesi18n', + validatedObjectives: 'validatedObjectivesi18n', + introductionMediaUrl: 'http://monimage.pix.fr', + introductionMediaType: 'image', + introductionMediaAlt: "Alt à l'image", + documentationUrl: 'http://madoc.pix.fr', + content: { + steps: [ + { + name: 'step_name_1', + }, + ], + }, + }); + + mockLearningContent({ + missions: [ + { + id: 1, + status: 'VALIDATED', + name_i18n: { fr: 'nameThemaFR1' }, + competenceId: 'competenceId', + thematicId: 'thematicId', + cardImageUrl: 'super-url', + learningObjectives_i18n: { fr: 'learningObjectivesi18n' }, + validatedObjectives_i18n: { fr: 'validatedObjectivesi18n' }, + introductionMediaUrl: 'http://monimage.pix.fr', + introductionMediaType: 'image', + introductionMediaAlt: "Alt à l'image", + documentationUrl: 'http://madoc.pix.fr', + content: { + steps: [ + { + name_i18n: { fr: 'step_name_1' }, + }, + ], + }, + }, + { + id: 2, + status: 'INACTIVE', + name_i18n: { fr: 'nameThemaFR1' }, + competenceId: 'competenceId', + thematicId: 'thematicId', + cardImageUrl: 'super-url', + learningObjectives_i18n: { fr: 'learningObjectivesi18n' }, + validatedObjectives_i18n: { fr: 'validatedObjectivesi18n' }, + introductionMediaUrl: 'http://monimage.pix.fr', + introductionMediaType: 'image', + introductionMediaAlt: "Alt à l'image", + documentationUrl: 'http://madoc.pix.fr', + content: { + steps: [ + { + name_i18n: { fr: 'step_name_1' }, + }, + ], + }, + }, + ], + }); + + // when + const missions = await missionRepository.findAllActiveMissions(); + + // then + expect(missions).to.deep.equal([expectedMission]); + }); + }); + }); }); diff --git a/junior/app/components/mission-card/completed-mission-card.gjs b/junior/app/components/mission-card/completed-mission-card.gjs index 9fb309334f8..9fea78f3ef0 100644 --- a/junior/app/components/mission-card/completed-mission-card.gjs +++ b/junior/app/components/mission-card/completed-mission-card.gjs @@ -9,7 +9,7 @@ import Background from './mission-card-completed-background'; {{/if}}
- +
diff --git a/junior/app/components/mission-card/mission-card.gjs b/junior/app/components/mission-card/mission-card.gjs index dabe4c9429c..9b7ab4cc947 100644 --- a/junior/app/components/mission-card/mission-card.gjs +++ b/junior/app/components/mission-card/mission-card.gjs @@ -1,33 +1,47 @@ +import Component from '@glimmer/component'; + import MissionCardBackGround from './mission-card-background'; - +} diff --git a/junior/app/models/mission.js b/junior/app/models/mission.js index e71daf48094..0630cf5c12e 100644 --- a/junior/app/models/mission.js +++ b/junior/app/models/mission.js @@ -8,4 +8,5 @@ export default class Mission extends Model { @attr('string') introductionMediaUrl; @attr('string') introductionMediaType; @attr('string') introductionMediaAlt; + @attr('string') cardImageUrl; } diff --git a/junior/app/styles/components/mission-card/card.scss b/junior/app/styles/components/mission-card/card.scss index 84475d29acb..5622f431848 100644 --- a/junior/app/styles/components/mission-card/card.scss +++ b/junior/app/styles/components/mission-card/card.scss @@ -114,6 +114,12 @@ right: 18%; } + .mission-icon-default { + position: absolute; + top: 100px; + right: 27%; + } + .mission-icon--completed { position: absolute; top: 130px; diff --git a/junior/app/templates/identified/missions/list.hbs b/junior/app/templates/identified/missions/list.hbs index e90a82481cb..a980a4ae48a 100644 --- a/junior/app/templates/identified/missions/list.hbs +++ b/junior/app/templates/identified/missions/list.hbs @@ -27,6 +27,7 @@ @missionButtonLabel={{this.getMissionButtonLabel mission.id}} @title={{mission.name}} @areaCode={{mission.areaCode}} + @cardImageUrl={{mission.cardImageUrl}} @displayStartedIcon={{this.isMissionStarted mission.id}} /> {{/if}} diff --git a/junior/app/templates/identified/missions/mission/index.hbs b/junior/app/templates/identified/missions/mission/index.hbs index 70ba638f834..a62dc52defd 100644 --- a/junior/app/templates/identified/missions/mission/index.hbs +++ b/junior/app/templates/identified/missions/mission/index.hbs @@ -5,7 +5,11 @@
- +
{{t diff --git a/junior/public/images/mission/icon/area-code-1.svg b/junior/public/images/mission/icon/area-code-1.svg deleted file mode 100644 index 5c3acc118f8..00000000000 --- a/junior/public/images/mission/icon/area-code-1.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/junior/public/images/mission/icon/area-code-2.svg b/junior/public/images/mission/icon/area-code-2.svg deleted file mode 100644 index 81886308c4f..00000000000 --- a/junior/public/images/mission/icon/area-code-2.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/junior/public/images/mission/icon/area-code-3.svg b/junior/public/images/mission/icon/area-code-3.svg deleted file mode 100644 index a116d1c6e6e..00000000000 --- a/junior/public/images/mission/icon/area-code-3.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/junior/public/images/mission/icon/area-code-4.svg b/junior/public/images/mission/icon/area-code-4.svg deleted file mode 100644 index 65f4ac78be8..00000000000 --- a/junior/public/images/mission/icon/area-code-4.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/junior/public/images/mission/icon/finished-icon.svg b/junior/public/images/mission/icon/pix-junior-logo-white.svg similarity index 100% rename from junior/public/images/mission/icon/finished-icon.svg rename to junior/public/images/mission/icon/pix-junior-logo-white.svg