Untitled

 avatar
unknown
plain_text
2 months ago
4.8 kB
1
Indexable
javascript
chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
  let url1 = tabs[0].url;

  function parseCsv(csvString) {
    return csvString.trim().split('\r\n').map(line => line.match(/(".*?"|[^",]+)(?=\s*,|\s*$)/g));
  }

  if (url1.includes("projectcommercials.ultimatix.net/")) {
    let data = [];
    const logs = []; // Array to hold log entries for CSV

    document.getElementById('csvFile').addEventListener("change", function (e) {
      const csvFile = e.target.files[0];
      if (!csvFile) return "No file selected";
      const reader = new FileReader();
      reader.onload = function (e) {
        const csvData = e.target.result;
        const parsedData = parseCsv(csvData);
        console.log(parsedData, "parsed");
        data = parsedData;

        document.getElementById("addMilestoneBtn").style.display = "block";
      };
      reader.readAsText(csvFile);
    });

    function formatDate(inputDate) {
      const dateObject = new Date(inputDate);
      if (!isNaN(dateObject.getTime())) {
        const day = String(dateObject.getDate()).padStart(2, "0");
        const month = String(dateObject.getMonth() + 1).padStart(2, "0");
        const year = dateObject.getFullYear();

        return `${day}/${month}/${year}`;
      }
      const [day, month, year] = inputDate.split("/");
      const padDay = String(day).padStart(2, "0");
      const padMonth = String(month).padStart(2, "0");
      const padYear = year;
      return `${padDay}/${padMonth}/${padYear}`;
    }

    function pipeFormatDate(Date) {
      let date = [];
      let dateArray = Date.split("|").map((value) => value.trim());

      if (dateArray.length > 0) {
        dateArray.forEach((items) => {
          date.push(formatDate(items));
        });
      } else {
        date = Date.split("|").map((value) => value.trim());
      }
      return date;
    }

    var T2 = document.getElementById("myProgress");
    var T3 = document.getElementById("barText");
    var T4 = document.getElementById("progressbar");

    document.getElementById("addMilestoneBtn").addEventListener('click', async function () {

      if (confirm("Please Confirm to Proceed") == true) {
        T2.style.display = "block";
        T3.style.display = "block";
        T4.style.display = "block";

        const csvHeader = data[0];
        const csvHeaderLength = csvHeader.length;
        const headerlessCsvData = data.slice(1);
        const totalRecords = headerlessCsvData.length;

        for (let record = 0; record < totalRecords; record++) {
          let row = headerlessCsvData[record];
          try {
            if (row && row.length === csvHeaderLength) {
              const wonNumber = row[0];
              // Other variables and API interactions...

              async function addMilestone() {
                // Code for adding milestones as before...
                // On success, log success:
                logs.push({ wonNumber, status: "Success" });
              }
              await addMilestone();
            } else {
              throw new Error("Items in row are missing");
            }
            updateProgressBar(record + 1, totalRecords);
          } catch (e) {
            console.log("error", e);
            logs.push({ wonNumber: row[0], status: "Failure" }); // Log failure
            updateProgressBar(record + 1, totalRecords);
          }
        }

        // Function to save logs as CSV
        function saveLogsAsCsv(logs) {
          const csvContent = "WON Number,Status\n" + logs.map(log => `${log.wonNumber},${log.status}`).join("\n");
          const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
          const link = document.createElement("a");
          link.href = URL.createObjectURL(blob);
          link.setAttribute("download", "milestone_logs.csv");
          document.body.appendChild(link);
          link.click();
          document.body.removeChild(link);
        }

        // Save logs when process is finished
        saveLogsAsCsv(logs);
      }

    });

    function updateProgressBar(currentRecord, totalRecords) {
      const progressPercentage = (currentRecord / totalRecords) * 100;
      const elem = document.getElementById("myProgress");
      const ll = document.getElementById("barText");

      elem.style.display = "block";
      elem.style.width = progressPercentage + "%";

      ll.innerHTML = Math.floor(progressPercentage) + "% Adding";

      if (progressPercentage >= 100) {
        ll.innerHTML = "Milestones added successfully";
      }
    }
  } else {
    window.location.replace("alert.html");
  }
});
Editor is loading...
Leave a Comment