front page updates as it runs

This commit is contained in:
James Turk 2011-09-28 17:50:03 -04:00
parent 51480fafcc
commit 5247350524
3 changed files with 37 additions and 5 deletions

View File

@ -5,13 +5,44 @@ oyster
{% endblock %}
{% block body %}
<script type="text/javascript">
var REFRESH = 5000;
var MAX_ROWS = 100;
setInterval(function() {
jQuery.getJSON('/?json', function(data) {
jQuery('#tracking_val').text(data.tracking);
jQuery('#need_update_val').text(data.need_update);
var latest_link = jQuery('tr td a')[0]['href'].split('/tracked/')[1];
var new_rows = ''
for(var i=0; i < data.logs.length; ++i) {
if(latest_link == data.logs[i].url) {
break;
}
if(data.logs[i].error) {
new_rows += '<tr class="error">'
} else {
new_rows += '<tr>';
}
new_rows += '<td>' + data.logs[i].action + '</td>\n';
new_rows += '<td><a href="{{request.script_root}}/tracked/' + data.logs[i].url + '">' + data.logs[i].url + '</td>';
new_rows += '<td>' + data.logs[i].timestamp + '</td>';
if(data.logs[i].error) {
new_rows += '<td>' + data.logs[i].error + '</td></tr>';
} else {
new_rows += '<td></td></tr>';
}
}
jQuery('tr:first').after(new_rows);
jQuery('tr:gt(' + MAX_ROWS + ')').empty()
});
}, REFRESH);
</script>
<div class="span-4">
<h2>Stats</h2>
<dl>
<dt>Queue Size</dt><dd>{{queue_size}}</dd>
<dt>Tracking</dt><dd>{{tracking}}</dd>
<dt>Need Update</dt><dd>{{need_update}}</dd>
<dt>Tracking</dt><dd id="tracking_val">{{tracking}}</dd>
<dt>Need Update</dt><dd id="need_update_val">{{need_update}}</dd>
<dt>Mongo Host</dt><dd>{{mongo_host}}</dd>
</dl>
</div>

View File

@ -1,4 +1,3 @@
<tr{% if log.error %} class="error" {% endif %}>
<td>{{log.action}}</td>
<td><a href="{{request.script_root}}/tracked/{{log.url}}">{{log.url}}</td>

View File

@ -19,6 +19,7 @@ class JSONEncoder(json.JSONEncoder):
else:
return super(JSONEncoder, self).default(obj)
def _path_fixer(url):
""" this exists because werkzeug seems to collapse // into / sometimes
certainly a hack, but given that werkzeug seems to only do the mangling
@ -26,6 +27,7 @@ def _path_fixer(url):
"""
return re.sub(r'(http|https|ftp):/([^/])', r'\1://\2', url)
def api_wrapper(template=None):
def wrapper(func):
@functools.wraps(func)
@ -50,7 +52,7 @@ def index():
status = {
'tracking': client.db.tracked.count(),
'need_update': client.get_update_queue_size(),
'logs': client.db.logs.find().sort('$natural', -1).limit(20),
'logs': list(client.db.logs.find().sort('$natural', -1).limit(20)),
'mongo_host': settings.MONGO_HOST,
}
return status