Skip to content
Snippets Groups Projects
Commit a1551b07 authored by Anne Garcia-Fernandez's avatar Anne Garcia-Fernandez
Browse files

Improve results presentation

parent 3e79605f
No related branches found
No related tags found
1 merge request!99Merge Search functionnality to Master
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xs tei" version="2.0"> xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xs tei" version="2.0">
<xsl:output method="html" indent="yes" encoding="UTF-8" omit-xml-declaration="yes"/> <xsl:output method="html" indent="yes" encoding="UTF-8" omit-xml-declaration="yes"/>
<xsl:param name="data_json_file"> <xsl:param name="data_json_file">
<xsl:text>static/json/auto_index.json</xsl:text> <xsl:text>static/json/auto_index.json</xsl:text>
</xsl:param> </xsl:param>
...@@ -31,8 +31,9 @@ ...@@ -31,8 +31,9 @@
</xsl:variable> </xsl:variable>
<xsl:template match="/"> <xsl:template match="/">
<xsl:variable name="all_witness_id" select=" distinct-values(//@wit/tokenize(normalize-space(.), ' '))"/> <xsl:variable name="all_witness_id"
select="distinct-values(//@wit/tokenize(normalize-space(.), ' '))"/>
<xsl:variable name="witnesses_as_list"> <xsl:variable name="witnesses_as_list">
<xsl:for-each select="$all_witness_id"> <xsl:for-each select="$all_witness_id">
<xsl:text>'</xsl:text> <xsl:text>'</xsl:text>
...@@ -43,19 +44,20 @@ ...@@ -43,19 +44,20 @@
</xsl:if> </xsl:if>
</xsl:for-each> </xsl:for-each>
</xsl:variable> </xsl:variable>
<xsl:text>// Setup data</xsl:text> <xsl:text>// Setup data</xsl:text>
<xsl:value-of select="$br"/> <xsl:value-of select="$br"/>
<xsl:text>let $searchable_fields = ['lem',</xsl:text> <xsl:text>let $searchable_fields = ['lem',</xsl:text>
<xsl:value-of select="$witnesses_as_list"/> <xsl:value-of select="$witnesses_as_list"/>
<xsl:text>];</xsl:text> <xsl:text>];</xsl:text>
<xsl:value-of select="$br"/> <xsl:value-of select="$br"/>
<xsl:text>let $showable_fields = ['book', 'chapter', 'n', 'lem',</xsl:text> <xsl:text>let $showable_fields = ['book', 'chapter', 'n', 'lem',</xsl:text>
<xsl:value-of select="$witnesses_as_list"/> <xsl:value-of select="$witnesses_as_list"/>
<xsl:text>];</xsl:text> <xsl:text>];</xsl:text>
<xsl:value-of select="$br"/> <xsl:value-of select="$br"/>
<xsl:value-of select="$br"/>
<xsl:text>// Setup MiniSearch</xsl:text> <xsl:text>// Setup MiniSearch</xsl:text>
<xsl:value-of select="$br"/> <xsl:value-of select="$br"/>
<xsl:text>let miniSearch = new MiniSearch({</xsl:text> <xsl:text>let miniSearch = new MiniSearch({</xsl:text>
...@@ -66,57 +68,87 @@ ...@@ -66,57 +68,87 @@
<xsl:value-of select="$br"/> <xsl:value-of select="$br"/>
<xsl:text>})</xsl:text> <xsl:text>})</xsl:text>
<xsl:value-of select="$br"/> <xsl:value-of select="$br"/>
<xsl:value-of select="$br"/>
<xsl:text>let $data_json = '</xsl:text> <xsl:text>let $data_json = '</xsl:text>
<xsl:value-of select="$data_json_file"/> <xsl:value-of select="$data_json_file"/>
<xsl:text>';</xsl:text> <xsl:text>';</xsl:text>
<xsl:value-of select="$br"/> <xsl:value-of select="$br"/>
<xsl:value-of select="$br"/> <xsl:value-of select="$br"/>
<xsl:text disable-output-escaping="yes">const renderSearchResults = (results) => {</xsl:text> <xsl:text disable-output-escaping="yes">const renderSearchResults = (results) => {</xsl:text>
<xsl:value-of select="$br"/> <xsl:value-of select="$br"/>
<xsl:text>$resultsList.innerHTML = results.map(({ book, chapter, n, lem,</xsl:text>
<xsl:text disable-output-escaping="yes"> //JSON.stringify(results);</xsl:text>
<xsl:value-of select="$br"/>
<xsl:text disable-output-escaping="yes"> const books = new Set(results.map(a => a.book));</xsl:text>
<xsl:value-of select="$br"/>
<xsl:text disable-output-escaping="yes"> let $result;</xsl:text>
<xsl:value-of select="$br"/>
<xsl:text disable-output-escaping="yes"> $resultsList.innerHTML = "";</xsl:text>
<xsl:value-of select="$br"/>
<xsl:text disable-output-escaping="yes"> for (let b of books){</xsl:text>
<xsl:value-of select="$br"/>
<xsl:text disable-output-escaping="yes"> $resultsList.innerHTML += "&lt;h4>Livre "+b+"&lt;/h4>\n";</xsl:text>
<xsl:value-of select="$br"/>
<xsl:text disable-output-escaping="yes"> results_by_book = results.filter((result) => result.book == b); //filter by book</xsl:text>
<xsl:value-of select="$br"/>
<xsl:text disable-output-escaping="yes"> results_by_book.sort((a,b) => { //sort by verse number</xsl:text>
<xsl:value-of select="$br"/>
<xsl:text disable-output-escaping="yes"> return (a.n - b.n);</xsl:text>
<xsl:value-of select="$br"/>
<xsl:text disable-output-escaping="yes"> });</xsl:text>
<xsl:value-of select="$br"/>
<xsl:value-of select="$br"/>
<xsl:text> $resultsList.innerHTML += results_by_book.map(({ book, chapter, n, lem,</xsl:text>
<xsl:variable name="simple_quote"> <xsl:variable name="simple_quote">
<xsl:text>'</xsl:text> <xsl:text>'</xsl:text>
</xsl:variable> </xsl:variable>
<xsl:value-of select="replace($witnesses_as_list,$simple_quote,'')"/> <xsl:value-of select="replace($witnesses_as_list, $simple_quote, '')"/>
<xsl:text disable-output-escaping="yes"> }) => {</xsl:text> <xsl:text disable-output-escaping="yes"> }) => {</xsl:text>
<xsl:value-of select="$br"/> <xsl:value-of select="$br"/>
let $result=`<h5 class="mt-3"> <xsl:text disable-output-escaping="yes"> let $chap = `${chapter}`.substring(0, `${chapter}`.indexOf("_"));</xsl:text>
<xsl:text>Vers </xsl:text> <xsl:value-of select="$br"/>
<a> <xsl:text disable-output-escaping="yes"> $result='&lt;h5 xmlns="http://www.w3.org/1999/xhtml" class="mt-3">Vers &lt;a href="';</xsl:text>
<xsl:attribute name="href"> <xsl:value-of select="$br"/>
<xsl:text>/book${book}/${chapter}#${n}</xsl:text> <xsl:text disable-output-escaping="yes"> $result+=`/book${book}/${chapter}#${n}">${n}&lt;/a> (chapitre `</xsl:text>
</xsl:attribute> <xsl:value-of select="$br"/>
<xsl:text>${n}</xsl:text> <xsl:text disable-output-escaping="yes"> $result+=$chap</xsl:text>
</a> <xsl:value-of select="$br"/>
</h5> <xsl:text disable-output-escaping="yes"> $result+=`)&lt;/h5></xsl:text>
<dl> <dl>
<dt>Livre : </dt> <dt>BnFfr2817 :</dt>
<dd>${book}</dd> <dd>${lem}</dd>
<dt>Chapitre : </dt> <xsl:text>`</xsl:text>
<dd>${chapter}</dd> <xsl:for-each select="$all_witness_id">
<dt>Lemme :</dt> <xsl:value-of select="$br"/>
<dd>${lem}</dd>` <xsl:text> if (! (`${</xsl:text>
<xsl:for-each select="$all_witness_id"> <xsl:value-of select="replace(., '#', '')"/>
<xsl:text>if (! (`${</xsl:text> <xsl:text>}` === "undefined") ) {</xsl:text>
<xsl:value-of select="replace(.,'#','')"/> <xsl:value-of select="$br"/>
<xsl:text>}` === "undefined") ) {</xsl:text> <xsl:text> $result += `</xsl:text>
$result += ` <dt><xsl:value-of select="replace(., '#', '')"/> : </dt>
<dt><xsl:value-of select="replace(.,'#','')"/> : </dt> <dd>
<dd> <xsl:text>${</xsl:text>
<xsl:text>${</xsl:text> <xsl:value-of select="replace(., '#', '')"/>
<xsl:value-of select="replace(.,'#','')"/> <xsl:text>}</xsl:text>
<xsl:text>}</xsl:text> </dd>
</dd> <xsl:value-of select="$br"/>
`} <xsl:text> `}</xsl:text>
</xsl:for-each> </xsl:for-each>
$result += `</dl>` <xsl:value-of select="$br"/>
<xsl:text>return $result</xsl:text> <xsl:text> $result += `</xsl:text>
</dl>
<xsl:text>`</xsl:text>
<xsl:value-of select="$br"/>
<xsl:text> return $result</xsl:text>
<xsl:value-of select="$br"/> <xsl:value-of select="$br"/>
<xsl:text>}).join('\n')</xsl:text> <xsl:text>}).join('\n')</xsl:text>
<xsl:value-of select="$br"/> <xsl:value-of select="$br"/>
<xsl:text>}</xsl:text>
<xsl:value-of select="$br"/>
<xsl:text disable-output-escaping="yes"> <xsl:text disable-output-escaping="yes">
if (results.length > 0) { if (results.length > 0) {
$app.classList.add('hasResults') $app.classList.add('hasResults')
...@@ -131,6 +163,6 @@ ...@@ -131,6 +163,6 @@
.slice(0, 5) .slice(0, 5)
} }
</xsl:text> </xsl:text>
</xsl:template> </xsl:template>
</xsl:stylesheet> </xsl:stylesheet>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment