Commit 93e6e082 authored by edwin's avatar edwin

extract function, update search with search two url, fix can't download model image bug

parent b2d6d63f
......@@ -87,53 +87,23 @@
document.querySelector("#fetch-lightbox .info-message").innerHTML = "";
for (let SKU of SKUlist) {
// fetch product URL
let currentms = new Date().getTime();
let assetlist = await fetchSKU(SKU, `${baseurl}api/asset?time=${currentms}&t=datacategory%2Fasset&w=${SKU}&r=north&z=${fetchNumber}&c=DEFAULT`);
// determine whether it is product file
// create DOM string (same as innerHTML) then join it and append it
let DOMString = assetlist.map(asset => {
// determine whether it is product file
let classes = "";
if (!(asset.file_extension === "jpg" || asset.file_extension === "gif") ||
asset.filename.includes(`${SKU}_I0`) ||
(asset.filename.includes("goods_") && !asset.filename.includes(SKU)) ||
asset.tags.map(x => x.id).includes("assettype/Poster") || asset.filename.includes("GU_")) {
classes = "is-unrelated";
} else if (asset.filename.includes(`goods_${SKU}_sub`) ||
asset.filename.includes(`_${SKU}_chip`) ||
(asset.filename.match(new RegExp(`^goods_[0-9]{2}_${SKU}$`)) && asset.models.length === 0 && asset.products.length === 1)) {
classes = "is-product";
} else {
classes = "is-model";
}
return `
<div class="asset-item ${classes}">
<div><img src="/api/asset/${asset.id}/thumbnail/medium?r=1" loading="lazy"/></div>
<p>
<span class="asset-SKU">${SKU}</span><br />
<span class="asset-name">${asset.filename}</span>.${asset.file_extension}
</p>
<span class="asset-id" hidden>${asset.id}</span>
<span class="asset-version" hidden>${asset.fileVersion}</span>
<span class="asset-date" hidden>${asset.updatedDate}</span>
</div>
`;
}).join('');
let assetlist = await fetchSKU(`${baseurl}api/asset?time=${currentms}&t=main_product%2FGU%2F${SKU}&t=datacategory%2Fecasset&r=north&z=${fetchNumber}&et=hk&c=DEFAULT`, `${SKU} product image`);
let DOMString = createDOMString(SKU, assetlist);
container.insertAdjacentHTML('beforeend', DOMString);
clientSideFilter();
// fetch model URL
currentms = new Date().getTime();
assetlist = await fetchSKU(`${baseurl}api/asset?time=${currentms}&t=datacategory%2Fasset&w=${SKU}&r=north&z=${fetchNumber}&c=DEFAULT`, `${SKU} model image`);
DOMString = createDOMString(SKU, assetlist);
container.insertAdjacentHTML('beforeend', DOMString);
clientSideFilter();
}
addDebugMessage(`SKU search completed.`);
} else {
alert("It is empty on SKU list.");
}
......@@ -163,6 +133,49 @@
document.querySelectorAll("#fetch-lightbox .debug-box .asset-item.on").forEach(x => x.classList.remove("on"));
}
function createDOMString(SKU, assetlist){
return assetlist.map(asset => {
// determine whether it is product file
let classes = "";
let tagid = asset.tags.map(x => x.id);
if (!(asset.file_extension === "jpg" || asset.file_extension === "gif") ||
asset.filename.includes(`${SKU}_I0`) ||
(asset.filename.includes("goods_") && !asset.filename.includes(SKU)) ||
tagid.includes("assettype/Poster") ||
asset.filename.includes("GU_")
) {
classes = "is-unrelated";
} else if (asset.filename.includes(`hkgoods`) ||
asset.filename.includes(`goods_${SKU}_sub`) ||
asset.filename.includes(`_${SKU}_chip`) ||
(asset.filename.match(new RegExp(`^goods_[0-9]{2}_${SKU}$`)) && asset.models.length === 0 && asset.products.length === 1)
) {
classes = "is-product";
} else if( tagid.find(x => x.includes("Model") || x.includes("Appeal POP")) ) {
classes = "is-model";
} else{
classes = "is-unrelated";
}
return `
<div class="asset-item ${classes}">
<div><img src="/api/asset/${asset.id}/thumbnail/medium?r=1" loading="lazy"/></div>
<p>
<span class="asset-SKU">${SKU}</span><br />
<span class="asset-name">${asset.filename}</span>.${asset.file_extension}
</p>
<span class="asset-id" hidden>${asset.id}</span>
<span class="asset-version" hidden>${asset.fileVersion}</span>
<span class="asset-date" hidden>${asset.updatedDate}</span>
</div>
`;
}).join('');
}
// perform operation similar to old extension
async function extensionDownloading() {
let SKUString = document.getElementById("sku-list").value;
......@@ -182,13 +195,13 @@
// old
// let assetlist = await fetchSKU(SKU, `${baseurl}api/asset?time=${currentms}&t=datacategory%2Fasset&w=${SKU}&r=north&z=${fetchNumber}&et=hk&c=DEFAULT`);
// new
let assetlist = await fetchSKU(SKU, `${baseurl}api/asset?time=${currentms}&t=main_product%2FGU%2F${SKU}&t=datacategory%2Fecasset&r=north&z=${fetchNumber}&et=hk&c=DEFAULT`);
let assetlist = await fetchSKU(`${baseurl}api/asset?time=${currentms}&t=main_product%2FGU%2F${SKU}&t=datacategory%2Fecasset&r=north&z=${fetchNumber}&et=hk&c=DEFAULT`, `${SKU} product image`);
await downloadList(assetlist, `${SKU}`);
await sleep(sleepTime);
// &t=datacategory%2Fasset&w=341947&r=north&z=30&c=DEFAULT
currentms = new Date().getTime();
assetlist = await fetchSKU(SKU, `${baseurl}api/asset?time=${currentms}&t=datacategory%2Fasset&w=${SKU}&r=north&z=${fetchNumber}&c=DEFAULT`);
assetlist = await fetchSKU(`${baseurl}api/asset?time=${currentms}&t=datacategory%2Fasset&w=${SKU}&r=north&z=${fetchNumber}&c=DEFAULT`, `${SKU} model image`);
let downloadlist = filtering(assetlist, SKU);
await downloadList(downloadlist["model"], `${SKU}_model`);
await sleep(sleepTime);
......@@ -199,13 +212,13 @@
}
//grabbing single SKU data
async function fetchSKU(SKU, url = "") {
if (SKU.length == 0 || url.length == 0) {
async function fetchSKU(url = "", message = "") {
if (message.length == 0 || url.length == 0) {
return;
}
let config = getConfig();
addDebugMessage(`Start fetching SKU=${SKU}`);
addDebugMessage(`Start fetching SKU=${message}`);
return await fetch(url, config)
.then(response => response.json())
......@@ -220,7 +233,7 @@
// fetch the remaining item by simluating scroll operation
for (let i = total - fetchNumber; i > 0; i -= fetchNumber) {
addDebugMessage(`fetching SKU=${SKU} Process: ${i} remains`);
addDebugMessage(`fetching SKU=${message} Process: ${i} remains`);
let response = await fetch(`${baseurl}api/asset/more?scrollId=${scrollId}`, config)
.then(response => response.json())
......@@ -231,9 +244,9 @@
assetlist = assetlist.concat(response.assets);
await sleep(sleepTime / 2);
await sleep(sleepTime / 1.5);
}
addDebugMessage(`fetching SKU=${SKU} completed, total item: ${total}`);
addDebugMessage(`fetching SKU=${message} completed, total item: ${total}`);
return assetlist;
})
......@@ -284,7 +297,7 @@
// not adding to model
} else if(tagid.includes("Appeal POP") || tagid.includes("Model")) {
} else if( tagid.find(x => x.includes("Model") || x.includes("Appeal POP")) ) {
arrlist["model"].push(item);
}
return arrlist;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment