| author | veltr |
| Fri, 20 Apr 2012 19:13:11 +0200 | |
| branch | new-model |
| changeset 874 | 38b65761a7d5 |
| parent 349 | 73db41e25b75 |
| permissions | -rw-r--r-- |
|
116
3ca8dadf3eda
added a doc dir and a file explaining coding conventions.
hamidouk
parents:
diff
changeset
|
1 |
Metadataplayer : Code et structure |
|
3ca8dadf3eda
added a doc dir and a file explaining coding conventions.
hamidouk
parents:
diff
changeset
|
2 |
================================== |
|
3ca8dadf3eda
added a doc dir and a file explaining coding conventions.
hamidouk
parents:
diff
changeset
|
3 |
|
|
3ca8dadf3eda
added a doc dir and a file explaining coding conventions.
hamidouk
parents:
diff
changeset
|
4 |
Ce document présente briévement la conception du metadataplayer. |
|
3ca8dadf3eda
added a doc dir and a file explaining coding conventions.
hamidouk
parents:
diff
changeset
|
5 |
|
| 349 | 6 |
Compilation |
7 |
=========== |
|
8 |
||
9 |
Pour le moment, il est nécessaire d'executer un script pour génerer le fichier final. Ce script est un script ant, accessible dans |
|
10 |
sbin/build/client.xml. Des raccourcis existent comme compil.bat (win) et compil.sh (unix). |
|
11 |
||
12 |
L'étape de compilation est nécessaire pour l'instant car on a des templates qui sont integrées au fichier final à ce moment là. |
|
13 |
||
14 |
Objets |
|
15 |
====== |
|
16 |
||
17 |
En gros, nous avons quatre objets: |
|
18 |
- le DataLoader, qui est l'objet chargé de récupérer les données extérieures et de les cacher |
|
19 |
- le sérializeur. C'est une classe derivée de IriSP.Serializer et qui implémente des méthodes pour sérializer/déserializer des données. |
|
20 |
Ils sont définis dans le répertoire serializers/ |
|
21 |
- le layout manager, un objet qui gère un div et qui permet de créer/supprimer des sous-div. |
|
22 |
- les widgets. Un widget est associé à un div. Il possède également une réference sur l'objet popcorn pour pouvoir envoyer et recevoir des |
|
23 |
messages. Il doit possèder impérativement deux méthodes : un constructeur, qui appelle le constructeur de l'object Widget, et une méthode |
|
24 |
draw(), qui initialise l'objet. Il peut aussi optionnellement définir une méthod redraw(), au cas où le widget aurait besoin d'être redessiné. |
|
25 |
||
26 |
Templates |
|
27 |
========= |
|
28 |
||
29 |
Le player utilise des templates qui sont transformées en chaînes javascript puis inserées dans le fichier final. |
|
30 |
Un template nommé truc.html est accessible dans le code sous le nom : IriSP.truc_template. |
|
31 |
||
32 |
ATTENTION: Une template ne doit en aucun cas contenir de guillements ("), sous peine de faire planter la compilation et le fichier géneré.
|
|
33 |
||
34 |
Initialisation |
|
35 |
============== |
|
36 |
||
37 |
Le code d'initialisation est défini dans init.js. En gros, il se contente de parser la structure IriSP.config qui définit les options génerales |
|
38 |
du player et les widgets à afficher. Chaque widget peut avoir des widgets de dépendances, qui seront instanciés avant lui et dont il aura accès |
|
39 |
(voir l'annexe idiomes) |
|
40 |
Pour plus d'informations, voir le code source des tests d'integration, notamment le fichier integration/polemic.htm. |
|
41 |
||
42 |
||
|
116
3ca8dadf3eda
added a doc dir and a file explaining coding conventions.
hamidouk
parents:
diff
changeset
|
43 |
Annexe: Idiomes |
|
3ca8dadf3eda
added a doc dir and a file explaining coding conventions.
hamidouk
parents:
diff
changeset
|
44 |
=============== |
|
3ca8dadf3eda
added a doc dir and a file explaining coding conventions.
hamidouk
parents:
diff
changeset
|
45 |
|
|
3ca8dadf3eda
added a doc dir and a file explaining coding conventions.
hamidouk
parents:
diff
changeset
|
46 |
Le code utilise quelques idiomes. Les voici, sans classement particulier : |
|
3ca8dadf3eda
added a doc dir and a file explaining coding conventions.
hamidouk
parents:
diff
changeset
|
47 |
- les membres de données privées d'un objet sont précedés d'un underscore. Ils ne sont pas censés être manipulés par des objets extérieurs, hormis |
|
3ca8dadf3eda
added a doc dir and a file explaining coding conventions.
hamidouk
parents:
diff
changeset
|
48 |
par les tests unitaires. |
|
3ca8dadf3eda
added a doc dir and a file explaining coding conventions.
hamidouk
parents:
diff
changeset
|
49 |
- tous les widgets et certains autres objets possèdent un attribut selector, qui est en fait une instance de jQuery appellée sur le div contenant |
| 349 | 50 |
l'objet en question. |
51 |
- certains widgets qui possèdent des dépendances ont accès à l'objet dépendant en tant qu'attribut portant le nom du widget en |
|
52 |
question. Ainsi, comme le PolemicWidget possède comme dépendance un TooltipWidget, il peut accèder à sa dépendance sous "this.TooltipWidget". |