assets/js/X-letter.js in word-games-theme-0.1.5 vs assets/js/X-letter.js in word-games-theme-0.1.6

- old
+ new

@@ -74,14 +74,52 @@ filterData = data.filter((item) => item.length == 3) } else if (window.location.pathname == '/two-letter-word-finder/result') { filterData = data.filter((item) => item.length == 2) } + if (prefixValue) { + filterData = filterData.filter((item2) => + item2.startsWith(prefixValue.toLowerCase()) + ) + startsWith.classList.add('tick') + startsWith.value = prefixValue + } + if (containsValue) { + filterData = filterData.filter((item) => + item.includes(containsValue.toLowerCase()) + ) + mustInclude.classList.add('tick') + mustInclude.value = containsValue + } + if (suffixValue) { + filterData = filterData.filter((item) => + item.endsWith(suffixValue.toLowerCase()) + ) + endsWith.classList.add('tick') + endsWith.value = suffixValue + } + if (filterData.length === 0) { main.innerHTML += '' errorMsg.innerHTML = 'No words Found with this length' } else { + // sort eventlistener + theSelect.addEventListener('change', () => { + sortValue = theSelect[theSelect.selectedIndex].text + if (sortValue == 'Z-A') { + sortBool = true + sortby(sortBool, filterData, itemLength) + } else { + sortBool = false + sortby(sortBool, filterData, itemLength) + } + if (sortValue == 'Points') { + sortBool = true + sortPointsby(sortBool, filterData, itemLength) + } + }) + newWordsLength += filterData.length let itemLength = '' const result = filterData.map((item) => { itemLength = item.length let ScrabbleLetterScore = ScrabbleScore() @@ -119,9 +157,141 @@ ` } wordCount.innerHTML = `<strong>${newWordsLength} words with letters ${serachValue.split( '' )}</strong>` + } +} + +//Handling of filter counter in advanced filter +function addFilterCount() { + let filter_val = document.getElementsByClassName('filter_val') + let filter = document.querySelector('.filter_count') + let filter_count = 0 + + filter_val[0].value = prefixValue + filter_val[1].value = containsValue + filter_val[2].value = suffixValue + filter_val[3].value = lengthValue + + for (var i = 0; i < 4; i++) { + if (filter_val[i].value != '') { + filter_count += 1 + } + if (filter_count === 0) { + filter.style.display = 'none' + } else { + filter.style.display = 'inline-block' + } + + filter.innerHTML = filter_count + } +} +addFilterCount() + +// sorting by points +function sortPointsby(sortValue, data, i) { + if (sortValue) { + main.innerHTML = '' + let newArray = [] + data.map((item) => { + let ScrabbleLetterScore = ScrabbleScore() + let points = 0 + item = item.toLowerCase() + for (let i = 0; i < item.length; i++) { + points += ScrabbleLetterScore[item[i]] || 0 // for unknown characters + } + const value = { + words: item, + points: points, + } + newArray.push(value) + newArray.sort(function (a, b) { + return b.points - a.points + }) + }) + const result = newArray.map((item) => { + return `<a class="anchor__style" title="Lookup python in Dictionary" target="_blank" href="/word-meaning?search=${item.words}"> + <li>${item.words} + <span class="points" value="${item.points}" style="position:relative; top:4px; font-size:12px"> ${item.points}</span> + </li></a>` + }) + + main.innerHTML += ` + <div class="allGroupWords wordlistContainer" id="alpha_${i}"> + <div class="wordListHeading"> + <h3 class="lead">${i} Letter Words</h3> + </div> + <div class="wordList"> + <ul class="ul list-unstyled"> + ${result.join('')} + </ul> + </div> + </div> + ` + } +} + +// sort by aplhabets +function sortby(sortBool, data, i) { + if (sortBool) { + main.innerHTML = '' + data.reverse() + const result = data.map((item) => { + let ScrabbleLetterScore = ScrabbleScore() + let sum = 0 + item = item.toLowerCase() + for (let i = 0; i < item.length; i++) { + sum += ScrabbleLetterScore[item[i]] || 0 // for unknown characters + } + return `<a class="anchor__style" title="Lookup python in Dictionary" target="_blank" href="/word-meaning?search=${item}"> + <li>${item} + <span class="points" value="${sum}" style="position:relative; top:4px; font-size:12px"> ${sum}</span> + </li></a>` + }) + + main.innerHTML += ` + <div class="allGroupWords wordlistContainer" id="alpha_${i}"> + <div class="wordListHeading"> + <h3 class="lead">${i} Letter Words</h3> + </div> + <div class="wordList"> + <ul class="ul list-unstyled"> + ${result.join('')} + </ul> + </div> + </div> + + ` + } else { + main.innerHTML = '' + data.sort() + const result = data.map((item) => { + let ScrabbleLetterScore = ScrabbleScore() + let sum = 0 + item = item.toLowerCase() + for (let i = 0; i < item.length; i++) { + sum += ScrabbleLetterScore[item[i]] || 0 // for unknown characters + } + return `<a class="anchor__style" title="Lookup python in Dictionary" target="_blank" href="/word-meaning?search=${item}"> + <li>${item} + <span class="points" value="${sum}" style="position:relative; top:4px; font-size:12px"> ${sum}</span> + </li></a>` + }) + + main.innerHTML += ` + <div class="allGroupWords wordlistContainer" id="alpha_${i}"> + <div class="wordListHeading"> + <h3 class="lead">${i} Letter Words</h3> + </div> + <div class="wordList"> + <ul class="ul list-unstyled"> + ${result.join('')} + </ul> + </div> + </div> + + ` } } // Implement Active class const addFilter = () => {