Skip to content

Latest commit

 

History

History
258 lines (199 loc) · 15.6 KB

Equipe_101.md

File metadata and controls

258 lines (199 loc) · 15.6 KB

Feedback Équipe 101

Fonctionnalités

Annuler-refaire

Critères d'acceptabilité

  • Il est possible d’annuler la dernière action réalisée.
  • La fonction d’annulation de dernière action peut être appelée un nombre illimité de fois.
  • Toutes les modifications apportés à la même sélection sont considérés comme 1 seule action.
  • Il est possible de refaire toutes les actions annulées, une à la fois, dans l’ordre inverse.
  • Une nouvelle action élimine la pile des actions annulées pouvant être refaite.
  • Annuler et Refaire sont accessible via la barre latérale.
  • Si l'action Annuler ou Refaire est indisponible, il doit être impossible de choisir respectivement l'action Annuler ou Refaire via la barre latérale.
  • Les deux options (annuler-refaire) devront être désactivées lorsqu’un outil est en cours d’utilisation.
  • Il est possible d'annuler une action avec le raccourci CTRL + Z.
  • Il est possible de refaire une action avec le raccourci CTRL + SHIFT + Z.

Autres commentaires

  • Bon travail

Outil - Pipette

Critères d'acceptabilité

  • Il est possible de sélectionner l'outil Pinceau avec la touche I.
  • La couleur saisie est celle du pixel sous le pointeur de la souris.
  • Il est possible de saisir et d’assigner la couleur d'un point à la couleur principale.
  • Il est possible de saisir et d’assigner la couleur d'un point à la couleur secondaire.
  • Le changement de la couleur principale se fait avec un clic gauche.
  • Le changement de la couleur secondaire se fait avec un clic droit.
  • Si le pointeur se retrouve hors de la surface de dessin, le cercle de prévisualisation n’est pas affiché.
  • Lorsque le pointeur se trouve près d’une frontière de la surface de dessin, les pixels hors surface n’ont pas à être dessinés.
  • Le cercle de prévisualisation est présent dans le panneau d’attributs.
  • Le cercle de prévisualisation met en évidence le pixel sous le pointeur de la souris.
  • Le cercle de prévisualisation est mis à jour lors du mouvement de la souris.

Autres commentaires

  • Bon travail

Outil - Aérosol

Critères d'acceptabilité

  • Il est possible d'utiliser l'aérosol.
  • Il est possible de sélectionner l'outil Aérosol avec la touche A.
  • Il est possible de définir le nombre d'émissions par seconde.
  • L'émission de peinture se fait à intervalle régulier.
  • Le motif de vaporisation change à chaque émission.
  • Il est possible de définir le diamètre du jet.
  • Il est possible de définir le diamètre des gouttelettes du jet.
  • Les attributs modifiables par l'utilisateur sont vérifiés avant d'être appliqués (validation).

Autres commentaires

  • Bon travail
  • Les icônes d'aerosol et pipette ont l'air désactivées. Si possible les rendre un peu plus foncées

Outil - Polygone

Critères d'acceptabilité

  • Il est possible de créer des polygones.
  • Il est possible de sélectionner l'outil Polygone avec la touche 3.
  • Un glisser-déposer permet de créer un périmètre circulaire.
  • La forme à créer est inscrite dans le périmètre.
  • La forme à créer occupe la plus grande aire possible dans le périmètre.
  • La forme est dessinée et mise à jour en temps réel.
  • Si le pointeur de la souris quite la surface de dessin, le périmètre continue d’être affiché au complet.
  • Il est possible de définir l’épaisseur du trait de contour.
  • Il est possible de choisir le type de tracé (Contour, Plein ou Plein avec contour).
  • L’intérieur d’une forme est dessiné avec la couleur principale.
  • Le contour d’une forme est dessiné avec la couleur secondaire.
  • Il est possible de définir le nombre de côtés du polygone à créer (minumum 3, maximum 12).
  • Les polygones dessinés sont réguliers et convexes.
  • Les attributs modifiables par l'utilisateur sont vérifiés avant d'être appliqués (validation).

Autres commentaires

  • Bon travail

Outil - Sélection par rectangle et ellipse

Critères d'acceptabilité

  • Il est possible de sélectionner l'outil Sélection par Rectangle avec la touche R.
  • Il est possible de forcer l'outil Sélection par Rectangle en forme carré avec la touche SHIFT.
  • Il est possible de sélectionner l'outil Sélection par Ellipse avec la touche S.
  • Il est possible de forcer l'outil Sélection Ellipse en forme de cercle avec la touche SHIFT.
  • L'utilisation de la touche d'échappement (ESC) annule la sélection en entier.
  • Il est possible de sélectionner toute la surface de dessin avec le raccourci CTRL + A.
  • Il est possible de sélectionner toute la surface de dessin avec un bouton dans la barre latérale.
  • Il est possible de sélectionner un ou plusieurs pixels avec un rectangle ou un ellipse de sélection.
  • Un rectangle ou un ellipse de sélection s’effectue avec un glisser-déposer.
  • L’affichage du rectangle et l'ellipse de sélection est en tout temps mis à jour pendant le glisser-déposer.
  • Le rectangle et l'ellipse de sélection résultent en une boîte englobante seulement à la fin du glisser-déposer.
  • La boite englobante doit être minimale, peu importe son orientation.
  • La boite englobante a 8 points de contrôle.
  • La sélection est en tout temps mise à jour pendant le glisser-déposer.
  • Un pixel est sélectionné si la sélection est en collision avec.
  • La région de pixels sélectionnée est entourée d'une boîte pointillé (Sélect. rectangle) ou d'une forme ronde pointillé (Sélect. ellipse).
  • La sélection inclut toujours les pixels de l'arrière-plan.
  • La région de sélection ne peut jamais dépasser la zone de dessin, même si la souris dépasse cette zone.

Exporter le dessin

Critères d'acceptabilité

  • Il est possible d'exporter le dessin localement via une fenêtre d'export de fichier.
  • Il est possible d'ouvrir la fenêtre d'export avec le raccourci CTRL + E.
  • Une seule fenêtre modale parmi: (sauvegarder, carrousel et exporter) peut être affichée en même temps (pas de stack non plus).
  • Les différent raccourcis ne sont pas disponibles lorsque cette fenêtre est affichée.
  • Il est possible d'exporter une image en format JPG.
  • Il est possible d'exporter une image en format PNG.
  • Il est possible d'appliquer un filtre à l'image exportée.
  • Un choix d'au moins 5 filtres sensiblement différents est offert.
  • Les différents filtres sont clairement identifiés pour leur sélection.
  • Un seul filtre est appliqué à l'image exportée.
  • Il doit être possible d'annuler le filtre appliqué en choisissant l'option Aucun filtre
  • Il est possible d'entrer un nom pour le fichier exporté.
  • Il est possible de voir une vignette de prévisualisation de l'image à exporter.
  • Un bouton de confirmation doit être présent pour exporter l'image.

Déplacement d'une sélection

Critères d'acceptabilité

  • Il est possible de déplacer une sélection avec un glisser-déposer avec le bouton gauche de la souris.
  • La sélection suite le pointeur de la souris en tout temps.
  • Le point de sélection sous le pointeur de la souris doit rester le même.
  • Il est possible de déplacer une sélection avec les touches directionnelles (flèches) du clavier.
  • La sélection est déplacée de 3 pixels dans la direction de la touche appuyée.
  • Il est possible de déplacer la sélection de manière continue si au moins une touche est maintenue appuyée pendant 500 ms.
  • La sélection est déplacée de 3 pixels dans la direction de la touche appuyée à chaque 100 ms pendant un déplacement continu.
  • Il est possible de déplacer la sélection dans plusieurs directions en même temps.
  • Toutes les modifications apportés à la même sélection sont considérés comme 1 seule action.

