diff --git a/public/js/script.js b/public/js/script.js
index 74b5bb7..ae281d1 100644
--- a/public/js/script.js
+++ b/public/js/script.js
@@ -52,9 +52,50 @@ function setHeight() {
if ($('#noteDate')) {
$('#noteDate').datepicker();
}
+
+ if ($('#query')) {
+ document.querySelector('#query').addEventListener('keyup', function (event) {
+ if (event.key == "Enter") {
+ search();
+ }
+ });
+ }
setTimeout(saveNote, saveTimeout);
}
+function search() {
+ query = document.querySelector('#query').value;
+ fetch('/index.php/search', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({
+ 'query': query
+ })
+ })
+ .then(response => response.json())
+ .then(results => {
+ var oldNotes = document.querySelector('#old-notes');
+ oldNotes.innerHTML = '';
+ for (var n in results) {
+ var link = document.createElement('a');
+ link.href = '#';
+ link.setAttribute('onclick', "retrieveNote('" + results[n].id + "');openNote();");
+ link.innerHTML = results[n].title;
+
+ var p = document.createElement('p');
+ p.innerHTML = results[n].passage;
+
+ var article = document.createElement('article');
+ article.appendChild(link);
+ article.appendChild(p);
+
+ oldNotes.append(article);
+ }
+ });
+}
+
function newNote() {
notes = document.querySelector('#notes');
notes.text = '';
@@ -75,7 +116,6 @@ function newNote() {
document.querySelector('#passage').value = '';
document.querySelector('#noteId').value = uuidv4();
- //document.querySelector('#noteSearch').style.display = 'none';
document.querySelector('#ref-list').innerHTML = '';
document.querySelector('#ref').innerHTML = '';
document.querySelector('.toggle').click();
diff --git a/src/Controller/AjaxController.php b/src/Controller/AjaxController.php
index e1db328..dc43131 100644
--- a/src/Controller/AjaxController.php
+++ b/src/Controller/AjaxController.php
@@ -239,12 +239,14 @@ class AjaxController extends AbstractController
return $res;
}
- #[Route('/search-note', name: 'app_open_note')]
- public function openNote(Request $req, EntityManagerInterface $emi): Response
+ #[Route('/search', name: 'app_search_note')]
+ public function searchNote(Request $req, EntityManagerInterface $emi): Response
{
+ /** @var User $user */
+ $user = $this->getUser();
$res = new Response();
$data = json_decode($req->getContent());
- $note = $emi->getRepository(Note::class)->findNote($data->search);
+ $note = $emi->getRepository(Note::class)->findNote($data->query, $user->getId()->toBinary());
$res->setContent(json_encode($note));
return $res;
diff --git a/src/Repository/NoteRepository.php b/src/Repository/NoteRepository.php
index 52bfe34..f3eea13 100644
--- a/src/Repository/NoteRepository.php
+++ b/src/Repository/NoteRepository.php
@@ -29,6 +29,22 @@ class NoteRepository extends ServiceEntityRepository
return $ret;
}
+ public function findNote(string $query, string $userId): array
+ {
+ $ret = $this->createQueryBuilder('n')
+ ->orderBy('n.date', 'DESC')
+ ->where('n.title LIKE :query')
+ ->orWhere('n.passage LIKE :query')
+ ->andWhere('n.user = :user')
+ ->setParameter('query', "%{$query}%")
+ ->setParameter('user', $userId)
+ ->setMaxResults(3)
+ ->getQuery()
+ ->getResult();
+
+ return $ret;
+ }
+
// /**
// * @return Note[] Returns an array of Note objects
// */
diff --git a/templates/default/sidebar.html.twig b/templates/default/sidebar.html.twig
index 6f413a7..8d93905 100644
--- a/templates/default/sidebar.html.twig
+++ b/templates/default/sidebar.html.twig
@@ -5,9 +5,7 @@
{% if app.user %}
Recent Notes