diff -r 1f2c13ece5e9 -r 81d408373dde web/static/js/LdtPlayer.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/static/js/LdtPlayer.js Sat Jun 12 00:33:37 2010 +0200 @@ -0,0 +1,529 @@ +/* ---------------------------------------------------------------- + ---------------------------------------------------------------- + ---------------------------------------------------------------- + + LDTPlayer is created by http://www.iri.centrepompidou.fr + 2010-06-10 + + Initiated By Samuel Huron < samuel.huron (at) cybunk (dot) com + this version is the 0.06 + + ---------------------------------------------------------------- +*/ + + + + +/* ---------------------------------------------------------------- + ---------------------------------------------------------------- + INTERFACE : SLIDER ( CONTROL BAR ) | BUTTON () */ + + + function createInterface (width,height,duration){ + $jIRI(function() { + + $jIRI("#Annotations").width(width-(78*2)); + $jIRI("#ShowAnnotation").width(width-10); + $jIRI("#controlerLdt").width(width); + $jIRI("#Ldtplayer1").attr("z-index","100"); + + $jIRI("#ShowAnnotation").click(function () { + $jIRI(this).slideUp(); + }); + + var LdtpPlayerY = $jIRI("#ldtPlaceHolder").attr("top"); + var LdtpPlayerX = $jIRI("#ldtPlaceHolder").attr("left"); + + //alert(LdtpPlayerY+" | "+LdtpPlayerX); + //$jIRI("#ShowAnnotation").attr("position","absolute"); + /*$jIRI("#ShowAnnotation").attr("top",0); + $jIRI("#ShowAnnotation").attr("left",0);*/ + + //$jIRI("#slider-range-min").roll + $jIRI("#slider-range-min").slider({ //range: "min", + value: 0, + min: 1, + max: duration/1000,//1:54:52.66 = 3600+3240+ + step: 0.1, + slide: function(event, ui) { + + //$jIRI("#amount").val(ui.value+" s"); + player.sendEvent('SEEK', ui.value) + //player.sendEvent('PAUSE') + } + }); + $jIRI("#amount").val($jIRI("#slider-range-min").slider("value")+" s"); + + $jIRI(".ldtControl1 button:first").button({ + icons: { + primary: 'ui-icon-play' + }, + text: false + }).next().button({ + icons: { + primary: 'ui-icon-seek-next' + }, + text: false + }); + + $jIRI(".ldtControl2 button:first").button({ + icons: { + primary: 'ui-icon-newwin'//, + //secondary: 'ui-icon-volume-off' + }, + text: false + }).next().button({ + icons: { + primary: 'ui-icon-volume-on' + }, + text: false + }); + + }); + } + +/* ---------------------------------------------------------------- + ---------------------------------------------------------------- + CREER JW PLAYER creation + listener */ + + + var currentPosition = 0; + var currentVolume = 50; + var player = null; + + function playerReady(thePlayer) { + //alert("ready"); + player = window.document[thePlayer.id]; + addListeners(); + } + + function addListeners() { + if (player) { + player.addModelListener("TIME", "positionListener"); + player.addControllerListener("VOLUME", "volumeListener"); + player.addPlayPauseListener("PLAY", "state"); + } else { + setTimeout("addListeners()",100); + } + + // et changer les boutons + } + + //function + + function addPlayPauseListener(obj) { + if(obj){ + $jIRI(".control1 button:first").button({ + icons: { + primary: 'ui-icon-pause' + }, + text: false + }); + }else{ + $jIRI(".control1 button:first").button({ + icons: { + primary: 'ui-icon-play' + }, + text: false + }); + } + } + + function positionListener(obj) { + currentPosition = obj.position; + var tmp = document.getElementById("posit"); + if (tmp) { tmp.innerHTML = "position: " + currentPosition; } + $jIRI("#slider-range-min").slider("value", obj.position); + $jIRI("#amount").val(obj.position+" s"); + // afficher annotation + + MyLdt.checkTime(currentPosition); + } + + function volumeListener(obj) { + currentVolume = obj.percentage; + var tmp = document.getElementById("vol"); + if (tmp) { tmp.innerHTML = "volume: " + currentVolume; } + } + + function createPlayer(width,height,url, playerUrl) { + + myUrlFragment = url.split("/"); + // + file = myUrlFragment[myUrlFragment.length-3]+"/"+myUrlFragment[myUrlFragment.length-2]+"/"+myUrlFragment[myUrlFragment.length-1]; + indexofff = url.lastIndexOf(file); + streamer = url.substr(0,indexofff); + alert(url+"="+streamer+" - "+file); + + var flashvars = { + streamer:streamer, + file:file, + //live:"true", + autostart:"true", + controlbar:"none" + } + + var params = { + allowfullscreen:"true", + allowscriptaccess:"always", + wmode:"transparent" + } + + var attributes = { + id:"Ldtplayer1", + name:"Ldtplayer1" + } + + swfobject.embedSWF(playerUrl, "ldtPlaceHolder", width, height, "9.0.115", false, flashvars, params, attributes); + } + + + + + + +/* ---------------------------------------------------------------- + ---------------------------------------------------------------- + +LOAD JSON AND PARSE IT +*/ + + + var MyLdt; + var Durration; + var playerLdtWidth; + var playerLdtHeight; + + function loadJson (width,height,urlJson){ + + playerLdtWidth=width; + playerLdtHeight=height; + + $jIRI.ajax({ + dataType: 'jsonp', + url:urlJson, + success: function(json){ + + //alert("success !"); + + + } + ,error: function(data){ + alert("ERROR : "+data); + } + }); + } + + function callbackLdts(json){ + /* START PARSING ----------------------- */ + /* metas , medias , annotation-types , annotations , lists , tags , views */ + /* # fonction avec 1 seul media et 1 seul annotation type code a cleaner */ + /* # cr�er le player */ + //$jIRI.each(json.medias, function(i,item) { + //}); + $jIRI("
").appendTo("#output"); + MyMedia = new Media(json.medias[0].id,json.medias[0].url,json.medias[0]["dc:duration"],json.medias[0]['dc:title'],json.medias[0]['dc:description']); + MyMedia.createPlayer(playerLdtWidth,playerLdtHeight); + + /* # cr�er lignes */ + /*$jIRI.each(json['annotation-types'], function(i,item) { + });*/ + MyLdt = new Ligne (json['annotation-types'][0].id,json['annotation-types'][0]['dc:title'],json['annotation-types'][0]['dc:description'],json.medias[0]["dc:duration"]); + //alert("duration : "+json.medias[0]["dc:duration"]); + + /* # cr�er les annotations */ + $jIRI.each(json.annotations, function(i,item) { + + MyLdt.addAnnotation( + item.id, + item.begin, + item.end, + item.media, + item.content.title, + item.content.description, + item.content.color); + + }); + $jIRI.each(json.lists, function(i,item) { + trace("lists",""); + }); + $jIRI.each(json.tags, function(i,item) { + trace("tags",""); + }); + $jIRI.each(json.views, function(i,item) { + trace("views",""); + }); + /* END PARSING ----------------------- */ + + } + + function trace (msg,value){ + $jIRI("
"+msg+" : "+value+"
").appendTo("#output"); + } + + + + +/* ---------------------------------------------------------------- + ---------------------------------------------------------------- +INIT player LDT +*/ + + function playerLdt (width,height,file,divId){ + + //$jIRI("#playerLdt").append("
hello
"); + + + $jIRI("#"+divId).append("
\n
\n
\n
\n
\n Get flash to see this player \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
"); + loadJson(width,height,file); + } + + + + + +/* ---------------------------------------------------------------- + ---------------------------------------------------------------- + API player */ + + + function APIplayer (){ + + } + + + +/* ---------------------------------------------------------------- + ---------------------------------------------------------------- + Class Media + + + "http://advene.liris.cnrs.fr/ns/frame_of_reference/ms":"o=0", + "id":"kia_closeup", + "url":"D:/Thibaut/Outils_techno/IRI-LignesDeTemps/media/video/kia_closeup_BQ.flv", + "dc:creator":"tcavalie", + "dc:created":"2010-05-04T00:00:00", + "dc:contributor":"tcavalie", + "dc:modified":"2010-05-04T00:00:00", + "dc:creator.contents":"Abbas Kiarostami", + "dc:created.contents":"1990", + "dc:title":"Close Up is a very very long title", + "dc:description":"Analyse de Close Up", + "dc:duration":"689266" + */ + function Media (id,url,duration,title,description){ + this.id = id; + this.url = url; + this.title = title; + this.description = description; + this.duration = duration; + + this.lignes = new Array(); + this.updatePlayer = updatePlayerMedia; + this.getDuration = getMediaDuration; + this.createPlayer = createPlayerMedia; + + trace("Media ID :",id); + trace("Media URL :",this.url); + trace("- content : color",url); + trace("- content : audio",title); + } + function createPlayerMedia(width,height){ + createPlayer(width,height,this.url,this.duration); + createInterface(width,height,this.duration); + } + function updatePlayerMedia(){ + + } + function getMediaDuration(){ + return (this.duration); + } + function getMediaTitle(){ + return (this.title); + } + + +/* ---------------------------------------------------------------- + ---------------------------------------------------------------- + Class Ligne (annotationType) + + "id":"dp_1", + "dc:creator":"tcavalie", + "dc:created":"2010-04-04T19:09:44", + "dc:contributor":"perso", + "dc:modified":"15/2/2008", + "dc:title":"dqsdkljfh qklsdhf very very very long", + "dc:description":"sdfg sdfg sdfg sdfg" + */ + function Ligne (){ + this.id = id; + this.title = title; + this.description = description; + this.annotations = new Array(); + this.addAnnotation = addAnnotationligne; + this.clickAnnotation= onClickLigneAnnotation; + this.checkTime = checkTimeLigne; + } + + function Ligne (id,title,description,duration){ + this.id = id; + this.title = title; + this.description = description; + // + this.annotations = new Array(); + this.addAnnotation = addLigneAnnotation; + this.checkTime = checkTimeLigne; + this.duration = duration; + trace("LIGNE ","cr�er "); + } + + function addLigneAnnotation(id,begin,end,media,title,description,color){ + var myAnnotation = new Annotation(id,begin,end,media,title,description,color,this.duration); + this.annotations.push(myAnnotation); + trace("LIGNE ","add annotation "); + } + + function onClickLigneAnnotation(id){ + player.sendEvent('SEEK', this.start); + } + + function searchLigneAnnotation(id){ + /*for (){ + }*/ + } + + function listAnnotations(){ + + } + + function checkTimeLigne(time){ + var annotationTempo; + for (var i=0; i < this.annotations.length; ++i){ + var annotationTempo = this.annotations[i]; + //trace("check... ",time+" = "+annotationTempo.begin+" -- "+annotationTempo.end); + //if (time>annotationTempo.begin){ + if (time>annotationTempo.begin/1000 && time "; + + + + $toolTipTemplate = "
" + +"
"+this.title+"
" + +"
"+this.begin+" : "+this.end+"
" + +"
"+this.description+"
" + +"
"; + + + $jIRI("
"+$AnnotationTemplate+"
").appendTo("#Annotations"); + $jIRI("#"+this.id).tooltip({ effect: 'slide'}); + + trace(" ### ","ADD ANOTATION : "+this.begin+" "+this.end+" "+this.title+" | "+startPourcent+" | "+endPourcent+" | duration = "+this.duration); + } + + function tootTipAnnotation() { + // 1 chercher le div correspondant + // 2 y mettre les information + return this.color + ' ' + this.type + ' apple'; + } + + function onRollOverAnnotation(){ + this.tootTip(); + } + + function timeToPourcent(time,timetotal){ + return (parseInt(Math.round(time/timetotal*100))); + } + + +/* ---------------------------------------------------------------- + ---------------------------------------------------------------- + Class tracess */ + + function Tracer (){ + + } + + function addTrace(){ + + } + + + \ No newline at end of file