diff --git a/img/mimetypes/32px/tei.png b/img/mimetypes/32px/tei.png new file mode 100644 index 0000000..d45fc4d --- /dev/null +++ b/img/mimetypes/32px/tei.png Binary files differ diff --git a/js/controllers/searchPageController.js b/js/controllers/searchPageController.js index cc313bf..fcaa9e4 100644 --- a/js/controllers/searchPageController.js +++ b/js/controllers/searchPageController.js @@ -2,240 +2,246 @@ /*jslint node: true */ define(["../models/searchPage", "../conf", "../vendor/mustache"], function(searchPage, conf, mustache) { - "use strict"; - var searchPageController = {}; - /***************************************** - * Fonctions de recherche et d'affichage - *****************************************/ - $.get(conf.apiUrl + "corpus", function(data) { - var corpusTemplate = "{{#corpusList}}{{/corpusList}}"; - var corpusList = { - corpusList: data - }; - $('#editorField').append(mustache.to_html(corpusTemplate, corpusList)); + "use strict"; + var searchPageController = {}; + /***************************************** + * Fonctions de recherche et d'affichage + *****************************************/ + $.get(conf.apiUrl + "corpus", function(data) { + var corpusTemplate = "{{#corpusList}}{{/corpusList}}"; + var corpusList = { + corpusList: data + }; + $('#editorField').append(mustache.to_html(corpusTemplate, corpusList)); + }); + + searchPageController.displayResults = function(data) { + if (data.total > 0) { + + $('#accordeon').show(); + $('#first').show(); + $('#prev').show(); + $('#next').show(); + $('#last').show(); + + searchPage.numberOfResults = data.total; + searchPage.numberOfPages = searchPage.numberOfResults === 0 ? 0 : Math.ceil(searchPage.numberOfResults / searchPage.resultsPerPage); + searchPage.currentPage = searchPage.numberOfResults === 0 ? 0 : searchPage.currentPage; + $("#currentPage").text(searchPage.currentPage === 0 ? "*" : searchPage.currentPage); + $("#totalPages").text(searchPage.numberOfPages === 0 ? "*" : searchPage.numberOfPages); + + $("#totalResults").val(data.total); + + data["abstr"] = function() { + return function(text, render) { + if (render(text) == "") return "Pas de résumé pour ce résultat."; + return render(text); + } + }; + + data["linksIcon"] = function() { + return function(text, render) { + var html = ""; + var infos = render(text).split(" "); + var i = 0; + while ((i + 1) < infos.length) { + var typeFile; + switch (infos[i]) { + case 'application/zip': + typeFile = 'img/mimetypes/32px/zip.png' + break; + case 'application/pdf': + typeFile = 'img/mimetypes/32px/pdf.png' + break; + case 'image/tiff': + typeFile = 'img/mimetypes/32px/tiff.png' + break; + case 'application/xml': + typeFile = 'img/mimetypes/32px/xml.png' + break; + case 'application/mods+xml': + typeFile = 'img/mimetypes/32px/mods.png' + break; + case 'application/tei+xml': + typeFile = 'img/mimetypes/32px/tei.png' + break; + case 'text/plain': + typeFile = 'img/mimetypes/32px/txt.png' + break; + default: + typeFile = 'img/mimetypes/32px/_blank.png' + break; + } + html += "\'"" + i = i + 2; + } + return html; + } + }; + + data["titleClic"] = function() { + return function(text, render) { + var res = render(text); + var infos = res.split(" "); + var index = infos.indexOf("application/pdf"); + var title = res.slice(res.indexOf(" ", res.indexOf(" ") + 1), res.size); + if (index != -1) { + return "" + title + "" + } else { + return title + } + } + } + + var tableLine = "{{#hits}}

{{#titleClic}}{{#fulltext}}{{{mimetype}}} {{{uri}}}{{/fulltext}} {{title}}{{/titleClic}}

{{#abstr}}{{abstract}}{{/abstr}}

{{corpusName}}
{{#linksIcon}}{{#fulltext}}{{{mimetype}}} {{{uri}}} {{/fulltext}}{{/linksIcon}}{{#linksIcon}}{{#metadata}}{{{mimetype}}} {{{uri}}} {{/metadata}}{{/linksIcon}}
{{/hits}}"; + + $("#tableResult").html(mustache.to_html(tableLine, data)); + + if (!searchPage.reaffine) { + + // Vidage des facets avant remplissage + $('#facetCorpus').empty(); + $('#facetCopyrightDate').empty(); + $('#facetPubDate').empty(); + + // CorpusFacet + var corpusFacetTemplate = "{{#aggregations.corpusFacet.buckets}}
{{doc_count}}
{{/aggregations.corpusFacet.buckets}}"; + $('#nbCorpusFacet').text(data.aggregations.corpusFacet.buckets.length); + $('#facetCorpus').append(mustache.to_html(corpusFacetTemplate, data)); + + if (data.aggregations.corpusFacet.buckets.length == 1) { + facetCorpus.getElementsByTagName('input').item(0).checked = true; + facetCorpus.getElementsByTagName('input').item(0).disabled = true; + } + + // CopyrightDateFacet + var minDate = parseInt(data.aggregations.copyrightDateFacet.buckets[0].from_as_string); + var maxDate = parseInt(data.aggregations.copyrightDateFacet.buckets[0].to_as_string); + + $("#slider-range-copyright").slider({ + range: true, + min: minDate, + max: maxDate, + values: [minDate, maxDate] + }); + $("#amountCopyrightDate").val("De " + $("#slider-range-copyright").slider("values", 0) + + " à " + $("#slider-range-copyright").slider("values", 1)); + + // PubDateFacet + minDate = parseInt(data.aggregations.pubdateFacet.buckets[0].from_as_string); + maxDate = parseInt(data.aggregations.pubdateFacet.buckets[0].to_as_string); + + $("#slider-range-pubdate").slider({ + range: true, + min: minDate, + max: maxDate, + values: [minDate, maxDate] + }); + $("#amountPubDate").val("De " + $("#slider-range-pubdate").slider("values", 0) + + " à " + $("#slider-range-pubdate").slider("values", 1)); + } + + $("#totalCopyrightDate").val(data.aggregations.copyrightDateFacet.buckets[0].doc_count); + $("#totalPubDate").val(data.aggregations.pubdateFacet.buckets[0].doc_count); + + + } else { + + $("#totalResults").val(0); + $("#tableResult").html("Pas de résultat pour cette recherche."); + $('#accordeon').hide(); + $('#first').hide(); + $('#prev').hide(); + $('#next').hide(); + $('#last').hide(); + $("#currentPage").text("*"); + $("#totalPages").text("*"); + } + $("button").button('reset'); + $("#result").css("opacity", 1); + }; + + searchPageController.manageError = function(err) { + $("button").button('reset'); + $(".alert span").html("Houston ... Problem!" + err.responseText); + $(".alert").alert(); + }; + + searchPageController.search = function() { + var query = "document/?q="; + var fields = []; + + if (searchPage.searchField !== "" && searchPage.searchField !== undefined) { + fields.push(searchPage.searchField); + } + + if ($("#collapse").is(':visible')) { + + if (searchPage.author !== "" && searchPage.author !== undefined) { + fields.push("author.personal:" + searchPage.author); + } + if (searchPage.title !== "" && searchPage.title !== undefined) { + fields.push("title:" + searchPage.title); + } + if (searchPage.keywords !== "" && searchPage.keywords !== undefined) { + fields.push("subject.value:" + searchPage.keywords); + } + } + + if (searchPage.copyrightdate != undefined) { + fields.push("copyrightdate:" + searchPage.copyrightdate); + } + if (searchPage.pubdate != undefined) { + fields.push("pubdate:" + searchPage.pubdate); + } + + query += fields.join(" AND "); + query += "&size=" + searchPage.resultsPerPage; + query += "&from=" + searchPage.resultsPerPage * (searchPage.currentPage === 0 ? 1 : searchPage.currentPage - 1); + $.each(searchPage.editor, function(index, editor) { + if (editor !== "-1") { + query += "&corpus=" + editor; + } }); - searchPageController.displayResults = function(data) { - if (data.total > 0) { + // Facets (à compléter au fur et à mesure de l'ajout de fonctionnalités) + query += "&facet=corpus"; - $('#accordeon').show(); - $('#first').show(); - $('#prev').show(); - $('#next').show(); - $('#last').show(); + if ($("#result").is(":visible")) { + var minCopyright = $("#slider-range-copyright").slider("values", 0); + var maxCopyright = $("#slider-range-copyright").slider("values", 1); + var minPubdate = $("#slider-range-pubdate").slider("values", 0); + var maxPubdate = $("#slider-range-pubdate").slider("values", 1); + query += "&facet=copyrightdate[" + minCopyright + "," + maxCopyright + "]"; + query += "&facet=pubdate[" + minPubdate + "," + maxPubdate + "]"; + console.log('là'); + } else { + // query += "&facet=copyrightdate[min,max]"; + // query += "&facet=pubdate[min,max]"; + query += "&facet=copyrightdate[1900,2014]"; + query += "&facet=pubdate[1900,2014]"; + console.log('ici'); + } - searchPage.numberOfResults = data.total; - searchPage.numberOfPages = searchPage.numberOfResults === 0 ? 0 : Math.ceil(searchPage.numberOfResults / searchPage.resultsPerPage); - searchPage.currentPage = searchPage.numberOfResults === 0 ? 0 : searchPage.currentPage; - $("#currentPage").text(searchPage.currentPage === 0 ? "*" : searchPage.currentPage); - $("#totalPages").text(searchPage.numberOfPages === 0 ? "*" : searchPage.numberOfPages); + query += "&output=*"; - $("#totalResults").val(data.total); + $("#searchButton").button('loading'); + $("#result").css("opacity", 0.4); - data["abstr"] = function() { - return function(text, render) { - if (render(text) == "") return "Pas de résumé pour ce résultat."; - return render(text); - } - }; - - data["linksIcon"] = function() { - return function(text, render) { - var html = ""; - var infos = render(text).split(" "); - var i = 0; - while ((i + 1) < infos.length) { - var typeFile; - switch (infos[i]) { - case 'application/zip': - typeFile = 'img/mimetypes/32px/zip.png' - break; - case 'application/pdf': - typeFile = 'img/mimetypes/32px/pdf.png' - break; - case 'image/tiff': - typeFile = 'img/mimetypes/32px/tiff.png' - break; - case 'application/xml': - typeFile = 'img/mimetypes/32px/xml.png' - break; - case 'application/mods+xml': - typeFile = 'img/mimetypes/32px/mods.png' - break; - default: - typeFile = 'img/mimetypes/32px/_blank.png' - break; - } - html += "\'"" - i = i + 2; - } - return html; - } - }; - - data["titleClic"] = function() { - return function(text, render) { - var res = render(text); - var infos = res.split(" "); - var index = infos.indexOf("application/pdf"); - var title = res.slice(res.indexOf(" ", res.indexOf(" ") + 1), res.size); - if (index != -1) { - return "" + title + "" - } else { - return title - } - } - } - - var tableLine = "{{#hits}}

{{#titleClic}}{{#fulltext}}{{{mimetype}}} {{{uri}}}{{/fulltext}} {{title}}{{/titleClic}}

{{#abstr}}{{abstract}}{{/abstr}}

{{corpusName}}
{{#linksIcon}}{{#fulltext}}{{{mimetype}}} {{{uri}}} {{/fulltext}}{{/linksIcon}}{{#linksIcon}}{{#metadata}}{{{mimetype}}} {{{uri}}} {{/metadata}}{{/linksIcon}}
{{/hits}}"; - - $("#tableResult").html(mustache.to_html(tableLine, data)); - - if (!searchPage.reaffine) { - - // Vidage des facets avant remplissage - $('#facetCorpus').empty(); - $('#facetCopyrightDate').empty(); - $('#facetPubDate').empty(); - - // CorpusFacet - var corpusFacetTemplate = "{{#aggregations.corpusFacet.buckets}}
{{doc_count}}
{{/aggregations.corpusFacet.buckets}}"; - $('#nbCorpusFacet').text(data.aggregations.corpusFacet.buckets.length); - $('#facetCorpus').append(mustache.to_html(corpusFacetTemplate, data)); - - if (data.aggregations.corpusFacet.buckets.length == 1) { - facetCorpus.getElementsByTagName('input').item(0).checked = true; - facetCorpus.getElementsByTagName('input').item(0).disabled = true; - } - - // CopyrightDateFacet - var minDate = parseInt(data.aggregations.copyrightDateFacet.buckets[0].from_as_string); - var maxDate = parseInt(data.aggregations.copyrightDateFacet.buckets[0].to_as_string); - - $("#slider-range-copyright").slider({ - range: true, - min: minDate, - max: maxDate, - values: [minDate, maxDate] - }); - $("#amountCopyrightDate").val("De " + $("#slider-range-copyright").slider("values", 0) + - " à " + $("#slider-range-copyright").slider("values", 1)); - - // PubDateFacet - minDate = parseInt(data.aggregations.pubdateFacet.buckets[0].from_as_string); - maxDate = parseInt(data.aggregations.pubdateFacet.buckets[0].to_as_string); - - $("#slider-range-pubdate").slider({ - range: true, - min: minDate, - max: maxDate, - values: [minDate, maxDate] - }); - $("#amountPubDate").val("De " + $("#slider-range-pubdate").slider("values", 0) + - " à " + $("#slider-range-pubdate").slider("values", 1)); - } - - $("#totalCopyrightDate").val(data.aggregations.copyrightDateFacet.buckets[0].doc_count); - $("#totalPubDate").val(data.aggregations.pubdateFacet.buckets[0].doc_count); - - - } else { - - $("#totalResults").val(0); - $("#tableResult").html("Pas de résultat pour cette recherche."); - $('#accordeon').hide(); - $('#first').hide(); - $('#prev').hide(); - $('#next').hide(); - $('#last').hide(); - $("#currentPage").text("*"); - $("#totalPages").text("*"); - } - $("button").button('reset'); - $("#result").css("opacity", 1); + var request = { + url: conf.apiUrl + query, + jsonp: true, + crossDomain: true, + success: searchPageController.displayResults, + error: searchPageController.manageError }; - searchPageController.manageError = function(err) { - $("button").button('reset'); - $(".alert span").html("Houston ... Problem!" + err.responseText); - $(".alert").alert(); - }; + $.ajax(request); - searchPageController.search = function() { - var query = "document/?q="; - var fields = []; + $("#result").removeClass('hide'); + $("#paginRow").removeClass('hide'); + $("#pageNumber").removeClass('hide'); - if (searchPage.searchField !== "" && searchPage.searchField !== undefined) { - fields.push(searchPage.searchField); - } - - if ($("#collapse").is(':visible')) { - - if (searchPage.author !== "" && searchPage.author !== undefined) { - fields.push("author.personal:" + searchPage.author); - } - if (searchPage.title !== "" && searchPage.title !== undefined) { - fields.push("title:" + searchPage.title); - } - if (searchPage.keywords !== "" && searchPage.keywords !== undefined) { - fields.push("subject.value:" + searchPage.keywords); - } - } - - if (searchPage.copyrightdate != undefined) { - fields.push("copyrightdate:" + searchPage.copyrightdate); - } - if (searchPage.pubdate != undefined) { - fields.push("pubdate:" + searchPage.pubdate); - } - - query += fields.join(" AND "); - query += "&size=" + searchPage.resultsPerPage; - query += "&from=" + searchPage.resultsPerPage * (searchPage.currentPage === 0 ? 1 : searchPage.currentPage - 1); - $.each(searchPage.editor, function(index, editor) { - if (editor !== "-1") { - query += "&corpus=" + editor; - } - }); - - // Facets (à compléter au fur et à mesure de l'ajout de fonctionnalités) - query += "&facet=corpus"; - - if ($("#result").is(":visible")) { - var minCopyright = $("#slider-range-copyright").slider("values", 0); - var maxCopyright = $("#slider-range-copyright").slider("values", 1); - var minPubdate = $("#slider-range-pubdate").slider("values", 0); - var maxPubdate = $("#slider-range-pubdate").slider("values", 1); - query += "&facet=copyrightdate[" + minCopyright + "," + maxCopyright + "]"; - query += "&facet=pubdate[" + minPubdate + "," + maxPubdate + "]"; - console.log('là'); - } else { - // query += "&facet=copyrightdate[min,max]"; - // query += "&facet=pubdate[min,max]"; - query += "&facet=copyrightdate[1900,2014]"; - query += "&facet=pubdate[1900,2014]"; - console.log('ici'); - } - - query += "&output=*"; - - $("#searchButton").button('loading'); - $("#result").css("opacity", 0.4); - - var request = { - url: conf.apiUrl + query, - jsonp: true, - crossDomain: true, - success: searchPageController.displayResults, - error: searchPageController.manageError - }; - - $.ajax(request); - - $("#result").removeClass('hide'); - $("#paginRow").removeClass('hide'); - $("#pageNumber").removeClass('hide'); - - }; - return searchPageController; + }; + return searchPageController; }); \ No newline at end of file