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;
}