let form = document.querySelector('#form')
let wordCount = document.querySelector('.wordCount')
let main = document.querySelector('.main')
let errorMsg = document.querySelector('.errorMsg')
let script = document.currentScript
// getqueryUrl from form
const params = new URLSearchParams(window.location.search)
let serachValue = params.get('search').toLowerCase()
let prefixValue = params.get('prefix')
let containsValue = params.get('contains')
let suffixValue = params.get('suffix')
let exculdeValue = params.get('exculde')
let includeValue = params.get('include')
let lengthValue = params.get('length')
let dictonary = params.get('dictionary')
// advanced filter element grabs
let tick
let startsWith = document.getElementById('startsWith')
let mustInclude = document.getElementById('mustInclude')
let endsWith = document.getElementById('endsWith')
let exculdeWith = document.getElementById('exculdeWith')
let inculdeWith = document.getElementById('inculdeWith')
let wordLength = document.getElementById('wordLength')
let ok = true
let tab_container = document.querySelector('.tab_container')
var sortValue
var sortBool = false
let txtBox = document.querySelector('.txtBox')
txtBox.focus()
txtBox.value = serachValue
var theSelect = document.getElementById('select_dropDown')
document.querySelector('.select_dropDown2').value = dictonary
// getWords define...
const getData = async (serachValue) => {
try {
let selectedDictionary = document.querySelector('.select_dropDown2').value
main.innerHTML = `
Finding words - Powered by wordswithletters.org
`
/// loader
const response = await fetch(
`/.netlify/functions/wordsStartingWith?name=${serachValue}&selecteddictionary=${selectedDictionary}`
)
let data = await response.json()
data = data.slice(0,1500)
main.innerHTML = ''
wordsStartingWith(data)
//wordsStartingWith calling...
} catch (error) {
console.log(error)
}
}
//getData calling...
if (lengthValue === '1') {
errorMsg.innerHTML = 'words length should be more than 1'
} else {
getData(serachValue.toLowerCase())
}
// wordsStartingWith function define...
function wordsStartingWith(data) {
if (typeof data === 'string') {
errorMsg.innerHTML = 'no words found'
wordCount.innerHTML = `Found 0 words with letters ${serachValue.split(
''
)}`
} else {
let newWordsLength = 0
// sort eventlistener
theSelect.addEventListener('change', () => {
sortValue = theSelect[theSelect.selectedIndex].text
if (sortValue == 'Z-A') {
sortBool = true
sortby(sortBool, data)
} else {
sortBool = false
sortby(sortBool, data)
}
if (sortValue == 'Points') {
sortBool = true
sortPointsby(sortBool, data)
}
})
for (let i = 15; i >= 0; i--) {
let newdata = data.filter((item) => item.length === i)
if (prefixValue) {
newdata = newdata.filter((item2) =>
item2.startsWith(prefixValue.toLowerCase())
)
startsWith.classList.add('tick')
startsWith.value = prefixValue
}
if (containsValue) {
newdata = newdata.filter((item) =>
item.includes(containsValue.toLowerCase())
)
mustInclude.classList.add('tick')
mustInclude.value = containsValue
}
if (suffixValue) {
newdata = newdata.filter((item) =>
item.endsWith(suffixValue.toLowerCase())
)
endsWith.classList.add('tick')
endsWith.value = suffixValue
}
if (exculdeValue) {
let data = []
newdata.map((item) => {
let check = false
for (let e = 0; e < exculdeValue.length; e++) {
const element = exculdeValue[e]
if (item.includes(element)) {
check = true
break
} else {
check = false
}
}
if (check === false) {
data.push(item)
}
})
exculdeWith.classList.add('tick')
exculdeWith.value = exculdeValue
newdata = data
}
if (includeValue) {
let data = []
newdata.map((item) => {
let check = false
for (let e = 0; e < includeValue.length; e++) {
const element = includeValue[e]
if (!item.includes(element)) {
check = true
break
} else {
check = false
}
}
if (check === false) {
data.push(item)
}
})
inculdeWith.classList.add('tick')
inculdeWith.value = includeValue
newdata = data
}
if (lengthValue) {
newdata = newdata.filter((item) => item.length == lengthValue)
wordLength.classList.add('tick')
wordLength.value = lengthValue
}
if (newdata.length === 0) {
main.innerHTML += ''
} else {
newWordsLength += newdata.length
const result = newdata.map((item) => {
if (item.length === 1) {
ok = false
newWordsLength = newWordsLength - 1
} else {
let ScrabbleLetterScore = ScrabbleScore()
sum = 0
item = item.toLowerCase()
for (let i = 0; i < item.length; i++) {
sum += ScrabbleLetterScore[item[i]] || 0 // for unknown characters
}
return `