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));
    }
}