06
2022
06

Auto Set Refer


(async function () { 
  var mousedownEvent = new MouseEvent('mousedown', {
    bubblestrue,
    cancelabletrue,
    viewwindow
  });
 
  var mouseMoveEvent = new MouseEvent('mousemove', {
    bubblestrue,
    cancelabletrue,
    viewwindow
  });
 
  var mouseUpEvent = new MouseEvent('mouseup', {
    bubblestrue,
    cancelabletrue,
    viewwindow
  });
 
  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=0i<pagesi++) {
    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=0j<editButton.lengthj++) {
      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({
        topheight[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 (contentfilename) { 
  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);
};

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。