JSFiddle - React, Tailwind, and code Playground
by acturbo
HTML
<div id="students">...</div>
CSS
table {
border-collapse: collapse;
font: 12px Verdana;
}
table,
td {
border: 1px solid #F1F1F1;
padding: 5px;
}
th {
background: #F1F1F1;
}
JavaScript
$(document).ready(function() {
/* build the HTML */
function build() {
var students = new Array();
students.push({ order: 1, id: 1, name: "Student 1", room_id: 5, age: 29, group: 1 });
students.push({ order: 2, id: 2, name: "Student 2", room_id: 5, age: 22, group: 1 });
students.push({ order: 3, id: 3, name: "Student 3", room_id: 5, age: 21, group: 3 });
students.push({ order: 4, id: 4, name: "Student 4", room_id: 5, age: 25, group: 3 });
students.push({ order: 5, id: 5, name: "Student 5", room_id: 3, age: 23, group: 2 });
students.push({ order: 6, id: 6, name: "Student 6", room_id: 3, age: 27, group: 2 });
students.push({ order: 7, id: 7, name: "Student 7", room_id: 5, age: 44, group: 3 });
/* sort students by room_id */
students.sort(function(a, b) {
return ((a.room_id < b.room_id) ? -1 : ((a.room_id > b.room_id) ? 1 : 0));
});
var html = '<table>';
html += '<tr><th>Id</th><th>Name</th><th>Age</th><th>Room</th><th>Group</th><th>Actions</th></tr>';
for (var i = 0; i < students.length; i++) {
html += '<tr class="'+ students[i].group +'">'; // assign the groupid to the row as a class for easier managment
html += '<td>'+ students[i].id +'</td>';
html += '<td>'+ students[i].name +'</td>';
html += '<td>'+ students[i].age +'</td>';
html += '<td>'+ students[i].room_id +'</td>';
html += '<td>'+ students[i].group +'</td>';
html += '<td class="order-col" data-order="'+ students[i].order +'"><a href="#" class="move_up">UP</a> | <a href="#" class="move_down">DOWN</a></td>';
html += '</tr>';
}
html += '</table>';
$("#students").html(html);
}
/* move group up */
$(".move_up").live("click", function() {
var currentRow = $(this).parent().parent();
var currentGroupClass = $(currentRow).attr("class");
var prevRow = $(currentRow).prev();
var prevGroupClass = $(prevRow).attr("class");
...