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 17:06] – [Partie 2] 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 un moteur | + | === 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 de déplacer les stories entre les steps par un drap and drop | ||
+ | |||
+ | |||
+ | 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** | ||
+ | < |