Index: openacs-4/packages/xowf/www/resources/inclass-exam.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowf/www/resources/Attic/inclass-exam.js,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/xowf/www/resources/inclass-exam.js 24 Nov 2023 13:50:34 -0000 1.1.2.1 @@ -0,0 +1,51 @@ +function handleSearch () { + var searchTerm_orig = document.getElementById("search-question-string").value; + var searchTerm = searchTerm_orig; + + // search for quoted text and add it to the token array + // remove the qouted string from the searchTerm + var pattern = /".*?"/g; + var current; + var tokens_quoted = []; + while(current = pattern.exec(searchTerm_orig)) { + console.log (current[0]); + searchTerm = searchTerm.replace(current[0],''); + tokens_quoted.push(current[0].replace(/"/g,"")); + } + + // split the rest of the searchTerm and add it to the token array + var tokens = searchTerm + .toLowerCase() + .split(' ') + .filter(function(token){ + return token.trim() !== ''; + }); + + tokens = tokens.concat(tokens_quoted); + + var searchTermRegex = ''; + if(tokens.length) { + searchTermRegex = new RegExp(tokens.join('|'), 'gim'); + } + var searchContentChecked = document.getElementById("search-content").checked; + + var questions = document.getElementsByClassName('test-item'); + for (var i = 0; i < questions.length; i++) { + question_info = questions.item(i).getAttribute('data-item_type'); + if (questions.item(i).querySelector('.grading-box') != null) { + var text = questions.item(i).querySelector('.grading-box').dataset.title; + } else { + //fallback if no grading-box is rendered + var text = questions.item(i).textContent; + } + if (searchContentChecked) { + text = questions.item(i).textContent; + } + if (searchTermRegex == '' || text.match(searchTermRegex)) { + questions.item(i).style.display = 'block'; + } else { + questions.item(i).style.display = 'none'; + } + } + return; +}