Seating
Seating algorithm question for SO
HTML
<form id="form">
<div>
<span>Prio 1</span>
<select></select>
<label><input type="checkbox"> Separate?</label>
</div>
<br>
<input type="submit" value="Seat">
</form>
<pre id="result"></pre>
CSS
#result{
overflow: auto;
width: 100%;
}
JavaScript
// The data model
var data = {
guests: [], // id, name, tags
tables: [], // id, seats
seats: [], // id, guest
tags: [] // id, name
};
// Create some tags
data.tags.push({ id: 0, name: 'Gender' });
data.tags.push({ id: 1, name: 'Language' });
data.tags.push({ id: 2, name: 'Region' });
// Create some guests
for(var i = 0; i < 10; i++)
data.guests.push({
id: i,
name: 'Samuel ' +i,
tags: [
(i % 2 == 0 ? 'M' : 'F'),
(i % 3 == 0 ? 'English' : 'Swedish'),
(i % 2 == 0 ? 'US' : 'Sweden')
]
});
// Create some tables
for(var i = 0; i < 10; i++){
var seats = [],
numSeats = Math.floor(Math.random() * 10);
for(var j = 0; j < numSeats; j++)
seats.push(j);
data.tables.push({
id: i,
seats: seats
});
}
// Create some seats
for(var i = 0; i < 10; i++){
data.seats.push({
id: i,
guest: 1 + Math.floor(Math.random() * 10)
});
}
//console.log(data);
// Init the form
var $tags = $('#form select:nth(0)');
for(var i = 0; i < data.tags.length; i++)
$tags.append('<option value="'
+ data.tags[i].id + '">'
+ data.tags[i].name
+ '</option>');
$tags.parent().clone().insertAfter($tags.parent()).find('span').html('Prio 5');
$tags.parent().clone().insertAfter($tags.parent()).find('span').html('Prio 4');
$tags.parent().clone().insertAfter($tags.parent()).find('span').html('Prio 3');
$tags.parent().clone().insertAfter($tags.parent()).find('span').html('Prio 2');
var printData = function(){
var html = '',
props = ['guests', 'tables', 'seats', 'tags'];
for(var j = 0; j < props.length; j++){
html += '\n--- ' + props[j] + ' ---';
for(var i = 0; i < data[props[j]].length; i++){
html += '\nid:\t' + data[props[j]][i].id;
var secondProp = '';
if(data[props[j]][i].name)
secondProp = 'name';
...