src/js/data.js
author hamidouk
Wed, 19 Oct 2011 15:00:34 +0200
branchpopcorn-port
changeset 98 ed4ac18baf07
parent 89 e22e6a28a8ff
child 103 2dfd89e91c3a
permissions -rw-r--r--
broke the widgets.js in multiple files.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
     1
/* data.js - this file deals with how the players gets and sends data */
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
     2
61
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
     3
IriSP.DataLoader = function() {
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
     4
  this._cache = {};
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
     5
};
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
     6
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
     7
IriSP.DataLoader.prototype.get = function(url, callback) {  
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
     8
  if (this._cache.hasOwnProperty(url)) {
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
     9
    callback(this._cache[url]);
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    10
  } else {
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    11
    /* we need a closure because this gets lost when it's called back */
70
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    12
    IriSP.jQuery.get(url, callback);  
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    13
    /*
61
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    14
    IriSP.jQuery.get(url, (function(obj) {      
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    15
                               return function(data) {
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    16
                                  obj._cache[url] = data;      
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    17
                                  callback(obj._cache[url]);
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    18
                                }; 
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    19
                              })(this));
70
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    20
    */
61
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    21
       
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    22
  }
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    23
}
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    24
65
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    25
/* the base abstract "class" */
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    26
IriSP.Serializer = function(DataLoader, url) {
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    27
  this._DataLoader = DataLoader;
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    28
  this._url = url;
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    29
};
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    30
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    31
IriSP.Serializer.prototype.serialize = function(data) { };
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    32
IriSP.Serializer.prototype.deserialize = function(data) {};
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    33
70
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    34
IriSP.Serializer.prototype.currentMedia = function() {  
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    35
};
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    36
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    37
IriSP.Serializer.prototype.sync = function(callback) {
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    38
  callback.apply(this, []);  
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    39
};
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    40
65
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    41
IriSP.JSONSerializer = function(DataLoader, url) {
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    42
  IriSP.Serializer.call(this, DataLoader, url);
89
e22e6a28a8ff moved mock-up code from Serializer to MockSerializer.
hamidouk
parents: 70
diff changeset
    43
};
65
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    44
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    45
IriSP.JSONSerializer.prototype = IriSP.Serializer;
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    46
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    47
IriSP.JSONSerializer.prototype.serialize = function(data) {
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    48
  return JSON.stringify(data);
61
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    49
};
dc7b5ed7b02b DataLoader, first draft.
hamidouk
parents: 44
diff changeset
    50
65
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    51
IriSP.JSONSerializer.prototype.deserialize = function(data) {
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    52
  return JSON.parse(data);
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    53
};
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    54
69
3f7a2e8a948f added a .sync() method to the json serializer. Changed the tests accordingly.
hamidouk
parents: 65
diff changeset
    55
IriSP.JSONSerializer.prototype.sync = function(callback) {
3f7a2e8a948f added a .sync() method to the json serializer. Changed the tests accordingly.
hamidouk
parents: 65
diff changeset
    56
  /* we don't have to do much because jQuery handles json for us */
70
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    57
  
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    58
  /* a wrapper to get a closure because we lose this in callbacks */
69
3f7a2e8a948f added a .sync() method to the json serializer. Changed the tests accordingly.
hamidouk
parents: 65
diff changeset
    59
  var wrapper = function(obj) {
3f7a2e8a948f added a .sync() method to the json serializer. Changed the tests accordingly.
hamidouk
parents: 65
diff changeset
    60
    return function(data) {    
70
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    61
      obj._data = data;            
69
3f7a2e8a948f added a .sync() method to the json serializer. Changed the tests accordingly.
hamidouk
parents: 65
diff changeset
    62
      callback(data);
3f7a2e8a948f added a .sync() method to the json serializer. Changed the tests accordingly.
hamidouk
parents: 65
diff changeset
    63
    }
3f7a2e8a948f added a .sync() method to the json serializer. Changed the tests accordingly.
hamidouk
parents: 65
diff changeset
    64
  };
3f7a2e8a948f added a .sync() method to the json serializer. Changed the tests accordingly.
hamidouk
parents: 65
diff changeset
    65
  
3f7a2e8a948f added a .sync() method to the json serializer. Changed the tests accordingly.
hamidouk
parents: 65
diff changeset
    66
  this._DataLoader.get(this._url, wrapper(this));
3f7a2e8a948f added a .sync() method to the json serializer. Changed the tests accordingly.
hamidouk
parents: 65
diff changeset
    67
};
3f7a2e8a948f added a .sync() method to the json serializer. Changed the tests accordingly.
hamidouk
parents: 65
diff changeset
    68
70
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    69
IriSP.JSONSerializer.prototype.currentMedia = function() {  
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    70
  return this._data.medias[0]; /* FIXME: don't hardcode it */
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    71
};
3f86d4126491 added some changes to IriSP.Serializer.
hamidouk
parents: 69
diff changeset
    72
65
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    73
IriSP.SerializerFactory = function(DataLoader) {
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    74
  this._dataloader = DataLoader;
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    75
};
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    76
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    77
IriSP.SerializerFactory.prototype.getSerializer = function(config) {
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    78
  /* This function returns serializer set-up with the correct
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    79
     configuration
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    80
  */
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    81
  switch(config.metadata.load) {
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    82
    case "json":
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    83
      return new IriSP.JSONSerializer(this._dataloader, config.metadata.src);
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    84
    default:
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    85
      return undefined;
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    86
  }
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    87
};
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    88
6a8cae20f190 Added new unit tests and changes to the data classes.
hamidouk
parents: 61
diff changeset
    89
31
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    90
IriSP.getMetadata = function() {
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    91
	
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    92
	IriSP.jQuery.ajax({
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    93
		  dataType: IriSP.config.metadata.load,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    94
		  url:IriSP.config.metadata.src,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    95
		  success : function( json ){
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    96
		  
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    97
				IriSP.trace( "ajax", "success" );
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    98
				
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    99
				// START PARSING ----------------------- 
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   100
				if( json === "" ){
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   101
					alert( "Json load error" );
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   102
				} else {							  							  
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   103
					// # CREATE MEDIA  							//
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   104
					// # JUSTE ONE PLAYER FOR THE MOMENT		//
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   105
					//__IriSP.jQuery("<div></div>").appendTo("#output");
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   106
					var MyMedia = new  __IriSP.Media(
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   107
														json.medias[0].id,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   108
														json.medias[0].href,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   109
														json.medias[0]['meta']['dc:duration'],
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   110
														json.medias[0]['dc:title'],
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   111
														json.medias[0]['dc:description']);
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   112
					
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   113
					IriSP.trace( "__IriSP.MyApiPlayer",
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   114
														IriSP.config.gui.width+"   "
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   115
														+ IriSP.config.gui.height + " "
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   116
														+ json.medias[0].href + " "
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   117
														+ json.medias[0]['meta']['dc:duration'] + " "
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   118
														+ json.medias[0]['meta']['item']['value']);
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   119
					
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   120
					// Create APIplayer
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   121
					IriSP.MyApiPlayer = new __IriSP.APIplayer (
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   122
														IriSP.config.gui.width,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   123
														IriSP.config.gui.height,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   124
														json.medias[0].href,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   125
														json.medias[0]['meta']['dc:duration'],
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   126
														json.medias[0]['meta']['item']['value']);
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   127
				
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   128
					// # CREATE THE FIRST LINE  				//
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   129
					IriSP.trace( "__IriSP.init.main","__IriSP.Ligne" );
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   130
					IriSP.MyLdt = new __IriSP.Ligne(
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   131
														json['annotation-types'][0].id,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   132
														json['annotation-types'][0]['dc:title'],
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   133
														json['annotation-types'][0]['dc:description'],
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   134
														json.medias[0]['meta']['dc:duration']);			
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   135
					
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   136
					// CREATE THE TAG CLOUD 					//
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   137
					IriSP.trace( "__IriSP.init.main","__IriSP.Tags" );
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   138
					IriSP.MyTags =  new __IriSP.Tags( json.tags );
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   139
				
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   140
					// CREATE THE ANNOTATIONS  				    //
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   141
					// JUSTE FOR THE FIRST TYPE   			 	//
44
1e295123f2a1 added a FIXME
hamidouk
parents: 31
diff changeset
   142
					/* FIXME: make it support more than one ligne de temps */
31
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   143
					IriSP.jQuery.each( json.annotations, function(i,item) {
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   144
						if (item.meta['id-ref'] == IriSP.MyLdt.id) {
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   145
							//__IriSP.trace("__IriSP.init.main","__IriSP.MyLdt.addAnnotation");
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   146
							IriSP.MyLdt.addAnnotation(
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   147
										item.id,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   148
										item.begin,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   149
										item.end,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   150
										item.media,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   151
										item.content.title,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   152
										item.content.description,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   153
										item.content.color,
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   154
										item.tags);
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   155
						}
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   156
							//MyTags.addAnnotation(item);
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   157
					} );	
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   158
					IriSP.jQuery.each( json.lists, function(i,item) {
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   159
						IriSP.trace("lists","");
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   160
					} );	
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   161
					IriSP.jQuery.each( json.views, function(i,item) {
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   162
						IriSP.trace("views","");
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   163
					} );	
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   164
				}
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   165
				// END PARSING ----------------------- //  
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   166
			
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   167
							
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   168
		}, error : function(data){
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   169
			  alert("ERROR : "+data);
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   170
		}
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   171
	  });	
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   172
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
   173
}