mirror of
https://github.com/Floriansylvain/projet_programmation_web.git
synced 2026-08-19 11:43:16 +02:00
🚧 Visuels W.I.P.
This commit is contained in:
@@ -13,7 +13,7 @@ $q = $_GET['q'];
|
|||||||
if (strlen($author_name) < 3) {
|
if (strlen($author_name) < 3) {
|
||||||
print_r(json_encode(array(
|
print_r(json_encode(array(
|
||||||
"status" => 400,
|
"status" => 400,
|
||||||
"message" => "Le nom de l'auteur doit comporter un minimum de 3 caractères."
|
"message" => "La recherche doit comporter un minimum de 3 caractères."
|
||||||
)));
|
)));
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|||||||
+31
-9
@@ -18,12 +18,13 @@ let header = document.querySelector('header')
|
|||||||
let title = document.querySelector('#title')
|
let title = document.querySelector('#title')
|
||||||
let ham = document.querySelector('#hamburgerSvg')
|
let ham = document.querySelector('#hamburgerSvg')
|
||||||
let cross = document.querySelector('#crossSvg')
|
let cross = document.querySelector('#crossSvg')
|
||||||
|
let pagesNumbersContainer = document.querySelector('.page-nav')
|
||||||
let pagesNumbers = document.querySelector('.page-nav div')
|
let pagesNumbers = document.querySelector('.page-nav div')
|
||||||
let resultsDiv = document.querySelector('#results')
|
let resultsDiv = document.querySelector('#results')
|
||||||
let resultsCount = document.querySelector('#results-count')
|
let resultsCount = document.querySelector('#results-count')
|
||||||
|
|
||||||
function sanitize(chain) {
|
function sanitize(chain) {
|
||||||
return chain.replace(/[^a-zA-Z0-9 ]/g,'')
|
return chain.replace(/[^a-zA-Z0-9\- ]/g,'')
|
||||||
}
|
}
|
||||||
|
|
||||||
function showSuggestions() {
|
function showSuggestions() {
|
||||||
@@ -89,6 +90,9 @@ function updateUnderline(number) {
|
|||||||
pagesNumbers.childNodes.forEach(elem => {
|
pagesNumbers.childNodes.forEach(elem => {
|
||||||
if (elem.innerHTML == number) {
|
if (elem.innerHTML == number) {
|
||||||
elem.style.textDecoration = "underline"
|
elem.style.textDecoration = "underline"
|
||||||
|
pagesNumbers.scrollLeft += elem.getBoundingClientRect().left -
|
||||||
|
pagesNumbers.getBoundingClientRect().left -
|
||||||
|
(pagesNumbers.offsetWidth / 2) + (elem.offsetWidth / 2)
|
||||||
} else {
|
} else {
|
||||||
elem.style.textDecoration = 'none'
|
elem.style.textDecoration = 'none'
|
||||||
}
|
}
|
||||||
@@ -106,27 +110,44 @@ function displayResults(results) {
|
|||||||
error.classList.remove("fade-out");
|
error.classList.remove("fade-out");
|
||||||
error.classList.add("fade-in");
|
error.classList.add("fade-in");
|
||||||
errorMessage.innerHTML = results.message
|
errorMessage.innerHTML = results.message
|
||||||
|
pagesNumbersContainer.style.display = 'none'
|
||||||
return;
|
return;
|
||||||
} else if (results.status === 200) {
|
} else if (results.status === 200) {
|
||||||
count = 0
|
count = 0
|
||||||
resultsArray = []
|
resultsArray = []
|
||||||
|
pagesNumbersContainer.style.display = 'flex'
|
||||||
results.data.forEach(elem => {
|
results.data.forEach(elem => {
|
||||||
let result = document.createElement('div')
|
let result = document.createElement('div')
|
||||||
result.classList.add('result-element')
|
result.classList.add('result-element')
|
||||||
let i = 0
|
let i = 0
|
||||||
elem.forEach(e => {
|
|
||||||
let child = document.createElement(i === 0 ? 'h2' : 'p')
|
let qAuthor = elem[0]
|
||||||
child.innerText = e
|
let author = document.createElement('h3')
|
||||||
result.appendChild(child)
|
let pre_replacement = new RegExp( authorName, 'gi').exec(qAuthor)
|
||||||
i += 1
|
author.innerHTML = qAuthor.replace(pre_replacement, `<mark>${pre_replacement}</mark>`)
|
||||||
})
|
|
||||||
|
let qTitle = elem[2]
|
||||||
|
let title = document.createElement('p')
|
||||||
|
title.innerText = qTitle
|
||||||
|
|
||||||
|
result.appendChild(author)
|
||||||
|
result.appendChild(title)
|
||||||
|
|
||||||
|
// 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, `<mark>${pre_replacement}</mark>`)
|
||||||
|
// result.appendChild(child)
|
||||||
|
// i += 1
|
||||||
|
// })
|
||||||
count += 1
|
count += 1
|
||||||
|
|
||||||
resultsArray.push(result)
|
resultsArray.push(result)
|
||||||
})
|
})
|
||||||
|
|
||||||
let nb = document.createElement("p")
|
let nb = document.createElement("p")
|
||||||
nb.innerHTML = `Nombre de résultats pour "${authorName}": ${count}.`
|
nb.innerHTML = `Nombre de résultats pour "${authorName}":
|
||||||
|
${new Intl.NumberFormat('fr-FR', { maximumSignificantDigits: 3 }).format(count)}.`
|
||||||
resultsCount.appendChild(nb)
|
resultsCount.appendChild(nb)
|
||||||
|
|
||||||
loader.style.display = "none"
|
loader.style.display = "none"
|
||||||
@@ -153,7 +174,7 @@ function displayResults(results) {
|
|||||||
let currentPage = 1
|
let currentPage = 1
|
||||||
|
|
||||||
function browseResults(wantedPage) {
|
function browseResults(wantedPage) {
|
||||||
if (wantedPage > 0 && wantedPage < nbPages+1) {
|
if ((wantedPage > 0 && wantedPage < nbPages + 1)) {
|
||||||
emptyResults()
|
emptyResults()
|
||||||
updateUnderline(wantedPage)
|
updateUnderline(wantedPage)
|
||||||
currentPage = wantedPage
|
currentPage = wantedPage
|
||||||
@@ -161,6 +182,7 @@ function browseResults(wantedPage) {
|
|||||||
resultsArray.slice(wantedPage - RESULTS_NUMBER, wantedPage).forEach(result => {
|
resultsArray.slice(wantedPage - RESULTS_NUMBER, wantedPage).forEach(result => {
|
||||||
resultsDiv.appendChild(result)
|
resultsDiv.appendChild(result)
|
||||||
})
|
})
|
||||||
|
fadeIn()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,12 +31,13 @@
|
|||||||
|
|
||||||
<div class="page-nav">
|
<div class="page-nav">
|
||||||
<p onclick="browseResults(currentPage-1)"><-</p>
|
<p onclick="browseResults(currentPage-1)"><-</p>
|
||||||
<div>
|
<div></div>
|
||||||
</div>
|
|
||||||
<p onclick="browseResults(currentPage+1)">-></p>
|
<p onclick="browseResults(currentPage+1)">-></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="results"></div>
|
<div id="results">
|
||||||
|
<h1 style="color:#CFCFCF;text-align: center">Bienvenue sur theses.fr</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="error">
|
<div id="error">
|
||||||
<div id="error-message"></div>
|
<div id="error-message"></div>
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ body {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
background-color: #FDFDFD;
|
||||||
}
|
}
|
||||||
|
|
||||||
header {
|
header {
|
||||||
@@ -266,7 +267,7 @@ header {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#results {
|
#results {
|
||||||
margin: 10px;
|
padding: 10px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 15px;
|
gap: 15px;
|
||||||
@@ -280,11 +281,10 @@ header {
|
|||||||
|
|
||||||
/*TODO : Faire des beaux panneaux expansibles*/
|
/*TODO : Faire des beaux panneaux expansibles*/
|
||||||
.result-element {
|
.result-element {
|
||||||
box-shadow: rgba(0, 0, 0, 0.10) 2px 2px 8px;
|
box-shadow: rgba(0, 0, 0, 0.10) 2px 2px 15px;
|
||||||
background-color: rgba(250, 250, 250, 0.5);
|
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
margin: 0 5px 5px 5px;
|
margin: 0 5px 0 5px;
|
||||||
padding: 5px 10px 10px 10px;
|
padding: 0 10px 0 10px;
|
||||||
transform: translateX(100px);
|
transform: translateX(100px);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -401,11 +401,15 @@ header {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.page-nav {
|
.page-nav {
|
||||||
display: flex;
|
-ms-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
display: none;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
line-height: 0;
|
line-height: 0;
|
||||||
margin: 15px auto 15px auto;
|
margin: 0 auto 0 auto;
|
||||||
padding: 0 15px 0 15px;
|
padding: 0 15px 0 15px;
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
color: #1a5f7d;
|
color: #1a5f7d;
|
||||||
@@ -415,8 +419,8 @@ header {
|
|||||||
.page-nav div {
|
.page-nav div {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 5px;
|
gap: 5px;
|
||||||
max-width: 155px;
|
max-width: 170px;
|
||||||
overflow-x: scroll;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Small */
|
/* Small */
|
||||||
|
|||||||
Reference in New Issue
Block a user