function userItem() { let item_data = $('#item-data'); //let item_type = item_data.data('type'); //let item_lang = item_data.data('lang'); let item_id = item_data.data('id'); let item_stats = $('#item-stats'); let like = item_stats.find('.like'); let dislike = item_stats.find('.dislike'); let favorite = item_stats.find('.favorite'); let wish = item_stats.find('.wish'); let visited = item_stats.find('.visited'); let review = item_stats.find('.review'); let contact = item_stats.find('.contact'); let item = { events: function () { let item_stats = ' '; //$('#item-stats > div').off(); like.on('click', function (e) { e.preventDefault(); item.like($(this)); }); dislike.on('click', function (e) { e.preventDefault(); item.dislike($(this)); }); favorite.on('click', function (e) { e.preventDefault(); item.favorite($(this)); }); wish.on('click', function (e) { e.preventDefault(); item.wish($(this)); }); visited.on('click', function (e) { e.preventDefault(); item.visited($(this)); }); review.on('click', function (e) { e.preventDefault(); //item.favorite2($(this)); }); contact.on('click', function (e) { e.preventDefault(); //item.favorite2($(this)); }); $('#b-like, #b-unlike, #b-fav, #b-unfav, #b-route, #b-unroute, #b-share, #insertVote, #updateVote, #b-share, #transporte, #restaurantes, #hospedaje, #id_more-comments, .change_comment, .updateVote, .report_comment, .comment-delete').off(); $('#b-like').click(function (e) { e.preventDefault(); item.addLike($(this)); }); $('#b-unlike').click(function (e) { e.preventDefault(); item.unLike($(this)); }); $('#b-fav').click(function (e) { e.preventDefault(); item.addFav($(this)); }); $('#b-unfav').click(function (e) { e.preventDefault(); item.unFav($(this)); }); $('#b-route').click(function (e) { e.preventDefault(); item.addRoute($(this)); }); $('#b-unroute').click(function (e) { e.preventDefault(); item.unRoute($(this)); }); /* $('input.star').click(function(){ $('#vote_stars').val($(this).val()); }); */ /* $('#modal-comment-form').validator().on('submit', function (e) { if(e.isDefaultPrevented()) { // handle the invalid form... }else{ item.insertVote($(this)); } }); */ $('#insertVote').click(function (e) { if ($('#vote_stars').val().length == '') { e.preventDefault(); $('#rating-status').html('Selecciona tu calificación'); $('#modal-comment .rating-label').html('Haz clic sobre las estrellas para calificar.'); } else if (($('#vote_title').val().length > 0) && ($('#vote_description').val().length > 0)) { e.preventDefault(); $('#rating-status').html(''); $('#rating-status').addClass('loading'); item.insertVote($(this)); } else { $('#rating-status').html('Por favor, completa los campos requeridos'); } }); $('.change_comment').click(function () { item.changeComment($(this).attr('ref')); }); // $('.updateVote').click(function(){ $('#updateVote').click(function (e) { if ($('#vote_stars').val().length == '') { e.preventDefault(); $('#rating-status').html('Selecciona tu calificación'); $('#modal-comment .rating-label').html('Haz clic sobre las estrellas para calificar.'); } if (($('#vote_title').val().length > 0) && ($('#vote_description').val().length > 0)) { e.preventDefault(); $('#rating-status').html(''); $('#rating-status').addClass('loading'); // item.insertVote($(this)); item.updateComment($(this)); } else { $('#rating-status').html('Por favor, completa los campos requeridos'); } // item.updateComment($(this).attr('cid'), $(this).attr('iid')); }); $('.report_comment').click(function () { item.reportComment($(this).attr('ref'), $(this).attr('item')); }); $('.comment-delete').click(function (e) { e.preventDefault(); $('#rating-status').html(''); $('#rating-status').addClass('loading'); item.deleteComment($(this)); }); $('#b-share').click(function () { $('#fb_share,#tw_share').css('opacity', 1); }); $('#hospedaje').click(function () { item.getAlojamientos($(this)); }); $('#restaurantes').click(function () { item.getRestaurants($(this)); }); $('#transporte').click(function () { item.getTours($(this)); }); $('#id_more-comments').click(function (b) { $this = $(this); $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "getMoreComments", item_id: $this.attr("ide"), page: $this.attr("page") }, success: function (data) { if (data.errorCode) { alert(data.errorMessage); return; } console.log(data.comments); if (data.error) { } else { $('#comments-container').append(data.comments); $this.attr('page', parseInt($this.attr("page")) + 10); item.events(); } }, dataType: "json", async: true }); }); $('.tp-leftarrow,.tp-rightarrow').off(); $('.tp-leftarrow').click(function () { var src = $('#background-image').css('background-image'); pos = src.lastIndexOf("/"); src = src.substring(0, pos + 1); //console.log(src); var arraypos = parseInt($(this).attr('pos')); //console.log(backs.size); if (arraypos > 0) var newpos = arraypos - 1; else newpos = backs.length - 1; $(this).attr('pos', newpos); //console.log(newpos); console.log(src + (backs[newpos]) + ')'); $('#background-image').css('background-image', src + (backs[newpos]) + '")'); }); $('.tp-rightarrow').click(function () { var src = $('#background-image').css('background-image'); pos = src.lastIndexOf("/"); src = src.substring(0, pos + 1); //console.log(src); var arraypos = parseInt($(this).attr('pos')); //console.log(backs.size); if (arraypos >= backs.length - 1) var newpos = 0; else newpos = arraypos + 1; $(this).attr('pos', newpos); //console.log(newpos); //console.log(backs[newpos]); $('#background-image').css('background-image', src + (backs[newpos]) + '")'); }); }, like: function (node) { $.ajax({ method: 'POST', url: GR_URL_API, dataType: 'json', async: true, data: { 'option': 'item', 'action': 'like', 'id': item_id }, success: function (data) { if (data.errorCode) { console.log(data.errorMessage); return; } if (data.error) { $('.action-result').html(data.txt); $('#modal-login').modal(); } else { item.setLikeStatus(data.txt, data.likes, data.dislikes); } }, error: function (data) { //ref.remove(); console.log('error'); } }); }, dislike: function (node) { $.ajax({ method: 'POST', url: GR_URL_API, dataType: 'json', async: true, data: { 'option': 'item', 'action': 'dislike', 'id': item_id }, success: function (data) { if (data.errorCode) { console.log(data.errorMessage); return; } if (data.error) { $('.action-result').html(data.txt); $('#modal-login').modal(); } else { item.setLikeStatus(data.txt, data.likes, data.dislikes); } }, error: function (data) { //ref.remove(); console.log('error'); } }); }, setLikeStatus: function (status, likes, dislikes) { switch (status) { case 'liked': like.addClass('active'); dislike.removeClass('active'); break; case 'disliked': like.removeClass('active'); dislike.addClass('active'); break; case 'unliked': case 'undisliked': like.removeClass('active'); dislike.removeClass('active'); break; } item.updateStats(like, likes); item.updateStats(dislike, dislikes); }, setActionStatus: function (node, status, value) { switch (status) { case 'favorited': node.addClass('active'); break; case 'unfavorited': node.removeClass('active'); break; } item.updateStats(node, value); }, setWishStatus: function (status, wishes, visited_value) { switch (status) { case 'wished': wish.addClass('active'); visited.removeClass('active'); break; case 'visited': wish.removeClass('active'); visited.addClass('active'); break; case 'unwished': case 'unvisited': wish.removeClass('active'); visited.removeClass('active'); break; } item.updateStats(wish, wishes); item.updateStats(visited, visited_value); }, favorite: function (node) { $.ajax({ method: 'POST', url: GR_URL_API, dataType: 'json', async: true, data: { 'option': 'item', 'action': 'favorite', 'id': item_id }, success: function (data) { if (data.errorCode) { console.log(data.errorMessage); return; } if (data.error) { $('.action-result').html(data.txt); $('#modal-login').modal(); } else { //item.setLikeStatus(data.txt, data.likes, data.dislikes); item.setActionStatus(favorite, data.txt, data.value); } }, error: function (data) { //ref.remove(); console.log('error'); } }); }, wish: function (node) { $.ajax({ method: 'POST', url: GR_URL_API, dataType: 'json', async: true, data: { 'option': 'item', 'action': 'wish', 'id': item_id }, success: function (data) { if (data.errorCode) { console.log(data.errorMessage); return; } if (data.error) { $('.action-result').html(data.txt); $('#modal-login').modal(); } else { item.setWishStatus(data.txt, data.wishes, data.visited); } }, error: function (data) { //ref.remove(); console.log('error'); } }); }, visited: function (node) { $.ajax({ method: 'POST', url: GR_URL_API, dataType: 'json', async: true, data: { 'option': 'item', 'action': 'visited', 'id': item_id }, success: function (data) { if (data.errorCode) { console.log(data.errorMessage); return; } if (data.error) { $('.action-result').html(data.txt); $('#modal-login').modal(); } else { item.setWishStatus(data.txt, data.wishes, data.visited); } }, error: function (data) { //ref.remove(); console.log('error'); } }); }, stats: function () { $.ajax({ method: 'POST', url: GR_URL_API, dataType: 'json', async: true, data: { 'option': 'item', 'action': 'stats', 'id': item_id }, success: function (data) { if (data.errorCode) { console.log(data.errorMessage); return; } item.updateStats(like, data.likes); item.updateStats(dislike, data.dislikes); item.updateStats(favorite, data.favorites); item.updateStats(wish, data.wishes); item.updateStats(visited, data.visited); item.updateStats(review, 0); item.updateStats(contact, 0); }, error: function (data) { //ref.remove(); console.log('error'); } }); }, updateStats: function (node, value) { node.data('value', value); node.find('span').html(value); }, //not used updateStatAdd: function (node, value) { item.updateStats(node, parseInt(node.data('value')) + value); }, stats_status: function () { $.ajax({ method: 'POST', url: GR_URL_API, dataType: 'json', async: true, data: { 'option': 'item', 'action': 'stats_status', 'id': item_id }, success: function (data) { if (data.errorCode) { console.log(data.errorMessage); return; } if (data.like) like.addClass('active'); if (data.dislike) dislike.addClass('active'); if (data.favorite) favorite.addClass('active'); if (data.wish) wish.addClass('active'); if (data.visited) visited.addClass('active'); //item.updateStats(like, data.likes); /* review.find('span').html('500'); contact.find('span').html('600'); */ }, error: function (data) { //ref.remove(); console.log('error'); } }); }, addLike: function (b) { console.log(b); $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "like", item_id: b.attr("ide") }, success: function (data) { if (data.errorCode) { alert(data.errorMessage); return; } if (data.error) { $('.action-result').html(data.txt); $('#modal-login').modal(); } else { b.attr('id', 'b-unlike'); b.attr('class', 'active'); // b.find('span').html(data.txt); item.events(); } }, dataType: "json", async: true }); }, unLike: function (b) { console.log(b); $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "unlike", item_id: b.attr("ide") }, success: function (data) { if (data.errorCode) { alert(data.errorMessage); return; } if (data.error) { $('.action-result').html(data.txt); $('#modal-login').modal(); } else { b.attr('id', 'b-like'); b.attr('class', ''); // b.find('span').html(data.txt); item.events(); } }, dataType: "json", async: true }); }, addFav: function (b) { $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "addFavourite", item_id: b.attr("ide") }, success: function (data) { if (data.errorCode) { alert(data.errorMessage); return; } if (data.error) { $('.action-result').html(data.txt); $('#modal-login').modal(); } else { b.attr('id', 'b-unfav'); b.attr('class', 'active'); // b.find('span').html(data.txt); item.events(); } }, dataType: "json", async: true }); }, unFav: function (b) { $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "quitFavourite", item_id: b.attr("ide") }, success: function (data) { if (data.errorCode) { alert(data.errorMessage); return; } if (data.error) { $('.action-result').html(data.txt); $('#modal-login').modal(); } else { b.attr('id', 'b-fav'); b.attr('class', ''); // b.find('span').html(data.txt); item.events(); } }, dataType: "json", async: true }); }, addRoute: function (b) { $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "addRoute", item_id: b.attr("ide") }, success: function (data) { if (data.errorCode) { alert(data.errorMessage); return; } if (data.error) { $('.action-result').html(data.txt); $('#modal-login').modal(); } else { b.attr('id', 'b-unroute'); b.attr('class', 'active'); // b.find('span').html(data.txt); item.events(); } }, dataType: "json", async: true }); }, unRoute: function (b) { $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "quitRoute", item_id: b.attr("ide") }, success: function (data) { if (data.errorCode) { alert(data.errorMessage); return; } if (data.error) { $('.action-result').html(data.txt); $('#modal-login').modal(); } else { b.attr('id', 'b-route'); b.attr('class', ''); // b.find('span').html(data.txt); item.events(); } }, dataType: "json", async: true }); }, insertVote: function (b) { $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "insertVote", // item_id: b.attr("ide"), item_id: $('#vote_item_id').val(), rate: $('#vote_stars').val(), title: $('#vote_title').val(), text: $('#vote_description').val() }, success: function (data) { $('#rating-status').removeClass('loading'); if (data.errorCode) { alert(data.errorMessage); return; } if (data.error) { $('#rating-status').addClass('alert alert-error'); $('#rating-status').html(data.txt); $('#modal-login').modal(); } else { $('#rating-status').addClass('alert alert-success'); $('#rating-status').html(data.txt); // $('#comments-container').append(data.html); // alert(data.html); $('.userInterface > .comments').prepend(data.html); $('#b-rate').addClass('active'); $('#insertVote').remove(); $('#vote_id').remove(); $('#modal-comment .modal-footer').prepend(''); $('#modal-comment .modal-footer').prepend(''); // $('#vote_stars, #vote_description, #vote_title').val(''); item.events(); $('.modal').modal('hide'); $('.no-comments').hide(); } }, dataType: "json", async: true }); }, getAlojamientos: function (b) { item.clearMarkers(); $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "getAlojamientos", lat: b.attr("lat"), lon: b.attr("lon") }, success: function (data) { console.log() if (data.errorCode) { alert(data.errorMessage); return; } if (data.data.length) { setMarkers(item.parseMarker(data.data)); } else { $('#noitems').click(); } }, dataType: "json", async: true }); }, getRestaurants: function (b) { item.clearMarkers(); $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "getRestaurants", lat: b.attr("lat"), lon: b.attr("lon") }, success: function (data) { console.log() if (data.errorCode) { alert(data.errorMessage); return; } if (data.data.length) { setMarkers(item.parseMarker(data.data)); } else { $('#noitems').click(); } }, dataType: "json", async: true }); }, getTours: function (b) { item.clearMarkers(); $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "getTours", lat: b.attr("lat"), lon: b.attr("lon") }, success: function (data) { console.log() if (data.errorCode) { alert(data.errorMessage); return; } if (data.data.length) { setMarkers(item.parseMarker(data.data)); } else { $('#noitems').click(); } }, dataType: "json", async: true }); }, clearMarkers: function () { for (var i = 0; i < markers.length; i++) { markers[i].setMap(null); } markers.length = 0; }, parseMarker: function (data) { var arrayMarkers = []; data.forEach(function (item) { console.log(item); var m = { location_latitude: item.item_latitude, location_longitude: item.item_longitude, item_image: item.item_image, name_point: item.language_item_title, description_point: item.language_short_desc, url_point: item.item_url, item_poi: item.item_poi }; arrayMarkers.push(m); }); return arrayMarkers; }, changeComment: function (c) { //Cambia el comentario por la caja apropiada para modificarlo $.ajax({ type: "POST", url: GR_URL_API, data: { option: "raymi", action: "changeComment", c: c }, success: function (data) { console.log() if (data.errorCode) { alert(data.errorMessage); return; } $('.update_form_' + c).html(data.html); $('.update_form_' + c + ' input.star').click(function () { console.log($(this)); $('#vote_stars_' + c).val($(this).val()); }); item.events(); }, dataType: "json", async: true }); }, updateComment: function (b) { $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "updateVote", // item_id: item, // item_id: b.attr("ide"), item_id: $('#vote_item_id').val(), vote_id: $('#vote_id').val(), rate: $('#vote_stars').val(), title: $('#vote_title').val(), text: $('#vote_description').val() }, success: function (data) { $('#rating-status').removeClass('loading'); if (data.error) { $('#rating-status').addClass('alert alert-error'); $('#rating-status').html(data.txt); $('#modal-login').modal(); } else { $('#rating-status').addClass('alert alert-success'); $('#rating-status').html(data.txt); // $('#comments-container').append(data.html); // alert(data.html); $('.userInterface > .comments #vote_' + $('#vote_id').val()).replaceWith(data.html); item.events(); $('.modal').modal('hide'); } /* if(data.errorCode) { alert(data.errorMessage); return; } if(data.error) { $('.error-rating_'+vote).html(data.txt); } else { $('.comment_cont_'+vote+' .update_form_'+vote).html(data.html) item.events(); } */ }, dataType: "json", async: true }); }, reportComment: function (vote, item) { $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "reportComment", vote_id: vote, item_id: item }, success: function (data) { if (data.errorCode) { alert(data.errorMessage); return; } alert(data.txt); }, dataType: "json", async: true }); }, deleteComment: function (b) { if (confirm('¿Está seguro que de desea eliminar el comentario?')) $.ajax({ type: "POST", url: GR_URL_API, data: { option: "item", action: "deleteVote", // item_id: b.attr("ide"), item_id: $('#vote_item_id').val(), vote_id: $('#vote_id').val() }, success: function (data) { $('#rating-status').removeClass(); if (data.error) { $('#rating-status').addClass('alert alert-error'); $('#rating-status').html(data.txt); $('#modal-login').modal(); } else { $('#rating-status').addClass('alert alert-success'); $('#rating-status').html(data.txt); $('.userInterface > .comments #vote_' + $('#vote_id').val()).remove(); $('#b-rate').removeClass('active'); // $('#vote_stars, #vote_description, #vote_title').val(''); $('#vote_description, #vote_title').val(''); $('#modal-comment .modal-footer').prepend(''); $('#updateVote').remove(); $('#vote_id').remove(); item.events(); $('.no-comments').show(); } /* if(data.errorCode) { alert(data.errorMessage); return; } alert('aquí haremos el reporte del comentario'); b.parent().parent().parent().remove(); */ }, dataType: "json", async: true }); } }; return item; }