Add configurable values to rule system
This commit is contained in:
		@ -33,7 +33,7 @@
 | 
			
		||||
					Title:<br>
 | 
			
		||||
					<input type="text" id="titleField" required>
 | 
			
		||||
					Style:<br>
 | 
			
		||||
					<select type="select" id="styleField" required>
 | 
			
		||||
					<select type="select" id="styleField" onchange="updateDynamicRuleFields()" required>
 | 
			
		||||
						<option value="FSG"			 >FSG			</option>
 | 
			
		||||
						<option value="FSA"			 >FSA			</option>
 | 
			
		||||
						<option value="FSN"			 >FSN			</option>
 | 
			
		||||
@ -42,6 +42,28 @@
 | 
			
		||||
						<option value="FSSpain"		 >FSSpain		</option>
 | 
			
		||||
						<option value="FSSwitzerland">FSSwitzerland	</option>
 | 
			
		||||
					</select>
 | 
			
		||||
					<div id="extraFields"></div>
 | 
			
		||||
					<script>
 | 
			
		||||
						var drf_sf = document.getElementById('styleField')
 | 
			
		||||
						var drf_ef = document.getElementById('extraFields')
 | 
			
		||||
						function updateDynamicRuleFields() {
 | 
			
		||||
							switch (drf_sf.value) {
 | 
			
		||||
								case 'FSG':
 | 
			
		||||
								case 'FSA':
 | 
			
		||||
									drf_ef.innerHTML = 'Minutes per question:<br><input type="number" id="qTimeField" value="5" min="1" max="30" required>'
 | 
			
		||||
									break
 | 
			
		||||
								case 'FSCzech':
 | 
			
		||||
									drf_ef.innerHTML = 'Seconds Timeout after handin:<br><input type="number" id="sTOutField" value="30" min="1" max="300" required>'
 | 
			
		||||
									break
 | 
			
		||||
								case 'FSSpain':
 | 
			
		||||
									drf_ef.innerHTML = 'Number of handin tries:<br><input type="number" id="sTriesField" value="3" min="1" max="10" required>'
 | 
			
		||||
									break
 | 
			
		||||
								default:
 | 
			
		||||
									drf_ef.innerHTML = ''
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
						updateDynamicRuleFields()
 | 
			
		||||
					</script>
 | 
			
		||||
					Paste your questions from a spreadsheet here:<br>
 | 
			
		||||
					<textarea rows="16" id="questions" required></textarea>
 | 
			
		||||
					<br>
 | 
			
		||||
 | 
			
		||||
@ -134,7 +134,7 @@ function reStartQuiz() {
 | 
			
		||||
 | 
			
		||||
	state.totalTimer = 0
 | 
			
		||||
	state.submitTimer = 0
 | 
			
		||||
	state.success = 0
 | 
			
		||||
	state.success = false
 | 
			
		||||
 | 
			
		||||
	startQuiz()
 | 
			
		||||
 | 
			
		||||
@ -153,6 +153,9 @@ function createQuiz(e) {
 | 
			
		||||
	state.title = document.getElementById('titleField').value
 | 
			
		||||
	state.style = document.getElementById('styleField').value
 | 
			
		||||
 | 
			
		||||
	// After state.style is set
 | 
			
		||||
	applyRuleSettingsFromForm()
 | 
			
		||||
 | 
			
		||||
	if (parseSpreadsheet().success == false) {
 | 
			
		||||
		alert('Quiz creation failed.')
 | 
			
		||||
		return
 | 
			
		||||
@ -164,7 +167,8 @@ function createQuiz(e) {
 | 
			
		||||
 | 
			
		||||
	changeView('prescreen')
 | 
			
		||||
 | 
			
		||||
	console.log('Quiz created')
 | 
			
		||||
	console.log('Quiz created:')
 | 
			
		||||
	console.log(state)
 | 
			
		||||
 | 
			
		||||
	return false
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -89,7 +89,7 @@ input[type="button"]:disabled, input[type="submit"]:disabled {
 | 
			
		||||
	background: #888 !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
textarea, input[type="text"], select {
 | 
			
		||||
input[type="text"], input[type="number"], textarea, select {
 | 
			
		||||
	background: #ddd;
 | 
			
		||||
	margin-bottom: 16px;
 | 
			
		||||
	padding: .5em;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										23
									
								
								web/util.js
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								web/util.js
									
									
									
									
									
								
							@ -3,7 +3,9 @@ const defaultState = {
 | 
			
		||||
	id: null,
 | 
			
		||||
	title: null,
 | 
			
		||||
	questions: [],
 | 
			
		||||
	success: 0,
 | 
			
		||||
	success: false,
 | 
			
		||||
	submitTries: 1,
 | 
			
		||||
	submits: 0,
 | 
			
		||||
	submitTime: null,
 | 
			
		||||
	submitTimer: 0,
 | 
			
		||||
	submitInterval: null,
 | 
			
		||||
@ -32,7 +34,7 @@ function updateTitles() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const rules = {
 | 
			
		||||
var rules = {
 | 
			
		||||
	__default__: {
 | 
			
		||||
		sequential: false,
 | 
			
		||||
		submitTries: 1,
 | 
			
		||||
@ -66,6 +68,23 @@ function getRule(name) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function applyRuleSettingsFromForm() {
 | 
			
		||||
 | 
			
		||||
	switch (state.style) {
 | 
			
		||||
		case 'FSG':
 | 
			
		||||
		case 'FSA':
 | 
			
		||||
			state.questionTime = parseInt(document.getElementById('qTimeField').value)
 | 
			
		||||
			break
 | 
			
		||||
		case 'FSCzech':
 | 
			
		||||
			state.submitTime   = parseInt(document.getElementById('sTOutField').value)
 | 
			
		||||
			break
 | 
			
		||||
		case 'FSSpain':
 | 
			
		||||
			state.submitTries  = parseInt(document.getElementById('sTriesField').value)
 | 
			
		||||
			break
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function changeView(view) {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user