/*
* Name : main.js
* Version : 1.1.0
* Author : 1px studio
* Product : prime03
* Date : 2024-09-26
* Desc : multiple section (product/blog swiper, notice)
* -------------------------------------------------
*/
$(function(){
/* PRIME COMMON : s */
// script break in sub page
if (document.getElementById("isIndex")==null) { return; }
/* 레이어 팝업 */
(function e() {
function t(e) {
e.hide()
}
$(".px-layer-popup .btn-cookie-close").on("click", function(e) {
let i = $(this).closest(".px-layer-popup")
, s = i.attr("id");
e.preventDefault(),
$.cookie(s, "1", {
expires: 1
}),
t(i)
}),
$(".px-layer-popup .btn-normal-close").on("click", function(e) {
let i = $(this).closest(".px-layer-popup");
e.preventDefault(),
t(i)
})
}
)();
/* PRIME COMMON : e */
/* 스크롤 시 이벤트 */
gsap.registerPlugin(ScrollTrigger);
let bannerGsap = gsap.timeline();
bannerGsap.to(".banner-text .word-wrap .word", {scrollTrigger: {trigger: ".banner-text", scrub:3, start: "0% 80%", end: "100% 80%"}, transform: "translateY(0px)", opacity: 1, duration: 1, stagger: 0.1, ease: "power2.out"});
/* MAIN SLIDE swiper */
function main_slider() {
const progressCircle = document.querySelector(".main-slide .autoplay-progress svg.fill");
const autoplayDefaultDelay = 3500;
let currentDelay = autoplayDefaultDelay;
let main_swiper = new Swiper(".main-swiper", {
direction: "vertical",
speed: 1000,
loop: false,
slidesPerView: 1,
spaceBetween: 0,
allowTouchMove: false,
centeredSlides: true,
navigation: {
nextEl: ".main-slide .m-next",
prevEl: ".main-slide .m-prev",
},
pagination: {
el: ".main-slide .swiper-pagination",
},
autoplay: {
delay: autoplayDefaultDelay,
disableOnInteraction: false
},
on: {
init: function (swiper) {
$('.main-swiper').addClass('load-init');
$(".main-slide .swiper-pagination").append('
');
// ✅ 첫 슬라이드 delay 강제 반영
const realIndex = swiper.realIndex;
const originalSlides = document.querySelectorAll('.swiper-slide[data-delay]');
const delayAttr = originalSlides[realIndex]?.getAttribute('data-delay');
currentDelay = delayAttr ? parseInt(delayAttr) : autoplayDefaultDelay;
swiper.params.autoplay.delay = currentDelay;
swiper.autoplay.stop();
swiper.autoplay.start();
},
autoplayTimeLeft(swiper, time, percentage) {
progressCircle.style.setProperty("--progress", 1 - (time / currentDelay));
},
slideChange: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
let index = swiper.activeIndex == i ? 0 : swiper.activeIndex - i;
let half_height = swiper.height * 0.5;
let translate = index * half_height;
let bg = swiper.slides[i].querySelector('.main-slide-bg-wrap');
if (bg) bg.style.transform = 'translate3d(0, ' + translate + 'px, 0)';
}
$('.main-swiper').removeClass('load-init');
$(".swiper-pause").removeClass("stop");
},
slideChangeTransitionEnd: function (swiper) {
const realIndex = swiper.realIndex;
const originalSlides = document.querySelectorAll('.swiper-slide[data-delay]');
const delayAttr = originalSlides[realIndex]?.getAttribute('data-delay');
currentDelay = delayAttr ? parseInt(delayAttr) : autoplayDefaultDelay;
swiper.params.autoplay.delay = currentDelay;
swiper.autoplay.stop();
swiper.autoplay.start();
},
touchStart: function (swiper) {
for (let i = 0; i < swiper.slides.length; i++) {
swiper.slides[i].style.transition = '';
}
},
setTransition: function (swiper, speed) {
for (let i = 0; i < swiper.slides.length; i++) {
swiper.slides[i].style.transition = speed + 'ms';
let bg = swiper.slides[i].querySelector('.main-slide-bg-wrap');
if (bg) bg.style.transition = speed + 'ms';
}
}
}
});
$(".swiper-pause").on("click", function (e) {
$(this).toggleClass("stop");
if ($(this).hasClass("stop")) {
main_swiper.autoplay.pause();
} else {
main_swiper.autoplay.resume();
}
});
}
// function main_slider() {
// const progressCircle = document.querySelector(".main-slide .autoplay-progress svg.fill");
// const autoplayDelay = 3500;
// let main_swiper = new Swiper(".main-swiper", {
// direction: "vertical",
// speed: 1000,
// loop: true,
// slidesPerView: 1,
// spaceBetween: 0,
// allowTouchMove: false,
// centeredSlides: true,
// navigation: {
// nextEl: ".main-slide .swiper-button-next",
// prevEl: ".main-slide .swiper-button-prev",
// },
// pagination: {
// el: ".main-slide .swiper-pagination",
// },
// navigation: {
// nextEl: ".main-slide .m-next",
// prevEl: ".main-slide .m-prev",
// },
// autoplay: {
// delay: autoplayDelay,
// disableOnInteraction: false
// },
// on: {
// init : function () {
// $('.main-swiper').addClass('load-init');
// $(".main-slide .swiper-pagination").append('
');
// },
// autoplayTimeLeft(swiper, time, percentage) {
// progressCircle.style.setProperty("--progress", 1-percentage);
// },
// slideChange: function(swiper) {
// for (let i=0; i < swiper.slides.length; i++) {
// let index = swiper.activeIndex==i ? 0 : swiper.activeIndex-i;
// let half_height = swiper.height * 0.5;
// let translate = index * half_height;
// swiper.slides[i].querySelector('.main-slide-bg-wrap').style.transform = 'translate3d(0, ' + translate + 'px, 0)';
// $('.main-swiper').removeClass('load-init');
// }
// $(".swiper-pause").removeClass("stop");
// },
// touchStart: function(swiper) {
// for (let i = 0; i < swiper.slides.length; i++) {
// swiper.slides[i].style.transition = '';
// }
// },
// setTransition: function(swiper, speed) {
// for (let i = 0; i < swiper.slides.length; i++) {
// swiper.slides[i].style.transition = speed + 'ms';
// swiper.slides[i].querySelector('.main-slide-bg-wrap').style.transition = speed + 'ms';
// }
// },
// }
// });
// $(".swiper-pause").on("click", function(e){
// $(this).toggleClass("stop");
// if ($(this).hasClass("stop")) {
// main_swiper.autoplay.pause();
// } else {
// main_swiper.autoplay.resume();
// }
// });
// }
main_slider();
/* product 게시판 추출 */
function product_extraction(_id) {
if ($(_id+".article-list").length == 0) return;
let list = $(_id+".article-list > tbody > tr > td");
let html = ``;
let aos_delay = 0;
list.each(function(){
let href = $(this).find("a").attr("href");
let src = $(this).find(".board_output_imgs").attr("src");
let subject_tag = $(this).find(".board_output_gallery_subject a");
let desc_tag = $(this).find(".board_output_gallery_description");
let td = $(this).find("tr:last-child > td");
let subject = subject_tag.text().trim();
let desc = desc_tag.text().trim();
subject_tag.remove();
desc_tag.remove();
let category = td.text().trim();
html += `
`;
aos_delay += 150;
});
html += '
';
$(_id+".product-swiper").html(html);
$(_id+".article-list").remove();
}
/* PRODUCT swiper 슬라이드 */
function set_product_swiper() {
let product_list = $(".product");
product_list.each(function(){
let product_id = "#"+this.id+" ";
product_extraction(product_id);
new Swiper(product_id+".product-swiper", {
slidesPerView: "auto",
spaceBetween: 15,
slidesOffsetAfter: 15,
resizeObserver: false,
pagination: {
el: product_id+".swiper-pagination",
type: "progressbar",
},
navigation: {
nextEl: product_id+".p-navi-next",
prevEl: product_id+".p-navi-prev",
disabledClass: "p-navi-disabled",
},
});
})
}
set_product_swiper();
/* blog 게시판 추출 */
function blog_extraction(_id) {
if ($(_id+".article-list").length == 0) return;
let list = $(_id+".article-list tr");
let html = ``;
let aos_delay = 0;
list.each(function(i){
let href = $(this).find("a").attr("href");
let src = $(this).find(".board_output_imgs").attr("src");
let subject = $(this).find("td.bd_out1").text().trim();
let desc = $(this).find("td").eq(2).text().trim();
let date = $(this).find("td").eq(3).text();
let category = $(this).find("td").last().text();
let aos = i < 4 ? `data-aos="fade-zoom-in" data-aos-delay="${aos_delay}" data-aos-easing="ease-out-cubic"` : '';
html += `
`;
});
$(_id+".blog-swiper .swiper-wrapper").empty().html(html);
aos_delay += 150;
}
/* BLOG swiper 슬라이드 */
function set_blog_swiper() {
let blog_list = $(".blog");
blog_list.each(function(){
let blog_id = "#"+this.id+" ";
blog_extraction(blog_id);
new Swiper(blog_id+".blog-swiper", {
slidesPerView: 1,
spaceBetween: 0,
resizeObserver: false,
pagination: {
el: blog_id+".swiper-pagination",
type: "progressbar",
},
navigation: {
nextEl: blog_id+".b-navi-next",
prevEl: blog_id+".b-navi-prev",
disabledClass: "b-navi-disabled",
},
breakpoints: {
480: {
slidesPerView: 2,
spaceBetween: 10,
},
768: {
slidesPerView: 3,
spaceBetween: 10,
},
990: {
slidesPerView: 4,
spaceBetween: 15,
},
},
});
});
}
set_blog_swiper();
/* 공지사항 추출 */
function init_notice() {
if ($(".notice .article-list").length == 0) return;
let notice_list = $(".notice");
notice_list.each(function(){
let list = $(this).find(".article-list tr");
let html = "";
let aos_delay = 0;
list.each(function(i){
let a = $(this).find("a");
let href = a.attr("href");
let subject = a.text().trim();
let date = $(this).find("td").eq(2).text();
let desc = $(this).find("td").last().text();
let open = i == 0 ? "open" : "";
let line = i == 0 ? "n-line-1" : "n-line-2";
html += `
`;
});
$(this).find(".tbl").html(html);
$(this).find(".article-list").remove();
aos_delay += 150;
});
}
init_notice();
/* NOTICE open */
$("section.notice .n-title").on("click", function(e){
$(this).next(".n-text").toggleClass("open");
});
AOS.init({
duration: 600,
once: true
});
/* masonry(기공실) 추가 */
function masonry_init() {
if ( $('.masonry-group').length ) {
const masonryGroup = $('.masonry-group');
masonryGroup.imagesLoaded(function() {
masonryGroup.isotope({
itemSelector: '.gallery-item',
columnWidth: '.grid-sizer',
masonry: {
gutter: 20
}
});
});
$('.category-button-wrapper .button-filter').on('click', (e) => {
e.preventDefault();
let $this = $(e.currentTarget);
let filterValue = $this.data('filter');
$('.category-button-wrapper .button-filter').removeClass('active');
$this.addClass('active');
masonryGroup.isotope({ filter: filterValue });
});
}
}
masonry_init();
/* masonry zoom gallery */
function zoom_gallery_init() {
$('.zoom-gallery').magnificPopup({
delegate: 'a',
type: 'image',
closeOnContentClick: false,
closeBtnInside: false,
mainClass: 'mfp-with-zoom mfp-img-mobile',
image: {
verticalFit: true,
},
gallery: {
enabled: true
},
zoom: {
enabled: true,
duration: 300,
opener: function(element) {
return element.find('img');
}
}
});
}
zoom_gallery_init();
});