mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-13 15:50:59 +00:00
Merge branch 'master' of ssh://localhost:12347/home/trac/git
This commit is contained in:
commit
7b1d010f85
9 files changed
+44
-31
No files matched your search
@@ -43,7 +43,9 @@ class LiveDataReceiver(threading.Thread):
|
||||
|
||||
# make it possible to pause listener
|
||||
if self.paused is True:
|
||||
time.sleep(1)
|
||||
print >>sys.stderr, '#',
|
||||
sys.stderr.flush()
|
||||
time.sleep(5)
|
||||
continue
|
||||
|
||||
conf = URIConfigurator(self.host, self.port)
|
||||
@@ -62,7 +64,7 @@ class LiveDataReceiver(threading.Thread):
|
||||
else:
|
||||
conf.setParameters(dict(eventname=self.eventname, racename=self.racename, sinceupdate=self.updatecount))
|
||||
|
||||
conf.setLogging(True)
|
||||
conf.setLogging(False)
|
||||
|
||||
try:
|
||||
# need to lock because other threads could overwrite information
|
||||
|
||||
@@ -231,13 +231,16 @@ class BaseView(object):
|
||||
if name[0] == 'ETASEC':
|
||||
val = '%.f:%d' % (int(value) / 60, int(value)-( (int(value)/60)*60 ))
|
||||
if len(val.split(':')[-1]) == 1:
|
||||
val = '%s0' % val
|
||||
val = '0%s' % val
|
||||
|
||||
if val == '00:0':
|
||||
val = '0:0'
|
||||
|
||||
if name[0] == 'GLP':
|
||||
if value > 0:
|
||||
val = '<img height="9" src="/moderator-static/arrow-gain.png"/>%s' % value
|
||||
val = '<img style="padding-right: 2px;" src="/moderator-static/arrow-gain.png"/>%s' % value
|
||||
elif value < 0:
|
||||
val = '<img height="9" src="/moderator-static/arrow-loss.png"/>%s' % abs(value)
|
||||
val = '<img style="padding-right: 2px;" src="/moderator-static/arrow-loss.png"/>%s' % abs(value)
|
||||
else: val = '0'
|
||||
|
||||
return val
|
||||
|
||||
@@ -180,6 +180,12 @@ def configureListener(context, request):
|
||||
view.session['listener-started'] = True
|
||||
view.session.save()
|
||||
|
||||
elif request.POST.get('emergency-reload', None):
|
||||
state = reloadData(context, request)
|
||||
if state is True:
|
||||
return view.yieldMessage('Data refreshed! Can take a while until listener threads recover. Make sure to also reload running Leaderboards!')
|
||||
return view.yieldMessage('Could not refresh data - this should NEVER happen :-)')
|
||||
|
||||
elif request.POST.get('disconnect-server', None):
|
||||
# disconnect does not stop listeners but just disconnects the
|
||||
# session of the user from server
|
||||
@@ -696,21 +702,28 @@ def reloadData(context, request):
|
||||
# drops all data in database and reload all running listeners
|
||||
|
||||
view = core.BaseView(context, request)
|
||||
event = view.currentEvent()
|
||||
|
||||
if event:
|
||||
# pause all listener threads
|
||||
for listener in threaded_listener.values():
|
||||
if listener.paused == False:
|
||||
listener.paused = True
|
||||
|
||||
# pause all listener threads
|
||||
for listener in threaded_listener.values():
|
||||
if listener.paused == False:
|
||||
listener.paused = True
|
||||
# give threads time to pause
|
||||
time.sleep(10)
|
||||
|
||||
# remove competitors matching the event
|
||||
model.CompetitorImpl.removeAllBy(event=event.name)
|
||||
# drop DB with all data in it
|
||||
from sailing.db.monitoring import dropDB
|
||||
dropDB()
|
||||
|
||||
# reload event data completely
|
||||
configurator = view.listenerConf()
|
||||
configurator.setContext(config.MODERATOR)
|
||||
configurator.setCommand(config.LIST_EVENTS)
|
||||
provider.eventConfiguration(configurator)
|
||||
# reload event data completely
|
||||
configurator = view.listenerConf()
|
||||
configurator.setContext(config.MODERATOR)
|
||||
configurator.setCommand(config.LIST_EVENTS)
|
||||
provider.eventConfiguration(configurator)
|
||||
|
||||
# start threads again
|
||||
for listener in threaded_listener.values():
|
||||
if listener.paused == True:
|
||||
listener.paused = False
|
||||
|
||||
return True
|
||||
@@ -108,14 +108,13 @@ function sortBy(param, element) {
|
||||
}
|
||||
|
||||
function yieldValue(element, newvalue, ignore_zeros, alternate_value) {
|
||||
if (element.html() != newvalue) {
|
||||
if (ignore_zeros == true && (newvalue == '0' || newvalue == 0)) {
|
||||
|
||||
// show alternate value
|
||||
if (alternate_value != undefined && alternate_value != '' && alternate_value != 'None') {
|
||||
element.html(alternate_value);
|
||||
} else {
|
||||
element.html(' ');
|
||||
element.html('—');
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -132,11 +131,6 @@ function yieldValue(element, newvalue, ignore_zeros, alternate_value) {
|
||||
else
|
||||
element.html(newvalue);
|
||||
|
||||
} else {
|
||||
if (alternate_value != undefined && alternate_value != '' && alternate_value != 'None') {
|
||||
element.html(alternate_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 201 B After Width: | Height: | Size: 172 B |
Binary file not shown.
|
Before Width: | Height: | Size: 205 B After Width: | Height: | Size: 177 B |
Binary file not shown.
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 398 B |
@@ -29,8 +29,9 @@ When <i>stopping listener</i> it will trigger two methods: If you select a race
|
||||
<fieldset>
|
||||
<legend>Handling</legend>
|
||||
<input type="submit" name="listener-event-refresh" value="(Re) load event data"/>
|
||||
<input type="submit" name="disconnect-server" value="Disconnect your session"/>
|
||||
<input type="submit" name="disconnect-server" value="Disconnect your browser session"/>
|
||||
|
||||
<input type="submit" name="emergency-reload" value="Emergency reload" style="background-color: orange;"/>
|
||||
<input type="submit" name="listener-stop" value="Stop Server (for whole event or single race)" style="background-color: #cc3300;"/>
|
||||
|
||||
</fieldset>
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
</div>
|
||||
<!-- / YIELD THE MAIN INTERFACE -->
|
||||
<!-- / MAIN INTERFACE -->
|
||||
<div id='main-interface'>
|
||||
<div id='main-interface' tal:define="indexbase int(request.params.get('r', 0))*3">
|
||||
<div class='blue-table'>
|
||||
<a id="refresh-button" class='pause-btn' href='javascript:;' onclick='toggleListener($(this));'><img src='/static/images/ajax-loader-greybg.gif'/></a>
|
||||
<a class='sort-rank sort-desc' href='javascript:;' onclick='sortBy("current_rank", $(this))'></a>
|
||||
@@ -117,7 +117,7 @@
|
||||
</ul>
|
||||
<span id="race-">${racebundles[int(request.params.get('r', 0))].index(bundle)+1+(int(request.params.get('r', 0))*3)}</span>
|
||||
</a>
|
||||
<a class='main-box-sort sort-desc' href='javascript:;' onclick='sortBy("${raceid}", $(this))'></a>
|
||||
<a class='main-box-sort sort-desc' href='javascript:;' onclick='sortBy("${indexbase+raceid}", $(this))'></a>
|
||||
</div>
|
||||
|
||||
<!-- START POINT -->
|
||||
@@ -148,7 +148,7 @@
|
||||
<tr rowid='0'>
|
||||
<tal:for repeat="column columns">
|
||||
<td class='table-sorting' colid='${repeat["column"].number}'>
|
||||
<a class='sort-desc' href='javascript:;' onclick='sortBy("${raceid},${markid},${repeat["column"].number}", $(this))'></a>
|
||||
<a class='sort-desc' href='javascript:;' onclick='sortBy("${indexbase+raceid},${markid},${repeat["column"].number}", $(this))'></a>
|
||||
</td>
|
||||
</tal:for>
|
||||
</tr>
|
||||
@@ -172,7 +172,7 @@
|
||||
<span tal:condition="not repeat['leg'].end">M${markid-1}</span>
|
||||
<span tal:condition="repeat['leg'].end">F</span>
|
||||
|
||||
<a class='leg-box-sort sort-desc' href='javascript:;' onclick='sortBy("${raceid},${markid-1}", $(this))'></a>
|
||||
<a class='leg-box-sort sort-desc' href='javascript:;' onclick='sortBy("${indexbase+raceid},${markid-1}", $(this))'></a>
|
||||
<a tal:omit-tag="repeat['leg'].end" class='leg-box-active' href='javascript:;' onclick='$(this).closest(".leg-wrap").find(".race-table").toggle();'>
|
||||
<ul>
|
||||
<tal:for repeat="markrow range(1,21)">
|
||||
@@ -196,7 +196,7 @@
|
||||
<tr rowid='0'>
|
||||
<tal:for repeat="column columns">
|
||||
<td class='table-sorting' colid='${repeat["column"].number}'>
|
||||
<a class='sort-desc' href='javascript:;' onclick='sortBy("${raceid},${markid},${repeat["column"].number}", $(this))'></a>
|
||||
<a class='sort-desc' href='javascript:;' onclick='sortBy("${indexbase+raceid},${markid},${repeat["column"].number}", $(this))'></a>
|
||||
</td>
|
||||
</tal:for>
|
||||
</tr>
|
||||
|
||||
Reference in new issue
Block a user