🎨 Added correct json struct to API responses

This commit is contained in:
Florian Sylvain
2021-10-31 15:59:53 +01:00
parent b4b3132ae7
commit 14c3839803
2 changed files with 35 additions and 31 deletions
+5 -2
View File
@@ -21,6 +21,9 @@ $json_object = match ($q) {
default => NULL, default => NULL,
}; };
// TODO : Rajouter la structure status message data $json = json_encode(array(
$json = json_encode($json_object); "status" => 200,
"message" => "Results : " . count($json_object), "data" => $json_object
),JSON_PRETTY_PRINT);
print_r($json); print_r($json);
+30 -29
View File
@@ -13,8 +13,11 @@ let lastRequest = null
function requestToApi(author) { function requestToApi(author) {
if (lastRequest === null || (new Date().getTime() - lastRequest) > 1000) { if (lastRequest === null || (new Date().getTime() - lastRequest) > 1000) {
lastRequest = new Date().getTime() lastRequest = new Date().getTime()
document.querySelector('#results-count').innerHTML = ""
document.querySelector('#results').innerHTML = ""
loader.style.display = "block" loader.style.display = "block"
authorName = author authorName = author.replace(/[^a-zA-Z0-9]/g,'')
console.log(authorName)
fetch(`api.php?q=theses&author=${author}`) fetch(`api.php?q=theses&author=${author}`)
.then(response => response.json()) .then(response => response.json())
.then(data => displayResults(data)) .then(data => displayResults(data))
@@ -41,36 +44,33 @@ function displayResults(results) {
error.classList.add("fade-in"); error.classList.add("fade-in");
errorMessage.innerHTML = results.message errorMessage.innerHTML = results.message
return; return;
} } else if (results.status === 200) {
let count = 0
document.querySelector('#results-count').innerHTML = "" results.data.forEach(elem => {
document.querySelector('#results').innerHTML = "" let result = document.createElement('div')
result.classList.add('result-element')
let count = 0 let i = 0
elem.forEach(e => {
results.forEach(elem => { let child = document.createElement(i === 0 ? 'h1' : 'p')
let result = document.createElement('div') child.innerText = e
result.classList.add('result-element') result.appendChild(child)
let i = 0 i += 1
elem.forEach(e => { })
let child = document.createElement(i === 0 ? 'h1' : 'p') count += 1
child.innerText = e document.getElementById('results').appendChild(result)
result.appendChild(child)
i += 1
}) })
count += 1
document.getElementById('results').appendChild(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}": ${count}.`
document.getElementById('results-count').appendChild(nb) document.getElementById('results-count').appendChild(nb)
loader.style.display = "none" loader.style.display = "none"
elementsToFade = document.querySelectorAll(".result-element") elementsToFade = document.querySelectorAll(".result-element")
window.addEventListener('scroll', fadeIn); window.addEventListener('scroll', fadeIn);
fadeIn() fadeIn()
}
} }
let lastSearch = "" let lastSearch = ""
@@ -78,16 +78,17 @@ let lastSuggestion = new Date().getTime()
let suggestionsDisplayed = false let suggestionsDisplayed = false
function realTimeDisplay() { function realTimeDisplay() {
let search = document.getElementsByName("author")[0].value let search = document.querySelector('input[name=\'author\']').value
search = search.replace(/[^a-zA-Z0-9 ]/g,'')
if (search.length > 3 && (search !== lastSearch || (new Date().getTime() - lastSuggestion) > 500)) { if (search.length > 3 && (search !== lastSearch || (new Date().getTime() - lastSuggestion) > 500)) {
showSuggestions() showSuggestions()
lastSearch = search lastSearch = search
lastSuggestion = new Date().getTime() lastSuggestion = new Date().getTime()
fetch(`api.php?q=authors&author=${search}`) fetch(`api.php?q=authors&author=${search}`)
.then(response => response.json()) .then(response => response.json())
.then(function(data) { .then(results => {
suggestions.innerHTML = "" suggestions.innerHTML = ""
data.forEach(elem => { results.data.forEach(elem => {
let name = document.createElement('p') let name = document.createElement('p')
name.innerHTML = elem name.innerHTML = elem
name.addEventListener('click', () => { name.addEventListener('click', () => {