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
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
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
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
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.
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.
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.
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
)
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
)
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
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é
- [*.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
etexportPreview
ne sont pas initialisés de la même manière - [color-palette.component]
selectedPosition
etselectedColorChangeHexSubscription
- [color-slider.component.ts]
hueChangeFromHexSubscription
Attributs initialisés différemment - [color.service.ts]
- [shortcut-key.ts] Regrouper les arguments du constructeur dans une interface
- [drawing.controller.ts] Beaucoup de paramètres non utilisés
L30: drawing.ts vs math.ts L35: tool.ts(23), line.service.ts(67, 155)
- 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é