From 873f68df5bb942bed4825762571d21640ee8c035 Mon Sep 17 00:00:00 2001 From: Faraopix Date: Wed, 5 Feb 2025 14:25:57 +0100 Subject: [PATCH] feat(admin): add target-profile board button link --- .../target-profiles/target-profile.gjs | 45 ++++++++++++------- admin/config/environment.js | 5 ++- .../target-profiles/target-profile-test.gjs | 13 ++++++ 3 files changed, 45 insertions(+), 18 deletions(-) diff --git a/admin/app/components/target-profiles/target-profile.gjs b/admin/app/components/target-profiles/target-profile.gjs index 76f23de5b6f..5150401c4a7 100644 --- a/admin/app/components/target-profiles/target-profile.gjs +++ b/admin/app/components/target-profiles/target-profile.gjs @@ -9,6 +9,7 @@ import Component from '@glimmer/component'; import { tracked } from '@glimmer/tracking'; import { t } from 'ember-intl'; import { pageTitle } from 'ember-page-title'; +import ENV from 'pix-admin/config/environment'; import formatDate from '../../helpers/format-date'; import ConfirmPopup from '../confirm-popup'; @@ -51,6 +52,11 @@ export default class TargetProfile extends Component { return Boolean(this.args.model.hasLinkedAutonomousCourse); } + get externalURL() { + const urlDashboardPrefix = ENV.APP.TARGETPROFILE_DASHBOARD_URL; + return urlDashboardPrefix && `${urlDashboardPrefix}?id=${this.args.model.id}`; + } + displayBooleanState = (bool) => { const yes = this.intl.t('common.words.yes'); const no = this.intl.t('common.words.no'); @@ -235,21 +241,26 @@ export default class TargetProfile extends Component { @route="authenticated.target-profiles.edit" @model={{@model.id}} @size="small" - @variant="secondary" + @variant="primary" > {{t "common.actions.edit"}} -
- {{#unless @model.isSimplifiedAccess}} - - Marquer comme accès simplifié - - {{/unless}} + {{t + "pages.target-profiles.copy.button.label" + }} + + + +
+ Tableau de bord + Télécharger le profil cible (JSON) @@ -259,14 +270,14 @@ export default class TargetProfile extends Component { Télécharger le profil cible (PDF) - {{t - "pages.target-profiles.copy.button.label" - }} - - +
+ {{#unless @model.isSimplifiedAccess}} + + Marquer comme accès simplifié + + {{/unless}} {{#unless @model.outdated}} -
Marquer comme obsolète diff --git a/admin/config/environment.js b/admin/config/environment.js index 56facdc7e88..88dd7396ac7 100644 --- a/admin/config/environment.js +++ b/admin/config/environment.js @@ -73,6 +73,7 @@ module.exports = function (environment) { minValue: 1, }), ORGANIZATION_DASHBOARD_URL: process.env.ORGANIZATION_DASHBOARD_URL, + TARGETPROFILE_DASHBOARD_URL: process.env.TARGETPROFILE_DASHBOARD_URL, CERTIFICATION_CENTER_DASHBOARD_URL: process.env.CERTIFICATION_CENTER_DASHBOARD_URL, USER_DASHBOARD_URL: process.env.USER_DASHBOARD_URL, MAX_LEVEL: 8, @@ -124,6 +125,8 @@ module.exports = function (environment) { // ENV.APP.LOG_TRANSITIONS = true; // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; // ENV.APP.LOG_VIEW_LOOKUPS = true; + ENV.APP.TARGETPROFILE_DASHBOARD_URL = + 'https://metabase.pix.fr/dashboard/1456-recherche-infos-profil-cible-donnees-froides'; if (analyticsEnabled) { ENV.matomo.url = process.env.WEB_ANALYTICS_URL; ENV.matomo.debug = true; @@ -133,12 +136,12 @@ module.exports = function (environment) { if (environment === 'test') { // Testem prefers this... ENV.locationType = 'none'; - ENV.APP.API_HOST = 'http://localhost:3000'; // keep test console output quieter ENV.APP.LOG_ACTIVE_GENERATION = false; ENV.APP.LOG_VIEW_LOOKUPS = false; + ENV.APP.TARGETPROFILE_DASHBOARD_URL = 'https://metabase.pix.fr/dashboard'; ENV.APP.rootElement = '#ember-testing'; ENV.APP.autoboot = false; diff --git a/admin/tests/integration/components/target-profiles/target-profile-test.gjs b/admin/tests/integration/components/target-profiles/target-profile-test.gjs index a54cc5e7174..8c3adf4abdf 100644 --- a/admin/tests/integration/components/target-profiles/target-profile-test.gjs +++ b/admin/tests/integration/components/target-profiles/target-profile-test.gjs @@ -1,6 +1,7 @@ import { render } from '@1024pix/ember-testing-library'; import { t } from 'ember-intl/test-support'; import TargetProfile from 'pix-admin/components/target-profiles/target-profile'; +import ENV from 'pix-admin/config/environment'; import { module, test } from 'qunit'; import setupIntlRenderingTest from '../../../helpers/setup-intl-rendering'; @@ -41,6 +42,18 @@ module('Integration | Component | TargetProfile', function (hooks) { assert.ok(_findByListItemText(screen, `${t('pages.target-profiles.resettable-checkbox.label')} : Non`)); assert.ok(_findByListItemText(screen, `${t('pages.target-profiles.tubes-count')} : ${model.tubesCount}`)); }); + test('it should display link to a metabase dashboard', async function (assert) { + //given + const model = { ...targetProfileSampleData }; + + // when + const screen = await render(); + + //then + const buttonLink = screen.getByRole('link', { name: 'Tableau de bord' }); + assert.ok(buttonLink); + assert.strictEqual(buttonLink.getAttribute('href'), `${ENV.APP.TARGETPROFILE_DASHBOARD_URL}?id=${model.id}`); + }); }); module('when no campaign is linked', function () {