Skip to content

Commit

Permalink
working lab queue
Browse files Browse the repository at this point in the history
  • Loading branch information
Josh H committed Sep 8, 2018
1 parent 4ca94fc commit 0bbd193
Show file tree
Hide file tree
Showing 4 changed files with 228 additions and 23 deletions.
7 changes: 7 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
click==6.7
Flask==1.0.2
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
pkg-resources==0.0.0
Werkzeug==0.14.1
81 changes: 58 additions & 23 deletions server.py
Original file line number Diff line number Diff line change
@@ -1,38 +1,73 @@
#!/usr/bin/python3

from flask import Flask, request, abort, jsonify
from flask import Flask, request, jsonify, send_file

app = Flask(__name__)

help_queue = []
checkoff_queue = []


@app.route('/')
def index():
return 'Hello, World!'
index_file = 'www/index.html'
return send_file(index_file)

@app.route('/scripts.js')
def js():
js_file = 'www/scripts.js'
return send_file(js_file)


@app.route('/queue/help', methods=['GET', 'POST'])
def help_queue_manager():
msg = ''
if request.method == 'POST':
first_name = request.values.get('first_name')
last_name = request.values.get('last_name')
kerberos = request.values.get('kerberos')
remove = True if request.values.get('remove') == 'true' else False

if kerberos and first_name and last_name:
if remove:
help_queue.remove((first_name, last_name, kerberos))
msg = 'removed from queue'
else:
help_queue.append((first_name, last_name, kerberos))
msg = 'added to queue'
return jsonify({'message': msg})
else:
msg = 'missing queue data'
else:
return jsonify({'help_queue': help_queue})

return jsonify({'error_code': 400, 'message': msg})
msg = ''
if request.method == 'POST':
first_name = request.values.get('first_name')
last_name = request.values.get('last_name')
kerberos = request.values.get('kerberos')
remove = True if request.values.get('remove') == 'true' else False
if kerberos and first_name and last_name:
entry = (first_name, last_name, kerberos)
if remove and entry in help_queue:
help_queue.remove(entry)
msg = 'removed from queue'
elif entry not in help_queue:
help_queue.append(entry)
msg = 'added to queue'
return jsonify({'message': msg})
else:
msg = 'missing queue data'
else:
return jsonify({'help_queue': help_queue, 'message':msg})

return jsonify({'error_code': 400, 'message': msg})


@app.route('/queue/checkoff', methods=['GET', 'POST'])
def checkoff_queue_manager():
msg = ''
if request.method == 'POST':
first_name = request.values.get('first_name')
last_name = request.values.get('last_name')
kerberos = request.values.get('kerberos')
remove = True if request.values.get('remove') == 'true' else False

if kerberos and first_name and last_name:
entry = (first_name, last_name, kerberos)
if remove and entry in checkoff_queue:
checkoff_queue.remove(entry)
msg = 'removed from queue'
elif entry not in checkoff_queue:
checkoff_queue.append(entry)
msg = 'added to queue'
return jsonify({'message': msg})
else:
msg = 'missing queue data'
else:
return jsonify({'checkoff_queue': checkoff_queue, 'message': msg})

return jsonify({'error_code': 400, 'message': msg})

if __name__ == "__main__":
port = 5000
Expand Down
64 changes: 64 additions & 0 deletions www/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>21M.387 Lab Queue</title>

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link type="text/css" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-rc.2/css/materialize.min.css" media="screen,projection">

<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>

<body>
<nav>
<div class="nav-wrapper blue">
<a href="#" class="brand-logo center">21M.387</a>
</div>
</nav>

<div class="container">
<div class="row">
<div class="col s12 m6 section center-align" style="margin-bottom: 20px">
<h5>Help Queue</h5>

<table class="centered queue-table">
<thead>
<tr>
<th>Name</th>
<th>Kerberos</th>
<th></th>
</tr>
</thead>

<tbody id="help-queue-table">
</tbody>
</table>

</div>

<div class="col s12 m6 section center-align">
<h5>Checkoff Queue</h5>

<table class="centered queue-table">
<thead>
<tr>
<th>Name</th>
<th>Kerberos</th>
<th></th>
</tr>
</thead>

<tbody id="checkoff-queue-table">
</tbody>
</table>

</div>
</div>
</div>

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-rc.2/js/materialize.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="scripts.js"></script>
</body>
</html>
99 changes: 99 additions & 0 deletions www/scripts.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
$(document).ready(function() {
var site_base_url = 'http://localhost:5000';
var refresh_interval = 2000;

// button handler for help queue
$("#help-queue-table").on('click', '.btn-floating', function () {
var fn = $(this).parent().parent().data("first_name");
var ln = $(this).parent().parent().data("last_name");
var k = $(this).parent().parent().data("kerberos");
console.log($(this).parent().parent());

$.ajax({
type: "POST",
url: site_base_url + "/queue/help",
data: 'first_name='+fn+'&last_name='+ln+'&kerberos='+k+'&remove=true'
}).then(function(data) {
console.log(data);
});

$(this).parent().parent().remove()
});

// button handler for checkoff queue
$("#checkoff-queue-table").on('click', '.btn-floating', function () {
var fn = $(this).parent().parent().data("first_name");
var ln = $(this).parent().parent().data("last_name");
var k = $(this).parent().parent().data("kerberos");
console.log($(this).parent().parent());

$.ajax({
type: "POST",
url: site_base_url + "/queue/checkoff",
data: 'first_name='+fn+'&last_name='+ln+'&kerberos='+k+'&remove=true'
}).then(function(data) {
console.log(data);
});

$(this).parent().parent().remove()
});


// refresh the lab queue every `refresh_interval` seconds
setInterval(function() {

$.ajax({
type: "GET",
url: site_base_url + "/queue/help"
}).then(function(data) {
$('#help-queue-table').empty()
if (data.message.length > 0) {console.log(data.message)};
$.each(data.help_queue, function(i, item) {
pulse = '';
if (i == 0) {
pulse = 'pulse'
};

$('#help-queue-table').append(
$('<tr>').append(
$('<td>').text(item[0] + " " + item[1][0]),
$('<td>').text(item[2]),
$('<td>').append(
$('<a>').addClass("btn-floating btn-small waves-effect waves-light red "+pulse).append(
$('<i>').addClass("material-icons").text('remove')
)
)
).data('first_name', item[0]).data('last_name', item[1]).data('kerberos', item[2])
);
});
});

$.ajax({
type: "GET",
url: site_base_url + "/queue/checkoff"
}).then(function(data) {
$('#checkoff-queue-table').empty()
if (data.message.length > 0) {console.log(data.message)};
$.each(data.checkoff_queue, function(i, item) {
pulse = '';
if (i == 0) {
pulse = 'pulse'
};

$('#checkoff-queue-table').append(
$('<tr>').append(
$('<td>').text(item[0] + " " + item[1][0]),
$('<td>').text(item[2]),
$('<td>').append(
$('<a>').addClass("btn-floating btn-small waves-effect waves-light red "+pulse).append(
$('<i>').addClass("material-icons").text('remove')
)
)
).data('first_name', item[0]).data('last_name', item[1]).data('kerberos', item[2])
);
});
});

}, refresh_interval);

});

0 comments on commit 0bbd193

Please sign in to comment.