src/js/serializers/JSONSerializer.js
author ymh <ymh.work@gmail.com>
Mon, 13 Feb 2012 11:44:50 +0100
branchpopcorn-port
changeset 797 8407313c144f
parent 783 591b117c19ca
child 820 7968346b9689
permissions -rw-r--r--
correct url for annotations + null data on serializer
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
     1
/** @class This class implement a serializer for the JSON-Cinelab format
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
     2
    @params DataLoader a dataloader reference
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
     3
    @url the url from which to get our cinelab
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
     4
 */
108
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
     5
IriSP.JSONSerializer = function(DataLoader, url) {
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
     6
  IriSP.Serializer.call(this, DataLoader, url);
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
     7
};
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
     8
128
f3fec80dd31c renames and inheritance bug fixes.
hamidouk
parents: 108
diff changeset
     9
IriSP.JSONSerializer.prototype = new IriSP.Serializer();
108
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    10
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
    11
/** serialize data */
108
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    12
IriSP.JSONSerializer.prototype.serialize = function(data) {
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    13
  return JSON.stringify(data);
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    14
};
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    15
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
    16
/** deserialize data */
108
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    17
IriSP.JSONSerializer.prototype.deserialize = function(data) {
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    18
  return JSON.parse(data);
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    19
};
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    20
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
    21
/** load JSON-cinelab data and also sort the annotations by start time
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
    22
    @param callback function to call when the data is ready.
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
    23
 */
108
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    24
IriSP.JSONSerializer.prototype.sync = function(callback) {
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    25
  /* we don't have to do much because jQuery handles json for us */
128
f3fec80dd31c renames and inheritance bug fixes.
hamidouk
parents: 108
diff changeset
    26
137
ef6c1252c459 clarified the closure code.
hamidouk
parents: 128
diff changeset
    27
  var self = this;
ef6c1252c459 clarified the closure code.
hamidouk
parents: 128
diff changeset
    28
797
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    29
  var fn = function(data) {
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    30
	  //TODO: seems taht data can be null here
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    31
	  if (data !== null) {
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    32
		  self._data = data;  
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    33
	      if (typeof(self._data["annotations"]) === "undefined" ||
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    34
	          self._data["annotations"] === null)
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    35
	          self._data["annotations"] = [];
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    36
	      
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    37
	      // sort the data too       
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    38
	      self._data["annotations"].sort(function(a, b) 
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    39
	          { var a_begin = +a.begin;
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    40
	            var b_begin = +b.begin;
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    41
	            return a_begin - b_begin;
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    42
	          });
8407313c144f correct url for annotations + null data on serializer
ymh <ymh.work@gmail.com>
parents: 783
diff changeset
    43
	  }     
137
ef6c1252c459 clarified the closure code.
hamidouk
parents: 128
diff changeset
    44
      callback(data);      
108
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    45
  };
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    46
  
137
ef6c1252c459 clarified the closure code.
hamidouk
parents: 128
diff changeset
    47
  this._DataLoader.get(this._url, fn);
108
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    48
};
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    49
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
    50
/** @return the metadata about the media being read FIXME: always return the first media. */
108
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    51
IriSP.JSONSerializer.prototype.currentMedia = function() {  
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    52
  return this._data.medias[0]; /* FIXME: don't hardcode it */
62da43e72e30 broke the serializers across multiple files. added a newline to the end of
hamidouk
parents:
diff changeset
    53
};
147
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
    54
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
    55
/** searches for an annotation which matches title, description and keyword 
147
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
    56
   "" matches any field. 
395
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    57
   Note: it ignores tweets.
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
    58
   @return a list of matching ids.
147
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
    59
*/    
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
    60
IriSP.JSONSerializer.prototype.searchAnnotations = function(title, description, keyword) {
352
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    61
    /* we can have many types of annotations. We want search to only look for regular segments */
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    62
    /* the next two lines are a bit verbose because for some test data, _serializer.data.view is either
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    63
       null or undefined.
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    64
    */
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    65
    var view;
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    66
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    67
    if (typeof(this._data.views) !== "undefined" && this._data.views !== null)
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    68
       view = this._data.views[0];
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    69
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    70
    var searchViewType = "";
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    71
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    72
    if(typeof(view) !== "undefined" && typeof(view.annotation_types) !== "undefined" && view.annotation_types.length > 1) {
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    73
            searchViewType = view.annotation_types[0];
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    74
    }
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
    75
395
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    76
    var filterfn = function(annotation) {
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    77
      if( searchViewType  != "" && 
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    78
          typeof(annotation.meta) !== "undefined" && 
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    79
          typeof(annotation.meta["id-ref"]) !== "undefined" &&
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    80
          annotation.meta["id-ref"] !== searchViewType) {
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    81
        return true; // don't pass
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    82
      } else {
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    83
          return false;
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    84
      }
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    85
    };
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    86
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    87
    return this.searchAnnotationsFilter(title, description, keyword, filterfn);
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    88
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    89
};
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    90
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    91
/* only look for tweets */
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    92
IriSP.JSONSerializer.prototype.searchTweets = function(title, description, keyword) {
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    93
    /* we can have many types of annotations. We want search to only look for regular segments */
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    94
    /* the next two lines are a bit verbose because for some test data, _serializer.data.view is either
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    95
       null or undefined.
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
    96
    */
666
08d1656c608a fixed stupid bug due to convoluted function
hamidouk
parents: 639
diff changeset
    97
    
08d1656c608a fixed stupid bug due to convoluted function
hamidouk
parents: 639
diff changeset
    98
    var searchViewType = this.getTweets();
08d1656c608a fixed stupid bug due to convoluted function
hamidouk
parents: 639
diff changeset
    99
    if (typeof(searchViewType) === "undefined") {
08d1656c608a fixed stupid bug due to convoluted function
hamidouk
parents: 639
diff changeset
   100
      var view;
08d1656c608a fixed stupid bug due to convoluted function
hamidouk
parents: 639
diff changeset
   101
      
08d1656c608a fixed stupid bug due to convoluted function
hamidouk
parents: 639
diff changeset
   102
      if (typeof(this._data.views) !== "undefined" && this._data.views !== null)
08d1656c608a fixed stupid bug due to convoluted function
hamidouk
parents: 639
diff changeset
   103
         view = this._data.views[0];    
395
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   104
666
08d1656c608a fixed stupid bug due to convoluted function
hamidouk
parents: 639
diff changeset
   105
      if(typeof(view) !== "undefined" && typeof(view.annotation_types) !== "undefined" && view.annotation_types.length > 1) {
08d1656c608a fixed stupid bug due to convoluted function
hamidouk
parents: 639
diff changeset
   106
              searchViewType = view.annotation_types[0];
08d1656c608a fixed stupid bug due to convoluted function
hamidouk
parents: 639
diff changeset
   107
      }
395
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   108
    }
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   109
    var filterfn = function(annotation) {
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   110
      if( searchViewType  != "" && 
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   111
          typeof(annotation.meta) !== "undefined" && 
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   112
          typeof(annotation.meta["id-ref"]) !== "undefined" &&
666
08d1656c608a fixed stupid bug due to convoluted function
hamidouk
parents: 639
diff changeset
   113
          annotation.meta["id-ref"] === searchViewType) {
395
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   114
        return false; // pass
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   115
      } else {
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   116
          return true;
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   117
      }
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   118
    };
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   119
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   120
    return this.searchAnnotationsFilter(title, description, keyword, filterfn);
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   121
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   122
};
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   123
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
   124
/**
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
   125
  search an annotation according to its title, description and keyword
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
   126
  @param filter a function to filter the results with. Used to select between annotation types.
395
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   127
 */    
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   128
IriSP.JSONSerializer.prototype.searchAnnotationsFilter = function(title, description, keyword, filter) {
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   129
147
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   130
    var rTitle;
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   131
    var rDescription;
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   132
    var rKeyword;
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   133
    /* match anything if given the empty string */
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   134
    if (title == "")
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   135
      title = ".*";
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   136
    if (description == "")
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   137
      description = ".*";
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   138
    if (keyword == "")
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   139
      keyword = ".*";
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   140
    
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   141
    rTitle = new RegExp(title, "i");  
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   142
    rDescription = new RegExp(description, "i");  
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   143
    rKeyword = new RegExp(keyword, "i");  
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   144
    
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   145
    var ret_array = [];
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   146
    
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   147
    var i;
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   148
    for (i in this._data.annotations) {
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   149
      var annotation = this._data.annotations[i];
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   150
      
352
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
   151
      /* filter the annotations whose type is not the one we want */
395
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   152
      if (filter(annotation)) {
352
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
   153
          continue;
cc2cdecc5ce5 ignore tweets in search.
hamidouk
parents: 320
diff changeset
   154
      }
395
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   155
      
147
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   156
      if (rTitle.test(annotation.content.title) && 
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   157
          rDescription.test(annotation.content.description)) {
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   158
          /* FIXME : implement keyword support */
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   159
          ret_array.push(annotation);
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   160
      }
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   161
    }
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   162
    
955119f901b4 added a function to search annotations to the json serializer.
hamidouk
parents: 137
diff changeset
   163
    return ret_array;
149
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   164
};
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   165
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
   166
/** breaks a string in words and searches each of these words. Returns an array
149
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   167
   of objects with the id of the annotation and its number of occurences.
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   168
   
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
   169
   @param searchString a string of words.
149
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   170
   FIXME: optimize ? seems to be n^2 in the worst case.
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   171
*/
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   172
IriSP.JSONSerializer.prototype.searchOccurences = function(searchString) {
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   173
  var ret = { };
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   174
  var keywords = searchString.split(/\s+/);
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   175
  
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   176
  for (var i in keywords) {
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   177
    var keyword = keywords[i];
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   178
    
150
40cf046b7049 added a comment.
hamidouk
parents: 149
diff changeset
   179
    // search this keyword in descriptions and title
149
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   180
    var found_annotations = []
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   181
    found_annotations = found_annotations.concat(this.searchAnnotations(keyword, "", ""));
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   182
    found_annotations = found_annotations.concat(this.searchAnnotations("", keyword, ""));
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   183
    
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   184
    for (var j in found_annotations) {
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   185
      var current_annotation = found_annotations[j];
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   186
      
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   187
      if (!ret.hasOwnProperty(current_annotation.id)) {
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   188
        ret[current_annotation.id] = 1;
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   189
      } else {
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   190
        ret[current_annotation.id] += 1;
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   191
      }
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   192
      
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   193
    }
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   194
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   195
  };
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   196
  
a10198c95808 added a function to break a search string in words and count the number of
hamidouk
parents: 147
diff changeset
   197
  return ret;
317
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   198
};
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   199
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
   200
/** breaks a string in words and searches each of these words. Returns an array
395
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   201
   of objects with the id of the annotation and its number of occurences.
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   202
   
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   203
   FIXME: optimize ? seems to be n^2 in the worst case.
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   204
*/
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   205
IriSP.JSONSerializer.prototype.searchTweetsOccurences = function(searchString) {
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   206
  var ret = { };
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   207
  var keywords = searchString.split(/\s+/);
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   208
  
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   209
  for (var i in keywords) {
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   210
    var keyword = keywords[i];
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   211
    
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   212
    // search this keyword in descriptions and title
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   213
    var found_annotations = []
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   214
    found_annotations = found_annotations.concat(this.searchTweets(keyword, "", ""));
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   215
    found_annotations = found_annotations.concat(this.searchTweets("", keyword, ""));
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   216
    
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   217
    for (var j in found_annotations) {
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   218
      var current_annotation = found_annotations[j];
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   219
      
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   220
      if (!ret.hasOwnProperty(current_annotation.id)) {
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   221
        ret[current_annotation.id] = 1;
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   222
      } else {
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   223
        ret[current_annotation.id] += 1;
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   224
      }
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   225
      
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   226
    }
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   227
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   228
  };
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   229
  
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   230
  return ret;
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   231
};
5766e8238aaf search in twitter feed now works.
hamidouk
parents: 352
diff changeset
   232
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
   233
/** returns all the annotations that are displayable at the moment 
317
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   234
   NB: only takes account the first type of annotations - ignores tweets 
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   235
   currentTime is in seconds.
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
   236
   
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
   237
   @param currentTime the time at which we search.
595
29d86e6c61a6 finished going through the widgets to add stricter line checking.
hamidouk
parents: 591
diff changeset
   238
   @param (optional) the if of the type of the annotations we want to get.
317
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   239
 */
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   240
595
29d86e6c61a6 finished going through the widgets to add stricter line checking.
hamidouk
parents: 591
diff changeset
   241
IriSP.JSONSerializer.prototype.currentAnnotations = function(currentTime, id) {
317
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   242
  var view;
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   243
  var currentTimeMs = 1000 * currentTime;
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   244
595
29d86e6c61a6 finished going through the widgets to add stricter line checking.
hamidouk
parents: 591
diff changeset
   245
  if (typeof(id) === "undefined") {
29d86e6c61a6 finished going through the widgets to add stricter line checking.
hamidouk
parents: 591
diff changeset
   246
      var legal_ids = this.getNonTweetIds();
601
02b857c0c9f1 slight change
hamidouk
parents: 595
diff changeset
   247
  } else {
595
29d86e6c61a6 finished going through the widgets to add stricter line checking.
hamidouk
parents: 591
diff changeset
   248
      legal_ids = [id];
29d86e6c61a6 finished going through the widgets to add stricter line checking.
hamidouk
parents: 591
diff changeset
   249
  }
536
b7e545e35287 fixed an elusive "id-ref" bug in currentAnnotation
hamidouk
parents: 528
diff changeset
   250
  
317
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   251
  var ret_array = [];
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   252
  
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   253
  var i;
536
b7e545e35287 fixed an elusive "id-ref" bug in currentAnnotation
hamidouk
parents: 528
diff changeset
   254
  
317
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   255
  for (i in this._data.annotations) {
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   256
    var annotation = this._data.annotations[i];
320
b693ba1a83be fixed bug in search method
hamidouk
parents: 317
diff changeset
   257
    
590
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   258
    if (IriSP.underscore.include(legal_ids, annotation.meta["id-ref"]) && 
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   259
        annotation.begin <= currentTimeMs &&
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   260
        annotation.end >= currentTimeMs)
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   261
          ret_array.push(annotation);
317
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   262
  }
590
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   263
 
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   264
  if (ret_array == []) {
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   265
    console.log("ret_array empty, ", legal_ids);
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   266
  }
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   267
  
317
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   268
  return ret_array;
a3492448fa9a begun the implementation of annotation search according to a timecode.
hamidouk
parents: 150
diff changeset
   269
};
513
4589b90fe1ad added a couple functions to distinguish between tweet ids and regular lines.
hamidouk
parents: 395
diff changeset
   270
613
c2726c5c6477 added a method to get the current chapitre.
hamidouk
parents: 610
diff changeset
   271
/** return the current chapitre
c2726c5c6477 added a method to get the current chapitre.
hamidouk
parents: 610
diff changeset
   272
    @param currentTime the current time, in seconds.
c2726c5c6477 added a method to get the current chapitre.
hamidouk
parents: 610
diff changeset
   273
*/
c2726c5c6477 added a method to get the current chapitre.
hamidouk
parents: 610
diff changeset
   274
IriSP.JSONSerializer.prototype.currentChapitre = function(currentTime) {
c2726c5c6477 added a method to get the current chapitre.
hamidouk
parents: 610
diff changeset
   275
  return this.currentAnnotations(currentTime, this.getChapitrage())[0];
c2726c5c6477 added a method to get the current chapitre.
hamidouk
parents: 610
diff changeset
   276
};
513
4589b90fe1ad added a couple functions to distinguish between tweet ids and regular lines.
hamidouk
parents: 395
diff changeset
   277
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
   278
/** returns a list of ids of tweet lines (aka: groups in cinelab) */
513
4589b90fe1ad added a couple functions to distinguish between tweet ids and regular lines.
hamidouk
parents: 395
diff changeset
   279
IriSP.JSONSerializer.prototype.getTweetIds = function() {
636
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   280
  if (IriSP.null_or_undefined(this._data.lists) || IriSP.null_or_undefined(this._data.lists) ||
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   281
      IriSP.null_or_undefined(this._data.views) || IriSP.null_or_undefined(this._data.views[0]))
513
4589b90fe1ad added a couple functions to distinguish between tweet ids and regular lines.
hamidouk
parents: 395
diff changeset
   282
    return [];
4589b90fe1ad added a couple functions to distinguish between tweet ids and regular lines.
hamidouk
parents: 395
diff changeset
   283
4589b90fe1ad added a couple functions to distinguish between tweet ids and regular lines.
hamidouk
parents: 395
diff changeset
   284
  
636
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   285
  /* Get the displayable types
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   286
     We've got to jump through a few hoops because the json sometimes defines
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   287
     fields with underscores and sometimes with dashes
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   288
  */
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   289
  var annotation_types = this._data.views[0]["annotation_types"];
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   290
  if (IriSP.null_or_undefined(annotation_types)) {
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   291
    annotation_types = this._data.views[0]["annotation-types"];
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   292
    if (IriSP.null_or_undefined(annotation_types)) {
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   293
      console.log("neither view.annotation_types nor view.annotation-types are defined");      
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   294
      return;
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   295
    }
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   296
  }
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   297
639
f18233d3a7fa fixed copypasta bug.
hamidouk
parents: 636
diff changeset
   298
  var available_types = this._data["annotation_types"];    
636
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   299
  if (IriSP.null_or_undefined(available_types)) {
639
f18233d3a7fa fixed copypasta bug.
hamidouk
parents: 636
diff changeset
   300
    available_types = this._data["annotation-types"];
636
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   301
    if (IriSP.null_or_undefined(available_types)) {
639
f18233d3a7fa fixed copypasta bug.
hamidouk
parents: 636
diff changeset
   302
      console.log("neither annotation_types nor annotation-types are defined");      
636
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   303
      return;
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   304
    }
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   305
  }
566
098929cd2d62 made the polemicwidget adjust its size automatically and fixed a couple edgecases.
hamidouk
parents: 536
diff changeset
   306
  
636
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   307
  var potential_types = [];
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   308
  
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   309
  // Get the list of types which contain "Tw" in their content
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   310
  for (var i = 0; i < available_types.length; i++) {
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   311
    if (/Tw/i.test(available_types[i]["dc:title"])) {
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   312
      potential_types.push(available_types[i].id);
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   313
    }
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   314
  }
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   315
  
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   316
  // Get the intersection of both.
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   317
  var tweetsId = IriSP.underscore.intersection(annotation_types, potential_types);
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   318
  
513
4589b90fe1ad added a couple functions to distinguish between tweet ids and regular lines.
hamidouk
parents: 395
diff changeset
   319
  return tweetsId;
4589b90fe1ad added a couple functions to distinguish between tweet ids and regular lines.
hamidouk
parents: 395
diff changeset
   320
};
4589b90fe1ad added a couple functions to distinguish between tweet ids and regular lines.
hamidouk
parents: 395
diff changeset
   321
528
a5894f09825a added docs.
hamidouk
parents: 513
diff changeset
   322
/** this function returns a list of lines which are not tweet lines */
513
4589b90fe1ad added a couple functions to distinguish between tweet ids and regular lines.
hamidouk
parents: 395
diff changeset
   323
IriSP.JSONSerializer.prototype.getNonTweetIds = function() {
636
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   324
  if (IriSP.null_or_undefined(this._data.lists) || IriSP.null_or_undefined(this._data.lists) ||
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   325
      IriSP.null_or_undefined(this._data.views) || IriSP.null_or_undefined(this._data.views[0]))
513
4589b90fe1ad added a couple functions to distinguish between tweet ids and regular lines.
hamidouk
parents: 395
diff changeset
   326
    return [];
636
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   327
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   328
  /* Get the displayable types
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   329
     We've got to jump through a few hoops because the json sometimes defines
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   330
     fields with underscores and sometimes with dashes
536
b7e545e35287 fixed an elusive "id-ref" bug in currentAnnotation
hamidouk
parents: 528
diff changeset
   331
  */
636
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   332
  var annotation_types = this._data.views[0]["annotation_types"];
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   333
  if (IriSP.null_or_undefined(annotation_types)) {
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   334
    annotation_types = this._data.views[0]["annotation-types"];
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   335
    if (IriSP.null_or_undefined(annotation_types)) {
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   336
      console.log("neither view.annotation_types nor view.annotation-types are defined");      
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   337
      return;
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   338
    }
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   339
  }
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   340
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   341
  var available_types = this._data["annotation_types"];    
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   342
  if (IriSP.null_or_undefined(available_types)) {
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   343
    available_types = this._data["annotation-types"];
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   344
    if (IriSP.null_or_undefined(available_types)) {
639
f18233d3a7fa fixed copypasta bug.
hamidouk
parents: 636
diff changeset
   345
      console.log("neither annotation_types nor annotation-types are defined");      
636
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   346
      return;
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   347
    }
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   348
  }
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   349
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   350
  var potential_types = [];
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   351
  
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   352
  // Get the list of types which do not contain "Tw" in their content
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   353
  for (var i = 0; i < available_types.length; i++) {
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   354
    if (!(/Tw/i.test(available_types[i]["dc:title"]))) {
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   355
      potential_types.push(available_types[i].id);
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   356
    }
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   357
  }
639
f18233d3a7fa fixed copypasta bug.
hamidouk
parents: 636
diff changeset
   358
636
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   359
  // Get the intersection of both.
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   360
  var nonTweetsId = IriSP.underscore.intersection(annotation_types, potential_types);
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   361
  
b1629eed3e11 rewrote the function to select annotations to make them clearer.
hamidouk
parents: 633
diff changeset
   362
  return nonTweetsId;
513
4589b90fe1ad added a couple functions to distinguish between tweet ids and regular lines.
hamidouk
parents: 395
diff changeset
   363
  
4589b90fe1ad added a couple functions to distinguish between tweet ids and regular lines.
hamidouk
parents: 395
diff changeset
   364
};
590
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   365
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   366
/** return the id of the ligne de temps which contains name
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   367
    @param name of the ligne de temps
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   368
*/
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   369
IriSP.JSONSerializer.prototype.getId = function(name) {
693
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   370
  if (IriSP.null_or_undefined(this._data["annotation-types"]))
590
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   371
    return;
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   372
628
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   373
  name = name.toUpperCase();
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   374
  var e;  
590
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   375
  e = IriSP.underscore.find(this._data["annotation-types"], 
783
591b117c19ca be more picky about what we get.
hamidouk
parents: 693
diff changeset
   376
                                  function(entry) { 
591b117c19ca be more picky about what we get.
hamidouk
parents: 693
diff changeset
   377
                                    if (IriSP.null_or_undefined(entry["dc:title"]))
591b117c19ca be more picky about what we get.
hamidouk
parents: 693
diff changeset
   378
                                      return false;
591b117c19ca be more picky about what we get.
hamidouk
parents: 693
diff changeset
   379
                                    
591b117c19ca be more picky about what we get.
hamidouk
parents: 693
diff changeset
   380
                                    return (entry["dc:title"].toUpperCase().indexOf(name) !== -1) });
590
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   381
  
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   382
  if (typeof(e) === "undefined")
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   383
    return;
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   384
    
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   385
  var id = e.id;
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   386
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   387
  return id;
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   388
};
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   389
693
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   390
/** return the list of id's of the ligne de temps which contains name
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   391
    @param name of the ligne de temps
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   392
*/
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   393
IriSP.JSONSerializer.prototype.getIds = function(name) {
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   394
  if (IriSP.null_or_undefined(this._data["annotation-types"]))
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   395
    return;
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   396
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   397
  name = name.toUpperCase();
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   398
  var e = [];  
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   399
  e = IriSP.underscore.filter(this._data["annotation-types"], 
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   400
                                  function(entry) { return (entry["dc:title"].toUpperCase().indexOf(name) !== -1) });
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   401
  return IriSP.underscore.pluck(e, "id");  
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   402
};
6328901da7bf added a method to get a list of lignes with a specified name.
hamidouk
parents: 666
diff changeset
   403
590
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   404
/** return the id of the ligne de temps named "Chapitrage" */
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   405
IriSP.JSONSerializer.prototype.getChapitrage = function() {
633
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   406
  var val = this.getId("Chapitrage");
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   407
  if (typeof(val) === "undefined")
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   408
    val = this.getId("Chapter");   
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   409
  if (typeof(val) === "undefined")
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   410
    val = this.getId("Chapit");
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   411
  if (typeof(val) === "undefined")
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   412
    val = this.getId("Chap");
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   413
    
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   414
  return val;
590
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   415
};
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   416
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   417
/** return the id of the ligne de temps named "Tweets" */
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   418
IriSP.JSONSerializer.prototype.getTweets = function() {
628
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   419
  var val = this.getId("Tweets");
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   420
  if (typeof(val) === "undefined")
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   421
    val = this.getId("Tweet");
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   422
  if (typeof(val) === "undefined")
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   423
    val = this.getId("Twitter");
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   424
  if (typeof(val) === "undefined")
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   425
    val = this.getId("twit");
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   426
  if (typeof(val) === "undefined")
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   427
    val = this.getId("Polemic");
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   428
  
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   429
  return val;
590
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   430
};
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   431
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   432
/** return the id of the ligne de temps named "Contributions" */
495ea8d73bed added a couple function to return the ids of some lignes de temps.
hamidouk
parents: 566
diff changeset
   433
IriSP.JSONSerializer.prototype.getContributions = function() {
633
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   434
  var val = this.getId("Contribution");
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   435
  if (typeof(val) === "undefined")
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   436
    val = this.getId("Particip");   
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   437
  if (typeof(val) === "undefined")
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   438
    val = this.getId("Contr");
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   439
  if (typeof(val) === "undefined")
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   440
    val = this.getId("Publ");
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   441
    
00a59060d78d more matching for segments types.
hamidouk
parents: 628
diff changeset
   442
  return val;
628
55282f5ef477 search for ids in a case-insensitive way.
hamidouk
parents: 613
diff changeset
   443
};