User Creator
by Josh Pullen
HTML
<textarea id="plaintextUsers" cols="50" rows="35">
Josh Pullen
Pullen, Adam
</textarea>
<br>
<button id="submit">Enter</button>
<br><br>
<table>
<thead>
<tr>
<th>First</th>
<th>Last</th>
<th>Username</th>
<th>Password</th>
</tr>
</thead>
<tbody id="userTableBody">
<!-- Will be inserted by JS -->
</tbody>
</table>
CSS
table, table * {
border:1px solid #444;
border-collapse:collapse;
}
th, td {
padding: 0.2em 0.5em;
}
JavaScript
var input = document.getElementById("plaintextUsers");
var button = document.getElementById("submit");
var table = document.getElementById("userTableBody");
var Student = function(first, last, username, password){
return {
"firstName": first || "",
"lastName": last || "",
"username": username || last.substr(0,4).toLowerCase() + first.substr(0,3).toLowerCase(),
"password": password || Math.random().toString(36).substr(2, 6)
}
};
button.addEventListener("click", updateTable);
function updateTable() {
var students = input.value.split("\n");
students =
students
.filter(function(student){
return student.length > 0;
})
.map(function(student){
var studentString = student.trim().split(" ");
switch(studentString.length) {
case 1:
return new Student(studentString[0]);
break;
case 2:
if ("," === studentString[0].charAt(studentString[0].length - 1)) {
return new Student(studentString[1], studentString[0].slice(0, -1));
} else {
return new Student(studentString[0], studentString[1]);
}
break;
}
})
.sort(function(a, b){
if(a.lastName + a.firstName < b.lastName + b.firstName) return -1;
if(a.lastName + a.firstName > b.lastName + b.firstName) return 1;
return 0;
});
for(i = 0; i < students.length; i++) {
var row = table.insertRow(-1);
row.insertCell(0).appendChild(document.createTextNode(students[i].firstName));
row.insertCell(1).appendChild(document.createTextNode(students[i].lastName));
row.insertCell(2).appendChild(document.createTextNode(students[i].username));
row.insertCell(3).appendChild(document.createTextNode(students[i].password));
}
}