Added test V2
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										21
									
								
								html/test_13.02.20/test_13.02.20_V2/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								html/test_13.02.20/test_13.02.20_V2/index.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  | <head> | ||||||
|  |     <meta charset="UTF-8"> | ||||||
|  |     <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||||
|  |     <meta http-equiv="X-UA-Compatible" content="ie=edge"> | ||||||
|  |     <title>Test</title> | ||||||
|  |     <link rel="stylesheet" href="./resources/css/main.css"> | ||||||
|  |     <script src="./resources/js/tasksJSON.js"></script> | ||||||
|  |     <script async src="./resources/js/linkConnector.js"></script> | ||||||
|  | </head> | ||||||
|  | <body> | ||||||
|  |  | ||||||
|  |     <h1>Test</h1> | ||||||
|  |  | ||||||
|  |     <div class="center"> | ||||||
|  |         <div class="textboxGrid"></div> | ||||||
|  |     </div> | ||||||
|  |      | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
							
								
								
									
										0
									
								
								html/test_13.02.20/test_13.02.20_V2/oppgaver/.keep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								html/test_13.02.20/test_13.02.20_V2/oppgaver/.keep
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| After Width: | Height: | Size: 380 KiB | 
| @@ -0,0 +1,68 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  | <head> | ||||||
|  |     <meta charset="UTF-8"> | ||||||
|  |     <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||||
|  |     <meta http-equiv="X-UA-Compatible" content="ie=edge"> | ||||||
|  |     <title>Oppgave 1</title> | ||||||
|  |     <link rel="stylesheet" href="../../resources/css/main.css"> | ||||||
|  |     <script async src="./oppgave.js"></script> | ||||||
|  | </head> | ||||||
|  | <body> | ||||||
|  |  | ||||||
|  |     <h1>Påskerennet 2020 - Olastøl, Hardanger</h1> | ||||||
|  |  | ||||||
|  |     <div class="center"id="graphics"> | ||||||
|  |         <img src="images/easter-154509.svg"> <!-- Tatt fra https://pixabay.com/vectors/easter-spring-grass-lawn-154509/ --> | ||||||
|  |     </div> | ||||||
|  |  | ||||||
|  |     <div class="center" id="registration"> | ||||||
|  |  | ||||||
|  |         <h2>Legg til deltaker</h2> | ||||||
|  |  | ||||||
|  |         <div class="inline"> | ||||||
|  |             <form id="addParticipantForm"> | ||||||
|  |                 <label for="nameRegistration">Navn på deltaker:</label> | ||||||
|  |                 <input type="text" id="nameRegistration" placeholder="Ole" required> | ||||||
|  |                 <label for="ageRegistration">Alder:</label> | ||||||
|  |                 <input type="number" id="ageRegistration" min="0" max="130" placeholder="20" required> | ||||||
|  |                 <input type="submit" id="addParticipant" value="Legg til deltaker"> | ||||||
|  |             </form> | ||||||
|  |         </div> | ||||||
|  |  | ||||||
|  |         <div class="inline"> | ||||||
|  |             <form id="updateResultsForm"> | ||||||
|  |                 <label for="nameSelector">Velg deltaker:</label> | ||||||
|  |                 <select id="nameSelector"></select> | ||||||
|  |                 <label for="activity1">Resultat 1:</label> | ||||||
|  |                 <input type="number" id="activity1" min="0" max="100"> | ||||||
|  |                 <label for="activity2">Resultat 2:</label> | ||||||
|  |                 <input type="number" id="activity2" min="0" max="100"> | ||||||
|  |                 <label for="activity3">Resultat3:</label> | ||||||
|  |                 <input type="number" id="activity3" min="0" max="100"> | ||||||
|  |                 <input type="submit" id="updateResults" value="Oppdater resultater"> | ||||||
|  |             </form> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  |  | ||||||
|  |     <div class="center"> | ||||||
|  |         <table id="participants"> | ||||||
|  |             <tr> | ||||||
|  |                 <th>Navn</th> | ||||||
|  |                 <th>Alder</th> | ||||||
|  |                 <th>Resultat 1</th> | ||||||
|  |                 <th>Resultat 2</th> | ||||||
|  |                 <th>Resultat 3</th> | ||||||
|  |                 <th>Resultatsum</th> | ||||||
|  |             </tr> | ||||||
|  |         </table> | ||||||
|  |     </div> | ||||||
|  |  | ||||||
|  |     <div class="center"> | ||||||
|  |         <button id="printResultsButton">Print resultater</button> | ||||||
|  |         <br><br><br> | ||||||
|  |         <table id="results"></table> | ||||||
|  |     </div> | ||||||
|  |      | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
							
								
								
									
										167
									
								
								html/test_13.02.20/test_13.02.20_V2/oppgaver/oppgave1/oppgave.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										167
									
								
								html/test_13.02.20/test_13.02.20_V2/oppgaver/oppgave1/oppgave.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,167 @@ | |||||||
|  |  | ||||||
|  | /* Hardcoded participant list */ | ||||||
|  | let participants = [ | ||||||
|  |     { | ||||||
|  |         name: "Harald", | ||||||
|  |         age: "33", | ||||||
|  |         results: [undefined, undefined, undefined], | ||||||
|  |         resultSum: 0 | ||||||
|  |     }, { | ||||||
|  |         name: "Borghild", | ||||||
|  |         age: "25", | ||||||
|  |         results: [undefined, undefined, undefined], | ||||||
|  |         resultSum: 0 | ||||||
|  |     }, { | ||||||
|  |         name: "Ola", | ||||||
|  |         age: "12", | ||||||
|  |         results: [undefined, undefined, undefined], | ||||||
|  |         resultSum: 0 | ||||||
|  |     }, { | ||||||
|  |         name: "Knut", | ||||||
|  |         age: "62", | ||||||
|  |         results: [undefined, undefined, undefined], | ||||||
|  |         resultSum: 0 | ||||||
|  |     }, { | ||||||
|  |         name: "Lise", | ||||||
|  |         age: "46", | ||||||
|  |         results: [undefined, undefined, undefined], | ||||||
|  |         resultSum: 0 | ||||||
|  |     } | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | /* Add HTML DOM reference variables */ | ||||||
|  | const graphicsBox = document.getElementById("graphics"); | ||||||
|  |  | ||||||
|  | const addParticipantForm = document.getElementById("addParticipantForm"); | ||||||
|  | const nameRegistrationInput = document.getElementById("nameRegistration"); | ||||||
|  | const ageRegistrationInput = document.getElementById("ageRegistration"); | ||||||
|  | const addParticipantButton = document.getElementById("addParticipant"); | ||||||
|  |  | ||||||
|  | const updateResultsForm = document.getElementById("updateResultsForm"); | ||||||
|  | const nameSelector = document.getElementById("nameSelector"); | ||||||
|  | const activity1Input = document.getElementById("activity1"); | ||||||
|  | const activity2Input = document.getElementById("activity2"); | ||||||
|  | const activity3Input = document.getElementById("activity3"); | ||||||
|  | const updateResultsButton = document.getElementById("updateResults"); | ||||||
|  |  | ||||||
|  | const participantTable = document.getElementById("participants"); | ||||||
|  | const participantTableHeaders = participantTable.innerHTML; | ||||||
|  |  | ||||||
|  | const printResultsButton = document.getElementById("printResultsButton"); | ||||||
|  | const resultTable = document.getElementById("results"); | ||||||
|  |  | ||||||
|  | /* Add event listeners */ | ||||||
|  | addParticipantForm.addEventListener("submit", addParticipant, false); | ||||||
|  | updateResultsForm.addEventListener("submit", updateResults, false); | ||||||
|  | printResultsButton.addEventListener("click", printResults, false); | ||||||
|  | nameSelector.addEventListener("change", updateSelector, false); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Init HTML */ | ||||||
|  | updateParticipants(); | ||||||
|  |  | ||||||
|  | /* Oppdaterer HTML og selector med ny deltakerliste og score */ | ||||||
|  | function updateParticipants() { | ||||||
|  |  | ||||||
|  |     /* Reset inner HTML data */ | ||||||
|  |     participantTable.innerHTML = participantTableHeaders; | ||||||
|  |     nameSelector.innerHTML = ""; | ||||||
|  |      | ||||||
|  |     for (participant in participants) { | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         /* Update HTML table from participant array */ | ||||||
|  |         let newTable = | ||||||
|  |         `<tr>` +  | ||||||
|  |         `<td>${participants[participant].name}</td>` + | ||||||
|  |         `<td>${participants[participant].age}</td>`; | ||||||
|  |  | ||||||
|  |         for (result in participants[participant].results) { | ||||||
|  |             if (participants[participant].results[result] != undefined) { | ||||||
|  |                 newTable += `<td>${participants[participant].results[result]}</td>`; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         /* Add sum to object and add to table if all 3 results exist */ | ||||||
|  |         if (!participants[participant].results.includes(undefined)) { | ||||||
|  |             participants[participant].sum = participants[participant].results.reduce((a, b) => parseInt(a) + parseInt(b), 0); | ||||||
|  |             newTable += `<td>${participants[participant].sum}</td>`; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         newTable += `</tr>`; | ||||||
|  |         participantTable.innerHTML += newTable; | ||||||
|  |  | ||||||
|  |         /* Update selector */ | ||||||
|  |         nameSelector.innerHTML += `<option value=${participant}>${participants[participant].name}</option>` | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |     updateSelector(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* Legger til deltaker og kjører updateParticipants */ | ||||||
|  | function addParticipant(evt) { | ||||||
|  |     evt.preventDefault(); | ||||||
|  |  | ||||||
|  |     participants = [...participants, { | ||||||
|  |         name: nameRegistrationInput.value, | ||||||
|  |         age: ageRegistrationInput.value, | ||||||
|  |         results: [undefined, undefined, undefined], | ||||||
|  |         resultSum: 0 | ||||||
|  |     }] | ||||||
|  |  | ||||||
|  |     updateParticipants(); | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* Redigerer poenglisten til den gjeldende deltakeren og kjører updateParticipants */ | ||||||
|  | function updateResults(evt) { | ||||||
|  |     evt.preventDefault(); | ||||||
|  |  | ||||||
|  |     const  participantNum = nameSelector.value; | ||||||
|  |     participants[participantNum].results[0] = activity1Input.value; | ||||||
|  |     participants[participantNum].results[1] = activity2Input.value; | ||||||
|  |     participants[participantNum].results[2] = activity3Input.value; | ||||||
|  |  | ||||||
|  |     updateParticipants(); | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* Oppdaterer poengvelgerne etter valgt deltaker */ | ||||||
|  | function updateSelector() { | ||||||
|  |     const participant = participants[nameSelector.value]; | ||||||
|  |     activity1Input.value = (participant.results[0] == undefined) ? "" : participant.results[0]; //Cant set number to undefined -> Set "" | ||||||
|  |     activity2Input.value = (participant.results[1] == undefined) ? "" : participant.results[1]; | ||||||
|  |     activity3Input.value = (participant.results[2] == undefined) ? "" : participant.results[2]; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* Printer ut resultater */ | ||||||
|  | function printResults() { | ||||||
|  |  | ||||||
|  |     /* Remove participants without full score */ | ||||||
|  |     let resultParticipants = participants.filter((participant) => participant.sum > 0); | ||||||
|  |  | ||||||
|  |     /* Sort participants by result */ | ||||||
|  |     resultParticipants.sort((a, b) => b.sum-a.sum); | ||||||
|  |  | ||||||
|  |     /* Add to HTML result table*/ | ||||||
|  |     resultTable.innerHTML = "<tr>" + | ||||||
|  |         "<th>Plassering</th>" + | ||||||
|  |         "<th>Navn</th>" + | ||||||
|  |         "<th>Aktivitet 1</th>" + | ||||||
|  |         "<th>Aktivitet 2</th>" + | ||||||
|  |         "<th>Aktivitet 3</th>" + | ||||||
|  |         "<th>Total Poengsum</th>" + | ||||||
|  |         "</tr>" | ||||||
|  |  | ||||||
|  |     for (participant in resultParticipants) { | ||||||
|  |         resultTable.innerHTML += `<tr>` + | ||||||
|  |         `<td>${parseInt(participant) + 1}</td>` + | ||||||
|  |         `<td>${resultParticipants[participant].name}</td>` + | ||||||
|  |         `<td>${resultParticipants[participant].results[0]}</td>` + | ||||||
|  |         `<td>${resultParticipants[participant].results[1]}</td>` + | ||||||
|  |         `<td>${resultParticipants[participant].results[2]}</td>` + | ||||||
|  |         `<td>${resultParticipants[participant].sum}</td>` + | ||||||
|  |         `</tr>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
							
								
								
									
										131
									
								
								html/test_13.02.20/test_13.02.20_V2/resources/css/main.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								html/test_13.02.20/test_13.02.20_V2/resources/css/main.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,131 @@ | |||||||
|  | body { | ||||||
|  |   background-color: #282828; | ||||||
|  |   color: white; | ||||||
|  |   margin: 0px; | ||||||
|  |   padding: 0px; | ||||||
|  |   margin-right: 2%; | ||||||
|  |   margin-left: 8%; | ||||||
|  |   margin-top: 5%; | ||||||
|  |   font-family: museo-sans-rounded, sans-serif; | ||||||
|  |   font-weight: 300; | ||||||
|  |   font-style: normal; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | button { | ||||||
|  |   background-color: #787878; | ||||||
|  |   padding: 15px; | ||||||
|  |   display: inline-block; | ||||||
|  |   border: 2px solid white; | ||||||
|  |   border-radius: 15px; | ||||||
|  |   color: white; | ||||||
|  |   font-size: 16pt; | ||||||
|  | } | ||||||
|  | button:hover { | ||||||
|  |   background-color: #505050; | ||||||
|  | } | ||||||
|  | button:focus { | ||||||
|  |   outline: 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | h1 { | ||||||
|  |   color: #2883d0; | ||||||
|  |   text-align: center; | ||||||
|  |   background-color: #3c3c3c; | ||||||
|  |   padding: 15px; | ||||||
|  |   margin-left: 10%; | ||||||
|  |   margin-right: 10%; | ||||||
|  |   border-radius: 15px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | h2 { | ||||||
|  |   color: #91e22c; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | a { | ||||||
|  |   color: #66D9EF; | ||||||
|  | } | ||||||
|  | a:hover { | ||||||
|  |   color: #A6E22E; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | input[type=color] { | ||||||
|  |   width: 4em; | ||||||
|  |   height: 2em; | ||||||
|  |   background-color: #787878; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table { | ||||||
|  |   width: 100%; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | td, th { | ||||||
|  |   border: 1px solid white; | ||||||
|  |   padding: 8px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | th { | ||||||
|  |   text-align: left; | ||||||
|  |   background-color: #4CAF50; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | tr:nth-child(even) { | ||||||
|  |   background-color: #00000033; | ||||||
|  | } | ||||||
|  | tr:hover { | ||||||
|  |   background-color: rgba(255, 255, 255, 0.281); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .center { | ||||||
|  |   background-color: #505050; | ||||||
|  |   margin: auto; | ||||||
|  |   margin-bottom: 10%; | ||||||
|  |   width: 70%; | ||||||
|  |   padding: 5%; | ||||||
|  |   height: max-content; | ||||||
|  |   border-radius: 15px; | ||||||
|  | } | ||||||
|  | .center * { | ||||||
|  |   margin: auto; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .inline { | ||||||
|  |   margin: 15px; | ||||||
|  | } | ||||||
|  | .inline * { | ||||||
|  |   display: inline-block; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .leftalign * { | ||||||
|  |   margin: 15px; | ||||||
|  |   text-align: left; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .textboxGrid { | ||||||
|  |   display: grid; | ||||||
|  |   justify-content: space-evenly; | ||||||
|  |   align-content: space-evenly; | ||||||
|  |   grid-template-columns: repeat(3, 1fr); | ||||||
|  |   grid-column-gap: auto; | ||||||
|  |   grid-row-gap: 20px; | ||||||
|  | } | ||||||
|  | .textboxGrid * { | ||||||
|  |   size: 100%; | ||||||
|  |   padding: 40px 80px; | ||||||
|  |   background-color: #787878; | ||||||
|  | } | ||||||
|  | .textboxGrid .linkElement { | ||||||
|  |   border: 1px solid black; | ||||||
|  | } | ||||||
|  | .textboxGrid .linkElement:hover { | ||||||
|  |   background-color: #505050; | ||||||
|  |   cursor: pointer; | ||||||
|  | } | ||||||
|  | .textboxGrid .linkElement a:hover { | ||||||
|  |   text-decoration: underline; | ||||||
|  |   color: #66D9EF; | ||||||
|  | } | ||||||
|  | .textboxGrid .linkElement * { | ||||||
|  |   margin: 0px; | ||||||
|  |   padding: 0px; | ||||||
|  |   background-color: transparent; | ||||||
|  | } | ||||||
| @@ -0,0 +1,28 @@ | |||||||
|  | const taskArray = tasks.tasks; | ||||||
|  | const grid = document.getElementsByClassName("textboxGrid")[0]; | ||||||
|  |  | ||||||
|  | for (i=0; i<taskArray.length; i++) { | ||||||
|  |  | ||||||
|  |     const linkElement = document.createElement("div"); | ||||||
|  |     linkElement.className = "linkElement"; | ||||||
|  |  | ||||||
|  |     //TODO: taskArray needs to be preprocessed somehow | ||||||
|  |     linkElement.addEventListener("click", function () { | ||||||
|  |         window.location = taskArray[i]["path"]; | ||||||
|  |     } ) | ||||||
|  |  | ||||||
|  |     const h2 = document.createElement("h2"); | ||||||
|  |     const link = document.createElement("a"); | ||||||
|  |     link.href = taskArray[i]["path"]; | ||||||
|  |     link.innerHTML = taskArray[i]["name"]; | ||||||
|  |  | ||||||
|  |     h2.appendChild(link); | ||||||
|  |     linkElement.appendChild(h2); | ||||||
|  |     grid.appendChild(linkElement); | ||||||
|  |  | ||||||
|  |     console.log(grid.querySelectorAll(".linkElement")[i]); | ||||||
|  |     grid.querySelectorAll(".linkElement")[i].addEventListener("onclick", function () { | ||||||
|  |  | ||||||
|  |         window.location = taskArray[i]["path"]; | ||||||
|  |     }, false); | ||||||
|  | } | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | const tasks = {"tasks": [{"name": "Oppgave 1", "path": "./oppgaver/oppgave1/oppgave.html"}]} | ||||||
		Reference in New Issue
	
	Block a user