diff -r f9019462465a -r 3a5a9421687b client/js/ldtjson-bin.js --- a/client/js/ldtjson-bin.js Thu Feb 14 17:39:52 2013 +0100 +++ b/client/js/ldtjson-bin.js Thu Feb 21 17:36:29 2013 +0100 @@ -17,6 +17,7 @@ this.proj_id = _opts.project_id; this.ldt_platform = _opts.ldt_platform || "http://ldt.iri.centrepompidou.fr/"; this.title_$.html(_opts.title); + this.title_icon_$.addClass('Rk-Ldt-Title-Icon'); this.refresh(); } @@ -122,4 +123,137 @@ _this.render(); } }); +} + +Rkns.Ldt.Search = function(_renkan, _opts) { + this.renkan = _renkan; + this.lang = _opts.lang || "en"; +} + +Rkns.Ldt.Search.prototype.getBgClass = function() { + return "Rk-Ldt-Icon"; +} + +Rkns.Ldt.Search.prototype.getSearchTitle = function() { + return this.renkan.l10n.search_ldt; +} + +Rkns.Ldt.Search.prototype.search = function(_q) { + this.renkan.tabs.push( + new Rkns.Ldt.ResultsBin(this.renkan, { + search: _q + }) + ); +} + +Rkns.Ldt.ResultsBin = Rkns.Utils.inherit(Rkns._BaseBin); + +Rkns.Ldt.ResultsBin.prototype.segmentTemplate = Rkns._.template( + '
  • ' + + '

    <%=htitle%>

    <%=hdescription%>

    Start: <%=start%>, End: <%=end%>, Duration: <%=duration%>

  • ' +); + +Rkns.Ldt.ResultsBin.prototype._init = function(_renkan, _opts) { + this.renkan = _renkan; + this.ldt_platform = _opts.ldt_platform || "http://ldt.iri.centrepompidou.fr/"; + this.max_results = _opts.max_results || 50; + this.search = _opts.search; + this.title_$.html('Lignes de Temps: "' + _opts.search + '"'); + this.title_icon_$.addClass('Rk-Ldt-Title-Icon'); + this.refresh(); +} + +Rkns.Ldt.ResultsBin.prototype.render = function(searchstr) { + if (searchstr) { + var rxbase = searchstr.replace(/(\W)/g,'\\$1'), + _rgxp = new RegExp('('+rxbase+')','gi'), + rxtest = new RegExp(rxbase,'i') + } + function highlight(_text) { + return searchstr ? _text.replace(_rgxp, "$1") : _text; + } + function convertTC(_ms) { + function pad(_n) { + var _res = _n.toString(); + while (_res.length < 2) { + _res = '0' + _res; + } + return _res; + } + var _totalSeconds = Math.abs(Math.floor(_ms/1000)), + _hours = Math.floor(_totalSeconds / 3600), + _minutes = (Math.floor(_totalSeconds / 60) % 60), + _seconds = _totalSeconds % 60, + _res = ''; + if (_hours) { + _res += pad(_hours) + ':' + } + _res += pad(_minutes) + ':' + pad(_seconds); + return _res; + } + + var _html = '', + _this = this, + count = 0; + Rkns._(_this.data.objects).each(function(_segment) { + var _description = _segment.abstract, + _title = _segment.title; + if (searchstr && !rxtest.test(_title) && !rxtest.test(_description)) { + return; + } + count++; + var _duration = _segment.duration, + _begin = _segment.start_ts, + _end = + _segment.duration + _begin + _img = ( + _duration + ? _this.renkan.static_url + "img/ldt-segment.png" + : _this.renkan.static_url + "img/ldt-point.png" + ); + _html += _this.segmentTemplate({ + ldt_platform: _this.ldt_platform, + title: _title, + htitle: highlight(_title), + description: _description, + hdescription: highlight(_description), + start: convertTC(_begin), + end: convertTC(_end), + duration: convertTC(_duration), + mediaid: _segment.iri_id, + projectid: _segment.project_id, + cuttingid: _segment.cutting_id, + annotationid: _segment.element_id, + image: _img + }); + }); + + this.main_$.html(_html); + if (searchstr && count) { + this.count_$.text(count).show(); + } else { + this.count_$.hide(); + } + if (searchstr && !count) { + this.$.hide(); + } else { + this.$.show(); + } + this.renkan.resizeBins(); +} + +Rkns.Ldt.ResultsBin.prototype.refresh = function() { + var _this = this; + Rkns.$.ajax({ + url: this.ldt_platform + 'ldtplatform/api/ldt/1.0/segments/search/', + data: { + format: "jsonp", + q: this.search, + limit: this.max_results + }, + dataType: "jsonp", + success: function(_data) { + _this.data = _data; + _this.render(); + } + }); } \ No newline at end of file