doc/code.txt
branchnew-model
changeset 909 aa0e42229784
parent 908 f56199193fad
child 910 b9f1bd52df9a
equal deleted inserted replaced
908:f56199193fad 909:aa0e42229784
     1 Metadataplayer : Code et structure
       
     2 ==================================
       
     3 
       
     4 Ce document présente briévement la conception du metadataplayer.
       
     5 
       
     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 
       
    43 Annexe: Idiomes
       
    44 ===============
       
    45 
       
    46 Le code utilise quelques idiomes. Les voici, sans classement particulier :
       
    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 
       
    48   par les tests unitaires.
       
    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
       
    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".