Advertisement
Guest User

servicetechs

a guest
Jul 17th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const initializeTechDataModule = function() {
  2.   // initialize service techs
  3.   const initializeTechData = function() {
  4.     // fetch serviceTech data
  5.     return fetch("/api/service_techs")
  6.       // convert json response to js object
  7.       .then(response => response.json())
  8.       // send data to render method
  9.       .then(serviceTechs => render(serviceTechs))
  10.       // add click event listener
  11.       .then(serviceTechEvents)
  12.   }
  13.   // render data to html
  14.   const render = function(serviceTechs) {
  15.     const container = document.querySelector('#serviceTechDropdownMenu');
  16.     // create array to hold table data
  17.     let content = [];
  18.     // iterate over data and append data to content
  19.     serviceTechs.forEach((serviceTech) => {
  20.       content.push(`<a class="dropdown-item techDropdown" href="#">${serviceTech['tech_name']}</a>`);
  21.     });
  22.     // append data to html container
  23.     container.innerHTML = content.join('');
  24.     // return promise for async functionality
  25.     return Promise.resolve(serviceTechs);
  26.   }
  27.   // add tech event listener
  28.   const serviceTechEvents = function(serviceTechs) {
  29.  
  30.     let techsArray = [];
  31.     serviceTechs.forEach(function(tech) {
  32.       techsArray.push(tech['tech_name']);
  33.     });
  34.     // event listener for tech dropdown menu
  35.     document.querySelectorAll(".techDropdown").forEach((tech) => {
  36.       // iterate over every tech in dropdown
  37.       tech.addEventListener("click", function() {
  38.         const nameCheck = checkIfElementExists();
  39.         // name of tech is equal to current selection textContent
  40.         const name = this.textContent;
  41.         // iterate over every tech in serviceTechs
  42.         serviceTechs.forEach(function(serviceTech) {
  43.           // if name is same as tech you selected invoke insertTechInfo
  44.           // if ((name === serviceTech['tech_name']) && (nameCheck in techsArray)) {
  45.           if (name === serviceTech['tech_name'])  {
  46.             insertTechInfo(serviceTech);
  47.           }
  48.         });
  49.       });
  50.     });
  51.   }  
  52.   const checkIfElementExists = function() {
  53.     const elementCheck = document.querySelector('#serviceTechTable tbody tr:nth-child(1)');
  54.     if (elementCheck) {
  55.       const checkedName = document.querySelector('#serviceTechTable tbody tr:nth-child(1)').cells[0].textContent;
  56.       console.log('This is the name that exists', checkedName);
  57.       return checkedName;
  58.     }
  59.   }
  60.   const insertTechInfo = function(serviceTech) {
  61.     const container = document.querySelector("#serviceTechTable tbody");
  62.     // create variable firstRow and lastRow and set equal to insertRow(index).
  63.     const firstRow = container.insertRow(0);
  64.     const lastRow = container.insertRow(-1);
  65.     firstRow.innerHTML = `<td>${serviceTech['tech_name']}</td><td>${serviceTech['tech_address']}</td><td></td><td></td><td><input id="techDeparture" onchange="tableValidationModule.tableValidationTechDeparture(this);"/></td>`;
  66.     lastRow.outerHTML = `<td>${serviceTech['tech_name']}</td><td>${serviceTech['tech_address']}</td><td></td><td></td><td></td>`;
  67.   }
  68.   return { initializeTechData }
  69. }();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement