Skip to content

Commit

Permalink
[FEATURE] Utiliser PixTable dans les tableaux de session et de certif…
Browse files Browse the repository at this point in the history
…ication sur Pix Admin (PIX-16809).

 #11558
  • Loading branch information
pix-service-auto-merge authored Mar 5, 2025
2 parents 719e6b4 + 8227bcb commit 81a28fd
Show file tree
Hide file tree
Showing 18 changed files with 513 additions and 296 deletions.
39 changes: 26 additions & 13 deletions admin/app/components/sessions/certifications/header.gjs
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
import PixButton from '@1024pix/pix-ui/components/pix-button';
import PixTag from '@1024pix/pix-ui/components/pix-tag';
import PixTooltip from '@1024pix/pix-ui/components/pix-tooltip';
import { action } from '@ember/object';
import { service } from '@ember/service';
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { t } from 'ember-intl';
import { not } from 'ember-truth-helpers';

import ConfirmPopup from '../../confirm-popup';

export default class CertificationsHeader extends Component {
@service accessControl;
@service intl;

@tracked isModalDisplayed = false;
@tracked confirmMessage = null;
Expand All @@ -26,8 +29,8 @@ export default class CertificationsHeader extends Component {
@action
displayConfirmationModal() {
this.confirmMessage = this.args.session.isPublished
? 'Souhaitez-vous dépublier la session ?'
: 'Souhaitez-vous publier la session ?';
? this.intl.t('pages.certifications.modal-confirmation.unpublish-session-information')
: this.intl.t('pages.certifications.modal-confirmation.publish-session-information');
this.isModalDisplayed = true;
}

Expand All @@ -47,30 +50,40 @@ export default class CertificationsHeader extends Component {
}

<template>
<header class="certification-list-page__header">
<h2>Certifications</h2>
{{#if this.accessControl.hasAccessToCertificationActionsScope}}
<div class="btn-group" role="group">
<header>
<h2>{{t "pages.certifications.title"}}</h2>

<div class="certification-list-page__header">
{{#if @session.isPublished}}
<PixTag @color="success">
{{t "pages.certifications.session-state.published"}}
</PixTag>
{{else}}
<PixTag @color="neutral">
{{t "pages.certifications.session-state.not-published"}}
</PixTag>
{{/if}}

{{#if this.accessControl.hasAccessToCertificationActionsScope}}
{{#if @session.isPublished}}
<PixButton @triggerAction={{this.displayConfirmationModal}}>Dépublier la session</PixButton>
<PixButton @triggerAction={{this.displayConfirmationModal}}>{{t
"pages.certifications.actions.unpublish-session"
}}</PixButton>
{{else}}
<PixTooltip @position="left" @isWide={{true}} @hide={{this.canPublish}}>
<:triggerElement>
<PixButton @triggerAction={{this.displayConfirmationModal}} @isDisabled={{not this.canPublish}}>
Publier la session
{{t "pages.certifications.actions.publish-session.label"}}
</PixButton>
</:triggerElement>
<:tooltip>
Vous ne pouvez pas publier la session tant qu'elle n'est pas finalisée ou qu'il reste des certifications
en erreur.
{{t "pages.certifications.actions.publish-session.warning-information"}}
</:tooltip>
</PixTooltip>
{{/if}}
</div>
{{/if}}
{{/if}}
</div>
</header>

<ConfirmPopup
@message={{this.confirmMessage}}
@confirm={{this.toggleSessionPublication}}
Expand Down
15 changes: 0 additions & 15 deletions admin/app/components/sessions/certifications/info-published.gjs

This file was deleted.

154 changes: 98 additions & 56 deletions admin/app/components/sessions/certifications/list.gjs
Original file line number Diff line number Diff line change
@@ -1,72 +1,114 @@
import PixPagination from '@1024pix/pix-ui/components/pix-pagination';
import PixTable from '@1024pix/pix-ui/components/pix-table';
import PixTableColumn from '@1024pix/pix-ui/components/pix-table-column';
import { LinkTo } from '@ember/routing';
import Component from '@glimmer/component';
import { t } from 'ember-intl';

import CertificationInfoPublished from './info-published';
import CertificationStatus from './status';

export default class CertificationsHeader extends Component {
get sortedCertificationJurySummaries() {
return this.args.juryCertificationSummaries.sortBy('numberOfCertificationIssueReportsWithRequiredAction').reverse();
}

<template>
<div class="table-admin">
<table>
<thead>
<tr>
<th class="table__column table__column--id">ID</th>
<th>Prénom</th>
<th>Nom</th>
<th>Statut</th>
<th>Signalements impactants non résolus</th>
{{#if @displayHasSeenEndTestScreenColumn}}
<th>Ecran de fin de test vu</th>
{{/if}}
<th>Autre certification</th>
<th>Score</th>
<th>Début</th>
<th>Fin</th>
<th>Publiée</th>
</tr>
</thead>

{{#if @juryCertificationSummaries}}
<tbody>
{{#each this.sortedCertificationJurySummaries as |certification|}}
<tr aria-label="Certifications de {{certification.firstName certification.LastName}}">
<td class="table__column table__column--id">
<LinkTo @route="authenticated.certifications.certification.informations" @model={{certification.id}}>
{{certification.id}}
</LinkTo>
</td>
<td>{{certification.firstName}}</td>
<td>{{certification.lastName}}</td>
<td>
<CertificationStatus @record={{certification}} />
</td>
<td
class="certification-list-page__cell--important"
>{{certification.numberOfCertificationIssueReportsWithRequiredActionLabel}}</td>
{{#if @displayHasSeenEndTestScreenColumn}}
<td class="certification-list-page__cell--important">{{certification.hasSeenEndTestScreenLabel}}</td>
{{/if}}
<td>{{certification.complementaryCertificationTakenLabel}}</td>
<td>{{certification.pixScore}}</td>
<td>{{certification.creationDate}}</td>
<td>{{certification.completionDate}}</td>
<td>
<CertificationInfoPublished @record={{certification}} />
</td>
</tr>
{{/each}}
</tbody>
{{/if}}
</table>
</div>

{{#if @juryCertificationSummaries}}
<PixTable
@variant="primary"
@data={{this.sortedCertificationJurySummaries}}
@caption={{t "pages.certifications.table.caption"}}
>
<:columns as |certification context|>
<PixTableColumn @context={{context}}>
<:header>
{{t "pages.certifications.table.headers.id"}}
</:header>
<:cell>
<LinkTo @route="authenticated.certifications.certification.informations" @model={{certification.id}}>
{{certification.id}}
</LinkTo>
</:cell>
</PixTableColumn>
<PixTableColumn @context={{context}}>
<:header>
{{t "pages.certifications.table.headers.first-name"}}
</:header>
<:cell>
{{certification.firstName}}
</:cell>
</PixTableColumn>
<PixTableColumn @context={{context}}>
<:header>
{{t "pages.certifications.table.headers.last-name"}}
</:header>
<:cell>
{{certification.lastName}}
</:cell>
</PixTableColumn>
<PixTableColumn @context={{context}}>
<:header>
{{t "pages.certifications.table.headers.status"}}
</:header>
<:cell>
<CertificationStatus @record={{certification}} />
</:cell>
</PixTableColumn>
<PixTableColumn @context={{context}}>
<:header>
{{t "pages.certifications.table.headers.unresolved-reports"}}
</:header>
<:cell>
{{certification.numberOfCertificationIssueReportsWithRequiredActionLabel}}
</:cell>
</PixTableColumn>
{{#if @displayHasSeenEndTestScreenColumn}}
<PixTableColumn @context={{context}}>
<:header>
Ecran de fin de test vu
</:header>
<:cell>
{{certification.hasSeenEndTestScreenLabel}}
</:cell>
</PixTableColumn>
{{/if}}
<PixTableColumn @context={{context}}>
<:header>
{{t "pages.certifications.table.headers.other-certification"}}
</:header>
<:cell>
{{certification.complementaryCertificationTakenLabel}}
</:cell>
</PixTableColumn>
<PixTableColumn @context={{context}}>
<:header>
{{t "pages.certifications.table.headers.pix-score"}}
</:header>
<:cell>
{{certification.pixScore}}
</:cell>
</PixTableColumn>
<PixTableColumn @context={{context}}>
<:header>
{{t "pages.certifications.table.headers.started-certification-date"}}
</:header>
<:cell>
{{certification.creationDate}}
</:cell>
</PixTableColumn>
<PixTableColumn @context={{context}}>
<:header>
{{t "pages.certifications.table.headers.finished-certification-date"}}
</:header>
<:cell>
{{certification.completionDate}}
</:cell>
</PixTableColumn>
</:columns>
</PixTable>

<PixPagination @pagination={{@pagination}} />
{{else}}
<p class="certification-list-page__empty">{{t "common.tables.empty-result"}}</p>
{{/if}}
</template>
}
Loading

0 comments on commit 81a28fd

Please sign in to comment.