doc/code.txt
author hamidouk
Thu, 19 Jan 2012 12:21:37 +0100
branchpopcorn-port
changeset 680 28ffcd88cdfd
parent 349 73db41e25b75
permissions -rw-r--r--
follow mediafragment conventions for links.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
     6
Compilation
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
     7
===========
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
     8
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
     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
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    10
sbin/build/client.xml. Des raccourcis existent comme compil.bat (win) et compil.sh (unix).
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    11
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    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à.
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    13
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    14
Objets
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    15
======
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    16
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    17
En gros, nous avons quatre objets:
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    18
- le DataLoader, qui est l'objet chargé de récupérer les données extérieures et de les cacher
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    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.
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    20
  Ils sont définis dans le répertoire serializers/
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    21
- le layout manager, un objet qui gère un div et qui permet de créer/supprimer des sous-div.  
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    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
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    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
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    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é.
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    25
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    26
Templates
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    27
=========
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    28
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    29
Le player utilise des templates qui sont transformées en chaînes javascript puis inserées dans le fichier final.
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    30
Un template nommé truc.html est accessible dans le code sous le nom : IriSP.truc_template.
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    31
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    32
ATTENTION: Une template ne doit en aucun cas contenir de guillements ("), sous peine de faire planter la compilation et le fichier géneré.
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    33
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    34
Initialisation
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    35
==============
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    36
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    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
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    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
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    39
(voir l'annexe idiomes)
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    40
Pour plus d'informations, voir le code source des tests d'integration, notamment le fichier integration/polemic.htm.
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    41
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    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
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    50
  l'objet en question. 
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    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 
73db41e25b75 documented a little more the code.
hamidouk
parents: 116
diff changeset
    52
  question. Ainsi, comme le PolemicWidget possède comme dépendance un TooltipWidget, il peut accèder à sa dépendance sous "this.TooltipWidget".