Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rendu dynamique du formulaire de message #615

Merged
merged 2 commits into from
Apr 13, 2022
Merged

Conversation

christophehenry
Copy link
Collaborator

🌮 Objectif

Voici ma proposition pour le rendu dynamique du formulaire de message.

🔍 Implémentation

  • Controlleur en Stimulus + ES6 (pas d'implémentation IE11)
  • Requêtes avec fetch
  • Le rendu HTML du message est produit par le backend et ajouté en JS.

Comment on lines 28 to 43
let response = await fetch(dest.toString(), {
method: this.formTarget.method.toUpperCase(),
body: formData,
}).finally(() => {
this.onGoingRequestValue = false;
});

if (response.ok) {
let html = await response.text();
if (this.hasEmptyElementTarget) {
this.emptyElementTarget.remove();
}

this.messagesListTarget.insertAdjacentHTML("beforeend", html);
this.formTarget.reset();
}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Qu'est-ce qu'on fait si jamais la requête échoue pour une raison ou une autre ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Prévenir l'usager et ne pas lui supprimer son message.
(Et croiser les doigts très fort ? Bon OK ce n'est pas une bonne stratégie…)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On le prévient comment ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Une erreur s'est produite, votre message n'a pas été envoyé." ? Avec un petit ⚠️ qui va bien pour attirer l'attention et un petit "Vous pouvez essayer à nouveau maintenant" ?

Copy link
Collaborator Author

@christophehenry christophehenry Apr 12, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah donc faut chercher une bilbio qui fait des popups 👀
(Moi je code pas ça à la main 😱)


(function () {
// This JS code won't be executed on IE11, so we can write ES6 code
class MessageForm extends Stimulus.Controller {
Copy link
Collaborator Author

@christophehenry christophehenry Apr 11, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est sympa, quand-même, ES6+. Ça me gonfle vraiment qu'on s'oblige à supporter un navigateur que même son éditeur ne supporte plus.

@christophehenry christophehenry changed the title Rendu dynamic du formulaire de message Rendu dynamique du formulaire de message Apr 11, 2022
@@ -372,6 +372,10 @@ class ReadonlyRequestView(LateStageRequestView, FormView):
template_name = "view_organisation_request.html"
form_class = RequestMessageForm

@property
def step(self) -> HabilitationFormStep:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LateStageRequestView ne requiert plus de définir un step. Tu n'en as besoin que si tu implémentes HabilitationStepMixin, et tu n'as besoin de ce mixin que si la page affiche le fil d'Ariane (ce qui n'est pas le cas).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Toujours opé sur la suppression de code 🔥)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mais ça fait des warnings dans mon IDE, c'est trop nul 😢

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bé on a le même et le mien ne me dit rien, comment se fait-il ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mais surtout il n'a aucune raison d'exiger ce step ici, on n'implémente rien qui le nécessite. Il faut peut-être reconstruire un index d'héritage ou chépaquoi.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah en fait il faut aussi enlever la définition de step sur LateStageRequestView. Même tarif que pour le reste : c'est inutile si pas d'implémentation de HabilitationStepMixin.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Si besoin je fais une PR à part pour remettre à plat les soucis d'héritage, en effet il y a quelques views qui devraient implémenter le stepmixin et qui ne le font pas, de fait ça marche "par hasard". En tout cas je ne veux pas qu'on se traîne des définitions de step et des lignes de code inutile pour des vues qui n'affichent pas de fil d'Ariane.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@christophehenry christophehenry force-pushed the che/js-message branch 2 times, most recently from 2b967bf to 7ba6b27 Compare April 12, 2022 09:47
@property
def step(self) -> HabilitationFormStep:
return HabilitationFormStep.SUMMARY

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tut-tuuut J'ai enlevé, tu coup 👍

@christophehenry
Copy link
Collaborator Author

Est-ce qu'il y a besoin d'écrire plus de tests pour ça, finalement ? 🤔

@christophehenry christophehenry added the Plz review 🪂 Cette PR est prête pour une revue label Apr 12, 2022
@christophehenry christophehenry merged commit 2e83880 into main Apr 13, 2022
@christophehenry christophehenry deleted the che/js-message branch April 13, 2022 09:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Plz review 🪂 Cette PR est prête pour une revue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants