Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Denna fil ska innehålla er lösning till projektuppgiften.
  2.  
  3. "use strict";
  4.  
  5. // Variables
  6.  
  7. var content = document.getElementById("info"); // where the job advertisements will show
  8.  
  9. var searchbuttonEl = document.getElementById("searchbutton");
  10. var leftmenu = document.getElementById("mainnavlist"); // left-hand menu where all län will appear
  11. var selectbox = document.getElementById("searchlan"); // select box where all län will appear
  12.  
  13. var onlyitJob = "";  // empty variable needed for the function showJob. In global scope because otherwise this variable cannot be found if the variable
  14.                      // is only in the local scope of function showJob
  15.  
  16.  
  17. var i; // used later in loops for iteration
  18. var baseUrl = "http://api.arbetsformedlingen.se/af/v0"; // base url where further arguments are being attached to
  19.  
  20. // Event Listeners
  21.  
  22.  
  23. window.onload = loadLan; // when window is loaded, the function loadData will fire
  24. searchbuttonEl.addEventListener("click", searchJob , false); // click on the search button and the function searchJob will fire
  25.  
  26. // Skapar händelsehanterare som anropar funktionen showJob. Skickar med ID på det valda elementet.
  27. selectbox.addEventListener("change", function (e) {
  28.     showJob(e.target.value);
  29. }, false);
  30.  
  31. // Måste skicka med vilket id för länet
  32. //selectbox.addEventListener("change", showJob, false); //choose a lan from the select box, then the job advertisements of this lan will show
  33.  
  34. // Ska inte vara hela listan. Ska vara varje enskilt list-element
  35. //leftmenu.addEventListener("click", showJob, false); // click on the left-hand menu, then the job advertisements will show
  36.  
  37.  
  38. // Function to get all län to show in the left-hand menu as well as in the select box
  39.  
  40. function loadLan() {
  41.     // AJAX request
  42.     var xhr = new XMLHttpRequest();
  43.    
  44.         xhr.onload = function() {
  45.             // check if server response is OK
  46.             if(xhr.status === 200) {
  47.                 var jsonStr = JSON.parse(xhr.responseText);
  48.                 var allLan = jsonStr.soklista.sokdata; //all län are being stored in this variable
  49.                 //var leftmenu = document.getElementById("mainnavlist"); // left-hand menu where all län will appear
  50.                 //var selectbox = document.getElementById("searchlan"); // select box where all län will appear
  51.  
  52.                 // Loop through all län
  53.  
  54.             for(i=0; i<allLan.length; i++) {
  55.                 // Create new element
  56.                
  57.                 // När länen skapar ska det läggas till en funktion för kunna visa jobb i det länet.
  58.                 var newLiEl = document.createElement("li"); // Skapar ett nytt li-element
  59.                 newLiEl.id =  allLan[i].id; // Sätter id på det nya elementet till id från länslistan.
  60.                 var newTextEl = document.createTextNode(allLan[i].namn + " (" + allLan[i].antal_ledigajobb + ")");  // Skapaer en textnod med länsnamn och antal lediga jobb.
  61.                 newLiEl.appendChild(newTextEl); // Lägger till texten i det nya li-elementet.
  62.  
  63.                 // Skapar en händelsehanterare för det nya elementet. När man klickar på det anropas funktionen med id't på det klickade elementet.
  64.                 newLiEl.addEventListener("click", function (e) {
  65.                     showJob(e.target.id);
  66.                 }, false);
  67.                 leftmenu.appendChild(newLiEl); // Lägger in det nya elementet i dom-trädet
  68.                
  69.                // leftmenu.innerHTML += "<li id='"+ allLan[i].id + "'>" + allLan[i].namn + " (" + allLan[i].antal_ledigajobb + ")"+ "</li>";
  70.  
  71.                 selectbox.innerHTML += "<option value='"+ allLan[i].id+"'>" + allLan[i].namn + "</option>"; // All län will show in the select box on top of the page
  72.             }
  73.         } else if (xhr.status == 400) {
  74.             alert('Error: 400');
  75.         }
  76.         else {
  77.             alert('Error: Something else than 200 was returned');
  78.         }
  79.     }
  80. // Send AJAX request
  81. xhr.open('GET', baseUrl+"/platsannonser/soklista/lan", true);
  82. xhr.send();
  83. }
  84.  
  85. // ID på säkt län skickas med
  86. function showJob(lanid) {
  87.     // AJAX request
  88.     var xhr = new XMLHttpRequest();
  89.  
  90.     xhr.onload = function() {
  91.         //check if server response is OK
  92.         if(xhr.status === 200) {
  93.             var jsonStr = JSON.parse(xhr.responseText);
  94.             var allJob = jsonStr.matchningslista.matchningdata; // all job advertisements are being stored in this variable
  95.  
  96.            
  97.            
  98.             var checkitJob = document.getElementById("onlyit").checked; // Checkbox of "show only IT" is checked
  99.             var onlyitJob = "";
  100.  
  101.             if(checkitJob === true) {
  102.                 onlyitJob = "&yrkesomradeid=3"; // extra argument in the AJAX request url if checkbox of "show only IT" is checked
  103.             } else { // if the checkbox of "show only IT" is not checked, onlyitJob has no value
  104.                 onlyitJob = "";
  105.             }
  106.  
  107.             // Töm content.innerHTML för nytt innehåll.
  108.             content.innerHTML = "";
  109.             for(i=0; i<allJob.length; i++) { // shows
  110.             content.innerHTML += "<article>" + "<h3>" + allJob[i].annonsrubrik + "</h3>" + "<h4>" + allJob[i].yrkesbenamning + "</h4>"
  111.                               + "<p>" + "<strong>" + "Anställningstyp: " + "</strong>" + allJob[i].anstallningstyp + "</p>" + "<br />"
  112.                               + "<p>" + "<strong>" + "Antal platser: " + "</strong>" + allJob[i].antalplatser + "</p>" + "<br />"
  113.                               + "<p>" + "<strong>" + "Publiceringsdatum: " + "</strong>" + allJob[i].publiceraddatum + "</p>" + "<br />"
  114.                               + "<p>" + "<strong>" + "Sista ansökningsdag: " + "</strong>" + allJob[i].sista_ansokningsdag + "</p>" + "<br />"
  115.                               + '<a href="' + allJob[i].annonsurl + '" class="btn" target="_blank">Läs Mer</a>' + "</article>";
  116.  
  117.             }
  118.  
  119.        
  120.         } else if (xhr.status == 400) {
  121.             alert('Error: 400');
  122.         }
  123.         else {
  124.             alert('Error: Something else than 200 was returned');
  125.         }
  126.     }
  127.     // Send AJAX request
  128.     // Behöver inte ta ut vilket element som är valt. Det skickas med som parameter till funktionen.
  129.     //var lanid = document.getElementById("searchlan").value; // to get the ID of the chosen län from the select box
  130.     var numrow = document.getElementById("numrows").value; // the value, i.e. the number, that is shown in "Max antal"
  131.     var url = baseUrl + "/platsannonser/matchning?lanid="+lanid+onlyitJob+"&antalrader="+numrow;
  132.  
  133.     xhr.open('GET', url, true);
  134.     xhr.send();
  135. }
  136.  
  137. function searchJob() {
  138.  
  139.     content.innerHTML=""; // the area where the job advertisements are shown is emptied (otherwise former search results will still be shown)
  140.     var input = document.getElementById("searchText").value; //the value of whatever someone has typed into the search box
  141.     // new AJAX request
  142.     var xhr = new XMLHttpRequest();
  143.  
  144.     xhr.onload = function() {
  145.         //check if server response is OK
  146.         if(xhr.status === 200) {
  147.             var jsonStr = JSON.parse(xhr.responseText);
  148.             var joblist = jsonStr.soklista.sokdata; // all jobs are listed in this variable
  149.  
  150.             for(i=0;i<joblist.length;i++) {
  151.                 content.innerHTML += "<article>" + "<h3>" + joblist[i].namn + "</h3>" + "<br />"
  152.                                   + "<p>" + "Antal platsannonser: " + joblist[i].antal_platsannonser + "</p>" + "<br />"
  153.                                   + "<p>" + "Antal lediga jobb: " + joblist[i].antal_ledigajobb + "</p>" + "</article>";
  154.             }
  155.         } else if (xhr.status == 400) {
  156.             alert('Error: 400');
  157.         }
  158.         else {
  159.             alert('Error: Something else than 200 was returned');
  160.         }
  161.    
  162. }
  163.     xhr.open('GET', baseUrl + "/platsannonser/soklista/yrken/"+input,true); //a searchlist will show all the jobs that start with the same letters as those typed into "input"
  164.     xhr.send();
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement