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:td7 [2018/03/27 01:20] – [Models] jcheron | richclient:emberjs:td7 [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 11: | Ligne 11: | ||
| ===== Objectifs ===== | ===== Objectifs ===== | ||
| - | * Conception Web client riche | + | * Conception |
| + | * Manipulations datas | ||
| + | * Utilisation composants | ||
| ===== -- Eléments à implémenter ===== | ===== -- Eléments à implémenter ===== | ||
| Ligne 32: | Ligne 34: | ||
| === Comportement/ | === Comportement/ | ||
| - | === Steps === | + | == Steps == |
| Les Steps s' | Les Steps s' | ||
| Ligne 39: | Ligne 41: | ||
| * Chaque **step** est composée d'un **ui top attached segment** pour son titre, suivi d'un **ui attached segment** pour son contenu. | * Chaque **step** est composée d'un **ui top attached segment** pour son titre, suivi d'un **ui attached segment** pour son contenu. | ||
| - | === Stories | + | == Stories == |
| Lorsque la route **project/: | Lorsque la route **project/: | ||
| Ligne 58: | Ligne 60: | ||
| - | ==== Models | + | === Models === |
| Ajouts de membres non persistants aux models : | Ajouts de membres non persistants aux models : | ||
| Ligne 64: | Ligne 66: | ||
| ^Model ^propriété ^Rôle ^ | ^Model ^propriété ^Rôle ^ | ||
| |**project** |< | |**project** |< | ||
| - | |::: |< | + | |::: |< |
| |**story** |< | |**story** |< | ||
| + | |::: |< | ||
| - | ==== Route Story/:story_id ==== | + | |
| + | === 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' | ||
| + | |||
| + | ==== -- Route Stories/ | ||
| Ligne 74: | Ligne 168: | ||
| <wrap info> | <wrap info> | ||
| - | {{:slam4: | + | {{: |
| **Comportement de l' | **Comportement de l' | ||
| Ligne 80: | Ligne 174: | ||
| * Une task **done** est barrée | * Une task **done** est barrée | ||
| * Les cases à cocher permettent de faire passer une tâche de non réalisée (done=false) à réalisée (done=true) et inversement | * Les cases à cocher permettent de faire passer une tâche de non réalisée (done=false) à réalisée (done=true) et inversement | ||
| + | |||
| + | ===== Thanks ===== | ||
| + | |||
| + | < | ||
| + | <div style=" | ||
| + | |||
| + | <br> | ||
| + | <a class=" | ||
| + | <br> | ||
| + | <a class=" | ||
| + | |||
| + | <br> | ||
| + | <a class=" | ||
| + | < | ||
| + | < | ||
| + | |||