Skip to content

Commit

Permalink
feat(client): request message templates (#507)
Browse files Browse the repository at this point in the history
  • Loading branch information
avine authored Apr 8, 2024
1 parent 0ce4e25 commit 8eace60
Show file tree
Hide file tree
Showing 9 changed files with 58 additions and 48 deletions.
43 changes: 22 additions & 21 deletions client/src/app/request-feedback/request-feedback.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -51,35 +51,36 @@ <h1 class="gbl-page-title">

<mat-form-field appearance="outline" class="gbl-form-field">
<mat-label i18n="@@Feedback.Message">Message</mat-label>

<textarea
#message
[formControl]="form.controls.message"
[maxlength]="messageMaxLength"
matInput
rows="4"
></textarea>
@if (hasRequestTemplateFeature) {
<mat-hint align="start">
<a [matMenuTriggerFor]="useTemplate" class="gbl-link gbl-link--no-underline">
<mat-icon class="align-text-bottom" style="font-size: 1.125rem">edit_note</mat-icon>
<ng-container i18n="@@Component.RequestFeedback.UseTemplate">S'inspirer d'un modèle</ng-container>
</a>

<mat-menu #useTemplate="matMenu" xPosition="before" yPosition="above">
<button
mat-menu-item
class="italic opacity-50"
i18n="@@Component.RequestFeedback.NoTemplate"
(click)="applyTemplate('')"
>
Aucun modèle
</button>
@for (tmpl of requestTemplates; track tmpl; let index = $index) {
<button mat-menu-item (click)="applyTemplate(tmpl.content)">{{ tmpl.title }}</button>
}
</mat-menu>
</mat-hint>
}
<mat-hint align="start">
<a [matMenuTriggerFor]="useTemplate" class="gbl-link gbl-link--no-underline">
<mat-icon class="align-text-bottom" style="font-size: 1.125rem">edit_note</mat-icon>
<ng-container i18n="@@Component.RequestFeedback.UseTemplate">S'inspirer d'un modèle</ng-container>
</a>

<mat-menu #useTemplate="matMenu" xPosition="before" yPosition="above">
<button
mat-menu-item
class="italic opacity-50"
i18n="@@Component.RequestFeedback.NoTemplate"
(click)="applyTemplate('')"
>
Aucun modèle
</button>
@for (tmpl of requestTemplates; track tmpl; let index = $index) {
<button mat-menu-item (click)="applyTemplate(tmpl.content)">{{ tmpl.title }}</button>
}
</mat-menu>
</mat-hint>

<mat-hint align="end">{{ message.value.length }} / {{ messageMaxLength }}</mat-hint>
</mat-form-field>

Expand Down
3 changes: 0 additions & 3 deletions client/src/app/request-feedback/request-feedback.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import { MatTooltipModule } from '@angular/material/tooltip';
import { ActivatedRoute, Router } from '@angular/router';
import { concatMap, from, toArray } from 'rxjs';
import { environment } from '../../environments/environment';
import { AuthService } from '../shared/auth';
import { MultiAutocompleteEmailComponent } from '../shared/autocomplete-email';
import { ConfirmBeforeSubmitDirective } from '../shared/dialogs/confirm-before-submit';
Expand Down Expand Up @@ -62,8 +61,6 @@ export class RequestFeedbackComponent {

protected messageMaxLength = SMALL_MAX_LENGTH;

protected hasRequestTemplateFeature = environment.featureFlipping.requestTemplate;

private readonly forbiddenValuesValidator = forbiddenValuesValidatorFactory([inject(AuthService).userEmail()]);

protected form = this.formBuilder.group({
Expand Down
20 changes: 16 additions & 4 deletions client/src/app/request-feedback/request-feedback.config.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
export const REQUEST_TEMPLATES = [
{
title: $localize`:@@Component.RequestFeedback.TemplateAssignmentTitle:Fin de mission`,
content: $localize`:@@Component.RequestFeedback.TemplateAssignmentContent:Bonjour,\nComme tu sais, ma mission se termine bientôt et j'aimerai avoir ton feedback sur ma prestation.\nMerci par avance.`,
title: $localize`:@@Component.RequestFeedback.TemplateStartingAtZenikaTitle:Débuts à Zenika`,
content: $localize`:@@Component.RequestFeedback.TemplateStartingAtZenikaContent:Bonjour,\nSi tu as quelques minutes, j'aimerais avoir ton feedback sur mes débuts à Zenika. Cela peut être quelque chose de positif que tu as remarqué ou quelque chose que je pourrais améliorer.\nMerci par avance.`,
},
{
title: $localize`:@@Component.RequestFeedback.TemplateEvaluationTitle:Entretien annnuel`,
content: $localize`:@@Component.RequestFeedback.TemplateEvaluationContent:Bonjour,\nJ'ai bientôt mon entretien annuel et afin de le préparer j'aimerais avoir ton feedback sur ce que je fais bien et ce que je pourrais améliorer.\nMerci par avance.`,
title: $localize`:@@Component.RequestFeedback.TemplateStartOfAssignmentTitle:Début de mission`,
content: $localize`:@@Component.RequestFeedback.TemplateStartOfAssignmentContent:Bonjour,\nCela fait un moment que j'ai commencé ma mission et j'aimerais avoir ton feedback sur ce que je fais bien et ce que je pourrais améliorer.\nMerci par avance.`,
},
{
title: $localize`:@@Component.RequestFeedback.TemplateEndOfAssignmentTitle:Fin de mission`,
content: $localize`:@@Component.RequestFeedback.TemplateEndOfAssignmentContent:Bonjour,\nComme tu le sais, ma mission se termine bientôt et j'aimerais avoir ton feedback sur ma prestation, ce que j'ai réussi et ce que je pourrais améliorer.\nMerci par avance.`,
},
{
title: $localize`:@@Component.RequestFeedback.TemplateAnnualReviewTitle:Entretien annuel`,
content: $localize`:@@Component.RequestFeedback.TemplateAnnualReviewContent:Bonjour,\nEn vue de mon entretien annuel qui a lieu bientôt, j'aimerais avoir ton feedback sur ce que je fais bien et ce que je pourrais améliorer.\nMerci par avance.`,
},
{
title: $localize`:@@Component.RequestFeedback.TemplateConferenceTitle:Conférence`,
content: $localize`:@@Component.RequestFeedback.TemplateConferenceContent:Bonjour,\nRécemment, j'ai donné une conférence à laquelle tu as assisté et j'aimerais avoir ton feedback sur ce qui a bien fonctionné et ce que je pourrais améliorer.\nMerci par avance.`,
},
] as const;
3 changes: 0 additions & 3 deletions client/src/environments/environment.dev-remote.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,4 @@ export const environment = {
firebaseOptions,
apiBaseUrl: 'https://server.dev.feedzback.znk.io',
allowedEmailDomains: ['zenika.com', 'zenika.ch'],
featureFlipping: {
requestTemplate: true,
},
};
3 changes: 0 additions & 3 deletions client/src/environments/environment.development.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,4 @@ export const environment = {
firebaseOptions,
apiBaseUrl: 'http://localhost:3000',
allowedEmailDomains: ['zenika.com', 'zenika.ch'],
featureFlipping: {
requestTemplate: true,
},
};
3 changes: 0 additions & 3 deletions client/src/environments/environment.staging.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,4 @@ export const environment = {
firebaseOptions,
apiBaseUrl: 'https://server.staging.feedzback.znk.io',
allowedEmailDomains: ['zenika.com', 'zenika.ch'],
featureFlipping: {
requestTemplate: true,
},
};
3 changes: 0 additions & 3 deletions client/src/environments/environment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,4 @@ export const environment = {
firebaseOptions,
apiBaseUrl: 'https://server.feedzback.znk.io',
allowedEmailDomains: ['zenika.com', 'zenika.ch'],
featureFlipping: {
requestTemplate: false,
},
};
14 changes: 10 additions & 4 deletions client/src/locales/messages.en.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,16 @@
"Component.RequestFeedback.ShareFeedbackMessageContent": "By sharing the feedZback with your manager, you'll be able to discuss it together and make the most of its content.",
"Component.RequestFeedback.ShareFeedbackMessageTitle": "Why is sharing feedZback recommended?",
"Component.RequestFeedback.Success": "Your request has been sent to:",
"Component.RequestFeedback.TemplateAssignmentContent": "Hello,\nAs you know, my assignment is coming to an end soon and I would like to have your feedback on my performance.\nThank you in advance.",
"Component.RequestFeedback.TemplateAssignmentTitle": "End of assignment",
"Component.RequestFeedback.TemplateEvaluationContent": "Hello,\nI'm about to have my annual performance review and to prepare for it I'd like to have your feedback on what I'm doing well and what I could improve.\nThanks in advance.",
"Component.RequestFeedback.TemplateEvaluationTitle": "Annual evaluation",
"Component.RequestFeedback.TemplateAnnualReviewContent": "Hello,\nWith my annual review coming up, I'd like your feedback on what I'm doing well and what I could do better.\nThank you in advance.",
"Component.RequestFeedback.TemplateAnnualReviewTitle": "Annual review",
"Component.RequestFeedback.TemplateConferenceContent": "Hello,\nI recently gave a talk which you attended and I'd like your feedback on what went well and what I could do better.\nThank you in advance.",
"Component.RequestFeedback.TemplateConferenceTitle": "Conference",
"Component.RequestFeedback.TemplateEndOfAssignmentContent": "Hello,\nAs you know, my assignment is coming to an end soon and I'd like your feedback on what I've done well and what I could do better.\nThank you in advance.",
"Component.RequestFeedback.TemplateEndOfAssignmentTitle": "End of assignment",
"Component.RequestFeedback.TemplateStartOfAssignmentContent": "Hello,\nIt's been a while since I started my assignment and I'd like your feedback on what I'm doing well and what I could do better.\nThank you in advance.",
"Component.RequestFeedback.TemplateStartOfAssignmentTitle": "Start of assignment",
"Component.RequestFeedback.TemplateStartingAtZenikaContent": "Hello,\nIf you have a few minutes, I'd like your feedback on my start at Zenika. It could be something positive you've noticed or something I could do better.\nThank you in advance.",
"Component.RequestFeedback.TemplateStartingAtZenikaTitle": "Starting at Zenika",
"Component.RequestFeedback.UseTemplate": "Use a template",
"Component.RequestFeedbackSuccess.RequestAnother": "Request another feedZback",
"Component.RequestFeedbackSuccess.Title": "FeedZback requested from:",
Expand Down
14 changes: 10 additions & 4 deletions client/src/locales/messages.fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,16 @@
"Component.RequestFeedback.ShareFeedbackMessageContent": "En partageant le feedZback avec votre manager, vous pourrez échanger ensemble et ainsi bénéficier au mieux de son contenu.",
"Component.RequestFeedback.ShareFeedbackMessageTitle": "Pourquoi le partage du feedZback est recommandé ?",
"Component.RequestFeedback.Success": "Votre demande a bien été envoyée à :",
"Component.RequestFeedback.TemplateAssignmentContent": "Bonjour,\nComme tu sais, ma mission se termine bientôt et j'aimerai avoir ton feedback sur ma prestation.\nMerci par avance.",
"Component.RequestFeedback.TemplateAssignmentTitle": "Fin de mission",
"Component.RequestFeedback.TemplateEvaluationContent": "Bonjour,\nJ'ai bientôt mon entretien annuel et afin de le préparer j'aimerais avoir ton feedback sur ce que je fais bien et ce que je pourrais améliorer.\nMerci par avance.",
"Component.RequestFeedback.TemplateEvaluationTitle": "Entretien annnuel",
"Component.RequestFeedback.TemplateAnnualReviewContent": "Bonjour,\nEn vue de mon entretien annuel qui a lieu bientôt, j'aimerais avoir ton feedback sur ce que je fais bien et ce que je pourrais améliorer.\nMerci par avance.",
"Component.RequestFeedback.TemplateAnnualReviewTitle": "Entretien annuel",
"Component.RequestFeedback.TemplateConferenceContent": "Bonjour,\nRécemment, j'ai donné une conférence à laquelle tu as assisté et j'aimerais avoir ton feedback sur ce qui a bien fonctionné et ce que je pourrais améliorer.\nMerci par avance.",
"Component.RequestFeedback.TemplateConferenceTitle": "Conférence",
"Component.RequestFeedback.TemplateEndOfAssignmentContent": "Bonjour,\nComme tu le sais, ma mission se termine bientôt et j'aimerais avoir ton feedback sur ma prestation, ce que j'ai réussi et ce que je pourrais améliorer.\nMerci par avance.",
"Component.RequestFeedback.TemplateEndOfAssignmentTitle": "Fin de mission",
"Component.RequestFeedback.TemplateStartOfAssignmentContent": "Bonjour,\nCela fait un moment que j'ai commencé ma mission et j'aimerais avoir ton feedback sur ce que je fais bien et ce que je pourrais améliorer.\nMerci par avance.",
"Component.RequestFeedback.TemplateStartOfAssignmentTitle": "Début de mission",
"Component.RequestFeedback.TemplateStartingAtZenikaContent": "Bonjour,\nSi tu as quelques minutes, j'aimerais avoir ton feedback sur mes débuts à Zenika. Cela peut être quelque chose de positif que tu as remarqué ou quelque chose que je pourrais améliorer.\nMerci par avance.",
"Component.RequestFeedback.TemplateStartingAtZenikaTitle": "Débuts à Zenika",
"Component.RequestFeedback.UseTemplate": "S'inspirer d'un modèle",
"Component.RequestFeedbackSuccess.RequestAnother": "Demander un autre feedZback",
"Component.RequestFeedbackSuccess.Title": "FeedZback demandé à :",
Expand Down

0 comments on commit 8eace60

Please sign in to comment.