doc/code.txt
author hamidouk
Mon, 19 Dec 2011 15:25:22 +0100
branchpopcorn-port
changeset 481 a46cfeee6d77
parent 349 73db41e25b75
permissions -rw-r--r--
using jquery ui draggable changes the state of an element from absolute to relative positioning, which breaks the way our seek button expands itself, so we need to force absolute positioning, quite uglily, using jquery.
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".