// Constants const OtreeBody = document.getElementsByClassName("_otree-content")[0]; const TablePaddingV = js_vars.TablePaddingV; const TablePaddingH = js_vars.TablePaddingH; const iTimeOut = js_vars.iTimeOut; const vColNames = js_vars.vColnames; const vRowNames = js_vars.vRownames; const sImagePath = js_vars.sImagePath; // O-tree variables let sActivation = js_vars.sActivation; let vTrigger = js_vars.vTrigger.split(','); let Attr_order = js_vars.Attr_order; let vOutcomes = js_vars.vOutcomes.split(','); // Time and Click variables let sPreviousPress = 'Start'; let dPreviousTime = new Date().getTime(); let now = new Date().getTime(); let StartTime = new Date().getTime(); let diff = 0; console.log(vOutcomes); console.log(vColNames); console.log(vRowNames); // record time of pressing // Create hidden input (Decision) let iDec = document.createElement("input"); iDec.type = 'hidden'; iDec.name = 'iDec'; iDec.id = 'iDec'; iDec.value = ''; // Create hidden input (Pressed Buttons) let sButtonClick = document.createElement("input"); sButtonClick.type = 'hidden'; sButtonClick.name = 'sButtonClick'; sButtonClick.id = 'sButtonClick'; sButtonClick.value = ''; // Create hidden input (Time Buttons) let sTimeClick = document.createElement("input"); sTimeClick.type = 'hidden'; sTimeClick.name = 'sTimeClick'; sTimeClick.id = 'sTimeClick'; sTimeClick.value = ''; // Hidden Next Button let EndButton = document.createElement('button'); EndButton.style.visibility = 'hidden'; EndButton.className = 'next_button btn btn-primary btn-large'; // Game-Wrapper let GameBody = document.createElement('div'); GameBody.className = 'game-body'; // Create hidden input (Decision) let dRT = document.createElement("input"); dRT.type = 'hidden'; dRT.name = 'dRT'; dRT.id = 'dRT'; dRT.value = ''; // Create Table during Page loading document.addEventListener("DOMContentLoaded", function(debug=true) { OtreeBody.appendChild(GameBody); // Include Table CreateTable(vOutcomes,TableId='T',TableClass='gametable',sActivation,vTrigger,vRowNames,vColNames,DecID = 'iDec'); // Include inputs GameBody.appendChild(sButtonClick); GameBody.appendChild(sTimeClick); GameBody.appendChild(dRT); GameBody.append(EndButton); // Start Timer if (iTimeOut>0) { console.log('Time-out limit set to: '+iTimeOut); setTimeout(OutOfTime, iTimeOut*1000); } else if (iTimeOut==0) { // Do Nothing console.log('No Time-out limit'); } else { console.log(iTimeOut+' is not correctly defined'); } // Correct Table Sizes CheckOverflow(); window.addEventListener('resize',CheckOverflow); let x = document.getElementById('T').getElementsByTagName('button'); for (let j=0; j=dPreviousTime) { // substract the blurred time diff = (now-dPreviousTime)-(TFocus-TBlur); } else { diff = (now-dPreviousTime); } // Add Time if (sTimeClick.value) { sTimeClick.value = sTimeClick.value+';'+ diff; } else { sTimeClick.value = diff; }; // Replace previous time dPreviousTime = now; } //console.log(sTimeClick.value); }); } else if (sActivation=='mouseover') { // mouseover btn.addEventListener('mouseover', function() { // Check that new element is pressed if (btn.id != sPreviousPress) { // Record new time dPreviousTime = new Date().getTime(); // display specific content and hide rest HideEverything(); DisplayContent(DisplayClass); // record button pressed if (sButtonClick.value) { sButtonClick.value = sButtonClick.value+';'+btn.id; } else { sButtonClick.value = btn.id; }; // change previous to new sPreviousPress = btn.id; //console.log(sButtonClick.value); } }); // Mouseout btn.addEventListener('mouseout', function() { // Record Event Time now = new Date().getTime(); // Hide the content & Reset previous item sPreviousPress = ' '; HideEverything(); // Check if there is focus checks if (typeof bCheckFocus !== 'undefined' && bCheckFocus==true && TBlur>=dPreviousTime) { // substract the blurred time diff = (now-dPreviousTime)-(TFocus-TBlur); } else { diff = (now-dPreviousTime); } // Add Time if (sTimeClick.value) { sTimeClick.value = sTimeClick.value+';'+ diff; } else { sTimeClick.value = diff; }; //console.log(sTimeClick.value); }); } else { console.log('"'+sActivation+'"'+' is not a valid Activation method') } }; // ----------------------------------------------------- // // Function: Display Contents from a specific class // Inputs: // - DisplayClass : String, class combination that will be activated // ----------------------------------------------------- // function DisplayContent(DisplayClass) { let x = document.getElementsByClassName(DisplayClass); for(let i = 0; i { table.classList.add(element); }); } let row = table.insertRow(0); row.classList.add('game-element'); let cell = row.insertCell(0); cell.classList.add('game-element'); // Fill header for (j=0; j