update_mobile
285
Chico/Mobile/Homepage/article.js
Normal file
@@ -0,0 +1,285 @@
|
||||
|
||||
// LAZY LOADING
|
||||
lazy_load_group.push(
|
||||
{
|
||||
id: 'js-article-home',
|
||||
target: '#js-article-home',
|
||||
loadFn: function () {
|
||||
getTopAricleList();
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'js-article-small-top',
|
||||
target: '#js-article-small-top',
|
||||
loadFn: function () {
|
||||
articleTopMainSmall();
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'js-video-featured-',
|
||||
target: '#js-video-featured-',
|
||||
loadFn: function () {
|
||||
getFeaturedVideo();
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'js-new-article',
|
||||
target: '#js-new-article',
|
||||
loadFn: function () {
|
||||
getNewArticleHome();
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'js-product-hot-article',
|
||||
target: '#js-product-hot-article',
|
||||
loadFn: function () {
|
||||
productHot();
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'js-article-small-home',
|
||||
target: '#js-article-small-home',
|
||||
loadFn: function () {
|
||||
getBottomAricleList();
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'js-article-middle-right',
|
||||
target: '#js-article-middle-right',
|
||||
loadFn: function () {
|
||||
articleCatRight();
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
// SWIPER ARTICLE TOP
|
||||
function swiperArticle() {
|
||||
new Swiper(".swiper-article", {
|
||||
slidesPerView: 1,
|
||||
spaceBetween: 10,
|
||||
centeredSlides: true,
|
||||
loop: true,
|
||||
speed: 1000,
|
||||
autoplay: {
|
||||
delay: 2500,
|
||||
disableOnInteraction: false,
|
||||
pauseOnMouseEnter: "true",
|
||||
},
|
||||
pagination: {
|
||||
el: ".swiper-pagination",
|
||||
clickable: true,
|
||||
},
|
||||
navigation: {
|
||||
nextEl: ".swiper-button-next",
|
||||
prevEl: ".swiper-button-prev",
|
||||
},
|
||||
});
|
||||
}
|
||||
swiperArticle();
|
||||
|
||||
// GET ARTICLE TOP NEAR SWIPER
|
||||
function getTopAricleList() {
|
||||
var params = {
|
||||
action_type: 'list',
|
||||
type: 'article',
|
||||
featured: 1,
|
||||
show: 1
|
||||
}
|
||||
var target = "#js-article-home";
|
||||
Hura.Ajax.get("article", params).then(function (data) {
|
||||
var html = Hura.Template.parse(articleMainTop, data.list.splice(0, 3));
|
||||
Hura.Template.render(target, html);
|
||||
});
|
||||
}
|
||||
|
||||
// GET ARTICLE TOP NEAR SWIPER
|
||||
function getBottomAricleList() {
|
||||
var params = {
|
||||
action_type: 'list',
|
||||
type: 'article',
|
||||
featured: 1,
|
||||
show: 8,
|
||||
}
|
||||
var target = "#js-article-small-home";
|
||||
Hura.Ajax.get("article", params).then(function (data) {
|
||||
var html = Hura.Template.parse(articleMainBottom, data.list.splice(0,3));
|
||||
Hura.Template.render(target, html);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
// GET ARTICLE COL LEFT
|
||||
function articleTopMainSmall() {
|
||||
var params = {
|
||||
action_type: 'list',
|
||||
type: 'article',
|
||||
featured: 1,
|
||||
show: 18
|
||||
}
|
||||
var target = "#js-article-small-top";
|
||||
Hura.Ajax.get("article", params).then(function (data) {
|
||||
var html = Hura.Template.parse(articleMainSmall, data.list.splice(0, 3));
|
||||
Hura.Template.render(target, html);
|
||||
});
|
||||
}
|
||||
|
||||
// GET FEATURED VIDEO
|
||||
function getFeaturedVideo() {
|
||||
var params = {
|
||||
action_type: "featured",
|
||||
type: "article",
|
||||
show: 10,
|
||||
};
|
||||
var smallTarget = "#js-video-featured-";
|
||||
Hura.Ajax.get("article", params).then(function (data) {
|
||||
var html = Hura.Template.parse(featureVideo, data.splice(0, 3));
|
||||
Hura.Template.render(smallTarget, html);
|
||||
});
|
||||
}
|
||||
|
||||
// TIN MỚI NHẤT
|
||||
function getNewArticleHome() {
|
||||
var params = {
|
||||
action_type: "featured",
|
||||
type: "article",
|
||||
show: 18,
|
||||
};
|
||||
|
||||
var target = "#js-new-article";
|
||||
Hura.Ajax.get("article", params).then(function (data) {
|
||||
var html = Hura.Template.parse(newArticle, data.splice(0, 3));
|
||||
Hura.Template.render(target, html);
|
||||
});
|
||||
}
|
||||
|
||||
// TIN TUYỂN DỤNG
|
||||
function articleCatRight() {
|
||||
var params = {
|
||||
action_type: 'list',
|
||||
type: 'article',
|
||||
catId: 5,
|
||||
};
|
||||
var target = "#js-article-middle-right";
|
||||
Hura.Ajax.get("article", params).then(function (data) {
|
||||
//console.log(data)
|
||||
var html = Hura.Template.parse(articleMiddleRight, data.list);
|
||||
Hura.Template.render(target, html);
|
||||
});
|
||||
}
|
||||
|
||||
// GET PRODUCT NEWEST
|
||||
function productHot() {
|
||||
var params = {
|
||||
action_type: "product-list",
|
||||
hotType: "saleoff",
|
||||
sort: "order",
|
||||
};
|
||||
|
||||
var target = "#js-product-hot-article";
|
||||
Hura.Ajax.get("product", params).then(function (data) {
|
||||
//console.log(data.list);
|
||||
var html = Hura.Template.parse(productHotArticle, data.list.splice(0, 5));
|
||||
Hura.Template.render(target, html);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function run_anchor() {
|
||||
var all = document.getElementById("js-find_toc").getElementsByTagName("*");
|
||||
var nodes = [];
|
||||
for(var i = all.length; i--; nodes.unshift(all[i]));
|
||||
var result = document.createElement("ol");
|
||||
buildRec(nodes, result, 2);
|
||||
|
||||
$("<div class='archor-text-group' id='js-toc_container'><div class='toc_title d-flex align-items-center justify-content-between gap-8'><b class='text-18 font-weight-700 d-flex align-items-center text-fint-toc'><img src='/static/assets/default/images/art-detial.png'><span>Nội dung chính</span></b></div><div id='js-outp'>" + result.outerHTML + "</div></div>").insertAfter('#js-first-paragraph');
|
||||
|
||||
$("#js-outp a").each(function(){
|
||||
if($(this).text().trim()!=''){
|
||||
var anchor_name = convertToSlug($(this).text());
|
||||
$(this).attr("onclick", `scrollRec('${anchor_name}')`);
|
||||
}
|
||||
});
|
||||
|
||||
setTimeout(function(){
|
||||
$("#js-toggle").click(function(){
|
||||
$(this).parents("#js-toc_container").find("#js-outp").toggle();
|
||||
});
|
||||
}, 500)
|
||||
}
|
||||
|
||||
function scrollRec(id) {
|
||||
document.getElementById(id).scrollIntoView({behavior:'smooth'});
|
||||
}
|
||||
|
||||
function buildRec(nodes, elm, lv) {
|
||||
var node;
|
||||
// console.log(elm);
|
||||
// filter
|
||||
do {
|
||||
node = nodes.shift();
|
||||
} while(node && !(/^h[123]$/i.test(node.tagName)));
|
||||
// process the next node
|
||||
if(node) {
|
||||
var ul, li, cnt;
|
||||
var curLv = parseInt(node.tagName.substring(1));
|
||||
//console.log(curLv);
|
||||
var stt = 0;
|
||||
if(curLv == lv) { // same level append an il
|
||||
cnt = 0;
|
||||
} else if(curLv < lv && 1<2) { // walk up then append il
|
||||
cnt = 0;
|
||||
do {
|
||||
elm = elm.parentNode.parentNode;
|
||||
cnt--;
|
||||
} while(cnt > (curLv - lv));
|
||||
} else if(curLv > lv) { // create children then append il
|
||||
cnt = 0;
|
||||
do {
|
||||
li = elm.lastChild;
|
||||
if(li == null)
|
||||
li = elm.appendChild(document.createElement("li"));
|
||||
elm = li.appendChild(document.createElement("ol"));
|
||||
cnt++;
|
||||
} while(cnt < (curLv - lv) && 1<2);
|
||||
}
|
||||
|
||||
li = elm.appendChild(document.createElement("li"));
|
||||
// replace the next line with archor tags or whatever you want
|
||||
li.innerHTML = '<a href="javascript:;">'+ node.innerText +'</a>';
|
||||
// recursive call
|
||||
buildRec(nodes, elm, lv + cnt);
|
||||
}
|
||||
}
|
||||
|
||||
function convertToSlug(Text){
|
||||
let newText = Text;
|
||||
return newText
|
||||
.toLowerCase()
|
||||
.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, "a")
|
||||
.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, "e")
|
||||
.replace(/ì|í|ị|ỉ|ĩ/g, "i")
|
||||
.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, "o")
|
||||
.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, "u")
|
||||
.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, "y")
|
||||
.replace(/đ/g, "d")
|
||||
.replace(/\u0300|\u0301|\u0303|\u0309|\u0323/g, "")
|
||||
.replace(/\u02C6|\u0306|\u031B/g, "")
|
||||
.replace(/[^\w ]+/g,'')
|
||||
.replace(/ +/g,'-')
|
||||
;
|
||||
}
|
||||
|
||||
run_anchor();
|
||||
|
||||
$("#js-find_toc h2, #js-find_toc h3").each(function(){
|
||||
if($(this).text().trim()!=''){
|
||||
var anchor_name = convertToSlug($(this).text());
|
||||
$(this).attr("id",anchor_name);
|
||||
$(this).css("scroll-margin-top","80px");
|
||||
}
|
||||
});
|
||||
|
||||
645
Chico/Mobile/Homepage/cart.js
Normal file
@@ -0,0 +1,645 @@
|
||||
|
||||
//Kiểm tra cú pháp Email
|
||||
function validateEmail(Email) {
|
||||
var regaxEmail =
|
||||
/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
||||
if (regaxEmail.test(Email)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function check_field(){
|
||||
var number_regex1 = /^[0]\d{9}$/i;
|
||||
var number_regex2 = /^[0]\d{10}$/i;
|
||||
var error = "";
|
||||
|
||||
var check_name = document.getElementById('buyer_name').value;
|
||||
if(check_name.length < 4) error += "- Tên quá ngắn\n";
|
||||
else if(check_name.indexOf('<script') > -1) {
|
||||
error += "- Họ tên chứa các ký tự không hợp lệ, bạn vui lòng kiểm tra lại\n";
|
||||
}
|
||||
|
||||
var check_email = document.getElementById('buyer_email').value;
|
||||
if(check_email.length < 4) {
|
||||
error += "- Bạn chưa nhập email\n";
|
||||
}
|
||||
if(check_email.length > 4){
|
||||
if(validateEmail(check_email)==false) error += "- Email không hợp lệ\n";
|
||||
}
|
||||
|
||||
var check_add = document.getElementById('buyer_address').value;
|
||||
if(check_add.length < 5) error += "- Địa chỉ quá ngắn\n";
|
||||
else if(check_add.indexOf('<script') > -1) {
|
||||
error += "- Địa chỉ chứa các ký tự không hợp lệ, bạn vui lòng kiểm tra lại\n";
|
||||
}
|
||||
|
||||
var check_tel = document.getElementById('buyer_tel').value;
|
||||
if(check_tel.length < 4) error += "- Bạn chưa nhập SĐT\n";
|
||||
else{
|
||||
if(number_regex1.test(check_tel) == false && number_regex2.test(check_tel) == false) error += "- Số điện thoại chưa chính xác\n";
|
||||
}
|
||||
|
||||
var check_note = document.getElementById('buyer_note').value;
|
||||
if(check_note.indexOf('<script') > -1) {
|
||||
error += "- Ghi chú chứa các ký tự không hợp lệ, bạn vui lòng kiểm tra lại\n";
|
||||
}
|
||||
|
||||
var check_province = document.getElementById('buyer_province').value;
|
||||
if(check_province==0) error += "- Bạn chưa chọn Tỉnh/Thành phố\n";
|
||||
else if(check_province.indexOf('<script') > -1) {
|
||||
error += "- Tỉnh/Thành phố chứa các ký tự không hợp lệ, bạn vui lòng kiểm tra lại\n";
|
||||
}
|
||||
|
||||
var check_district = document.getElementById('js-district-holder').value;
|
||||
if(check_district==0) error += "- Bạn chưa chọn Quận/Huyện\n";
|
||||
else if(check_district.indexOf('<script') > -1) {
|
||||
error += "- Quận/Huyện phố chứa các ký tự không hợp lệ, bạn vui lòng kiểm tra lại\n";
|
||||
}
|
||||
|
||||
if(error != "") {
|
||||
alert(error); return false;
|
||||
}
|
||||
if (check_district > 0 && check_add.length > 5) {
|
||||
var district = $('#js-district-holder option:selected').text();
|
||||
$('#buyer_address').val(check_add +', '+ district)
|
||||
}
|
||||
|
||||
$(".js-send-cart").css("pointer-events","none");
|
||||
$(".js-send-cart").html("ĐANG XỬ LÝ...");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// check input validation section
|
||||
function check_valid_input(pattern, target) {
|
||||
// check valid value for input in cart page
|
||||
$(target).on("input", function () {
|
||||
var stringValue = $(target).val();
|
||||
var status = pattern.test(stringValue);
|
||||
if (status == false) {
|
||||
$(this).css("outline-color", "rgb(194 29 29)"); //red
|
||||
var targetName = $(this).prev().html().replace("*", "");
|
||||
this.setCustomValidity(targetName + " quá ngắn/chưa đúng");
|
||||
this.reportValidity();
|
||||
} else {
|
||||
this.setCustomValidity("");
|
||||
this.reportValidity();
|
||||
$(this).css("outline-color", "rgb(45 182 99)"); //green
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
//for mail
|
||||
function check_valid_input_executer() {
|
||||
// add check func for each input here and call this func to check all input
|
||||
//for mail
|
||||
check_valid_input(
|
||||
/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
|
||||
"#buyer_email"
|
||||
);
|
||||
//for name
|
||||
check_valid_input(/^[a-zA-Z ]{4,20}$/, "#buyer_name");
|
||||
//for phone number
|
||||
check_valid_input(/(84|0[3|5|7|8|9])+([0-9]{8})\b/, "#buyer_tel");
|
||||
//for address
|
||||
check_valid_input(/.{10}/, "#buyer_address");
|
||||
}
|
||||
|
||||
// end check input validation section
|
||||
|
||||
//Get province selection ( lay quan huyen )
|
||||
function getProvince(province_id) {
|
||||
var params = {
|
||||
action_type: 'district-list',
|
||||
province: province_id
|
||||
};
|
||||
var target = '#js-district-holder';
|
||||
|
||||
Hura.Ajax.get("province", params).then(function (data) {
|
||||
//console.log(data);
|
||||
// productTpl is in template: javascript/tpl
|
||||
var html = Hura.Template.parse(provinceTpl, data);
|
||||
Hura.Template.render(target, '<select name="user_info[district]" id="ship_to_district"><option value="0">Quận/Huyện</option>' + html +'</select>');
|
||||
})
|
||||
}
|
||||
|
||||
$(".js-bank-money").click(function(){
|
||||
$("#show-info-bank").addClass("hide");
|
||||
});
|
||||
|
||||
$(".js-bank-online").click(function(){
|
||||
$("#show-info-bank").removeClass("hide");
|
||||
});
|
||||
|
||||
var TOTAL_CART_VALUE_NODE = ".js-total-cart-price";
|
||||
|
||||
function formatCurrency(a) {
|
||||
var b = parseFloat(a)
|
||||
.toFixed(2)
|
||||
.replace(/(\d)(?=(\d{3})+\.)/g, "$1.")
|
||||
.toString();
|
||||
var len = b.length;
|
||||
b = b.substring(0, len - 3);
|
||||
return b;
|
||||
}
|
||||
|
||||
function strToNumber(str) {
|
||||
str += "";
|
||||
while (str.indexOf(".") > 0) {
|
||||
str = str.replace(".", "");
|
||||
}
|
||||
var result = parseFloat(str);
|
||||
return isNaN(result) ? 0 : result;
|
||||
}
|
||||
|
||||
function tinhSoLuongSanPham() {
|
||||
var total_item = 0;
|
||||
|
||||
$(".js-buy-quantity").each(function () {
|
||||
total_item += parseInt($(this).val());
|
||||
});
|
||||
$("#js-total-quantity").html(total_item + " sản phẩm");
|
||||
}
|
||||
|
||||
function checkTotalShippingFee(){
|
||||
var province = $("#id-province").val();
|
||||
var district = $("#id-distric").val();
|
||||
|
||||
var cart_total_before_fee_discount = $("#js-total-before-fee-discount").val();
|
||||
|
||||
|
||||
if(province==0 || district == 0){
|
||||
return;
|
||||
}
|
||||
|
||||
var params = {
|
||||
action : "shipping",
|
||||
action_type: "get-shipping-and-cod",
|
||||
order_value : cart_total_before_fee_discount,
|
||||
province : province,
|
||||
district : district
|
||||
}
|
||||
|
||||
Hura.Ajax.post('shipping',params).then(function(data){
|
||||
//console.log(data)
|
||||
$('#js_price_ship').val(data.ship)
|
||||
calculateCartTotalPrice()
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
//tinh tong gia don hang
|
||||
function calculateCartTotalPrice() {
|
||||
var dom_target = ".js-total-before-fee-cart-price";
|
||||
var total_cart_price = 0;
|
||||
|
||||
$(".item-cart-price").each(function () {
|
||||
total_cart_price += Hura.Util.strToNumber($(this).html());
|
||||
});
|
||||
|
||||
//log for other reference
|
||||
$("#js-total-before-fee-discount").val(total_cart_price);
|
||||
|
||||
//giam gia khac: voucher, membership, loyalty point conversion
|
||||
var total_discount = 0;
|
||||
total_discount += Number($("#js-discount-voucher").val());
|
||||
total_discount += parseInt($("#js-discount-membership").val());
|
||||
|
||||
var voucher_value = parseInt($("#js-discount-voucher").val());
|
||||
|
||||
//phi khac: shipping, COD...
|
||||
var total_other_fee = 0;
|
||||
total_other_fee += parseInt($("#js-fee-shipping").val());
|
||||
total_other_fee += parseInt($("#js-fee-cod").val());
|
||||
//console.log(total_discount);
|
||||
|
||||
var priceFreeship = parseInt($('#js_price_freeship').val());
|
||||
|
||||
if($('#js_price_ship').val() == "nomal"){
|
||||
$("#js-inner-ship").html(`
|
||||
<div class="cart-customer-total d-flex align-items-center justify-content-between">
|
||||
<div>
|
||||
<span class="text">Phí vận chuyển: </span>
|
||||
</div>
|
||||
<p class="cart-customer-total-price">Chưa tính</p>
|
||||
</div>
|
||||
`);
|
||||
|
||||
$(dom_target).html(formatCurrency(total_cart_price)+' đ');
|
||||
$(TOTAL_CART_VALUE_NODE).html(formatCurrency(total_cart_price - total_discount )+' đ');
|
||||
|
||||
}else{
|
||||
var priceShip = parseInt($('#js_price_ship').val());
|
||||
if(total_cart_price >= priceFreeship || priceShip == 0){
|
||||
//console.log(total_cart_price);
|
||||
//console.log(priceFreeship)
|
||||
$("#js-inner-ship").html(`
|
||||
<div class="cart-customer-total d-flex align-items-center justify-content-between">
|
||||
<div>
|
||||
<span class="text">Phí vận chuyển: </span>
|
||||
</div>
|
||||
<p class="cart-customer-total-price">Freeship</p>
|
||||
</div>
|
||||
`);
|
||||
|
||||
$(dom_target).html(formatCurrency(total_cart_price)+' đ');
|
||||
$(TOTAL_CART_VALUE_NODE).html(formatCurrency(total_cart_price - total_discount )+' đ');
|
||||
|
||||
}else{
|
||||
var minusPriceShip = priceFreeship - total_cart_price;
|
||||
//console.log(total_cart_price);
|
||||
//console.log(priceFreeship)
|
||||
$("#js-inner-ship").html(`
|
||||
<div class="cart-customer-total d-flex align-items-center justify-content-between">
|
||||
<div>
|
||||
<span class="text">Phí vận chuyển: </span>
|
||||
</div>
|
||||
<p class="cart-customer-total-price">${formatCurrency(priceShip) + ' đ'}</p>
|
||||
</div>
|
||||
<div class="text-ship d-flex justify-content-between">
|
||||
<div class="text-ship-left">
|
||||
Mua thêm <span class="text-red-b" style="color:yellow;font-size:14px;">${formatCurrency(minusPriceShip)} đ</span> để được <span class="text-red-b" style="color:yellow;font-size:14px;"> Freeship</span>
|
||||
</div>
|
||||
<div class="text-ship-right">
|
||||
<a href="/">Mua thêm</a>
|
||||
</div>
|
||||
</div>
|
||||
`);
|
||||
//console.log(total_discount)
|
||||
|
||||
|
||||
$(dom_target).html(formatCurrency(total_cart_price)+' đ');
|
||||
$(TOTAL_CART_VALUE_NODE).html(formatCurrency(total_cart_price - total_discount + priceShip )+' đ');
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//thay doi tong gia cua 1 san pham
|
||||
function changeItemTotalPrice() {
|
||||
var $row = $(this).closest(".js-item-row");
|
||||
var item_type = $row.data("item_type");
|
||||
var price = parseInt($row.find(".js-buy-price").val());
|
||||
var quantity = parseInt($row.find(".js-buy-quantity").val());
|
||||
var total_price = price * quantity;
|
||||
|
||||
//loai bo so luong vo ly
|
||||
if (quantity < 1) {
|
||||
$row.find(".js-buy-quantity").val(1);
|
||||
total_price = 0;
|
||||
}
|
||||
|
||||
$row.find(".item-cart-price").html(formatCurrency(total_price)+' đ');
|
||||
|
||||
calculateCartTotalPrice();
|
||||
|
||||
//console.log("updating cart = " + item_type);
|
||||
|
||||
//save to cart
|
||||
switch (item_type) {
|
||||
case "product":
|
||||
Hura.Cart.Product.update($row.data("item_id"), $row.data("variant_id"), {quantity: quantity,});
|
||||
break;
|
||||
|
||||
case "deal":
|
||||
Hura.Cart.Deal.update($row.data("item_id"), { quantity: quantity });
|
||||
break;
|
||||
|
||||
case "combo":
|
||||
Hura.Cart.Combo.update($row.data("item_id"), { quantity: quantity });
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
}
|
||||
|
||||
//nghe thay doi so luong sp
|
||||
function listenQuantityChange() {
|
||||
var $track_change = $(".js-quantity-change");
|
||||
|
||||
//thay doi so luong sp mua, neu nhap so luong
|
||||
$track_change.on("change", function (e) {
|
||||
var quantity_stock = $(this).attr("data-stock");
|
||||
var $row = $(this).closest(".js-item-row");
|
||||
var current_quantity = $(this).val();
|
||||
|
||||
if($(this).val() < 1) $(this).val(1);
|
||||
|
||||
if(current_quantity > quantity_stock) {
|
||||
alert("Bạn được mua tối đa "+ quantity_stock + " sản phẩm này");
|
||||
$row.find(".js-buy-quantity").val(quantity_stock);
|
||||
changeItemTotalPrice.call(this);
|
||||
tinhSoLuongSanPham.call(this);
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
|
||||
changeItemTotalPrice.call(this);
|
||||
tinhSoLuongSanPham.call(this);
|
||||
});
|
||||
|
||||
//thay doi so luong sp theo - hoac +
|
||||
$track_change.on("click", function (e) {
|
||||
if (e.target.nodeName === "INPUT") return;
|
||||
|
||||
var quantity_change = parseInt(this.getAttribute("data-value"));
|
||||
var $row = $(this).closest(".cart-item-info");
|
||||
var current_quantity = parseInt($row.find(".js-buy-quantity").val());
|
||||
var quantity_stock = parseInt($row.find(".js-buy-quantity").attr("data-stock"));
|
||||
|
||||
//loai bo so luong vo ly
|
||||
if (current_quantity + quantity_change < 1) {
|
||||
$row.find(".js-buy-quantity").val(1);
|
||||
return;
|
||||
}
|
||||
|
||||
if(current_quantity + quantity_change > quantity_stock) {
|
||||
alert("Bạn được mua tối đa "+ quantity_stock + " sản phẩm này");
|
||||
$row.find(".js-buy-quantity").val(quantity_stock);
|
||||
changeItemTotalPrice.call(this);
|
||||
tinhSoLuongSanPham.call(this);
|
||||
return ;
|
||||
}
|
||||
|
||||
$row.find(".js-buy-quantity").val(current_quantity + quantity_change);
|
||||
|
||||
//then update
|
||||
changeItemTotalPrice.call(this);
|
||||
tinhSoLuongSanPham.call(this);
|
||||
});
|
||||
}
|
||||
|
||||
function deleteCart(){
|
||||
let product_ids = [];
|
||||
$(".js-delete-item").each(function(){
|
||||
var $row = $(this).closest(".js-item-row");
|
||||
var item_id = $row.data("item_id");
|
||||
var variant_id = $row.data("variant_id");
|
||||
product_ids.push({item_id: item_id, variant_id: variant_id})
|
||||
$row.remove();
|
||||
});
|
||||
deleteAllCart(product_ids);
|
||||
}
|
||||
|
||||
async function deleteAllCart(product_ids){
|
||||
for(let i = 0; i < product_ids.length; i++) {
|
||||
let item_id = product_ids[i].item_id;
|
||||
let variant_id = product_ids[i].variant_id;
|
||||
await Hura.Cart.Product.remove(item_id, variant_id);
|
||||
}
|
||||
|
||||
setTimeout(function(){
|
||||
if($(".js-item-row").length==0){ location.reload();}
|
||||
},500);
|
||||
|
||||
}
|
||||
|
||||
function downloadCartImage() {
|
||||
var seconds = new Date().getTime() / 1000;
|
||||
var print_url = "{{ global.domain }}/print/user.php?view=cart&f="+parseInt(seconds)+"&uid="+Hura.User.getUserId();
|
||||
|
||||
window.location = "https://screenshot.hurasoft.com/screenshot.php?url=" + encodeURIComponent(print_url);
|
||||
}
|
||||
|
||||
|
||||
//nghe xoa san pham
|
||||
function listenDeleteCartItem() {
|
||||
$(".item-cart-icon").on("click", function () {
|
||||
var $row = $(this).closest(".cart-item-info");
|
||||
var item_type = $row.data("item_type");
|
||||
var item_id = $row.data("item_id");
|
||||
calculateCartTotalPrice();
|
||||
|
||||
//console.log("deleting item from cart = " + item_type);
|
||||
|
||||
var deleteStatus;
|
||||
//save to cart
|
||||
switch (item_type) {
|
||||
case "product":
|
||||
deleteStatus = Hura.Cart.Product.remove(
|
||||
item_id,
|
||||
$row.data("variant_id")
|
||||
);
|
||||
location.reload();
|
||||
break;
|
||||
case "deal":
|
||||
deleteStatus = Hura.Cart.Deal.remove(item_id);
|
||||
location.reload();
|
||||
break;
|
||||
case "combo":
|
||||
deleteStatus = Hura.Cart.Combo.remove(item_id);
|
||||
location.reload();
|
||||
break;
|
||||
}
|
||||
|
||||
if (deleteStatus) {
|
||||
deleteStatus.then(function () {
|
||||
$row.remove();
|
||||
tinhSoLuongSanPham();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Voucher
|
||||
function debounce(func, wait, immediate) {
|
||||
var timeout;
|
||||
return function() {
|
||||
var context = this, args = arguments;
|
||||
var later = function() {
|
||||
timeout = null;
|
||||
if (!immediate) func.apply(context, args);
|
||||
};
|
||||
var callNow = immediate && !timeout;
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(later, wait);
|
||||
if (callNow) func.apply(context, args);
|
||||
};
|
||||
};
|
||||
|
||||
function voucher_input_change() {
|
||||
$('#js_voucher_input').change();
|
||||
}
|
||||
|
||||
function listenVoucherCode(dom_node) {
|
||||
var cart_total_before_fee_discount = $("#js-total-before-fee-discount").val();
|
||||
var $message_holder = $("#js-voucher-message");
|
||||
|
||||
var check_deal = 0
|
||||
$(".js-item-row").each(function(){
|
||||
var check = $(this).attr("data-check-deal")
|
||||
if (check == 1) {
|
||||
check_deal = 1;
|
||||
}
|
||||
})
|
||||
|
||||
$(dom_node).change(debounce(function(){
|
||||
if (check_deal == 1) {
|
||||
$message_holder.html('<span class="red">Mã voucher không được áp dụng. Vui lòng xóa sản phẩm DEAL trong giỏ hàng</span>');
|
||||
} else{
|
||||
var voucher_code = this.value.trim();
|
||||
|
||||
//update field to send when submit
|
||||
$("#js_coupon_code").val(voucher_code);
|
||||
$("#js-discount-voucher").val(0);
|
||||
$("#price-discount").html('');
|
||||
$message_holder.html('');
|
||||
|
||||
//xu ly hien thi
|
||||
if(voucher_code.length > 2) {
|
||||
var params = {
|
||||
action_type: 'check',
|
||||
code : voucher_code ,
|
||||
order_value : cart_total_before_fee_discount,
|
||||
product_ids : ''
|
||||
}
|
||||
|
||||
Hura.Ajax.post('coupon', params).then(function (data) {
|
||||
//console.log(data);
|
||||
var voucher_info = data;
|
||||
|
||||
if(voucher_info.status == 'error') {
|
||||
//bao loi
|
||||
$message_holder.html(voucher_info.message);
|
||||
return ;
|
||||
}
|
||||
|
||||
$message_holder.html("Bạn đang sử dụng mã coupon/voucher: <b style='color: #f00;font-size: 16px'>" + voucher_info.coupon_info.code + "</b>");
|
||||
$message_holder.show();
|
||||
|
||||
//xu ly khac
|
||||
switch (voucher_info.coupon_info.type) {
|
||||
case "cash": //giam tru tien
|
||||
$("#js-discount-voucher").val(Hura.Util.strToNumber(voucher_info.coupon_info.cash_discount));
|
||||
$("#price-discount").html(formatCurrency(voucher_info.coupon_info.cash_discount));
|
||||
break;
|
||||
|
||||
case "priceoff"://giam gia %
|
||||
//var total_price_in_cart = $('#js-total-before-fee-discount').val();
|
||||
var total_price_in_cart = {% if global.module.name == 'combo_set' %}0{% else %}{{ page.cart_summary.total_value }}{% endif%};
|
||||
var after_discount = Math.ceil( total_price_in_cart * voucher_info.coupon_info.content / 100);
|
||||
$("#js-discount-voucher").val(Hura.Util.strToNumber(after_discount));
|
||||
$("#price-discount").html(formatCurrency(voucher_info.total_cash_discount));
|
||||
break;
|
||||
|
||||
case "pro":
|
||||
//todo:
|
||||
|
||||
break;
|
||||
|
||||
case "other":
|
||||
//todo:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
calculateCartTotalPrice();
|
||||
})
|
||||
}else{
|
||||
$("#js-discount-voucher").val(0);
|
||||
$message_holder.html('');
|
||||
//recalculate total
|
||||
calculateCartTotalPrice();
|
||||
}
|
||||
}
|
||||
},100));
|
||||
|
||||
}
|
||||
|
||||
function getVoucherList(holder) {
|
||||
var params = {
|
||||
action_type: 'get-active-list',
|
||||
limit: 50
|
||||
}
|
||||
|
||||
Hura.Ajax.post('coupon', params).then(function (response) {
|
||||
//console.log(response);
|
||||
|
||||
buildListVoucher(response, holder);
|
||||
|
||||
$(".js-voucher-active").click(function(){
|
||||
$(".js-voucher-active").removeClass('current-voucher');
|
||||
$(this).addClass('current-voucher');
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
function buildListVoucher(response, holder) {
|
||||
var html = '';
|
||||
var current_time = (new Date()).getTime()/1000;
|
||||
|
||||
if (response.total > 0) {
|
||||
Object.keys(response).forEach(function(key, keyIndex) {
|
||||
var data = response[key];
|
||||
Object.keys(data).forEach(function(item, itemIndex) {
|
||||
var status = data[item].can_use_with_cart.status;
|
||||
var code = data[item].code
|
||||
var title = data[item].title;
|
||||
var id_coupon = data[item].id;
|
||||
var to_time = data[item].to_time;
|
||||
var time_left = to_time - current_time;
|
||||
var check_product = data[item].can_use_with_cart.status;
|
||||
|
||||
if (time_left > 0 && check_product == 'yes') {
|
||||
html+=`<div class="voucher-item active-voucher js-voucher-active" onclick="voucherSelected('`+code+`')">`;
|
||||
} else{
|
||||
html+='<div class="voucher-item">';
|
||||
}
|
||||
html+= '<div class="code"> Nhập <b class="d-block text-18">'+code+'</b> </div>';
|
||||
html+= '<div class="text"> <p>'+ title +'</p><i class="circle"></i></div> </div>';
|
||||
})
|
||||
})
|
||||
} else{
|
||||
html+= `
|
||||
<div class="no-voucher text-center">
|
||||
<i class="no-voucher-img lazy" style="background-image:url(/static/assets/default/images/cart-ticket.png)"></i>
|
||||
|
||||
<p class="text-20 font-600 m-0"> Chưa có mã voucher nào ! </p>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
$(holder).html(html);
|
||||
}
|
||||
|
||||
|
||||
function voucherSelected(voucher_coder) {
|
||||
$("#js_voucher_input_pop").val(voucher_coder);
|
||||
$('#js-voucher-popupmessage').html("");
|
||||
|
||||
}
|
||||
|
||||
function voucherActive() {
|
||||
$("#js_voucher_input").val("");
|
||||
$("#js_voucher_input").change();
|
||||
|
||||
var newCode = $("#js_voucher_input_pop").val();
|
||||
$("#js_voucher_input").val(newCode);
|
||||
$("#js_voucher_input").change();
|
||||
close_voucher();
|
||||
|
||||
}
|
||||
|
||||
function open_voucher() {
|
||||
$("#js-popup-voucher").show();
|
||||
$("body").addClass("overflow-hidden");
|
||||
$(".cart-voucher-popup").addClass("active")
|
||||
}
|
||||
|
||||
function close_voucher() {
|
||||
$("#js-popup-voucher").hide();
|
||||
$("body").removeClass("overflow-hidden");
|
||||
$(".js-voucher-active").removeClass('current-voucher');
|
||||
$("#js_voucher_input_pop").val("");
|
||||
$(".cart-voucher-popup").removeClass("active")
|
||||
}
|
||||
|
||||
|
||||
165
Chico/Mobile/Homepage/customer.js
Normal file
@@ -0,0 +1,165 @@
|
||||
|
||||
|
||||
// CHECK FORM RESIGTER
|
||||
function check_field_registor() {
|
||||
var error = "";
|
||||
var email = document.getElementById("email").value;
|
||||
if (ValidateEmail(email)) error += ValidateEmail(email);
|
||||
|
||||
var password = document.getElementById("password").value;
|
||||
if (password.length < 6) error += "- Mật khẩu quá yếu\n";
|
||||
|
||||
var full_name = document.getElementById("full_name").value;
|
||||
if (full_name.length < 2) error += "- Mời bạn nhập đúng tên\n";
|
||||
|
||||
var mobile = document.getElementById("tel").value;
|
||||
if (mobile.length < 9) error += "- Mời bạn nhập đúng số điện thoại\n";
|
||||
|
||||
var address = document.getElementById("address").value;
|
||||
if (address.length < 6) error += "- Mời bạn nhập địa chỉ\n";
|
||||
|
||||
var pass = $("#password").val();
|
||||
var pass1 = $("#password1").val();
|
||||
|
||||
if (pass1 != pass) {
|
||||
error += "- Mật khẩu không trùng khớp. Xin vui lòng nhập lại!";
|
||||
}
|
||||
|
||||
if (error != "") {
|
||||
alert(error);
|
||||
return false;
|
||||
} else {
|
||||
var registerParams = {
|
||||
action_type: "register",
|
||||
info: {
|
||||
email: email,
|
||||
name: full_name,
|
||||
tel: mobile,
|
||||
mobile: mobile,
|
||||
birthday: "",
|
||||
password: password,
|
||||
address: address,
|
||||
},
|
||||
};
|
||||
|
||||
Hura.Ajax.post("customer", registerParams).then(function (data) {
|
||||
//console.log(data);
|
||||
if (data.status == "error" && data.message == "Email exist") {
|
||||
alert("Email đã được đăng ký \n Vui lòng nhập lại! ");
|
||||
} else {
|
||||
alert("Bạn đã đăng ký thành công! Chuyển tiếp sang Đăng nhập.");
|
||||
location.href = "/dang-nhap";
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK FORM LOGIN
|
||||
function check_login() {
|
||||
var error = "";
|
||||
var email = document.getElementById("email").value;
|
||||
if (ValidateEmail(email)) error += ValidateEmail(email);
|
||||
|
||||
var password = document.getElementById("password").value;
|
||||
if (password.length == 0)
|
||||
error += "- Bạn cần nhập mật khẩu để đăng nhập \n";
|
||||
|
||||
if (error != "") {
|
||||
alert(error);
|
||||
return false;
|
||||
} else {
|
||||
Hura.User.login(email, password).then(function (data) {
|
||||
//console.log(data);
|
||||
if (data.status == "error") {
|
||||
alert(data.message);
|
||||
} else {
|
||||
alert("Đăng nhập thành công!");
|
||||
location.href = "/taikhoan";
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK VALIDATION EMAIL
|
||||
function ValidateEmail(emailValue) {
|
||||
var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
|
||||
if (emailValue.length < 6) return "- Mời bạn nhập email!\n";
|
||||
else if (!emailValue.match(mailformat))
|
||||
return "- Email không chính xác, vui lòng nhập lại\n";
|
||||
}
|
||||
|
||||
// TOGGLE SHOW PASSWORD
|
||||
function show_hide_pass(password) {
|
||||
var x = $(password).parents(".item").find(".input-pass").attr("type");
|
||||
|
||||
if (x === "password") {
|
||||
$(password).parents(".item").find(".input-pass").attr("type", "text");
|
||||
} else {
|
||||
$(password).parents(".item").find(".input-pass").attr("type", "password");
|
||||
}
|
||||
}
|
||||
|
||||
// FORGOT PASSWORD
|
||||
function forgotPassword() {
|
||||
var email = document.getElementById("email_register").value;
|
||||
|
||||
Hura.Ajax.customPost("/ajax/reset_password_request.php", {
|
||||
email: email,
|
||||
}).then(function (data) {
|
||||
//console.log(data);
|
||||
$("#js-mess").html(data.message);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var customerOrderTpl = `
|
||||
<tr align="center">
|
||||
<td>
|
||||
<a href="?view=order-detail&id={%= item.orderId %}" style="color: #214186"
|
||||
>#{%= item.orderId %}
|
||||
<span class="color-primary" style="display: block">{%= item.orderDate %}</span>
|
||||
<span class="red-bold" style="display: block">(Xem chi tiết)</span>
|
||||
</a>
|
||||
</td>
|
||||
|
||||
<td align="left">
|
||||
{% for (let itemProduct of item.item_list) { %}
|
||||
<a
|
||||
href="{%= itemProduct.item_info.productUrl %}"
|
||||
style="display: block; font-weight: 500; margin-bottom: 4px"
|
||||
>
|
||||
- {%= itemProduct.item_info.productName %}
|
||||
</a>
|
||||
{% } %}
|
||||
</td>
|
||||
|
||||
<td class="red-bold" style="white-space: nowrap">
|
||||
{%= parseInt(item.totalValue).toLocaleString() %} <u>đ</u>
|
||||
{% if (item.status_id === "0") { %}
|
||||
<p class="color-secondary">Đang xử lý</p>
|
||||
{% } %}
|
||||
</td>
|
||||
</tr>
|
||||
`;
|
||||
|
||||
{% endraw %}
|
||||
|
||||
|
||||
// RENDER CUSTOMER ORDER LIST
|
||||
function getOrderList() {
|
||||
Hura.Ajax.post("account", { action_type: "recent-order" }).then(function (
|
||||
order_list
|
||||
) {
|
||||
//console.log(order_list);
|
||||
|
||||
if (order_list.length > 0) {
|
||||
var html = Hura.Template.parse(customerOrderTpl, order_list);
|
||||
Hura.Template.render("#js-customer-order", html);
|
||||
} else {
|
||||
$(".order-page").html(`<p>Bạn chưa có đơn hàng nào!</p>`);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
282
Chico/Mobile/Homepage/global.js
Normal file
@@ -0,0 +1,282 @@
|
||||
Hura.UI.loadGroup(lazy_load_group);
|
||||
|
||||
// LAZY LOADING BLOCK ELEMENT
|
||||
var lazy_load_group = [];
|
||||
|
||||
var lazyLoadInstance = new LazyLoad({
|
||||
elements_selector: ".lazy"
|
||||
});
|
||||
|
||||
|
||||
|
||||
lazy_load_group.push(
|
||||
{
|
||||
id: 'js-article-featured-footer',
|
||||
target: '#js-article-featured-footer',
|
||||
loadFn: function () {
|
||||
getFooterAricleList();
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
|
||||
//Kiểm tra cú pháp Email
|
||||
function validateEmail(Email) {
|
||||
var regaxEmail =
|
||||
/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
||||
if (regaxEmail.test(Email)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//Kiếm tra cú pháp Số điện thoại
|
||||
var number_regex1 = /^[0]\d{9}$/i;
|
||||
var number_regex2 = /^[0]\d{10}$/i;
|
||||
var error = "";
|
||||
|
||||
|
||||
//Kiểm tra tên chứa ký tự đặc biệt
|
||||
var nameRegex = /[^a-z0-9A-Z_ÀÁÂÃÈÉÊÌÍÒÓÔÕÙÚĂĐĨŨƠàáâãèéêìíòóôõùúăđĩũơƯĂẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼỀỀỂưăạảấầẩẫậắằẳẵặẹẻẽềềểỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪễếệỉịọỏốồổỗộớờởỡợụủứừỬỮỰỲỴÝỶỸửữựỳỵỷỹ]/u;
|
||||
|
||||
|
||||
|
||||
// FORMAT PRICE
|
||||
function formatCurrency(a) {
|
||||
var b = parseFloat(a)
|
||||
.toFixed(2)
|
||||
.replace(/(\d)(?=(\d{3})+\.)/g, "$1.")
|
||||
.toString();
|
||||
var len = b.length;
|
||||
b = b.substring(0, len - 3);
|
||||
return b;
|
||||
}
|
||||
|
||||
// CONVERT STRING TO NUMBER
|
||||
function strToNumber(str) {
|
||||
str += "";
|
||||
while (str.indexOf(".") > 0) {
|
||||
str = str.replace(".", "");
|
||||
}
|
||||
var result = parseFloat(str);
|
||||
return isNaN(result) ? 0 : result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// FIXED HEADER
|
||||
function fixed_header() {
|
||||
$(window).scroll(function () {
|
||||
var distanceFromTop = $(document).scrollTop();
|
||||
|
||||
if (distanceFromTop > 500) {
|
||||
$(".header").addClass("fixed-nav");
|
||||
|
||||
} else {
|
||||
$(".header").removeClass("fixed-nav");
|
||||
}
|
||||
});
|
||||
}
|
||||
fixed_header();
|
||||
|
||||
|
||||
|
||||
|
||||
// ADD ITEM TO CART SUCCESS FORM
|
||||
var successForm = document.querySelector(".success-form");
|
||||
function cartButton(idCart) {
|
||||
Hura.Cart.Product.add(idCart, 0, { quantity: 1 }).then(function (
|
||||
add_status
|
||||
) {
|
||||
if (add_status.status === "error") {
|
||||
alert("Đã tồn tại sản phẩm trong giỏ hàng");
|
||||
} else {
|
||||
modalSuccess();
|
||||
change_cart_amount();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// CALL MODAL SUCCESS
|
||||
function modalSuccess() {
|
||||
successForm.classList.toggle("hide");
|
||||
setTimeout(function () {
|
||||
successForm.classList.toggle("hide");
|
||||
}, 1200);
|
||||
}
|
||||
|
||||
// CHANGE AMOUNT CART HEADER
|
||||
function change_cart_amount() {
|
||||
Hura.Cart.getSummary().then(function (data) {
|
||||
if (data.total_item != 0) {
|
||||
$(".header-features-cart-amount").show().html(data.total_item);
|
||||
$(".name-amount-sp").show();
|
||||
$(".amount-sp-in-cart").show().html("("+ data.total_item +")");
|
||||
} else {
|
||||
$(".header-features-cart-amount").hide();
|
||||
$(".name-amount-sp").hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
change_cart_amount();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function _showMenu(){
|
||||
$("body").addClass("overflow-hidden");
|
||||
$(".global-menu-container").addClass("show");
|
||||
$(".bg-menu").show();
|
||||
}
|
||||
|
||||
|
||||
function _hideMenu(){
|
||||
$("body").removeClass("overflow-hidden");
|
||||
$(".global-menu-container").removeClass("show");
|
||||
$(".bg-menu").hide();
|
||||
}
|
||||
|
||||
$(".js-show-cat-menu").click(function(){
|
||||
$(this).parents(".js-cat-item").find(".js-sub-menu").slideToggle();
|
||||
$(this).toggleClass("fa-angle-down")
|
||||
});
|
||||
|
||||
$('.js-cat-2').click(function(){
|
||||
$(this).parents('.js-cat-2-block').find('.sub-menu-2').slideToggle();
|
||||
$(this).toggleClass('fa-angle-down')
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// GET SEARCH PRODUCT
|
||||
function searchProduct(value) {
|
||||
var params = {
|
||||
action: "search",
|
||||
action_type: "search",
|
||||
content: "product",
|
||||
q: value,
|
||||
};
|
||||
|
||||
Hura.Ajax.get("search", params).then(function (data) {
|
||||
//console.log(data.list);
|
||||
|
||||
if (data.list.length > 0) {
|
||||
$(".search-results").css("display", "block");
|
||||
var html = Hura.Template.parse(searchResultsTpl, data.list);
|
||||
Hura.Template.render(".search-results-list", html);
|
||||
} else {
|
||||
$(".search-results").css("display", "none");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// GET VALUE INPUT
|
||||
function getSearchValue() {
|
||||
$("#js-search-box").on("keyup", function (e) {
|
||||
let value = e.target.value;
|
||||
if (value) {
|
||||
searchProduct(value);
|
||||
} else {
|
||||
$(".search-results").css("display", "none");
|
||||
}
|
||||
});
|
||||
}
|
||||
getSearchValue();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//ĐĂNG KÝ NHẬN TIN
|
||||
function subscribe_newsletter(a) {
|
||||
var email = $(a).val();
|
||||
|
||||
if (email.length > 4) {
|
||||
var params = {
|
||||
action: "customer",
|
||||
action_type: "register-newsletter",
|
||||
info: {
|
||||
name: "Khách hàng nhận bản tin",
|
||||
email: email,
|
||||
},
|
||||
};
|
||||
Hura.Ajax.post("customer", params).then(function (data) {
|
||||
//console.log(data);
|
||||
if (data.status == "success") {
|
||||
alert("Quý khách đã đăng ký thành công");
|
||||
$(a).val("");
|
||||
} else if (data.message == "Email exist") {
|
||||
if (validateEmail(email) == false)
|
||||
alert("Email không hợp lệ");
|
||||
} else {
|
||||
alert("Lỗi xảy ra, vui lòng thử lại");
|
||||
}
|
||||
});
|
||||
} else {
|
||||
alert("Vui lòng nhập địa chỉ email");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//TIN TỨC NỔI BẬT FOOTER
|
||||
function getFooterAricleList() {
|
||||
var params = {
|
||||
action_type: 'list',
|
||||
type: 'article',
|
||||
featured: 1,
|
||||
show: 10
|
||||
}
|
||||
var target = "#js-article-featured-footer";
|
||||
Hura.Ajax.get("article", params).then(function (data) {
|
||||
var html = Hura.Template.parse(articleFeaturedFooter, data.list.splice(0, 2));
|
||||
Hura.Template.render(target, html);
|
||||
convertTimeArticleHome();
|
||||
});
|
||||
}
|
||||
|
||||
function convertTimeArticleHome(){
|
||||
$(".js-art-time").each(function(){
|
||||
var time = $(this).attr("data-time");
|
||||
var day = time.substring(0, 2);
|
||||
var month = time.substring(3, 5);
|
||||
var year = time.substring(6, 10);
|
||||
|
||||
var addDay = $(this).find("span");
|
||||
var addYear = $(this).find("b");
|
||||
|
||||
$(addDay).html(day+'.'+month);
|
||||
$(addYear).html(year);
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$(".js-footer-item").click(function(){
|
||||
$(this).parents(".info-item").find("ul, .support-list").slideToggle();
|
||||
$(this).toggleClass("current");
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// SORT SELECT BOX
|
||||
function sortSelect() {
|
||||
var href = window.location.href;
|
||||
|
||||
$(".js-select-sort-item").each(function () {
|
||||
if ($(this).val() === href) {
|
||||
$(this).attr("selected", "selected");
|
||||
}
|
||||
});
|
||||
}
|
||||
sortSelect();
|
||||
|
||||
137
Chico/Mobile/Homepage/homepage.js
Normal file
@@ -0,0 +1,137 @@
|
||||
|
||||
//SWIPER SLIDER SHOWCASE
|
||||
function swiperShowCase() {
|
||||
new Swiper(".swiper-showcase", {
|
||||
slidesPerView: 1,
|
||||
spaceBetween: 10,
|
||||
centeredSlides: true,
|
||||
loop: true,
|
||||
speed: 1000,
|
||||
preloadImages: false,
|
||||
lazy: true,
|
||||
autoplay: {
|
||||
delay: 2500,
|
||||
disableOnInteraction: false,
|
||||
pauseOnMouseEnter: "true",
|
||||
},
|
||||
pagination: {
|
||||
el: ".swiper-pagination",
|
||||
clickable: true,
|
||||
},
|
||||
navigation: {
|
||||
nextEl: ".swiper-button-next",
|
||||
prevEl: ".swiper-button-prev",
|
||||
},
|
||||
});
|
||||
}
|
||||
swiperShowCase();
|
||||
|
||||
|
||||
|
||||
|
||||
//COLLECTION
|
||||
function swiperCollectionBox() {
|
||||
new Swiper(".homepage-collection-swiper", {
|
||||
slidesPerView: 2.5,
|
||||
spaceBetween: 6,
|
||||
rewind: true,
|
||||
speed: 1000,
|
||||
preloadImages: false,
|
||||
lazy: true,
|
||||
});
|
||||
}
|
||||
swiperCollectionBox();
|
||||
|
||||
|
||||
|
||||
// SET CATEGOTY ITEM LINK TO VIEW MORE BUTTON
|
||||
function setLinkToSeeAllBtn(target, categoryLink) {
|
||||
target
|
||||
.parents(".collection-tab-container")
|
||||
.find(".all-item-collection")
|
||||
.children()
|
||||
.attr("href", categoryLink);
|
||||
}
|
||||
|
||||
|
||||
// COLLECTION SECTION
|
||||
function collectionBoxHandler() {
|
||||
$(".js-collection-item").on("click", function () {
|
||||
var collectionId = $(this).attr("data-id");
|
||||
var collectionLink = $(this).attr("data-url");
|
||||
$(this).parent().find(".active").removeClass("active");
|
||||
$(this).addClass("active");
|
||||
|
||||
getCollectionProduct(collectionId);
|
||||
setLinkToSeeAllBtn($(this), collectionLink);
|
||||
});
|
||||
}
|
||||
|
||||
function getCollectionProduct(collectionId) {
|
||||
var params = {
|
||||
action_type: "list",
|
||||
id: collectionId,
|
||||
show: 18,
|
||||
};
|
||||
var target = "#js-collection-holder";
|
||||
Hura.Ajax.get("collection", params).then(function (data) {
|
||||
var html = Hura.Template.parse(productTpl, data.list);
|
||||
Hura.Template.render(target, html);
|
||||
});
|
||||
}
|
||||
|
||||
function firstClickCollection() {
|
||||
collectionBoxHandler();
|
||||
$(".js-collection-item").first().click();
|
||||
}
|
||||
|
||||
firstClickCollection();
|
||||
|
||||
|
||||
//SWIPER CATEGORY HOMEPAGE
|
||||
function swiperListBox() {
|
||||
new Swiper(".homepage-cat-swiper", {
|
||||
slidesPerView: 2,
|
||||
spaceBetween: 10,
|
||||
rewind: true,
|
||||
speed: 1000,
|
||||
preloadImages: false,
|
||||
lazy: true,
|
||||
});
|
||||
}
|
||||
swiperListBox();
|
||||
|
||||
function lazyCategoryBox(){
|
||||
for (let i = 0; i <= category_to_fetch.length - 1; i++) {
|
||||
let idCat = category_to_fetch[i]
|
||||
lazy_load_group.push({
|
||||
id: "js-product-" + idCat,
|
||||
target: "#js-product-" + idCat,
|
||||
loadFn: function () {
|
||||
getCategoryProduct(idCat)
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
lazyCategoryBox();
|
||||
|
||||
// AJAX CATEGORY BOX - HOT PRODUCT
|
||||
function getCategoryProduct(id) {
|
||||
var params = {
|
||||
action_type: "product-list",
|
||||
category: id,
|
||||
|
||||
};
|
||||
var target = "#js-product-" + id;
|
||||
Hura.Ajax.get("product", params).then(function (data) {
|
||||
//console.log(data.list);
|
||||
if (data.total == 0) {
|
||||
$(target).html(
|
||||
`<h3 class="box-empty font-weight-700 d-flex align-items-center justify-content-center">Sản phẩm đang được cập nhật...!</h3>`
|
||||
);
|
||||
} else {
|
||||
var html = Hura.Template.parse(listCategoryHome, data.list);
|
||||
Hura.Template.render(target, html);
|
||||
}
|
||||
});
|
||||
}
|
||||
BIN
Chico/Mobile/Homepage/img/article.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
Chico/Mobile/Homepage/img/background_collection-mb.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
Chico/Mobile/Homepage/img/banner.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
Chico/Mobile/Homepage/img/chico-footer.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
Chico/Mobile/Homepage/img/credit-1.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
Chico/Mobile/Homepage/img/credit-2.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
Chico/Mobile/Homepage/img/hot-line-footer.png
Normal file
|
After Width: | Height: | Size: 583 B |
BIN
Chico/Mobile/Homepage/img/icon- dm1.png
Normal file
|
After Width: | Height: | Size: 542 B |
BIN
Chico/Mobile/Homepage/img/icon-artilce1.png
Normal file
|
After Width: | Height: | Size: 538 B |
BIN
Chico/Mobile/Homepage/img/image 113.png
Normal file
|
After Width: | Height: | Size: 111 KiB |
BIN
Chico/Mobile/Homepage/img/item-aricle.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
Chico/Mobile/Homepage/img/item_sp.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
Chico/Mobile/Homepage/img/lock (1).png
Normal file
|
After Width: | Height: | Size: 642 B |
BIN
Chico/Mobile/Homepage/img/logo-chico.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
Chico/Mobile/Homepage/img/menu-dm.png
Normal file
|
After Width: | Height: | Size: 270 B |
BIN
Chico/Mobile/Homepage/img/sprite.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
2796
Chico/Mobile/Homepage/index.html
Normal file
26
Chico/Mobile/Homepage/library.css
Normal file
82
Chico/Mobile/Homepage/library.js
Normal file
869
Chico/Mobile/Homepage/producDetail.js
Normal file
@@ -0,0 +1,869 @@
|
||||
|
||||
//FANCYBOX
|
||||
// SWIPER GALLERY - PRODUCT
|
||||
function swiperThumbnails() {
|
||||
const galleryThumbs = new Swiper(".gallery-thumbs", {
|
||||
spaceBetween: 8,
|
||||
slidesPerView: 5,
|
||||
slideToClickedSlide: true,
|
||||
freeMode: true,
|
||||
watchSlidesProgress: true,
|
||||
centerInsufficientSlides: true,
|
||||
navigation: {
|
||||
nextEl: ".swiper-button-next-gallery",
|
||||
prevEl: ".swiper-button-prev-gallery",
|
||||
},
|
||||
});
|
||||
|
||||
const galleryTop = new Swiper(".gallery-top", {
|
||||
spaceBetween: 16,
|
||||
slidesPerView: 1,
|
||||
thumbs: {
|
||||
swiper: galleryThumbs,
|
||||
},
|
||||
// AUTO SILDED AT FISRT AND END
|
||||
on: {
|
||||
slideChange: function () {
|
||||
let activeIndex = this.activeIndex + 1;
|
||||
|
||||
let activeSlide = document.querySelector(
|
||||
`.gallery-thumbs .swiper-slide:nth-child(${activeIndex})`
|
||||
);
|
||||
let nextSlide = document.querySelector(
|
||||
`.gallery-thumbs .swiper-slide:nth-child(${activeIndex + 1})`
|
||||
);
|
||||
let prevSlide = document.querySelector(
|
||||
`.gallery-thumbs .swiper-slide:nth-child(${activeIndex - 1})`
|
||||
);
|
||||
|
||||
if (
|
||||
nextSlide &&
|
||||
!nextSlide.classList.contains("swiper-slide-visible")
|
||||
) {
|
||||
this.thumbs.swiper.slideNext();
|
||||
} else if (
|
||||
prevSlide &&
|
||||
!prevSlide.classList.contains("swiper-slide-visible")
|
||||
) {
|
||||
this.thumbs.swiper.slidePrev();
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
swiperThumbnails()
|
||||
|
||||
|
||||
function fancyBox() {
|
||||
Fancybox.bind('[data-fancybox="gallery"]', {
|
||||
Toolbar: {
|
||||
display: [
|
||||
{
|
||||
id: "counter",
|
||||
position: "center",
|
||||
},
|
||||
"zoom",
|
||||
"slideshow",
|
||||
"fullscreen",
|
||||
"thumbs",
|
||||
"close",
|
||||
],
|
||||
},
|
||||
//click: "unset",
|
||||
on: {
|
||||
initLayout: (fancybox) => {
|
||||
// Create left column
|
||||
const $leftCol = document.createElement("div");
|
||||
$leftCol.classList.add("fancybox__leftCol");
|
||||
|
||||
while (fancybox.$container.firstChild) {
|
||||
$leftCol.appendChild(fancybox.$container.firstChild);
|
||||
}
|
||||
|
||||
// Add elements to DOM
|
||||
fancybox.$container.appendChild(fancybox.$backdrop);
|
||||
fancybox.$container.appendChild($leftCol);
|
||||
fancybox.$leftCol = $leftCol;
|
||||
},
|
||||
"Carousel.ready Carousel.change": (fancybox, carousel, slideIndex) => {
|
||||
// Get index of the current gallery item
|
||||
slideIndex =
|
||||
slideIndex === undefined
|
||||
? carousel.options.initialPage
|
||||
: slideIndex;
|
||||
|
||||
// console.log(slideIndex);
|
||||
// Get link related to current item
|
||||
const $trigger = fancybox.items[slideIndex].$trigger;
|
||||
|
||||
// Get data from `data-info` attribute
|
||||
const data = $trigger.dataset.info || "";
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
fancyBox();
|
||||
|
||||
|
||||
|
||||
|
||||
function callForMe(){
|
||||
var error = "";
|
||||
var number_regex1 = /^[0]\d{9}$/i;
|
||||
var number_regex2 = /^[0]\d{10}$/i;
|
||||
var glPro = "{{ page.product_info.productName}}";
|
||||
var check_name = 'Khách hàng yêu cầu gọi lại';
|
||||
var check_email = '';
|
||||
var check_tel = document.getElementById('phone-now').value;
|
||||
var check_message = "Khách hàng yêu cầu gọi lại sản phẩm: " + glPro;
|
||||
if(check_tel.length < 8) error += "- Bạn chưa nhập số điện thoại\n";
|
||||
else{
|
||||
if(number_regex1.test(check_tel) == false && number_regex2.test(check_tel) == false) error += "- Số điện thoại chưa chính xác\n";
|
||||
}
|
||||
|
||||
if (error == "") {
|
||||
var params = {
|
||||
action : "customer",
|
||||
action_type: "contact",
|
||||
type: "contact",
|
||||
info: {
|
||||
name: check_name,
|
||||
email: check_email,
|
||||
tel: check_tel,
|
||||
title : 'Khách hàng yêu cầu gọi lại sản phẩm: ' + glPro,
|
||||
message: check_message,
|
||||
},
|
||||
};
|
||||
Hura.Ajax.post("customer", params).then(function (data) {
|
||||
alert(
|
||||
"Bạn đã gửi liên hệ thành công\nChúng tôi đã nhận được thông tin và sẽ liên hệ với quý khách trong thời gian sớm nhất"
|
||||
);
|
||||
location.reload();
|
||||
});
|
||||
} else alert(error);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$("#js-showmore").click(function(){
|
||||
$("#js-summary").toggleClass("active");
|
||||
var text = $(this).find("span").html();
|
||||
|
||||
if (text == 'Xem thêm') {
|
||||
$(this).find("span").text("Thu gọn");
|
||||
} else if (text == 'Thu gọn') {
|
||||
$(this).find("span").text("Xem thêm");
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function _showProductDescription() {
|
||||
let height_container = $("#js-product-desc").height();
|
||||
|
||||
$("#js-desc-showmore").css("display","block");
|
||||
|
||||
$("#js-desc-showmore").click(function(){
|
||||
$("#js-product-desc").addClass("active");
|
||||
$("#js-desc-showless").css("display","block");
|
||||
$(this).hide();
|
||||
});
|
||||
$("#js-desc-showless").click(function(){
|
||||
$("#js-product-desc").removeClass("active");
|
||||
$("#js-desc-showmore").css("display","block");
|
||||
$(this).hide();
|
||||
$('html, body').animate({
|
||||
scrollTop: $("#js-product-desc").offset().top - 140
|
||||
},800);
|
||||
});
|
||||
}
|
||||
_showProductDescription();
|
||||
|
||||
|
||||
|
||||
// ADD PRODUCT TO CART - PRODUCT DETAILS
|
||||
function addProductToCart(product_id, variant_id_fake, props) {
|
||||
const props_quantity = parseInt($(".js-buy-quantity-temp").attr("value"));
|
||||
const stockQuantity = parseInt($(".bk-check-out-of-stock").attr("value"));
|
||||
//console.log(props_quantity);
|
||||
|
||||
var variant_id = 0;
|
||||
var data = $('.js-variant-option-container input[type="hidden"]').val();
|
||||
if (data) {
|
||||
var newData = JSON.parse(data)
|
||||
variant_id = newData.variant_id;
|
||||
}
|
||||
|
||||
if (stockQuantity) {
|
||||
var product_props = {
|
||||
quantity: props_quantity,
|
||||
buyer_note: "",
|
||||
};
|
||||
|
||||
Hura.Cart.Product.add(product_id, variant_id, product_props).then(function (
|
||||
response
|
||||
) {
|
||||
// Error response
|
||||
if (response.status === "error") {
|
||||
if (response.error_type == "item-in-cart") {
|
||||
alert("Sản phẩm đã trong giỏ hàng");
|
||||
} else if (response.error_type == "invalid-item-id")
|
||||
alert("ID sản phẩm không đúng");
|
||||
else alert(response.message);
|
||||
}
|
||||
// Success response
|
||||
else {
|
||||
modalSuccess();
|
||||
change_cart_amount();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
alert("Sản phẩm không có sẵn. Vui lòng liên hệ. Xin cảm ơn!")
|
||||
}
|
||||
}
|
||||
|
||||
// BUY NOW
|
||||
function buyNow(product_id, variant_id_fake, props) {
|
||||
addProductToCart(product_id, variant_id_fake, props);
|
||||
const stockQuantityCheck = parseInt($(".bk-check-out-of-stock").attr("value"));
|
||||
if (stockQuantityCheck) {
|
||||
setTimeout(function () {
|
||||
window.location.href = "./cart";
|
||||
}, 1500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// BUY NOW
|
||||
function buyPayInstall(product_id, variant_id_fake, props) {
|
||||
addProductToCart(product_id, variant_id_fake, props);
|
||||
const stockQuantityCheck = parseInt($(".bk-check-out-of-stock").attr("value"));
|
||||
if (stockQuantityCheck) {
|
||||
setTimeout(function () {
|
||||
window.location.href = "./cart?show=tragop";
|
||||
}, 1500);
|
||||
}
|
||||
}
|
||||
|
||||
// LANG NGHE THAY DOI SO LUONG SP
|
||||
function listenQuantityBuy() {
|
||||
const $track_change = $(".js-quantity-change");
|
||||
|
||||
//thay doi so luong sp mua, neu nhap so luong
|
||||
$track_change.on("change", function (e) {
|
||||
$(".js-buy-quantity-temp").attr("value", e.target.value);
|
||||
});
|
||||
|
||||
//thay doi so luong sp theo - hoac +
|
||||
$track_change.on("click", function (e) {
|
||||
if (e.target.nodeName === "INPUT") return;
|
||||
|
||||
let quantity_change = parseInt(this.getAttribute("data-value"));
|
||||
let $row = $(this).closest(".cart-quantity-select");
|
||||
let current_quantity = parseInt($row.find(".js-buy-quantity").val());
|
||||
|
||||
//loai bo so luong vo ly
|
||||
if (current_quantity < 0) {
|
||||
$row.find(".js-buy-quantity").val(0);
|
||||
return;
|
||||
}
|
||||
|
||||
let totalQuantity = current_quantity + quantity_change;
|
||||
|
||||
$row.find(".js-buy-quantity").val(totalQuantity);
|
||||
$(".js-buy-quantity-temp").attr("value", totalQuantity);
|
||||
});
|
||||
}
|
||||
listenQuantityBuy();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function renReplyReview(new_replies){
|
||||
var html = '';
|
||||
|
||||
new_replies.forEach(function(value,item){
|
||||
var check_user = `<span class="avatar">
|
||||
<b class="avatar-user">`+value.user_name+`</b>
|
||||
</span>
|
||||
<b class="name">`+value.user_name+`</b>`;
|
||||
if (value.is_user_admin == 1) {
|
||||
check_user = `<i class="cmt-logo"></i>
|
||||
<b class="name">`+value.user_name+`</b>
|
||||
<i class="qtv">QTV</i>`
|
||||
}
|
||||
|
||||
if(value.is_user_admin == 1 || value.approved == 1){
|
||||
html += `
|
||||
<div class="item_reply">
|
||||
<div class="comment_right">
|
||||
<div class="comment-name">
|
||||
`+check_user+`
|
||||
</div>
|
||||
|
||||
<div class="reply-content">`+value.content+`</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
})
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
|
||||
// COMMENT KHÁCH HÀNG
|
||||
|
||||
const is_admin_login = "no";
|
||||
const customer_info = 0;
|
||||
|
||||
$(document).ready(function () {
|
||||
|
||||
getRatingComment();
|
||||
|
||||
$(".comment-form textarea").focus(function(){
|
||||
$(this).parent().find(".form-input").show();
|
||||
});
|
||||
|
||||
layComment({{ page.product_info.productId }}, "product", "", "", "new");
|
||||
$("#js-show-comment").click(function(){
|
||||
$("#js-box-review").fadeIn();
|
||||
$("#js-show-comment").addClass("hide");
|
||||
$("#js-hide-comment").removeClass("hide");
|
||||
});
|
||||
|
||||
$("#js-hide-comment").click(function(){
|
||||
$("#js-box-review").fadeOut();
|
||||
$("#js-hide-comment").addClass("hide");
|
||||
$("#js-show-comment").removeClass("hide");
|
||||
});
|
||||
|
||||
$("#comment_keyword").keydown(function(e){
|
||||
if(e.keyCode==13){
|
||||
var search_field = $(".search-comment select").val();
|
||||
var keyword = $("#comment_keyword").val();
|
||||
//console.log(search_field +"---"+keyword);
|
||||
}
|
||||
});
|
||||
|
||||
$(".comment-action-list .sort a").click(function(){
|
||||
$(".comment-action-list .sort a").removeClass("current");
|
||||
$(this).addClass("current");
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
function checkReply(is_admin_login, customer_info, replyTo) {
|
||||
var formReply = "";
|
||||
if (is_admin_login == "yes") {
|
||||
formReply =`
|
||||
<div class="input-text" style="margin-bottom: 20px;align-items: center;display: flex;">
|
||||
<p style="margin: 0 10px 0 0;color: #f15a22;">Bạn đang đăng nhập là Admin</p>
|
||||
<input type=hidden id="name`+replyTo+`" value='Admin'/>
|
||||
<input type=hidden id="email`+replyTo+`" value='admin@gmail.com'/>
|
||||
|
||||
<a href="javascript:;" class="send_form" onclick="postComment(`+replyTo+`,'reply')"> Gửi bình luận </a>
|
||||
</div>
|
||||
`;
|
||||
} else if (is_admin_login == "no" && customer_info.length > 0) {
|
||||
formReply =
|
||||
`
|
||||
<div class="input-text">
|
||||
<input type=hidden id="name`+replyTo+`" value=''/>
|
||||
<input type=hidden id="email`+replyTo+`" value=''/>
|
||||
|
||||
<a href="javascript:;" class="send_form" onclick="postComment(`+replyTo+`,'reply')"> Gửi bình luận </a>
|
||||
</div>
|
||||
`;
|
||||
} else
|
||||
formReply =
|
||||
`
|
||||
<div class="comment-form-input" id="comment-form-input-0" style="display: block;">
|
||||
<div class="form-group input-text">
|
||||
<input type="text" id="name`+replyTo+`" placeholder="Họ và tên" name='user_post[user_name]' class="inputText" value=""/>
|
||||
|
||||
<input type="text" id="email`+replyTo+`" placeholder="Email" name='user_post[user_email]' class="inputText" value=""/>
|
||||
|
||||
<a href="javascript:;" class="btn-send-comment send_form" onclick="postComment(`+replyTo+`,'reply')"> Gửi bình luận </a>
|
||||
</div>
|
||||
|
||||
</div>`;
|
||||
|
||||
return formReply;
|
||||
}
|
||||
|
||||
function checkReplyReview(is_admin_login, customer_info , replyTo) {
|
||||
var formReply = '';
|
||||
if( is_admin_login == 'yes') {
|
||||
formReply = `
|
||||
<p class="note">Bạn đang đăng nhập là Admin</p>
|
||||
<input type=hidden id="review-name`+replyTo+`" value='Admin'/>
|
||||
<input type=hidden id="review-email`+replyTo+`" value='admin@gmail.com'/>
|
||||
<input type="button" onclick="postReview(`+replyTo+`,'reply')" value="Gửi" class="btn-send-comment" />
|
||||
`;
|
||||
} else if ( is_admin_login == 'no' && customer_info.length > 0 ) {
|
||||
formReply = `
|
||||
<input type=hidden id="review-name`+replyTo+`" value=''/>
|
||||
<input type=hidden id="review-email`+replyTo+`" value=''/>
|
||||
<input type="button" onclick="postReview(`+replyTo+`,'reply')" value="Gửi" class="btn-send-comment" />
|
||||
`;
|
||||
} else
|
||||
formReply = `
|
||||
<div class="comment-form-input" id="comment-form-input-0" style="display: block;">
|
||||
<div class="form-group clearfix">
|
||||
<input type="text" id="review-name`+replyTo+`" name='user_post[user_name]' class="inputText" placeholder="Họ tên*" value=""/>
|
||||
<input type="text" id="review-email`+replyTo+`" name='user_post[user_email]' class="inputText" placeholder="Email*" value=""/>
|
||||
<input type="button" onclick="postReview(`+replyTo+`,'reply')" value="Gửi" class="btn-send-comment" />
|
||||
</div>
|
||||
</div>`;
|
||||
|
||||
return formReply ;
|
||||
}
|
||||
|
||||
function layComment(productId, item_type, searchText, searchField, sort) {
|
||||
var params = {
|
||||
action_type: "get",
|
||||
item_type: "product",
|
||||
item_id: productId,
|
||||
search: searchText,
|
||||
search_field: searchField,
|
||||
order_by: "new",
|
||||
};
|
||||
|
||||
Hura.Ajax.get("comment", params).then(function (data) {
|
||||
//console.log("comment - ", data);
|
||||
var html = Hura.Template.parse(commentTpl, data);
|
||||
Hura.Template.render("#comment-list", html);
|
||||
|
||||
$(".js-avatar-user").each(function () {
|
||||
var name = $(this).html().substring(0, 1);
|
||||
$(this).html(name);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getReply(commentId) {
|
||||
var replyParams = {
|
||||
action_type: "get-reply",
|
||||
item_id: commentId,
|
||||
};
|
||||
|
||||
var target = "#reply_list_" + commentId;
|
||||
Hura.Ajax.get("comment", replyParams).then(function (data) {
|
||||
// console.log("getReply - ", data);
|
||||
var html = Hura.Template.parse(replyTpl, data);
|
||||
Hura.Template.render(target, html);
|
||||
$(".js-avatar-user").each(function () {
|
||||
var name = $(this).html().substring(0, 1);
|
||||
$(this).html(name);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function send_vote(){
|
||||
var error = "";
|
||||
var idUpload = $('#js-file-upload-id').val();
|
||||
|
||||
if($("#rating-content").val() == '') error+="Bạn chưa nhập nội dung đánh giá\n";
|
||||
if($("#rating-name").val() == '') error+="Bạn chưa nhập tên\n";
|
||||
if($("#rating-email").val() == '') error+="Bạn chưa nhập email\n";
|
||||
if($("#rating-tel").val() == '') error+="Bạn chưa nhập số điện thoại\n";
|
||||
|
||||
if(error!=''){
|
||||
alert(error);
|
||||
return false;
|
||||
}
|
||||
|
||||
var reviewParams = {
|
||||
action_type: "review",
|
||||
info : {
|
||||
item_type : 'product',
|
||||
item_title : `{{ page.product_info.productName }}`,
|
||||
user_name : $("#rating-name").val(),
|
||||
user_email : $("#rating-email").val(),
|
||||
user_tel : $("#rating-tel").val(),
|
||||
user_avatar : '',
|
||||
user_note : '',
|
||||
rate : $("#select-rate-pro input:checked").val(),
|
||||
title : `Đánh giá sản phẩm {{ page.product_info.productName }}`,
|
||||
content : $("#rating-content").val(),
|
||||
files : idUpload
|
||||
}
|
||||
}
|
||||
|
||||
Hura.Ajax.post('customer', reviewParams).then(function (data) {
|
||||
//console.log("data",data);
|
||||
alert('Bạn đã gửi thành công!'); location.reload();
|
||||
})
|
||||
}
|
||||
|
||||
function getRatingComment() {
|
||||
var params = {
|
||||
action_type: "list",
|
||||
search : '',
|
||||
search_field :'',
|
||||
order_by :'new',
|
||||
numPerPage :20,
|
||||
item_type : 'product'
|
||||
};
|
||||
|
||||
|
||||
Hura.Ajax.get("review", params).then(function (data) {
|
||||
//console.log(data);
|
||||
var html = Hura.Template.parse(rating_tpl, data);
|
||||
Hura.Template.render("#js-review-holder", html);
|
||||
})
|
||||
}
|
||||
|
||||
function postComment(id, reply) {
|
||||
if (check_field(id) == false) return false;
|
||||
|
||||
|
||||
if (reply == "") {
|
||||
var item_type = $(".form-post [name='user_post[item_type]']").val();
|
||||
var item_id = $(".form-post [name='user_post[item_id]']").val();
|
||||
var item_title = $(".form-post [name='user_post[item_title]']").val();
|
||||
var title = $(".form-post [name='user_post[title]']").val();
|
||||
var avatar = $(".form-post [name='user_post[user_avatar]']").val();
|
||||
var user_name = $("#name" + id).val();
|
||||
var user_email = $("#email" + id).val();
|
||||
var content = $("#content" + id).val();
|
||||
var rate = $("#rating-review0 input:checked").val();
|
||||
var idUpload = $('#js-file-upload-id').val();
|
||||
|
||||
var params = {
|
||||
action_type: "comment",
|
||||
type :"ajax",
|
||||
info: {
|
||||
item_type : 'product',
|
||||
item_id : '{{ page.product_info.productId }}',
|
||||
item_title : `{{ page.product_info.productName }}`,
|
||||
reply_to : reply_to,
|
||||
user_email : user_email,
|
||||
user_name : user_name,
|
||||
user_avatar : '',
|
||||
user_note : '',
|
||||
rate : 5,
|
||||
title : `{{ page.product_info.productName }}`,
|
||||
content : content,
|
||||
files : ''
|
||||
},
|
||||
};
|
||||
|
||||
// console.log(params);
|
||||
|
||||
Hura.Ajax.post("customer", params).then(function (data) {
|
||||
alert("Bạn đã gửi thành công");
|
||||
location.reload();
|
||||
});
|
||||
} else {
|
||||
var reply_to = id;
|
||||
var item_type = $(".form-reply" + id + "[name='user_post[item_type]']").val();
|
||||
var item_id = $(".form-reply" + id + "[name='user_post[item_id]']").val();
|
||||
var item_title = $(".form-reply" + id + "[name='user_post[item_title]']").val();
|
||||
var title = $(".form-reply" + id + "[name='user_post[title]']").val();
|
||||
var avatar = $(".form-reply" + id + "[name='user_post[user_avatar]']").val();
|
||||
var user_name = $("#name" + id).val();
|
||||
var user_email = $("#email" + id).val();
|
||||
var content = $("#content" + id).val();
|
||||
|
||||
var params = {
|
||||
action_type: "comment-reply",
|
||||
info: {
|
||||
item_type: item_type,
|
||||
item_id: item_id,
|
||||
item_title: item_title,
|
||||
reply_to: reply_to,
|
||||
user_email: user_email,
|
||||
user_name: user_name,
|
||||
user_avatar: "",
|
||||
user_note: "",
|
||||
rate: 5,
|
||||
title: title,
|
||||
content: content,
|
||||
files: "",
|
||||
},
|
||||
};
|
||||
|
||||
Hura.Ajax.post("customer", params).then(function (data) {
|
||||
alert("Bạn đã gửi thành công");
|
||||
location.reload();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function closeCommentBox() {
|
||||
$('#newCommentBox').fadeOut();
|
||||
|
||||
}
|
||||
|
||||
function showCommentBox(id) {
|
||||
|
||||
var error = "";
|
||||
var content = document.getElementById("content"+id).value;
|
||||
if(content=='') error+= "Bạn chưa nhập nội dung\n";
|
||||
if(error==''){
|
||||
$('#newCommentBox').fadeIn();
|
||||
}
|
||||
else {
|
||||
alert(error);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function check_field(id) {
|
||||
var error = "";
|
||||
var name = document.getElementById("name"+id).value;
|
||||
var email = document.getElementById("email"+id).value;
|
||||
|
||||
if(name=='') error+= "Bạn chưa nhập tên\n";
|
||||
if(email=='') error+= "Bạn chưa nhập email\n";
|
||||
|
||||
|
||||
if(error==''){
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
alert(error);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
function check_field_review(id) {
|
||||
var error = "";
|
||||
var name = document.getElementById("review-name"+id).value;
|
||||
var email = document.getElementById("review-email"+id).value;
|
||||
var content = document.getElementById("review-content"+id).value;
|
||||
|
||||
if(name=='') error+= "Bạn chưa nhập tên\n";
|
||||
if(email=='') error+= "Bạn chưa nhập email\n";
|
||||
if(content=='') error+= "Bạn chưa nhập nội dung\n";
|
||||
|
||||
if(error==''){
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
alert(error);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
function postReview(id,reply) {
|
||||
if(check_field_review(id)==false) return false;
|
||||
var reply_to = id;
|
||||
var user_name = $("#review-name"+id).val();
|
||||
var user_email = $("#review-email"+id).val();
|
||||
var content = $("#review-content"+id).val();
|
||||
|
||||
var params = {
|
||||
action_type: "review-reply",
|
||||
type :"ajax",
|
||||
info : {
|
||||
item_type : 'product',
|
||||
item_id : '{{ page.product_info.productId }}',
|
||||
item_title : `{{ page.product_info.productName }}`,
|
||||
reply_to : reply_to,
|
||||
user_email : user_email,
|
||||
user_name : user_name,
|
||||
user_avatar : '',
|
||||
user_note : '',
|
||||
rate : 5,
|
||||
title : `{{ page.product_info.productName }}`,
|
||||
content : content,
|
||||
files : ''
|
||||
}
|
||||
}
|
||||
|
||||
Hura.Ajax.post('customer', params).then(function (data) {
|
||||
alert("Bạn đã gửi thành công");
|
||||
location.reload();
|
||||
})
|
||||
};
|
||||
|
||||
function formatDate(a) {
|
||||
var a = new Date(parseInt(a) * 1000);
|
||||
|
||||
var year = a.getFullYear();
|
||||
var month = a.getMonth() + 1;
|
||||
var date = a.getDate();
|
||||
var hour = a.getHours();
|
||||
var min = a.getMinutes();
|
||||
var sec = a.getSeconds();
|
||||
// var time = date + '/' + month + '/' + year + ' ' + hour + ':' + min + ':' + sec ;
|
||||
var time = date + "/" + month + "/" + year;
|
||||
return time;
|
||||
}
|
||||
|
||||
function closeFormCommentInput() {
|
||||
$(".form-input").hide();
|
||||
}
|
||||
|
||||
function showFormReply(a) {
|
||||
$("#" + a).show();
|
||||
}
|
||||
|
||||
function showReplyForm(id){
|
||||
var element = $("#reply-comment-"+id);
|
||||
$("#reply-comment-"+id).toggle();
|
||||
}
|
||||
|
||||
function closeCommentFormInput(a){
|
||||
$(a).hide();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// POST PRODUCT HISTORY
|
||||
var ITEM_TYPE = 'product';
|
||||
var ITEM_ID = '{{ page.product_info.productId }}';
|
||||
var ITEM_NAME = `{{ page.product_info.productName }}`;
|
||||
var VARIANT_SELECTED = {};
|
||||
|
||||
|
||||
|
||||
// GET PRODUCT RELATIVE
|
||||
function getRelativeProduct() {
|
||||
var categoryID = parseInt($('.section-details').attr('data-item_category-id'));
|
||||
var params = {
|
||||
action_type: "product-list",
|
||||
category: categoryID,
|
||||
};
|
||||
|
||||
var target = "#js-bottom-product-box";
|
||||
|
||||
Hura.Ajax.get("product", params).then(function (data) {
|
||||
//console.log(data.list)
|
||||
var currentProductID = parseInt($('.section-details').attr('data-item_id'));
|
||||
var newDataList = data.list.filter(item => item.id !== currentProductID);
|
||||
|
||||
if (data.list.length > 0) {
|
||||
var html = Hura.Template.parse(productTpl, newDataList);
|
||||
Hura.Template.render(target, html);
|
||||
} else {
|
||||
$("#js-bottom-product-box").html(`<p class="alert-mess">Sản phẩm đang cập nhập</p>`)
|
||||
}
|
||||
|
||||
resetBottomBoxDetails();
|
||||
});
|
||||
}
|
||||
getRelativeProduct();
|
||||
|
||||
// GET PRODUCT HISTORY
|
||||
function getProductHistory() {
|
||||
Hura.Ajax.post('user', { action_type: 'product-view-history' }).then(function (data) {
|
||||
|
||||
var target = '#js-bottom-product-history';
|
||||
|
||||
var html = Hura.Template.parse(productTpl, data.list);
|
||||
Hura.Template.render(target, html);
|
||||
|
||||
resetBottomBoxDetails();
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
function resetBottomBoxDetails() {
|
||||
$(".swiper-wrapper").css("display", "none");
|
||||
|
||||
setTimeout(function () {
|
||||
$(".swiper-wrapper").css("display", "flex");
|
||||
}, 100)
|
||||
}
|
||||
|
||||
resetBottomBoxDetails();
|
||||
// SWIPER BOTTOM PRODUCT BOX
|
||||
function productBottomBoxSwiper() {
|
||||
new Swiper(".bottom-product-box-swiper", {
|
||||
slidesPerView: 2,
|
||||
spaceBetween: 10,
|
||||
rewind: true,
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
productBottomBoxSwiper();
|
||||
|
||||
|
||||
|
||||
// CẤU HÌNH : KÍCH THƯỚC, DUNG LƯỢNG, MÀU SẮC
|
||||
|
||||
function _setVariantColor() {
|
||||
$('#js-variant-holder .js-variant-option-value').each(function () {
|
||||
var variant_key = $(this).attr('data-key');
|
||||
if (variant_key === 'mau-sac') {
|
||||
$(this).addClass('js-variant-color');
|
||||
}
|
||||
});
|
||||
|
||||
$('.js-variant-color').each(function () {
|
||||
var data_color = $(this).attr('data-value').substring(0, 7);
|
||||
$(this).css('background', data_color)
|
||||
});
|
||||
}
|
||||
|
||||
_setVariantColor();
|
||||
function _changePriceVariant() {
|
||||
$('.js-variant-option-value').click(function () {
|
||||
setTimeout(function () {
|
||||
|
||||
var data = JSON.parse($('#js-variant-holder input[type="hidden"]').val());
|
||||
var price = parseInt(data.current_price);
|
||||
var marketPrice = parseInt($('.bk-product-marketPrice').attr("value"));
|
||||
var variantStock = data.current_stock;
|
||||
var variantValue = data.label;
|
||||
|
||||
//console.log(data, price, marketPrice, variantValue)
|
||||
|
||||
$('.js-variant-label').attr("data-label", variantValue);
|
||||
getVariantLabel();
|
||||
|
||||
var variantName = $('.js-variant-label').html();
|
||||
$('.bk-check-out-of-stock').attr("value", variantStock);
|
||||
|
||||
if (variantStock > 0) {
|
||||
$('.js-variant-price').html(formatCurrency(price) + ' <u>đ</u>');
|
||||
$('.bk-product-price').html(price);
|
||||
} else {
|
||||
$('.js-variant-price').html("Hết hàng");
|
||||
}
|
||||
|
||||
$('.bk-product-property').val(variantName)
|
||||
$('.js-variant-name').html(' - (' + variantName + ')');
|
||||
|
||||
if (marketPrice > price && price > 0) {
|
||||
var price_off = 100 - price / marketPrice * 100;
|
||||
$('.js-price-off').html('(-' + formatCurrency(price_off) + '%)');
|
||||
$('.js-variant-marketPrice').show();
|
||||
} else {
|
||||
$('.js-variant-marketPrice').hide();
|
||||
$('.js-price-off').hide();
|
||||
}
|
||||
|
||||
// change image
|
||||
let variant_image = data.image;
|
||||
//console.log(variant_image);
|
||||
if (variant_image != '') {
|
||||
$('.gallery-thumbs .swiper-slide').each(function (index) {
|
||||
var slideThumbsSrc = $(this).children().attr("src");
|
||||
if (variant_image === slideThumbsSrc) {
|
||||
//console.log(index);
|
||||
galleryTop.slideTo(index, 500, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}, 100);
|
||||
});
|
||||
//$('.js-variant-option-value:first-child').click();
|
||||
}
|
||||
_changePriceVariant();
|
||||