diff --git a/ProjetProgWeb/app.js b/ProjetProgWeb/app.js index 8081042..5b21078 100644 --- a/ProjetProgWeb/app.js +++ b/ProjetProgWeb/app.js @@ -5,6 +5,8 @@ const EXTRA_LARGE = 1200 const RESULTS_NUMBER = 10 +const urlParams = new URLSearchParams(window.location.search); + let navbarForm = document.querySelector('.navbar-form') let searchBar = document.querySelector('#searchbar') let searchBarButton = document.querySelector('#search-button') @@ -99,6 +101,19 @@ function updateUnderline(number) { }) } +function focusResults(result) { + resultsDiv.childNodes.forEach(elem => { + let elemContent = elem.querySelector('.element-content') + if (result !== elem) { + elemContent.style.display = 'none' + } else { + let display = elemContent.style.display + elemContent.style.display = display === 'none' || display === '' ? 'block' : 'none' + } + }) + fadeIn() +} + let resultsArray = [] let count = 0 let nbPages = 0 @@ -121,6 +136,8 @@ function displayResults(results) { result.classList.add('result-element') let i = 0 + let header = document.createElement('div') + let qAuthor = elem[0] let author = document.createElement('h3') let pre_replacement = new RegExp( authorName, 'gi').exec(qAuthor) @@ -130,18 +147,41 @@ function displayResults(results) { let title = document.createElement('p') title.innerText = qTitle - result.appendChild(author) - result.appendChild(title) + let firstElement = document.createElement('div') + firstElement.classList.add('result-element-header') - // elem.forEach(e => { - // let child = document.createElement(i === 0 ? 'h2' : 'p') - // let pre_replacement = new RegExp( authorName, 'gi').exec(e) - // child.innerHTML = e.replace(pre_replacement, `${pre_replacement}`) - // result.appendChild(child) - // i += 1 - // }) + let onlineButton = document.createElement('button') + onlineButton.innerHTML = "" + if (elem[14] === 'no') { + onlineButton.disabled = true + } else { + onlineButton.onclick = function() { + window.open('https://www.theses.fr/' + elem[13] + '/document', ',_blank') + } + } + + firstElement.append(author, onlineButton) + header.append(firstElement, title) + + let content = document.createElement('div') + content.classList.add('element-content') + + elem.forEach(e => { + if (i > 3 && i !== 14) { + let child = document.createElement('p') + let pre_replacement = new RegExp(authorName, 'gi').exec(e) + child.innerHTML = e.replace(pre_replacement, `${pre_replacement}`) + content.appendChild(child) + } i += 1 + }) count += 1 + header.addEventListener('click', (e) => { + focusResults(result) + }) + + result.append(header, content) + resultsArray.push(result) }) @@ -166,6 +206,10 @@ function displayResults(results) { pagesNumbers.appendChild(number) } + if (count < 1) { + pagesNumbersContainer.style.display = 'none' + } + browseResults(1) fadeIn() } @@ -191,7 +235,7 @@ let lastSuggestion = new Date().getTime() let suggestionsDisplayed = false function realTimeDisplay() { - let search = document.querySelector('input[name=\'author\']').value + let search = document.querySelector('input[name=\'search\']').value search = sanitize(search) if (search.length > 3 && (search !== lastSearch && (new Date().getTime() - lastSuggestion) > 500)) { lastSearch = search @@ -280,9 +324,16 @@ searchBar.addEventListener('focus', () => { switchNavTitle(false) }) -navbarForm.addEventListener('submit', e => { - e.preventDefault() - let data = new FormData(navbarForm) - searchBar.blur() - apiRequestThese(data.get('author')) -}) +// navbarForm.addEventListener('submit', e => { +// e.preventDefault() +// let data = new FormData(navbarForm) +// searchBar.blur() +// apiRequestThese(data.get('author')) +// }) + +let urlSearch = urlParams.get('search') + +if (urlSearch) { + searchBar.value = urlSearch + apiRequestThese(urlSearch) +} diff --git a/ProjetProgWeb/class/dump.php b/ProjetProgWeb/class/dump.php index 7d7d988..5868262 100644 --- a/ProjetProgWeb/class/dump.php +++ b/ProjetProgWeb/class/dump.php @@ -24,7 +24,7 @@ class dump { $author = '%' . $author . '%'; - $stmt = $pdo->prepare("SELECT * FROM theses WHERE author LIKE :author;"); + $stmt = $pdo->prepare("SELECT * FROM theses WHERE author LIKE :author ORDER BY author;"); $stmt->bindParam(':author', $author, PDO::PARAM_STR, 100); $stmt->execute(); diff --git a/ProjetProgWeb/index.php b/ProjetProgWeb/index.php index f97bbda..04b1308 100644 --- a/ProjetProgWeb/index.php +++ b/ProjetProgWeb/index.php @@ -39,6 +39,8 @@

Bienvenue sur theses.fr

+ +
diff --git a/ProjetProgWeb/navbar.php b/ProjetProgWeb/navbar.php index c0804b8..06395dd 100644 --- a/ProjetProgWeb/navbar.php +++ b/ProjetProgWeb/navbar.php @@ -10,8 +10,8 @@

theses.fr

-