Sauvegarder le dessin sur serveur

Critères d'acceptabilité

  • Il est possible de sauvegarder le dessin sur un serveur via une fenêtre de sauvegarde.
  • Il est possible de sauvegarder le dessin dans le format de votre choix.
  • Il est possible d'ouvrir la fenêtre de sauvegarde avec le raccourci CTRL + S.
  • Une seule fenêtre modale parmi: (sauvegarder, ouvrir et exporter) peut être affichée en même temps (pas de stack non plus)
  • Les différent raccourcis ne sont pas disponibles lorsque cette fenêtre est affichée.
  • Il est possible d'associer un nom au dessin à sauvegarder.
  • Il est possible d'associer zéro ou plusieurs étiquettes au dessin.
  • Il est possible d'enlever les étiquettes si elles sont choisies dans la fenêtre.
  • Il est possible de sauvegarder des dessins avec le même nom et avec les mêmes étiquettes (cette condition simultanément ou non) dans le serveur.
  • Les règles de validation pour les étiquettes sont clairement présentées dans l'interface.
  • Des vérifications (client ET serveur) sont présentes pour la sauvegarde. Vérification minimale: nom non vide et étiquettes valides
  • S'il est impossible de sauvegarder le dessin, l'utilisateur se fait mettre au courant avec un message pertinent (message d'erreur).
  • Un bouton de confirmation doit être présent pour sauvegarder le dessin.
  • La modale de sauvegarde (ou du moins le bouton de confirmation) est mise non disponbile lorsque le dessin est en pleine sauvegarde.

Autres commentaires

  • Toutes les méthodes publiques doivent être explicitement testées (ex: generatePreviewData, show )

Carrousel de dessins

Critères d'acceptabilité

  • Il est possible de voir les dessins sauvegardés sur un serveur via le carrousel de dessins.
  • Il est possible d'ouvrir la fenêtre du carrousel avec le raccourci CTRL + G.
  • Le carrousel doit présenter 3 fiches à la fois.
  • Le carrousel doit gérer les cas oũ moins de 3 dessins sont disponibles.
  • Il est possible de faire défiler le carrousel en boucle avec les touches du clavier.
  • Il est possible de faire défiler le carrousel en boucle avec des boutons présents dans l'interface.
  • Une seule fenêtre modale parmi: (sauvegarder, carrousel et exporter) peut être affichée en même temps (pas de stack non plus).
  • Les différent raccourcis ne sont pas disponibles lorsque cette fenêtre est affichée.
  • Chaque fiche de dessin comporte un nom, des étiquettes (s'il y en a) et un aperçu du dessin en format réduit.
  • Le nom, les étiquettes et l'aperçu doivent être ceux qui ont été définis lorsque l'utilisateur les a sauvegardé.
  • Lors des requêtes pour charger les dessins dans la liste, un élément de chargement doit indiquer que la requête est en cours.
  • La liste doit être chargeable sans délai excessif.
  • Il est possible de filtrer les dessins par leurs étiquettes. Voir la carte Filtrage par étiquettes.
  • Il est possible de charger un dessin en cliquant sur sa fiche.
  • Si un dessin choisi ne peut pas être ouvert, l'utilisateur doit être invité à choisir un autre via la même fenêtre modale.
  • Si un dessin présent non-vide est sur la zone de travail, l'utilisateur doit recevoir une alerte confirmant ou non vouloir abandonner ses changements.
  • Il est possible de supprimer un dessin à l'aide d'un bouton de suppression.
  • Lorsqu'un dessin est supprimé, le carrousel doit se mettre automatiquement à jour et ne doit plus contenir ce dessin .
  • Si un dessin choisi ne peut pas être supprimé, l'utilisateur doit être informé de la raison et le carrousel doit être mis à jour.
  • Lorsqu'un dessin est sauvegardé, au moins à la prochaine ouverture, le carrousel doit pouvoir afficher le nouveau dessin sauvegardé.
  • Les anciens paramètres d'ouverture ne sont plus visibles lors de la réouverture du carrousel (les paramètres sont remis à leur état original). ie: pas de filtre d'activé

Autres commentaires

  • Le raccourci ctrl-G ne marche pas dans la main page
  • L'utilisateur reçoit une alerte même quand le dessin est vide
  • Toutes les méthodes publiques doivent être explicitement testées (ex: updateDrawingContent)

Base de données

Critères d'acceptabilité

  • Il est possible de sauvegarder le nom et les tags d'un nouveau dessin sur une base de données MongoDB.
  • La base de données est à distance et non localement sur la machine du serveur.
  • Lorsqu'un dessin est supprimé par un utilisateur, la base de données est mise à jour.
  • Le client est capable de récupérer l'information d'un ou plusieurs dessins à partir de la base de données.
  • La récupération de données se fait à partir de la base de données et non des fichiers locaux.
  • Si la base de données contient des informations sur des dessins non-existants sur le serveur, ces dessins ne sont pas montrés à l'utilisateur.

Autres commentaires

Filtrage par étiquettes

Critères d'acceptabilité

  • Il doit être possible de filtrer les dessins en utilisant des étiquettes.
  • Pour chaque dessin de la liste, les étiquettes, si présentes, doivent toutes être visibles (via un mécanisme de votre choix).
  • Le filtrage par étiquette - Lorsque vide, tous les dessins doivent être possibles d'être chargés. ie: pas d'étiquette, pas de filtre.
  • Le filtrage par étiquette - Lorsqu'une étiquette est sélectionnée pour filtrage, seulement les dessins sur le serveur avec cette étiquette sont visibles dans le carrousel.
  • Le filtrage par étiquette - Lorsque mutliples étiquettes sont sélectionnées pour filtrage, seulement les dessins sur le serveur qui contiennent au moins une des étiquettes doivent être visibles dans la liste (OU logique).
  • Il doit être possible d'accéder à tous les dessins du carrousel, pour un critère de recherche donné.
  • Si aucun dessin n'est trouvable par les étiquettes sélectionnées, l'utilisateur doit en être informé.
  • Les anciens paramètres d'ouverture ne sont plus visibles lors de la réouverture du carrousel (les paramètres sont remis à leur état original). ie: pas de filtre d'activé

Assurance qualité

Qualité des classes

La classe minimise l'accessibilité des membres (public/private/protected)

  • [*.component.ts] Tous vos ViewChild sont publics

Les valeurs par défaut des attributs de la classe sont initialisés de manière consistante (soit dans le constructeur partout, soit à la définition)

  • [export-drawing.component.ts] filterMap et exportPreview ne sont pas initialisés de la même manière
  • [color-palette.component] selectedPosition et selectedColorChangeHexSubscription
  • [color-slider.component.ts] hueChangeFromHexSubscription Attributs initialisés différemment
  • [color.service.ts]

Qualités des fonctions

Utilisation d'interfaces ou de classe pour des paramètres pouvant être regroupé logiquement.

  • [shortcut-key.ts] Regrouper les arguments du constructeur dans une interface

Tous les paramètres de fonction sont utilisés

  • [drawing.controller.ts] Beaucoup de paramètres non utilisés

QA

L30: drawing.ts vs math.ts L35: tool.ts(23), line.service.ts(67, 155)

Qualité générale

  • L39: le dossier color-picker est en dehors de l'app
  • L40: Pas de style dans le html (ex: carrousel.component.ts)
  • L42: Uniformisez la langue utilisée pour les commentaires
  • L41: Avoir une logique pour organiser les méthodes dans une classe (public d'abord et private en bas par exemple)
  • L43: Code commenté
  • L45: Ne pas utiliser l'objet Object
  • L47: tslint rules disabled sans justifications
  • L48: Pas toujours utilisé