hotel_commerce/modules/qlohotelreview/views/js/front/review-list.js
2023-06-26 13:09:26 +05:30

220 lines
7.5 KiB
JavaScript

/**
* 2010-2022 Webkul.
*
* NOTICE OF LICENSE
*
* All right is reserved,
* Please go through LICENSE.txt file inside our module
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future. If you wish to customize this module for your
* needs please refer to CustomizationPolicy.txt file inside our module for more information.
*
* @author Webkul IN
* @copyright 2010-2022 Webkul IN
* @license LICENSE.txt
*/
var circleProgressInitialized = false;
var QhrReview = {
ajaxUrl: qlo_hotel_review_js_vars.review_ajax_link + '?token=' + qlo_hotel_review_js_vars.review_ajax_token,
btnLoadMore: '#btn-load-more-reviews',
markHelpful: function(btnHelpful) {
var idHotelReview = parseInt($(btnHelpful).data('id-hotel-review'));
$.ajax({
url: QhrReview.ajaxUrl + '&rand=' + new Date().getTime(),
type: 'POST',
data: {
ajax: true,
action: 'markReviewHelpful',
id_hotel_review: idHotelReview,
},
dataType: 'JSON',
headers: { 'cache-control': 'no-cache' },
success: function(response) {
if (response.status == true) {
$(btnHelpful).closest('.review').find('.helpful-count span').html(response.count_useful);
$(btnHelpful).fadeOut('slow', function() {
$(btnHelpful).remove();
});
}
}
});
},
reportAbuse: function(btnReportAbuse) {
var idHotelReview = parseInt($(btnReportAbuse).data('id-hotel-review'));
$.ajax({
url: QhrReview.ajaxUrl + '&rand=' + new Date().getTime(),
type: 'POST',
data: {
ajax: true,
action: 'reportAbuse',
id_hotel_review: idHotelReview,
},
dataType: 'JSON',
headers: { 'cache-control': 'no-cache' },
success: function(response) {
if (response.status == true) {
$(btnReportAbuse).fadeOut('slow', function() {
$(btnReportAbuse).remove();
})
}
}
});
},
sortBy: function(idHotel, sortBy) {
var btnLoadMore = QhrReview.btnLoadMore;
$.ajax({
url: QhrReview.ajaxUrl + '&rand=' + new Date().getTime(),
dataType: 'JSON',
data: {
ajax: true,
action: 'sortBy',
id_hotel: idHotel,
sort_by: sortBy,
},
type: 'POST',
headers: { 'cache-control': 'no-cache' },
success: function(response) {
if (response.status == true && response.message == 'HTML_OK') {
$('.review-list').animate({opacity: 0}, 250, 'linear', function() {
$('.review-list').html(response.html);
initRaty(qlo_hotel_review_js_vars.raty_img_path, '.review-list .raty');
$('.review-list').animate({opacity: 1}, 250, 'linear', function() {
if (response.has_next_page) {
$(btnLoadMore).attr('data-next-page', 2);
$(btnLoadMore).show(200);
} else {
$(btnLoadMore).hide(200);
}
});
})
}
}
});
},
loadMore: function(idHotel, sortBy, page) {
var btnLoadMore = QhrReview.btnLoadMore;
$.ajax({
url: QhrReview.ajaxUrl + '&rand=' + new Date().getTime(),
dataType: 'JSON',
data: {
ajax: true,
action: 'getReviews',
id_hotel: idHotel,
sort_by: sortBy,
page: page,
},
type: 'POST',
headers: { 'cache-control': 'no-cache' },
success: function(response) {
if (response.status == true && response.message == 'HTML_OK') {
$('.review-list').append(response.html);
initRaty(qlo_hotel_review_js_vars.raty_img_path, '.review-list .raty');
if (response.has_next_page) {
$(btnLoadMore).show(200);
$(btnLoadMore).attr('data-next-page', page + 1);
} else {
$(btnLoadMore).hide(200);
}
}
}
});
}
}
function initRaty(path, selector = '.raty') {
$(selector).html(''); // reset first to avoid star duplications
$.extend($.raty, { path: path });
$(selector).raty({readOnly: true, hints: null, noRatedMsg: '0'});
}
function initCircleProgress() {
$('.score-circle').each(function (i, v) {
var value = $(v).data('value');
var color = $(v).data('color');
$(v).circleProgress({
value: parseFloat(value),
size: 120,
thickness: '10',
startAngle: -Math.PI / 2,
fill: color,
emptyFill: '#F2F2F2',
});
});
circleProgressInitialized = true;
}
$(document).on('click', '.btn-helpful', function(e) {
e.preventDefault();
QhrReview.markHelpful(this);
});
$(document).on('click', '.btn-report-abuse', function(e) {
e.preventDefault();
QhrReview.reportAbuse(this);
});
$(document).on('click', '.btn-primary-review.view-all', function(e) {
$('.media-list .media-item .img-fancybox').first().click();
});
$(document).on('click', '.img-fancybox', function(e) {
var index = parseInt($(this).data('index'));
if (qlo_hotel_review_js_vars.review_images.length) {
$.fancybox.open(
qlo_hotel_review_js_vars.review_images, {
index: index,
}
);
}
});
$(document).on('click', '.sort-by-option', function(e) {
e.preventDefault();
var idHotel = parseInt($(this).data('id-hotel'));
var sortBy = parseInt($(this).data('value'));
var optionText = $(this).text().trim();
var currentValue = parseInt($(this).closest('.review-sort-by').find('button').attr('data-value'));
if (sortBy != currentValue) {
$(this).closest('.review-sort-by').find('button').attr('data-value', sortBy);
$(this).closest('.review-sort-by').find('button span').first().text(optionText);
QhrReview.sortBy(idHotel, sortBy);
}
});
$(document).on('click', '#btn-load-more-reviews', function(e) {
e.preventDefault();
var btnLoadMore = $(this);
var idHotel = parseInt($(btnLoadMore).data('id-hotel'));
var sortBy = parseInt($('.review-sort-by').find('button').attr('data-value'));
var page = parseInt($(btnLoadMore).attr('data-next-page'));
QhrReview.loadMore(idHotel, sortBy, page);
});
$(document).on('shown.bs.tab', 'a[href="#hotel-reviews"]', function(e) {
if (!circleProgressInitialized) {
// init circle scores
initCircleProgress();
}
});
$(document).ready(function () {
if (typeof qlo_hotel_review_js_vars === 'object' && qlo_hotel_review_js_vars.id_order) {
showOrder(1, qlo_hotel_review_js_vars.id_order, qlo_hotel_review_js_vars.link);
}
// init raty
if (typeof qlo_hotel_review_js_vars === 'object' && qlo_hotel_review_js_vars.raty_img_path) {
initRaty(qlo_hotel_review_js_vars.raty_img_path);
}
// init fancybox
$('.review-images-fancybox').fancybox();
});