Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| richclient:emberjs:td5 [2019/03/25 16:59] – [Partie 1] jcheron | richclient:emberjs:td5 [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 4: | Ligne 4: | ||
| |< 100% >| | |< 100% >| | ||
| - | | {{:: | + | | {{:: |
| < | < | ||
| Ligne 17: | Ligne 17: | ||
| ===== - Eléments à implémenter ===== | ===== - Eléments à implémenter ===== | ||
| - | ==== Partie 1 ==== | + | ==== - Route project/: |
| - | Création d'un moteur de recherche pour les projets : | + | <wrap mytodo> |
| - | Point d' | + | Cette route est déjà partiellement implémentée (**project/:project_id**): |
| - | * L' | + | {{: |
| - | * Cette recherche retourne les projets correspondant au texte saisi. | + | |
| - | * La recherche s' | + | |
| - | * Les membres de données sur lesquels s' | + | |
| + | Elle affiche la liste complète des stories du projet sélectionné. | ||
| + | on lui ajoute la partie tableau de bord, permettant d' | ||
| - | ==== Partie 2 ==== | + | {{: |
| - | Création d'un moteur de recherche générique : | ||
| - | On souhaite maintenant créer | + | === Comportement/ |
| + | |||
| + | == Steps == | ||
| + | |||
| + | Les Steps s' | ||
| + | On utilisera : | ||
| + | * le composant HTML ui-grid de semantic pour leur disposition. | ||
| + | * Chaque **step** est composée d'un **ui top attached segment** pour son titre, suivi d'un **ui attached segment** pour son contenu. | ||
| + | |||
| + | == Stories == | ||
| + | |||
| + | Lorsque la route **project/: | ||
| + | Lorsque la route **project/: | ||
| + | |||
| + | * Le click sur une story présente dans le board la rend active et affiche la barre de 3 boutons (Open, MoveTo -dropDown des steps- et Remove). | ||
| + | * Les boutons **Open..** renvoient vers l'url **story/: | ||
| + | * Il est possible | ||
| + | |||
| + | |||
| + | Le tableau suivant pourra servir a élaborer la grille des steps : | ||
| + | <sxh javascript; | ||
| + | [' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | </ | ||
| + | |||
| + | |||
| + | === Models === | ||
| + | Ajouts de membres non persistants aux models : | ||
| + | |||
| + | |< 100% >| | ||
| + | ^Model ^propriété ^Rôle ^ | ||
| + | |**project** |< | ||
| + | |::: |< | ||
| + | |**story** |< | ||
| + | |::: |< | ||
| + | |||
| + | |||
| + | === Component === | ||
| + | |||
| + | Pour le drag and drop, on utilise les fonctionnalités HTML5, au travers de 2 composants (fortement inspirés de cet [[https:// | ||
| + | |||
| + | **draggable-dropzone** correspond à la zone de drop (step d' | ||
| + | |||
| + | <sxh javascript; | ||
| + | import Component from ' | ||
| + | import {set,get} from ' | ||
| + | |||
| + | export default Component.extend({ | ||
| + | classNames | ||
| + | classNameBindings : [ ' | ||
| + | dragClass | ||
| + | |||
| + | dragLeave(event) { | ||
| + | event.preventDefault(); | ||
| + | set(this, ' | ||
| + | }, | ||
| + | |||
| + | dragOver(event) { | ||
| + | event.preventDefault(); | ||
| + | set(this, ' | ||
| + | }, | ||
| + | |||
| + | drop(event) { | ||
| + | var data = event.dataTransfer.getData(' | ||
| + | this.sendAction(' | ||
| + | set(this, ' | ||
| + | } | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | **draggable-item** correspond à l' | ||
| + | |||
| + | <sxh javascript; | ||
| + | import Component from ' | ||
| + | import {get} from ' | ||
| + | |||
| + | export default Component.extend({ | ||
| + | classNameBindings: | ||
| + | isActive: Ember.computed(' | ||
| + | let content=get(this,' | ||
| + | if(get(content,' | ||
| + | return this.get(' | ||
| + | return ''; | ||
| + | }), | ||
| + | attributeBindings : [ ' | ||
| + | draggable | ||
| + | |||
| + | dragStart(event) { | ||
| + | return event.dataTransfer.setData(' | ||
| + | }, | ||
| + | doubleClick(){ | ||
| + | this.sendAction(" | ||
| + | }, | ||
| + | click(){ | ||
| + | this.sendAction(" | ||
| + | } | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | Exemple d' | ||
| + | |||
| + | <sxh html> | ||
| + | {{# | ||
| + | ... | ||
| + | {{/ | ||
| + | </ | ||
| + | |||
| + | |< 100% >| | ||
| + | ^Attribut ^Rôle ^ | ||
| + | |content| objet associé | | ||
| + | |dropped | action déclenchée sur le drop dont le prototype est (dragContent.id, | ||
| + | |||
| + | |||
| + | Exemple d' | ||
| + | |||
| + | <sxh html> | ||
| + | {{# | ||
| + | ... | ||
| + | {{/ | ||
| + | </ | ||
| + | |||
| + | |< 100% >| | ||
| + | ^Attribut ^Rôle ^ | ||
| + | |content| objet associé | | ||
| + | |activeClass | Classe utlisée si content.active==true | | ||
| + | |onClick| action déclenchée sur le click de l' | ||
| + | |||
| + | |||
| + | < | ||
| + | * Créer impérativement une **page d' | ||
| + | * Alimenter la base de données avec des enregistrements réalistes en nombre suffisant (BDD à mettre dans le dossier **DB** de votre repository) | ||
| + | * Mettez en valeur votre projet et présentez son contenu dans le **README.md** | ||
| + | < | ||