Finished story module

This commit is contained in:
2019-01-03 22:43:55 +00:00
parent fba8d03fcd
commit cde40f17cf
6 changed files with 102 additions and 23 deletions
+10 -6
View File
@@ -58,7 +58,7 @@ class EEGStoryTrainThread(BaseThread):
socketio=socketio,
participant=participant)
self.toSave = ['trial_ind', 'answers', 'question', 'selected_q', 'nTrials', 'wav_file', 'test_name']
self.toSave = ['trial_ind', 'answers', 'question', 'selected_q', 'nTrials', 'wav_files', 'test_name']
self.socketio.on_event('submit_response', self.submitTestResponse, namespace='/main')
@@ -67,9 +67,6 @@ class EEGStoryTrainThread(BaseThread):
self.dev_mode = True
def loadResponse(self):
self.socketio.emit('test_fill_table', {'data': self.answers}, namespace='/main')
def setQuestion(self, q):
self.socketio.emit('current_question', data=q[0], namespace='/main')
@@ -78,7 +75,7 @@ class EEGStoryTrainThread(BaseThread):
Main loop for iteratively finding the SRT
'''
self.waitForPageLoad()
self.loadResponse()
self.fillTable()
self.socketio.emit('test_ready', namespace='/main')
# For each stimulus
trials = list(zip(self.wav_files, self.question))[self.trial_ind:]
@@ -92,7 +89,7 @@ class EEGStoryTrainThread(BaseThread):
self.playStimulus(wav)
self.waitForResponse()
if self._stopevent.isSet() or self.finishTest:
return
break
self.processResponse()
self.trial_ind += 1
self.saveState(out=self.backupFilepath)
@@ -116,8 +113,15 @@ class EEGStoryTrainThread(BaseThread):
self.answers[self.trial_ind] = self.answer
self.socketio.emit('test_resp', {'trial_ind': self.trial_ind, "ans": self.answer}, namespace='/main')
def fillTable(self):
'''
'''
for ind, ans in enumerate(self.answers):
self.socketio.emit('test_resp', {'trial_ind': ind, "ans": ans}, namespace='/main')
def loadStimulus(self):
'''
'''
self.wav_files = natsorted(globDir(self.stimDir, '*.wav'))
q_files = natsorted(globDir(self.stimDir, '*.csv'))
for wav_file, q_file in zip(self.wav_files, q_files):
+2 -2
View File
@@ -89,12 +89,12 @@
})
$('#load_story_train_backup').click(function(event) {
$('#load_train_story_backup').click(function(event) {
// Send message to call stimulus generation function in Python
socket.emit('load_backup_test', {part_key: $("#participant").val(), test_name: "eeg_story_train"});
return false;
})
$('#load_story_train_saved').click(function(event) {
$('#load_train_story_saved').click(function(event) {
// Send message to call stimulus generation function in Python
socket.emit('load_session', {part_key: $("#participant").val(), test_name: "eeg_story_train"});
return false;
@@ -1,3 +1,78 @@
{% extends 'index.html' %}
{% block content %}
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
<div class="card">
<div id="main-div" class="card-body">
<table id="eeg_test_table" class="table table-sm table">
<thead class="thead-dark">
<tr>
<th scope="col">Trial #</th>
<th scope="col">1</th>
<th scope="col">2</th>
<th scope="col">3</th>
<th scope="col">4</th>
<th scope="col">5</th>
<th scope="col">6</th>
<th scope="col">7</th>
<th scope="col">8</th>
</tr>
</thead>
<tbody>
<tr id="Q1">
<th scope="row">Q</th>
<td class="T1">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T2">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T3">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T4">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T5">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T6">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T7">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T8">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<script>
$(document).ready(function(){
// Initialise socketio with a namespace called "main"
var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port + '/main');
socket.on('test_resp', function(msg) {
console.log("Yup");
$(`#Q1 > .T${parseInt(msg['trial_ind'])+1} > button`).attr("data-original-title", msg['ans']).tooltip('show');
});
});
</script>
{% endblock %}
@@ -21,42 +21,42 @@
<tr id="Q1">
<th scope="row">Q</th>
<td class="T1">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="--">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T2">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="--">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T3">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="--">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T4">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="--">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T5">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="--">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T6">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="--">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T7">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="--">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
<td class="T8">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="--">
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom">
Ans
</button>
</td>
@@ -84,7 +84,6 @@
});
socket.on('test_resp', function(msg) {
debugger;
$(`#Q1 > .T${parseInt(msg['trial_ind'])+1} > button`).attr("data-original-title", msg['ans']).tooltip('show');
});
+3 -4
View File
@@ -99,11 +99,10 @@
$("#overlay").fadeOut();
}
// Catch message when asynchronous process is complete
socket.on('processing-complete', function(msg) {
// Re-enable all inputs
$('#main-div').find('input, textarea, button, select').removeAttr('disabled');
alert("/da/ stimulus processing complete!")
window.location.href = '/da/complete';
alert("Story stimulus processing complete!")
window.location.href = '/eeg/train/story/complete';
});
});
</script>
+4 -2
View File
@@ -102,8 +102,8 @@ class BaseThread(Thread):
thread
'''
self.finishTest = True
self.wavThread._stopevent.set()
print(self.finishTest)
if self.wavThread:
self.wavThread._stopevent.set()
def join(self, timeout=None):
@@ -227,6 +227,8 @@ class BaseThread(Thread):
self.clinPageLoaded = True
else:
self.partPageLoaded = True
print("PART: {}".format(self.partPageLoaded))
print("CLIN: {}".format(self.clinPageLoaded))
self.pageLoaded = self.clinPageLoaded and self.partPageLoaded