--- a/src/spel/settings.py Tue Mar 11 14:42:13 2014 +0100
+++ b/src/spel/settings.py Tue Mar 11 17:43:28 2014 +0100
@@ -276,5 +276,6 @@
MAX_TAG_LENGTH = 1024
#FORCE_LOWERCASE_TAGS = True
LDT_INDEXATION_INSERT_BATCH_SIZE = 1
+LDT_RESULTS_PER_PAGE = 500
--- a/src/spel/static/spel/js/spectacle.js Tue Mar 11 14:42:13 2014 +0100
+++ b/src/spel/static/spel/js/spectacle.js Tue Mar 11 17:43:28 2014 +0100
@@ -162,12 +162,8 @@
// Search annotations management
- $("#btn-search-annotations").click(function(e){
- e.preventDefault();
- if($("#search-input").val()==""){
- $(".annotation-results").html("<p>Vous devez indiquer un terme pour la recherche.</p>");
- return false;
- }
+
+ function searchAnnotations(){
$(".annotation-results").html("<br/><br/>");
$(".annotation-results").addClass("loader");
$.ajax({
@@ -185,22 +181,40 @@
$(".annotation-results").removeClass("loader");
$(".annotation-results").html('<p class="bg-danger">Erreur de chargement</p>');
});
+ }
+
+ $("#btn-search-annotations").click(function(e){
+ e.preventDefault();
+ if($("#search-input").val()==""){
+ $(".annotation-results").html("<p>Vous devez indiquer un terme pour la recherche.</p>");
+ return false;
+ }
+ $('option', $('#mulsel4')).each(function(element) {
+ $(this).removeAttr('selected').prop('selected', false);
+ });
+ $('#mulsel4').multiselect('refresh');
+ searchAnnotations();
});
$("#btn-filter-annotations").click(function(e){
if($("#mulsel4").val() && $("#mulsel4").val()!=""){
- var filters = $("#mulsel4").val();
- var nb_filters = filters.length;
- $( ".searched-annot" ).each(function(index){
- var type_inter = $(this).attr("data-type-inter").split(", ");
- var found = true;
- for(var i=0;i<nb_filters;i++){
- if(type_inter.indexOf(filters[i])==-1){
- found = found && false;
+ if($('#search-input').val()!=""){
+ var filters = $("#mulsel4").val();
+ var nb_filters = filters.length;
+ $( ".searched-annot" ).each(function(index){
+ var type_inter = $(this).attr("data-type-inter").split(", ");
+ var found = true;
+ for(var i=0;i<nb_filters;i++){
+ if(type_inter.indexOf(filters[i])==-1){
+ found = found && false;
+ }
}
- }
- found ? $(this).show() : $(this).hide();
- });
+ found ? $(this).show() : $(this).hide();
+ });
+ }
+ else{
+ searchAnnotations();
+ }
}
else{
$( ".searched-annot" ).each(function(j){
--- a/src/spel/views.py Tue Mar 11 14:42:13 2014 +0100
+++ b/src/spel/views.py Tue Mar 11 17:43:28 2014 +0100
@@ -6,6 +6,8 @@
import time
from django.conf import settings
from django.views.generic import TemplateView
+from itertools import groupby
+from operator import itemgetter
from tagging.models import Tag, TaggedItem
from ldt.ldt_utils.models import Segment, Content
@@ -94,12 +96,39 @@
def get(self, request):
q = request.GET.get("q", "")
- field = "abstract"
page = 1
content_list = None
- results, nb, nb_segment = get_search_results(request, q, field, page, content_list)
+ if q!="":
+ field = "abstract"
+ results, nb_contents, nb_segments = get_search_results(request, q, field, page, content_list)
+ results = results.object_list
+ else:
+ type_inter_param = request.GET.get("type_inter", "")
+ seg_queryset = []
+ results = []
+ tagged_segs = []
+ if type_inter_param!="":
+ type_inter = [("type_inter: " + t) for t in type_inter_param.split(",")]
+ tags = Tag.objects.filter(name__in=type_inter)
+ # Get segments from tagged items
+ tagged_segs = TaggedItem.objects.get_by_model(Segment, tags).values()
+ # Prefetch all contents
+ all_contents = Content.objects.filter(iri_id__in=[s['iri_id'] for s in tagged_segs])
+ for iri_id, items in groupby(tagged_segs, itemgetter('iri_id')):
+ # Get good content
+ content = None
+ content_filter = filter(lambda e: e.iri_id == iri_id, all_contents)
+ if len(content_filter)>0:
+ content = content_filter[0]
+ if content is None:
+ continue
+ # Get segments
+ s = list(items)
+ results.append({ 'content': content, 'list': s })
+ nb_contents = len(results)
+ nb_segments = len(tagged_segs)
- context = {"results": results.object_list, "nb_contents": nb, "nb_annotations": nb_segment}
+ context = {"results": results, "nb_contents": nb_contents, "nb_annotations": nb_segments}
return self.render_to_response(context)