integ/js/iri-creation-cinecard.js
author Anthony Ly <anthonyly.com@gmail.com>
Wed, 10 Apr 2013 13:01:46 +0200
changeset 25 cc54acb734fb
parent 23 3c2416e4daf6
child 26 12d37f113973
permissions -rw-r--r--
update image resize

$(function(){

$(window).bind('resize', function(){
	setSidebarContentHeight();
});
setSidebarContentHeight();
function setSidebarContentHeight(){
	var newHeight = $(window).height() - $('header').height() - $('footer').height();
	$(".sidebar .content").css('height', newHeight);
}

$(".sidebar .content").mCustomScrollbar({
	advanced:{
	    updateOnContentResize: true
	}
});

$('a.more').bind('click', function(e){
	e.preventDefault();
	var target = $(this).attr('href');
	if($(target).hasClass('less')){
		$(target).removeClass('less');
		$(this).addClass('less');
	}else{
		$(target).addClass('less');
		$(this).removeClass('less');
	}	
});// a.more

$('.stickers a').bind('click', function(e){
	e.preventDefault();
});

//-- API allocine

//-- movie
var urlMovie = 'http://api.allocine.fr/rest/v3/movie?partner='+partnerCode+'&code='+ idMovie;
$.getJSON(urlMovie, function(data) {
	var movie = data.movie;

	//-- title
	var titleMovie = movie.title;
	$('.renkan .wrap-top h2').text(titleMovie);

	//-- stars
	var castMember = movie.castMember;

	$.each(castMember, function(k, v){
		var name =	v.person.name;
		var codeActor = v.person.code;
		var urlPicture;
		if(v.picture !== undefined) {
			urlPicture = v.picture.href;
		}else{
			urlPicture = 'http://fr.web.img3.acsta.net/c_160_213/b_1_d6d6d6/commons/emptymedia/empty_star.jpg';
		}	
		var urlFichePersonne = 'http://www.allocine.fr/personne/fichepersonne_gen_cpersonne='+codeActor+'.html';
		var itemStar = 
			'<li class="cinecard-draggable" draggable="true">'+
				'<a class="tool-info" target="_blank" href="'+ urlFichePersonne +'" title="'+ name +'">'+
					'<img src="'+ urlPicture +'" alt="'+ name +'" />'+
				'</a>'+
			'</li>';
		$('#stars-more').append(itemStar);
	});	

	/* Creating Renkan Template */
	var _posterData = {
			title: movie.title,
			image: movie.poster.href,
			uri: _(movie.link).find(function(l) { return l.rel === "aco:web" }).href,
			position: {
				x: 0,
				y: 0
			},
			description: "Affiche du film",
			size: 4
		},
		_stickers = [
			"img/stickers/pourquoi-j-ai-aime.png",
			"img/stickers/pourquoi-le-voir.png",
			"img/stickers/secrets-et-bonus.png"
		],
		_stickerDistance = 220,
		_filmNode = _renkan.project.addNode(_posterData);
		
	_(_stickers).each(function(v, k) {
		var _a = 2 * Math.PI * k / _stickers.length,
			_stickerData = {
				title: " ",
				position: {
					x: - _stickerDistance * Math.cos(_a),
					y: _stickerDistance * Math.sin(_a)
				},
				image: v,
				size: 0
			}
		_stickerNode = _renkan.project.addNode(_stickerData);
		var _edgeData = {
			from: _filmNode,
			to: _stickerNode
		}
		_renkan.project.addEdge(_edgeData);
	});


});

//-- picture
var urlPicture = 'http://api.allocine.fr/rest/v3/picturelist?partner='+partnerCode+'&subject=movie:'+ idMovie;
$.getJSON(urlPicture, function(data) {
	var media = data.feed.media;
	$.each(media, function(k, v){
		var urlThumb = v.thumbnail.href;
		var rcode = v.rcode;
		var title = v.title;
		var urlAllocine = 'http://www.allocine.fr/film/fichefilm-'+ idMovie +'/photos/detail/?cmediafile='+ rcode;
		var itemImagess = 
			'<li class="cinecard-draggable" draggable="true">'+
				'<a class="tool-info" target="_blank" href="'+ urlAllocine +'" title="'+title+'">'+
					'<img src="'+ urlThumb +'" alt="'+title+'" />'+
				'</a>'+
			'</li>';
		$('#images-more').append(itemImagess);
	});
	resizeImg('#images-more');
});//get

//-- trailer
var urlTrailers = 'http://api.allocine.fr/rest/v3/videolist?partner='+partnerCode+'&mediafmt=flv&subject=movie:'+ idMovie;
$.getJSON(urlTrailers, function(data) {
	var media = data.feed.media;
	$.each(media, function(k, v){
		console.log(v)
		var urlThumbnail = v.thumbnail.href;
		var title = v.title;
		var code = v.code;
		var url = 'http://www.allocine.fr/video/player_gen_cmedia='+code+'&cfilm='+idMovie+'.html';
		var itemVideo = 
			'<li class="cinecard-draggable" draggable="true">'+
				'<a class="tool-info" target="_blank" href="'+ url +'" title="'+title+'">'+
					'<img src="'+ urlThumbnail +'" alt="'+title+'" />'+
				'</a>'+
			'</li>';
		$('#videos-more').append(itemVideo);
		resizeImg('#videos-more');
	});
});


function resizeImg(parentId){
	$(parentId+" img").each(function() {
	    var img = $(this),
	        div = $(this).parent();
	    img.load(function() {
	        var iw = img.width(),
	            ih = img.height(),
	            dw = div.width(),
	            dh = div.height(),
	            scale = Math.max(dw/iw, dh/ih),
	            niw = iw * scale,
	            nih = ih * scale;
	        img.css({
	            width: niw,
	            height: nih,
	            "margin-left": (dw - niw) / 2,
	            "margin-top": (dh - nih) / 3
	        });
	    });
	});
}

//TOOLTIP
var show_tooltip_info_iri = function(elem){
	var tooltip = $('.rate_tooltip'),
		name = elem.attr('title'),
		arrow = tooltip.find('.arrow_l'),
		top = elem.offset().top,
		right = elem.offset().left + elem.width() + arrow.width();
	tooltip.find('p').text(name)
	tooltip.show();
	tooltip.css({
		top : top,
		left : right
	});
}
var hide_tooltip_info_iri = function(elem){
	var tooltip = $('.rate_tooltip');
	tooltip.hide();
}
$(document).on({
    mouseenter: function() {
    	show_tooltip_info_iri($(this));
	},
    mouseleave: function() {
    	hide_tooltip_info_iri($(this));
    }
}, 'a.tool-info');

//Renkan initialization
var _renkan = new Rkns.Renkan({
    user_id: "u-iri",
    language: "fr",
    container: "cinecard",
    show_bins: false,
    show_top_bar: false,
    show_minimap: false,
    show_node_circles: false,
    clip_node_images: false,
    node_size_base: 40,
    default_user_color: "#808080",
    static_url: "renkan/"
});

// Attach drag and drop events
$(".sidebar")
	.on("mousemove", ".cinecard-draggable", function(e) {
		try {
			this.dragDrop();
		}
		catch(err) {}
    })
    .on("dragstart", ".cinecard-draggable", function(e) {
    	var div = document.createElement('div');
    	div.appendChild(this.cloneNode(true));
    	console.log(div.innerHTML);
		try {
			e.originalEvent.dataTransfer.setData("text/html",div.innerHTML);
		}
		catch(err) {
			e.originalEvent.dataTransfer.setData("text",div.innerHTML);
		}
    });

$(".send").click(function() {
	alert("Save JSON data:\n\n" + JSON.stringify(_renkan.project.toJSON()));
});

});