diff --git a/static/js/auto_app_minisearch.js b/static/js/auto_app_minisearch.js index f0a9c374d876182ddadc8cc61c73ce4cb49f0749..0643191d28b529de241d9702f0f1ada921758992 100644 --- a/static/js/auto_app_minisearch.js +++ b/static/js/auto_app_minisearch.js @@ -3,33 +3,28 @@ let $searchable_fields = ['lem','BnFfr4967', 'BnFfr5299', 'BnFfr23145', 'BnFfr49 'Vat966', 'Aix419', 'BnFfr1724', 'Aix966']; let $showable_fields = ['book', 'chapter', 'n', 'lem','BnFfr4967', 'BnFfr5299', 'BnFfr23145', 'BnFfr49967', 'Cha514', 'BnFfr23146', 'BnFfr17274', 'Vat966', 'Aix419', 'BnFfr1724', 'Aix966']; + // Setup MiniSearch let miniSearch = new MiniSearch({ fields: $searchable_fields, // fields to index for full-text search storeFields: $showable_fields // fields to return with search results }) + let $data_json = 'static/json/auto_index.json'; const renderSearchResults = (results) => { //JSON.stringify(results); - //results = results.filter((result) => result.book == 1)//filter book 1 - //results.sort((a,b) => a.n - b.n); //sort by n (only) - const books = new Set(results.map(a => a.book)); - let $result; $resultsList.innerHTML = ""; + $resultsList.innerHTML += "<i class='small''>"+results.length+" résultat(s) trouvé(s)</i>"; for (let b of books){ $resultsList.innerHTML += "<h4>Livre "+b+"</h4>\n"; - //filter by book - results_by_book = results.filter((result) => result.book == b) - //sort by n - results_by_book.sort((a,b) => { - return (a.n - b.n); - }); - - //} - + results_by_book = results.filter((result) => result.book == b); //filter by book + results_by_book.sort((a,b) => { //sort by verse number + return (a.n - b.n); + }); + $resultsList.innerHTML += results_by_book.map(({ book, chapter, n, lem,BnFfr4967, BnFfr5299, BnFfr23145, BnFfr49967, Cha514, BnFfr23146, BnFfr17274, Vat966, Aix419, BnFfr1724, Aix966 }) => { let $chap = `${chapter}`.substring(0, `${chapter}`.indexOf("_")); @@ -37,7 +32,7 @@ Aix419, BnFfr1724, Aix966 }) => { $result+=`/book${book}/${chapter}#${n}">${n}</a> (chapitre ` $result+=$chap $result+=`)</h5><dl xmlns="http://www.w3.org/1999/xhtml"> - <dt>Lemme :</dt> + <dt>BnFfr2817 :</dt> <dd>${lem}</dd>` if (! (`${BnFfr4967}` === "undefined") ) { $result += ` @@ -95,12 +90,10 @@ Aix419, BnFfr1724, Aix966 }) => { <dd>${Aix966}</dd> `} $result += `</dl>` - return $result }).join('\n') } - if (results.length > 0) { $app.classList.add('hasResults') } else { diff --git a/static/json/auto_index.json b/static/json/auto_index.json index 3a10a3ed310aff05d25b2af217a2641450caca00..b2a3224dd8bd8a9cea3fbc180c7e410e28a4a489 100644 --- a/static/json/auto_index.json +++ b/static/json/auto_index.json @@ -17030,7 +17030,7 @@ }, { "id": "12284", - "book": "1", + "book": "2", "chapter": "15_chap_13", "n": "2276", "lem": "Ja tournoit l’ost des Françoys. Lors le roy," diff --git a/templates/search.html.j2 b/templates/search.html.j2 index 691582f2d5ef524d1d19049e52c3ea66b7858819..ca9ba51677f9eccbb6f9d0149943f09a088d96bf 100644 --- a/templates/search.html.j2 +++ b/templates/search.html.j2 @@ -3,29 +3,38 @@ {% block containertype %}container{% endblock %} {% block pageTitle %}Recherche{% endblock %} {% block body %} -<h1 xmlns="http://www.w3.org/1999/xhtml">Chercher dans un vers...</h1><div xmlns="http://www.w3.org/1999/xhtml" id="app"> - <div class="App"> - <div class="Loader">loading...</div> - <div class="SearchBox"> - <div class="Search"><input type="text"><button class="clear">×</button></div> - <ul class="SuggestionList"></ul> - <details class="AdvancedOptions" open=""> - <summary>Advanced options</summary> - <form class="options"> - <div><b>Search in fields:</b><label><input type="checkbox" name="fields" value="lem" checked=""> Lemme</label><label><input type="checkbox" name="fields" value="BnFfr4967" checked=""> BnFfr4967</label><label><input type="checkbox" name="fields" value="BnFfr5299" checked=""> BnFfr5299</label><label><input type="checkbox" name="fields" value="BnFfr23145" checked=""> BnFfr23145</label><label><input type="checkbox" name="fields" value="BnFfr49967" checked=""> BnFfr49967</label><label><input type="checkbox" name="fields" value="" checked=""> </label><label><input type="checkbox" name="fields" value="Cha514" checked=""> Cha514</label><label><input type="checkbox" name="fields" value="BnFfr23146" checked=""> BnFfr23146</label><label><input type="checkbox" name="fields" value="BnFfr17274" checked=""> BnFfr17274</label><label><input type="checkbox" name="fields" value="Vat966" checked=""> Vat966</label><label><input type="checkbox" name="fields" value="Aix419" checked=""> Aix419</label><label><input type="checkbox" name="fields" value="BnFfr1724" checked=""> BnFfr1724</label><label><input type="checkbox" name="fields" value="Aix966" checked=""> Aix966</label></div> - <div><b>Search options:</b><label><input type="checkbox" name="prefix" value="true" checked=""> Prefix (considérer la recherche - comme un "début de mot" ; 'qui' renvoit 'qui', - 'quidem', etc.)</label><label><input type="checkbox" name="fuzzy" value="true" checked=""> Fuzzy (autoriser les recherches - approximatives)</label></div> - <div><b>Combine terms with:</b><label><input type="radio" name="combineWith" value="OR" checked=""> OR (chercher au moins un des - termes)</label><label><input type="radio" name="combineWith" value="AND"> AND (chercher tous les - termes)</label></div> - </form> - </details> +<div xmlns="http://www.w3.org/1999/xhtml"> + <h3>Chercher dans un vers...</h3> + <div id="app"> + <div class="App"> + <div class="Loader">chargement des données...</div> + <div class="SearchBox"> + <div class="Search"><input type="text"><button class="clear">×</button></div> + <ul class="SuggestionList"></ul> + <details class="AdvancedOptions p-4 pt-2 pb-2"> + <summary>Options avancées</summary> + <form class="options"> + <div><b>Chercher dans les manuscrits :</b><label><b><input type="checkbox" name="fields" value="lem" checked=""> BnFfr 2817</b></label><label><input type="checkbox" name="fields" value="BnFfr4967"> BnFfr4967</label> <label><input type="checkbox" name="fields" value="BnFfr5299"> BnFfr5299</label> <label><input type="checkbox" name="fields" value="BnFfr23145"> BnFfr23145</label> <label><input type="checkbox" name="fields" value="BnFfr49967"> BnFfr49967</label> <label><input type="checkbox" name="fields" value=""> </label> <label><input type="checkbox" name="fields" value="Cha514"> Cha514</label> <label><input type="checkbox" name="fields" value="BnFfr23146"> BnFfr23146</label> <label><input type="checkbox" name="fields" value="BnFfr17274"> BnFfr17274</label> <label><input type="checkbox" name="fields" value="Vat966"> Vat966</label> <label><input type="checkbox" name="fields" value="Aix419"> Aix419</label> <label><input type="checkbox" name="fields" value="BnFfr1724"> BnFfr1724</label> <label><input type="checkbox" name="fields" value="Aix966"> Aix966</label> </div> + <div><b>Élargir la recherche :</b><br><label><input type="checkbox" name="prefix" value="false"> + Rechercher les mots qui commencent par... (par exemple + <code>qui</code> renverra <code>qui</code>, + <code>quidem</code>, etc.)</label><br><label><input type="checkbox" name="fuzzy" value="false"> + Autoriser les résultats approximatifs</label></div> + <div><b>Rechercher </b><label><input type="radio" name="combineWith" value="OR"> au + moins un des termes (<code>roy</code> ou + <code>ost</code>)</label><label><input type="radio" name="combineWith" value="AND" checked=""> tous les termes (<code>roy</code> et + <code>ost</code>)</label></div> + </form> + </details> + </div> + <div class="m-4"> + <p class="Explanation">Votre recherche n'a donné aucun résultat. Grâce aux + options avancées, vous pouvez élargir votre recherche en cherchant + <i>les mots commençant par</i>, en autorisant les <i>résultats + approximatifs</i> et en cherchant pour différents témoins.</p> + </div> + <ul class="resultsList"></ul> </div> - <p class="Explanation"> Ceci est un premier jet de recherche, utilisant - la bibliothèque javascript <a href="https://github.com/lucaong/minisearch">MiniSearch</a></p> - <ul class="resultsList"></ul> </div> </div><script xmlns="http://www.w3.org/1999/xhtml" src="https://cdn.jsdelivr.net/npm/minisearch@7.1.0/dist/umd/index.min.js"></script><script xmlns="http://www.w3.org/1999/xhtml" src="/static/js/auto_app_minisearch.js"></script><script xmlns="http://www.w3.org/1999/xhtml" src="/static/js/app_minisearch.js"></script> {% endblock %} \ No newline at end of file