(() => { const { Handlebars, EventManager } = ShopbySkin; EventManager.on('PAGE_LOAD_COMPLETED', (commonData) => { // console.log(commonData); const sorting = 'REGISTER_YMDT'; // BEST_REVIEW, REGISTER_YMDT const ordering = 'DESC'; const boardType = 'PHOTO'; // PHOTO, REVIEW // const url = `https://shop-api.e-ncp.com/reviews/boards?ordering=${ordering}&pageNumber=1&sortCriterion=${sorting}&boardType=${boardType}`; const url = `https://shop-api.e-ncp.com/reviews/boards?sorting.ordering=${ordering}&pageNumber=1&sorting.sortCriterion=${sorting}&boardType=${boardType}`; fetch(url, { headers: { accept: 'application/json', version: '1.0', clientId: commonData.clientId, platform: 'PC', language: 'ko', }, }) .then((response) => response.json()) .then((data) => { // console.log(data); const template = Handlebars.compile(document.querySelector('#tplPhotoReview').innerHTML); // console.log(template); const chunkData = chunkArray(data?.items, 10); // console.log(chunkData); for (const chunk of chunkData) { // const template = Handlebars.compile(document.querySelector("#tplPhotoReview").innerHTML); let hasNoMoreItems = false; let hasNoItems = false; let list = template({ items: chunk, totalCount: data.totalCount, hasNoMoreItems, isLoaded: true, hasNoItems, viewType: 'GALLERY', }); // console.log(list); document.querySelector('#dev_photo_review').innerHTML += list; } // 평점, 작성일 정보 get, update const items = data?.items || []; // console.log(items); for (const item of items) { const productNo = item?.productInfo?.no || ''; const reviewNo = item?.reviewNo || ''; // console.log(reviewNo); if ('' != productNo && '' != reviewNo) { const url = `https://shop-api.e-ncp.com/products/${productNo}/product-reviews/${reviewNo}`; fetch(url, { headers: { accept: 'application/json', version: '1.0', clientid: commonData.clientId, platform: 'PC', language: 'ko', }, }) .then((response) => response.json()) .then((data) => { const reviewNo = data?.reviewNo || ''; const productRate = data?.productRate || 0; const productPercent = parseFloat((100 / 5) * productRate).toFixed(1); const registerYmdt = data?.registerYmdt || ''; // console.log(productRate); // console.log(registerYmdt); if (document.querySelector(`#percent_photo_${reviewNo}`)?.style) { document.querySelector( `#percent_photo_${reviewNo}` ).style = `width: ${productPercent}%;`; // document.querySelector(`#percent_${reviewNo}`).style = `--rating-fill: ${productPercent}%;`; document.querySelector(`#rating_photo_${reviewNo}`).innerHTML = parseFloat(productRate).toFixed(1); document.querySelector(`#reg_photo_${reviewNo}`).innerHTML = registerYmdt ?.substring(0, 10) .replace(/-/g, '.'); } }); } } }); }); const chunkArray = (array = [], size = 1) => { const chunked = []; let index = 0; while (index < array.length) { chunked.push(array.slice(index, index + size)); index += size; } return chunked; }; })();