(async function () {
var mousedownEvent = new MouseEvent('mousedown', {
bubbles: true,
cancelable: true,
view: window
});
var mouseMoveEvent = new MouseEvent('mousemove', {
bubbles: true,
cancelable: true,
view: window
});
var mouseUpEvent = new MouseEvent('mouseup', {
bubbles: true,
cancelable: true,
view: window
});
var stop = false;
var referList = document.querySelector("#ctl00_maincontent_cbpReferMaster_lblReferJobNo")
.textContent.match(/\: (.*)/)[1]
.split(",");
if(referList[0]=="") {
console.log("Please enter refer job number");
return;
}
var componentTotal = parseInt(document.querySelector("#divDetail > span:nth-child(1)").innerText.match(/\d+/)[0]);
console.log(componentTotal);
console.log(referList);
console.log("Refer Setting, Press Space to end function");
document.addEventListener("keydown", (event) => {
if(event.keyCode == 32) {
console.log("Space down, Stopping function");
stop = true;
};
});
var errors = [];
var pages = Math.ceil(componentTotal/30);
for(var i=0; i<pages; i++) {
console.log("Going to page " + String(i+1));
changePage(i+1);
await delay(2000);
var tables = [...document.querySelectorAll("#tableEntry > tbody > tr")].slice(2,);
var componentNumbers = tables.map(item => item.children[0].children[0].innerText);
var height = tables.map(item => item.getBoundingClientRect().top + window.scrollY -50);
var editButton = [...document.querySelectorAll("td:nth-child(2) > button")].filter(item => item.innerHTML == "Edit");
var internalRemark = [...document.querySelectorAll('[id^="tbInternalRemarks_"]')].map(item => item.value);
var referIndicator = [...document.querySelectorAll('[name^="lblReferIndicator_"]')].map(item => item.innerText);
var color_of_material = [...document.querySelectorAll('[id^="taMainColor_"]')].map(item => item.value);
var main_material = [...document.querySelectorAll('[id^="taMainMaterial_"]')].map(item => item.value);
for(var j=0; j<editButton.length; j++) {
if(stop)
throw "Refer setting is stopped by user";
if(editButton[j].disabled || referIndicator[j] != "")
continue;
try {
var referJobNumber = internalRemark[j].match(/HJ0.*?\-\d+/)[0].split("-");
var referJob = referJobNumber[0];
var referNumber = referJobNumber[1];
} catch(e) {
continue;
}
window.scrollTo({
top: height[j],
behavior: "smooth",
});
await delay(1000);
console.log("component "+componentNumbers[j]+" set refer to "+referJobNumber.join("-"));
do {
editButton[j].click();
await delay(1500);
var downarrow = document.querySelector("#ctl00_maincontent_pucReferIndicator_fmReferIndicator_cbRefJobNo_I");
downarrow.dispatchEvent (mousedownEvent);
await delay(1000);
var index = referList.indexOf(referJob);
var element = document.querySelector("#ctl00_maincontent_pucReferIndicator_fmReferIndicator_cbRefJobNo_DDD_L_LBI"+index+"T0");
element.dispatchEvent (mouseMoveEvent);
await delay(500);
element.dispatchEvent (mouseUpEvent);
await delay(500);
var selector = document.querySelector("#ctl00_maincontent_pucReferIndicator_fmReferIndicator_txtRefCompNo_I");
selector.focus();
await delay(200);
selector.value = referNumber;
document.querySelector("#ctl00_maincontent_pucReferIndicator_btnSetDescReferAndClose_CD > span").click();
await delay(3200);
} while ([...document.querySelectorAll('[name^="lblReferIndicator_"]')][j].innerText == "");
var newMainColor = document.querySelector("#taMainColor_"+componentNumbers[j]).value;
var newMainMaterial = document.querySelector("#taMainMaterial_"+componentNumbers[j]).value;
if(newMainColor != color_of_material[j] || newMainMaterial != main_material[j]) {
var error_details = `Error: Component ${componentNumbers[j]} ~ ${color_of_material[j]} ${main_material[j]} was changed to ${newMainColor} ${newMainMaterial}`;
console.log(error_details);
errors.push(error_details);
}
};
};
console.log("finished");
if(errors.length != 0) {
var content = errors.join("\r\n");
txt_download(content, `Error_log_for_${document.querySelector("#ctl00_maincontent_lbRefNo").innerText}.txt`);
console.log("Error for Refer some componets, see txt file.")
}
})();
function delay(ms) {
return new Promise(resolve => setTimeout(resolve,ms));
}
function txt_download (content, filename) {
var el = document.createElement('a');
el.download = filename;
el.style.display = 'none';
var blob = new Blob([content]);
el.href = URL.createObjectURL(blob);
document.body.appendChild(el);
el.click();
document.body.removeChild(el);
};