~async function (){
delay = (ms) => {
return new Promise(function(resolve){
setTimeout(resolve,ms);
}); };
var No_of_Components = parseInt(document.querySelector("#divDetail > span:nth-child(1)").textContent.match(/([\d]+)\,/)[1]);
var referList = document.querySelector("#ctl00_maincontent_cbpReferMaster_lblReferJobNo").textContent.match(/\: (.*)/)[1].split(",");
if(referList[0]=="") {
console.log("Please enter refer job number")
return;
}
console.log(No_of_Components);
console.log(referList);
console.log("Refer Setting, Press Space to end function");
try {
while (parseInt(document.querySelector("#divDetail > span:nth-child(1) > label:nth-child(2)").textContent)==1) {
document.querySelector("#divDetail > span:nth-child(1) > label:nth-child(2)").click();
delay(1000);
}
} catch (e) {
console.log(e)
}
var count = 1;
var nextPage = false;
stopFunction = false;
document.addEventListener("keydown", function(event) { if (event.keyCode == 32) { console.log("Space down, Stopping function");
stopFunction = true;} })
for(var i=0; i<No_of_Components; i++) {
if(stopFunction)
break;
if(nextPage && No_of_Components<=60) {
await goToNextPage(delay);
nextPage = false;
}
if(nextPage && No_of_Components>60) {
await goToNextPage2(count,delay);
count++
nextPage = false;
}
if(i%30+3==32)
nextPage = true;
if(document.querySelector("#tableEntry > tbody > tr:nth-child("+(i%30+3)+") > td:nth-child(2) > button").disabled)
continue;
var Number = parseInt(document.querySelector("#tableEntry > tbody > tr:nth-child("+(i%30+3)+") > td:nth-child(1) > label").textContent);
var internalRemark = "#tbInternalRemarks_" + Number;
var referIndicator = "lblReferIndicator_" + Number;
if(document.getElementsByName(referIndicator)[0].innerText!="")
continue;
var referJobNumber = document.querySelector(internalRemark).value.split(";")[0].split("-")[0].toString().trim();
var element = document.querySelector(internalRemark).value.split(";")[0].split("-")[1];
try {
var element = parseInt(element.split(",")[0].toString().trim());
} catch (e) {
var element = "";
}
if(element.length!=0)
await setRefer(i,Number,referJobNumber,element,referList,delay);
}
console.log("finished");
}();
async function setRefer(i,Number,referJobNumber,element,referList,delay) {
await step1(i,Number,referJobNumber,element,delay)
await step2(delay)
await step3(referJobNumber,referList,delay)
await step4(referJobNumber,referList,delay)
await step5(element,delay)
await step6(delay)
}
async function step1(i,Number,referJobNumber,element,delay) {
console.log("component "+Number+" set refer to "+referJobNumber+"-"+element);
await document.querySelector("#tableEntry > tbody > tr:nth-child("+(i%30+3)+") > td:nth-child(2) > button").click();
await delay(1500);
}
async function step2(delay) {
var downarrow = document.querySelector("#ctl00_maincontent_pucReferIndicator_fmReferIndicator_cbRefJobNo_I");
mousedownEvent= document.createEvent('MouseEvents');
mousedownEvent.initEvent ('mousedown', true, true);
await downarrow.dispatchEvent (mousedownEvent);
await delay(1000);
}
async function step3(referJobNumber,referList,delay) {
var index = referList.indexOf(referJobNumber);
var movePoint = document.querySelector("#ctl00_maincontent_pucReferIndicator_fmReferIndicator_cbRefJobNo_DDD_L_LBI"+index+"T0");
mouseMoveEvent = document.createEvent('MouseEvents');
mouseMoveEvent.initEvent('mousemove', true, true);
await movePoint.dispatchEvent (mouseMoveEvent);
await delay(500);
}
async function step4(referJobNumber,referList,delay) {
var index = referList.indexOf(referJobNumber);
var mouseUp = document.querySelector("#ctl00_maincontent_pucReferIndicator_fmReferIndicator_cbRefJobNo_DDD_L_LBI"+index+"T0");
mouseUpEvent = document.createEvent('MouseEvents');
mouseUpEvent.initEvent('mouseup', true, true);
await mouseUp.dispatchEvent (mouseUpEvent);
await delay(1000);
}
async function step5(element,delay) {
document.querySelector("#ctl00_maincontent_pucReferIndicator_fmReferIndicator_txtRefCompNo_I").value = element;
await delay(500);
}
async function step6(delay) {
await document.querySelector("#ctl00_maincontent_pucReferIndicator_btnSetDescReferAndClose_CD > span").click();
await delay(3500);
}
async function goToNextPage(delay) {
console.log("Going to page 2");
do {
await document.querySelector("#divDetail > span:nth-child(1) > label").click();
await delay(100);
} while (document.querySelector("#divDetail > span:nth-child(1) > label").textContent==2);
delay (2000);
}
async function goToNextPage2(count,delay) {
console.log("Going to page " + (count+1));
do {
var page = "#divDetail > span:nth-child(1) > label:nth-child("+(count+1)+")";
await document.querySelector(page).click();
await delay(100);
} while (document.querySelector(page).textContent==(count+1));
delay (2000);
}