search and filter annotations.
--- a/src/spel/management/commands/loadspeldata.py Mon Mar 10 12:28:22 2014 +0100
+++ b/src/spel/management/commands/loadspeldata.py Mon Mar 10 18:26:42 2014 +0100
@@ -125,7 +125,7 @@
desc = ""
# Build tags
for k,v in a["content"]["data"].iteritems():
- if k!="commentaire":
+ if k!="commentaire" and k!="description":
v = v.split(",")
for val in v:
tag_label = k + u": " + val.strip()
--- a/src/spel/static/spel/css/spel.css Mon Mar 10 12:28:22 2014 +0100
+++ b/src/spel/static/spel/css/spel.css Mon Mar 10 18:26:42 2014 +0100
@@ -20,8 +20,33 @@
background-size: 25px 25px;
}
-.chapter-results{
+.chapter-results, .annotation-results{
border-top: 2px solid #BBBBBB;
margin-top: 10px;
padding-top: 10px;
+}
+
+.searched-annot{
+ background-color: #EEE;
+ border: 1px solid #FFF;
+ margin-top: 10px;
+ padding: 5px;
+}
+/*.searched-annot:hover{
+ background-color: #FFF;
+ border: 1px solid #EEE;
+}*/
+.searched-annot p{
+ margin: 0px;
+}
+.searched-annot hr {
+ -moz-border-bottom-colors: none;
+ -moz-border-image: none;
+ -moz-border-left-colors: none;
+ -moz-border-right-colors: none;
+ -moz-border-top-colors: none;
+ border-color: #333 -moz-use-text-color #FFFFFF;
+ /*border-style: solid none;*/
+ border-width: 1px 0;
+ margin: 3px 0;
}
\ No newline at end of file
--- a/src/spel/static/spel/js/spectacle.js Mon Mar 10 12:28:22 2014 +0100
+++ b/src/spel/static/spel/js/spectacle.js Mon Mar 10 18:26:42 2014 +0100
@@ -26,7 +26,7 @@
},
buttonContainer: '<div class="btn-group width100percent" />',
buttonClass: 'btn btn-default width100percent disabled',
- onChange: function(element, checked) {
+ /*onChange: function(element, checked) {
var filter_enabled = false;
var chbs = $(".annotations input:checkbox");
for (var i = chbs.length - 1; i >= 0; i--) {
@@ -38,7 +38,7 @@
else{
$("#btn-filter-annotations").attr('disabled','disabled');
}
- }
+ }*/
});
// Data 1
@@ -87,7 +87,7 @@
var n = data.objects.length;
var data4 = [];
for(var i=0;i<n;i++){
- data4.push({label: o[i].name.substr(11), value: o[i].name})
+ data4.push({label: o[i].name.substr(12), value: o[i].name.substr(12)})
}
$("#mulsel4").multiselect('dataprovider', data4);
$("#mulsel4").multiselect('enable');
@@ -123,6 +123,17 @@
$(".chapter-results").removeClass("loader");
$(".chapter-results").html(html);
$('.popinfo').popover({ html: true });
+ $(".tablesorter").tablesorter({
+ theme : "bootstrap",
+ widthFixed: true,
+ headerTemplate : '{content} {icon}',
+ widgets : [ "uitheme"],
+ widgetOptions : {
+ zebra : ["even", "odd"],
+ filter_reset : ".reset"
+ },
+ headers: { 3: { sorter: false } }
+ });
})
.fail(function() {
$(".chapter-results").removeClass("loader");
@@ -130,13 +141,73 @@
});
});
+ $.extend($.tablesorter.themes.bootstrap, {
+ // these classes are added to the table. To see other table classes available,
+ // look here: http://twitter.github.com/bootstrap/base-css.html#tables
+ table : 'table table-bordered',
+ caption : 'caption',
+ header : 'bootstrap-header', // give the header a gradient background
+ footerRow : '',
+ footerCells: '',
+ icons : '', // add "icon-white" to make them white; this icon class is added to the <i> in the header
+ sortNone : 'bootstrap-icon-unsorted',
+ sortAsc : 'icon-chevron-up glyphicon glyphicon-chevron-up', // includes classes for Bootstrap v2 & v3
+ sortDesc : 'icon-chevron-down glyphicon glyphicon-chevron-down', // includes classes for Bootstrap v2 & v3
+ active : '', // applied when column is sorted
+ hover : '', // use custom css here - bootstrap class may not override it
+ filterRow : '', // filter row class
+ even : '', // odd row zebra striping
+ odd : '' // even row zebra striping
+ });
+
// 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;
+ }
+ $(".annotation-results").html("<br/><br/>");
+ $(".annotation-results").addClass("loader");
+ $.ajax({
+ url: urlAnnotations,
+ data:{
+ q: $('#search-input').val(),
+ type_inter: ( ($("#mulsel4").val()==null) ? [] : $("#mulsel4").val() ).join(",")
+ }
+ })
+ .done(function(html){
+ $(".annotation-results").removeClass("loader");
+ $(".annotation-results").html(html);
+ })
+ .fail(function() {
+ $(".annotation-results").removeClass("loader");
+ $(".annotation-results").html('<p class="bg-danger">Erreur de chargement</p>');
+ });
});
-
-
+ $("#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;
+ }
+ }
+ found ? $(this).show() : $(this).hide();
+ });
+ }
+ else{
+ $( ".searched-annot" ).each(function(j){
+ $(this).show();
+ });
+ }
+ $(".nb-annotations-found").html($('.annotation-results > div:visible').length);
+ });
});
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/spel/static/spel/lib/jquery.tablesorter.min.js Mon Mar 10 18:26:42 2014 +0100
@@ -0,0 +1,5 @@
+/*!
+* TableSorter 2.15.7 min - Client-side table sorting with ease!
+* Copyright (c) 2007 Christian Bach
+*/
+!function(g){g.extend({tablesorter:new function(){function d(){var a=arguments[0],b=1<arguments.length?Array.prototype.slice.call(arguments):a;if("undefined"!==typeof console&&"undefined"!==typeof console.log)console[/error/i.test(a)?"error":/warn/i.test(a)?"warn":"log"](b);else alert(b)}function u(a,b){d(a+" ("+((new Date).getTime()-b.getTime())+"ms)")}function m(a){for(var b in a)return!1;return!0}function p(a,b,c){if(!b)return"";var h=a.config,e=h.textExtraction,f="",f="simple"===e?h.supportsTextContent? b.textContent:g(b).text():"function"===typeof e?e(b,a,c):"object"===typeof e&&e.hasOwnProperty(c)?e[c](b,a,c):h.supportsTextContent?b.textContent:g(b).text();return g.trim(f)}function s(a){var b=a.config,c=b.$tbodies=b.$table.children("tbody:not(."+b.cssInfoBlock+")"),h,e,w,k,n,g,l,z="";if(0===c.length)return b.debug?d("Warning: *Empty table!* Not building a parser cache"):"";b.debug&&(l=new Date,d("Detecting parsers for each column"));c=c[0].rows;if(c[0])for(h=[],e=c[0].cells.length,w=0;w<e;w++){k= b.$headers.filter(":not([colspan])");k=k.add(b.$headers.filter('[colspan="1"]')).filter('[data-column="'+w+'"]:last');n=b.headers[w];g=f.getParserById(f.getData(k,n,"sorter"));b.empties[w]=f.getData(k,n,"empty")||b.emptyTo||(b.emptyToBottom?"bottom":"top");b.strings[w]=f.getData(k,n,"string")||b.stringTo||"max";if(!g)a:{k=a;n=c;g=-1;for(var m=w,y=void 0,x=f.parsers.length,r=!1,s="",y=!0;""===s&&y;)g++,n[g]?(r=n[g].cells[m],s=p(k,r,m),k.config.debug&&d("Checking if value was empty on row "+g+", column: "+ m+': "'+s+'"')):y=!1;for(;0<=--x;)if((y=f.parsers[x])&&"text"!==y.id&&y.is&&y.is(s,k,r)){g=y;break a}g=f.getParserById("text")}b.debug&&(z+="column:"+w+"; parser:"+g.id+"; string:"+b.strings[w]+"; empty: "+b.empties[w]+"\n");h.push(g)}b.debug&&(d(z),u("Completed detecting parsers",l));b.parsers=h}function v(a){var b=a.tBodies,c=a.config,h,e,w=c.parsers,k,n,q,l,z,m,y,x=[];c.cache={};if(!w)return c.debug?d("Warning: *Empty table!* Not building a cache"):"";c.debug&&(y=new Date);c.showProcessing&&f.isProcessing(a, !0);for(l=0;l<b.length;l++)if(c.cache[l]={row:[],normalized:[]},!g(b[l]).hasClass(c.cssInfoBlock)){h=b[l]&&b[l].rows.length||0;e=b[l].rows[0]&&b[l].rows[0].cells.length||0;for(n=0;n<h;++n)if(z=g(b[l].rows[n]),m=[],z.hasClass(c.cssChildRow))c.cache[l].row[c.cache[l].row.length-1]=c.cache[l].row[c.cache[l].row.length-1].add(z);else{c.cache[l].row.push(z);for(q=0;q<e;++q)k=p(a,z[0].cells[q],q),k=w[q].format(k,a,z[0].cells[q],q),m.push(k),"numeric"===(w[q].type||"").toLowerCase()&&(x[q]=Math.max(Math.abs(k)|| 0,x[q]||0));m.push(c.cache[l].normalized.length);c.cache[l].normalized.push(m)}c.cache[l].colMax=x}c.showProcessing&&f.isProcessing(a);c.debug&&u("Building cache for "+h+" rows",y)}function A(a,b){var c=a.config,h=c.widgetOptions,e=a.tBodies,w=[],k=c.cache,d,q,l,z,p,y,x,r,s,t,v;if(m(k))return c.appender?c.appender(a,w):a.isUpdating?c.$table.trigger("updateComplete",a):"";c.debug&&(v=new Date);for(r=0;r<e.length;r++)if(d=g(e[r]),d.length&&!d.hasClass(c.cssInfoBlock)){p=f.processTbody(a,d,!0);d=k[r].row; q=k[r].normalized;z=(l=q.length)?q[0].length-1:0;for(y=0;y<l;y++)if(t=q[y][z],w.push(d[t]),!c.appender||c.pager&&!(c.pager.removeRows&&h.pager_removeRows||c.pager.ajax))for(s=d[t].length,x=0;x<s;x++)p.append(d[t][x]);f.processTbody(a,p,!1)}c.appender&&c.appender(a,w);c.debug&&u("Rebuilt table",v);b||c.appender||f.applyWidget(a);a.isUpdating&&c.$table.trigger("updateComplete",a)}function D(a){var b=[],c={},h=0,e=g(a).find("thead:eq(0), tfoot").children("tr"),f,d,n,q,l,m,u,p,s,r;for(f=0;f<e.length;f++)for(l= e[f].cells,d=0;d<l.length;d++){q=l[d];m=q.parentNode.rowIndex;u=m+"-"+q.cellIndex;p=q.rowSpan||1;s=q.colSpan||1;"undefined"===typeof b[m]&&(b[m]=[]);for(n=0;n<b[m].length+1;n++)if("undefined"===typeof b[m][n]){r=n;break}c[u]=r;h=Math.max(r,h);g(q).attr({"data-column":r});for(n=m;n<m+p;n++)for("undefined"===typeof b[n]&&(b[n]=[]),u=b[n],q=r;q<r+s;q++)u[q]="x"}a.config.columns=h+1;return c}function C(a){return/^d/i.test(a)||1===a}function E(a){var b=D(a),c,h,e,w,k,n,q,l=a.config;l.headerList=[];l.headerContent= [];l.debug&&(q=new Date);w=l.cssIcon?'<i class="'+(l.cssIcon===f.css.icon?f.css.icon:l.cssIcon+" "+f.css.icon)+'"></i>':"";l.$headers=g(a).find(l.selectorHeaders).each(function(a){h=g(this);c=l.headers[a];l.headerContent[a]=g(this).html();k=l.headerTemplate.replace(/\{content\}/g,g(this).html()).replace(/\{icon\}/g,w);l.onRenderTemplate&&(e=l.onRenderTemplate.apply(h,[a,k]))&&"string"===typeof e&&(k=e);g(this).html('<div class="'+f.css.headerIn+'">'+k+"</div>");l.onRenderHeader&&l.onRenderHeader.apply(h, [a]);this.column=b[this.parentNode.rowIndex+"-"+this.cellIndex];this.order=C(f.getData(h,c,"sortInitialOrder")||l.sortInitialOrder)?[1,0,2]:[0,1,2];this.count=-1;this.lockedOrder=!1;n=f.getData(h,c,"lockedOrder")||!1;"undefined"!==typeof n&&!1!==n&&(this.order=this.lockedOrder=C(n)?[1,1,1]:[0,0,0]);h.addClass(f.css.header+" "+l.cssHeader);l.headerList[a]=this;h.parent().addClass(f.css.headerRow+" "+l.cssHeaderRow).attr("role","row");l.tabIndex&&h.attr("tabindex",0)}).attr({scope:"col",role:"columnheader"}); G(a);l.debug&&(u("Built headers:",q),d(l.$headers))}function B(a,b,c){var h=a.config;h.$table.find(h.selectorRemove).remove();s(a);v(a);H(h.$table,b,c)}function G(a){var b,c,h=a.config;h.$headers.each(function(e,d){c=g(d);b="false"===f.getData(d,h.headers[e],"sorter");d.sortDisabled=b;c[b?"addClass":"removeClass"]("sorter-false").attr("aria-disabled",""+b);a.id&&(b?c.removeAttr("aria-controls"):c.attr("aria-controls",a.id))})}function F(a){var b,c,h,e=a.config,d=e.sortList,k=f.css.sortNone+" "+e.cssNone, n=[f.css.sortAsc+" "+e.cssAsc,f.css.sortDesc+" "+e.cssDesc],q=["ascending","descending"],l=g(a).find("tfoot tr").children().removeClass(n.join(" "));e.$headers.removeClass(n.join(" ")).addClass(k).attr("aria-sort","none");h=d.length;for(b=0;b<h;b++)if(2!==d[b][1]&&(a=e.$headers.not(".sorter-false").filter('[data-column="'+d[b][0]+'"]'+(1===h?":last":"")),a.length))for(c=0;c<a.length;c++)a[c].sortDisabled||(a.eq(c).removeClass(k).addClass(n[d[b][1]]).attr("aria-sort",q[d[b][1]]),l.length&&l.filter('[data-column="'+ d[b][0]+'"]').eq(c).addClass(n[d[b][1]]));e.$headers.not(".sorter-false").each(function(){var a=g(this),b=this.order[(this.count+1)%(e.sortReset?3:2)],b=a.text()+": "+f.language[a.hasClass(f.css.sortAsc)?"sortAsc":a.hasClass(f.css.sortDesc)?"sortDesc":"sortNone"]+f.language[0===b?"nextAsc":1===b?"nextDesc":"nextNone"];a.attr("aria-label",b)})}function L(a){if(a.config.widthFixed&&0===g(a).find("colgroup").length){var b=g("<colgroup>"),c=g(a).width();g(a.tBodies[0]).find("tr:first").children("td:visible").each(function(){b.append(g("<col>").css("width", parseInt(g(this).width()/c*1E3,10)/10+"%"))});g(a).prepend(b)}}function M(a,b){var c,h,e,d=a.config,f=b||d.sortList;d.sortList=[];g.each(f,function(a,b){c=[parseInt(b[0],10),parseInt(b[1],10)];if(e=d.$headers[c[0]])d.sortList.push(c),h=g.inArray(c[1],e.order),e.count=0<=h?h:c[1]%(d.sortReset?3:2)})}function N(a,b){return a&&a[b]?a[b].type||"":""}function O(a,b,c){var h,e,d,k=a.config,n=!c[k.sortMultiSortKey],q=k.$table;q.trigger("sortStart",a);b.count=c[k.sortResetKey]?2:(b.count+1)%(k.sortReset? 3:2);k.sortRestart&&(e=b,k.$headers.each(function(){this===e||!n&&g(this).is("."+f.css.sortDesc+",."+f.css.sortAsc)||(this.count=-1)}));e=b.column;if(n){k.sortList=[];if(null!==k.sortForce)for(h=k.sortForce,c=0;c<h.length;c++)h[c][0]!==e&&k.sortList.push(h[c]);h=b.order[b.count];if(2>h&&(k.sortList.push([e,h]),1<b.colSpan))for(c=1;c<b.colSpan;c++)k.sortList.push([e+c,h])}else{if(k.sortAppend&&1<k.sortList.length)for(c=0;c<k.sortAppend.length;c++)d=f.isValueInArray(k.sortAppend[c][0],k.sortList),0<= d&&k.sortList.splice(d,1);if(0<=f.isValueInArray(e,k.sortList))for(c=0;c<k.sortList.length;c++)d=k.sortList[c],h=k.$headers[d[0]],d[0]===e&&(d[1]=h.order[b.count],2===d[1]&&(k.sortList.splice(c,1),h.count=-1));else if(h=b.order[b.count],2>h&&(k.sortList.push([e,h]),1<b.colSpan))for(c=1;c<b.colSpan;c++)k.sortList.push([e+c,h])}if(null!==k.sortAppend)for(h=k.sortAppend,c=0;c<h.length;c++)h[c][0]!==e&&k.sortList.push(h[c]);q.trigger("sortBegin",a);setTimeout(function(){F(a);I(a);A(a);q.trigger("sortEnd", a)},1)}function I(a){var b,c,h,e,d,k,g,q,l,p,s,t,x=0,r=a.config,v=r.textSorter||"",A=r.sortList,B=A.length,C=a.tBodies.length;if(!r.serverSideSorting&&!m(r.cache)){r.debug&&(l=new Date);for(c=0;c<C;c++)d=r.cache[c].colMax,q=(k=r.cache[c].normalized)&&k[0]?k[0].length-1:0,k.sort(function(c,k){for(b=0;b<B;b++){e=A[b][0];g=A[b][1];x=0===g;if(r.sortStable&&c[e]===k[e]&&1===B)break;(h=/n/i.test(N(r.parsers,e)))&&r.strings[e]?(h="boolean"===typeof r.string[r.strings[e]]?(x?1:-1)*(r.string[r.strings[e]]? -1:1):r.strings[e]?r.string[r.strings[e]]||0:0,p=r.numberSorter?r.numberSorter(s[e],t[e],x,d[e],a):f["sortNumeric"+(x?"Asc":"Desc")](c[e],k[e],h,d[e],e,a)):(s=x?c:k,t=x?k:c,p="function"===typeof v?v(s[e],t[e],x,e,a):"object"===typeof v&&v.hasOwnProperty(e)?v[e](s[e],t[e],x,e,a):f["sortNatural"+(x?"Asc":"Desc")](c[e],k[e],e,a,r));if(p)return p}return c[q]-k[q]});r.debug&&u("Sorting on "+A.toString()+" and dir "+g+" time",l)}}function J(a,b){a[0].isUpdating&&a.trigger("updateComplete");"function"=== typeof b&&b(a[0])}function H(a,b,c){var h=a[0].config.sortList;!1!==b&&!a[0].isProcessing&&h.length?a.trigger("sorton",[h,function(){J(a,c)},!0]):J(a,c)}function K(a){var b=a.config,c=b.$table;c.unbind("sortReset update updateRows updateCell updateAll addRows updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave ".split(" ").join(b.namespace+" ")).bind("sortReset"+b.namespace,function(c){c.stopPropagation();b.sortList=[];F(a);I(a);A(a)}).bind("updateAll"+ b.namespace,function(c,e,d){c.stopPropagation();a.isUpdating=!0;f.refreshWidgets(a,!0,!0);f.restoreHeaders(a);E(a);f.bindEvents(a,b.$headers);K(a);B(a,e,d)}).bind("update"+b.namespace+" updateRows"+b.namespace,function(b,c,d){b.stopPropagation();a.isUpdating=!0;G(a);B(a,c,d)}).bind("updateCell"+b.namespace,function(h,e,d,f){h.stopPropagation();a.isUpdating=!0;c.find(b.selectorRemove).remove();var n,q,l;n=c.find("tbody");h=n.index(g(e).parents("tbody").filter(":first"));var m=g(e).parents("tr").filter(":first"); e=g(e)[0];n.length&&0<=h&&(q=n.eq(h).find("tr").index(m),l=e.cellIndex,n=b.cache[h].normalized[q].length-1,b.cache[h].row[a.config.cache[h].normalized[q][n]]=m,b.cache[h].normalized[q][l]=b.parsers[l].format(p(a,e,l),a,e,l),H(c,d,f))}).bind("addRows"+b.namespace,function(h,e,d,f){h.stopPropagation();a.isUpdating=!0;if(m(b.cache))G(a),B(a,d,f);else{var g,q=e.filter("tr").length,l=[],u=e[0].cells.length,v=c.find("tbody").index(e.parents("tbody").filter(":first"));b.parsers||s(a);for(h=0;h<q;h++){for(g= 0;g<u;g++)l[g]=b.parsers[g].format(p(a,e[h].cells[g],g),a,e[h].cells[g],g);l.push(b.cache[v].row.length);b.cache[v].row.push([e[h]]);b.cache[v].normalized.push(l);l=[]}H(c,d,f)}}).bind("updateComplete"+b.namespace,function(){a.isUpdating=!1}).bind("sorton"+b.namespace,function(b,e,d,f){var g=a.config;b.stopPropagation();c.trigger("sortStart",this);M(a,e);F(a);g.delayInit&&m(g.cache)&&v(a);c.trigger("sortBegin",this);I(a);A(a,f);c.trigger("sortEnd",this);"function"===typeof d&&d(a)}).bind("appendCache"+ b.namespace,function(b,c,d){b.stopPropagation();A(a,d);"function"===typeof c&&c(a)}).bind("updateCache"+b.namespace,function(c,e){b.parsers||s(a);v(a);"function"===typeof e&&e(a)}).bind("applyWidgetId"+b.namespace,function(c,e){c.stopPropagation();f.getWidgetById(e).format(a,b,b.widgetOptions)}).bind("applyWidgets"+b.namespace,function(b,c){b.stopPropagation();f.applyWidget(a,c)}).bind("refreshWidgets"+b.namespace,function(b,c,d){b.stopPropagation();f.refreshWidgets(a,c,d)}).bind("destroy"+b.namespace, function(b,c,d){b.stopPropagation();f.destroy(a,c,d)})}var f=this;f.version="2.15.7";f.parsers=[];f.widgets=[];f.defaults={theme:"default",widthFixed:!1,showProcessing:!1,headerTemplate:"{content}",onRenderTemplate:null,onRenderHeader:null,cancelSelection:!0,tabIndex:!0,dateFormat:"mmddyyyy",sortMultiSortKey:"shiftKey",sortResetKey:"ctrlKey",usNumberFormat:!0,delayInit:!1,serverSideSorting:!1,headers:{},ignoreCase:!0,sortForce:null,sortList:[],sortAppend:null,sortStable:!1,sortInitialOrder:"asc", sortLocaleCompare:!1,sortReset:!1,sortRestart:!1,emptyTo:"bottom",stringTo:"max",textExtraction:"simple",textSorter:null,numberSorter:null,widgets:[],widgetOptions:{zebra:["even","odd"]},initWidgets:!0,initialized:null,tableClass:"",cssAsc:"",cssDesc:"",cssNone:"",cssHeader:"",cssHeaderRow:"",cssProcessing:"",cssChildRow:"tablesorter-childRow",cssIcon:"tablesorter-icon",cssInfoBlock:"tablesorter-infoOnly",selectorHeaders:"> thead th, > thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:!1, headerList:[],empties:{},strings:{},parsers:[]};f.css={table:"tablesorter",childRow:"tablesorter-childRow",header:"tablesorter-header",headerRow:"tablesorter-headerRow",headerIn:"tablesorter-header-inner",icon:"tablesorter-icon",info:"tablesorter-infoOnly",processing:"tablesorter-processing",sortAsc:"tablesorter-headerAsc",sortDesc:"tablesorter-headerDesc",sortNone:"tablesorter-headerUnSorted"};f.language={sortAsc:"Ascending sort applied, ",sortDesc:"Descending sort applied, ",sortNone:"No sort applied, ", nextAsc:"activate to apply an ascending sort",nextDesc:"activate to apply a descending sort",nextNone:"activate to remove the sort"};f.log=d;f.benchmark=u;f.construct=function(a){return this.each(function(){var b=g.extend(!0,{},f.defaults,a);!this.hasInitialized&&f.buildTable&&"TABLE"!==this.tagName?f.buildTable(this,b):f.setup(this,b)})};f.setup=function(a,b){if(!a||!a.tHead||0===a.tBodies.length||!0===a.hasInitialized)return b.debug?d("ERROR: stopping initialization! No table, thead, tbody or tablesorter has already been initialized"): "";var c="",h=g(a),e=g.metadata;a.hasInitialized=!1;a.isProcessing=!0;a.config=b;g.data(a,"tablesorter",b);b.debug&&g.data(a,"startoveralltimer",new Date);b.supportsTextContent="x"===g("<span>x</span>")[0].textContent;b.supportsDataObject=function(a){a[0]=parseInt(a[0],10);return 1<a[0]||1===a[0]&&4<=parseInt(a[1],10)}(g.fn.jquery.split("."));b.string={max:1,min:-1,"max+":1,"max-":-1,zero:0,none:0,"null":0,top:!0,bottom:!1};/tablesorter\-/.test(h.attr("class"))||(c=""!==b.theme?" tablesorter-"+b.theme: "");b.$table=h.addClass(f.css.table+" "+b.tableClass+c).attr({role:"grid"});b.namespace=b.namespace?"."+b.namespace.replace(/\W/g,""):".tablesorter"+Math.random().toString(16).slice(2);b.$tbodies=h.children("tbody:not(."+b.cssInfoBlock+")").attr({"aria-live":"polite","aria-relevant":"all"});b.$table.find("caption").length&&b.$table.attr("aria-labelledby","theCaption");b.widgetInit={};E(a);L(a);s(a);b.delayInit||v(a);f.bindEvents(a,b.$headers);K(a);b.supportsDataObject&&"undefined"!==typeof h.data().sortlist? b.sortList=h.data().sortlist:e&&h.metadata()&&h.metadata().sortlist&&(b.sortList=h.metadata().sortlist);f.applyWidget(a,!0);0<b.sortList.length?h.trigger("sorton",[b.sortList,{},!b.initWidgets,!0]):(F(a),b.initWidgets&&f.applyWidget(a));b.showProcessing&&h.unbind("sortBegin"+b.namespace+" sortEnd"+b.namespace).bind("sortBegin"+b.namespace+" sortEnd"+b.namespace,function(b){f.isProcessing(a,"sortBegin"===b.type)});a.hasInitialized=!0;a.isProcessing=!1;b.debug&&f.benchmark("Overall initialization time", g.data(a,"startoveralltimer"));h.trigger("tablesorter-initialized",a);"function"===typeof b.initialized&&b.initialized(a)};f.isProcessing=function(a,b,c){a=g(a);var h=a[0].config;a=c||a.find("."+f.css.header);b?("undefined"!==typeof c&&0<h.sortList.length&&(a=a.filter(function(){return this.sortDisabled?!1:0<=f.isValueInArray(parseFloat(g(this).attr("data-column")),h.sortList)})),a.addClass(f.css.processing+" "+h.cssProcessing)):a.removeClass(f.css.processing+" "+h.cssProcessing)};f.processTbody= function(a,b,c){a=g(a)[0];if(c)return a.isProcessing=!0,b.before('<span class="tablesorter-savemyplace"/>'),c=g.fn.detach?b.detach():b.remove();c=g(a).find("span.tablesorter-savemyplace");b.insertAfter(c);c.remove();a.isProcessing=!1};f.clearTableBody=function(a){g(a)[0].config.$tbodies.empty()};f.bindEvents=function(a,b){a=g(a)[0];var c,h=a.config;b.find(h.selectorSort).add(b.filter(h.selectorSort)).unbind(["mousedown","mouseup","sort","keyup",""].join(h.namespace+" ")).bind(["mousedown","mouseup", "sort","keyup",""].join(h.namespace+" "),function(e,d){var f;f=e.type;if(!(1!==(e.which||e.button)&&!/sort|keyup/.test(f)||"keyup"===f&&13!==e.which||"mouseup"===f&&!0!==d&&250<(new Date).getTime()-c)){if("mousedown"===f)return c=(new Date).getTime(),"INPUT"===e.target.tagName?"":!h.cancelSelection;h.delayInit&&m(h.cache)&&v(a);f=/TH|TD/.test(this.tagName)?this:g(this).parents("th, td")[0];f=h.$headers[b.index(f)];f.sortDisabled||O(a,f,e)}});h.cancelSelection&&b.attr("unselectable","on").bind("selectstart", !1).css({"user-select":"none",MozUserSelect:"none"})};f.restoreHeaders=function(a){var b=g(a)[0].config;b.$table.find(b.selectorHeaders).each(function(a){g(this).find("."+f.css.headerIn).length&&g(this).html(b.headerContent[a])})};f.destroy=function(a,b,c){a=g(a)[0];if(a.hasInitialized){f.refreshWidgets(a,!0,!0);var h=g(a),e=a.config,d=h.find("thead:first"),k=d.find("tr."+f.css.headerRow).removeClass(f.css.headerRow+" "+e.cssHeaderRow),n=h.find("tfoot:first > tr").children("th, td");d.find("tr").not(k).remove(); h.removeData("tablesorter").unbind("sortReset update updateAll updateRows updateCell addRows updateComplete sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave keypress sortBegin sortEnd ".split(" ").join(e.namespace+" "));e.$headers.add(n).removeClass([f.css.header,e.cssHeader,e.cssAsc,e.cssDesc,f.css.sortAsc,f.css.sortDesc,f.css.sortNone].join(" ")).removeAttr("data-column");k.find(e.selectorSort).unbind(["mousedown","mouseup","keypress",""].join(e.namespace+ " "));f.restoreHeaders(a);!1!==b&&h.removeClass(f.css.table+" "+e.tableClass+" tablesorter-"+e.theme);a.hasInitialized=!1;"function"===typeof c&&c(a)}};f.regex={chunk:/(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,chunks:/(^\\0|\\0$)/,hex:/^0x[0-9a-f]+$/i};f.sortNatural=function(a,b){if(a===b)return 0;var c,d,e,g,k,n;d=f.regex;if(d.hex.test(b)){c=parseInt(a.match(d.hex),16);e=parseInt(b.match(d.hex),16);if(c<e)return-1;if(c>e)return 1}c=a.replace(d.chunk,"\\0$1\\0").replace(d.chunks, "").split("\\0");d=b.replace(d.chunk,"\\0$1\\0").replace(d.chunks,"").split("\\0");n=Math.max(c.length,d.length);for(k=0;k<n;k++){e=isNaN(c[k])?c[k]||0:parseFloat(c[k])||0;g=isNaN(d[k])?d[k]||0:parseFloat(d[k])||0;if(isNaN(e)!==isNaN(g))return isNaN(e)?1:-1;typeof e!==typeof g&&(e+="",g+="");if(e<g)return-1;if(e>g)return 1}return 0};f.sortNaturalAsc=function(a,b,c,d,e){if(a===b)return 0;c=e.string[e.empties[c]||e.emptyTo];return""===a&&0!==c?"boolean"===typeof c?c?-1:1:-c||-1:""===b&&0!==c?"boolean"=== typeof c?c?1:-1:c||1:f.sortNatural(a,b)};f.sortNaturalDesc=function(a,b,c,d,e){if(a===b)return 0;c=e.string[e.empties[c]||e.emptyTo];return""===a&&0!==c?"boolean"===typeof c?c?-1:1:c||1:""===b&&0!==c?"boolean"===typeof c?c?1:-1:-c||-1:f.sortNatural(b,a)};f.sortText=function(a,b){return a>b?1:a<b?-1:0};f.getTextValue=function(a,b,c){if(c){var d=a?a.length:0,e=c+b;for(c=0;c<d;c++)e+=a.charCodeAt(c);return b*e}return 0};f.sortNumericAsc=function(a,b,c,d,e,g){if(a===b)return 0;g=g.config;e=g.string[g.empties[e]|| g.emptyTo];if(""===a&&0!==e)return"boolean"===typeof e?e?-1:1:-e||-1;if(""===b&&0!==e)return"boolean"===typeof e?e?1:-1:e||1;isNaN(a)&&(a=f.getTextValue(a,c,d));isNaN(b)&&(b=f.getTextValue(b,c,d));return a-b};f.sortNumericDesc=function(a,b,c,d,e,g){if(a===b)return 0;g=g.config;e=g.string[g.empties[e]||g.emptyTo];if(""===a&&0!==e)return"boolean"===typeof e?e?-1:1:e||1;if(""===b&&0!==e)return"boolean"===typeof e?e?1:-1:-e||-1;isNaN(a)&&(a=f.getTextValue(a,c,d));isNaN(b)&&(b=f.getTextValue(b,c,d));return b- a};f.sortNumeric=function(a,b){return a-b};f.characterEquivalents={a:"\u00e1\u00e0\u00e2\u00e3\u00e4\u0105\u00e5",A:"\u00c1\u00c0\u00c2\u00c3\u00c4\u0104\u00c5",c:"\u00e7\u0107\u010d",C:"\u00c7\u0106\u010c",e:"\u00e9\u00e8\u00ea\u00eb\u011b\u0119",E:"\u00c9\u00c8\u00ca\u00cb\u011a\u0118",i:"\u00ed\u00ec\u0130\u00ee\u00ef\u0131",I:"\u00cd\u00cc\u0130\u00ce\u00cf",o:"\u00f3\u00f2\u00f4\u00f5\u00f6",O:"\u00d3\u00d2\u00d4\u00d5\u00d6",ss:"\u00df",SS:"\u1e9e",u:"\u00fa\u00f9\u00fb\u00fc\u016f",U:"\u00da\u00d9\u00db\u00dc\u016e"}; f.replaceAccents=function(a){var b,c="[",d=f.characterEquivalents;if(!f.characterRegex){f.characterRegexArray={};for(b in d)"string"===typeof b&&(c+=d[b],f.characterRegexArray[b]=RegExp("["+d[b]+"]","g"));f.characterRegex=RegExp(c+"]")}if(f.characterRegex.test(a))for(b in d)"string"===typeof b&&(a=a.replace(f.characterRegexArray[b],b));return a};f.isValueInArray=function(a,b){var c,d=b.length;for(c=0;c<d;c++)if(b[c][0]===a)return c;return-1};f.addParser=function(a){var b,c=f.parsers.length,d=!0;for(b= 0;b<c;b++)f.parsers[b].id.toLowerCase()===a.id.toLowerCase()&&(d=!1);d&&f.parsers.push(a)};f.getParserById=function(a){var b,c=f.parsers.length;for(b=0;b<c;b++)if(f.parsers[b].id.toLowerCase()===a.toString().toLowerCase())return f.parsers[b];return!1};f.addWidget=function(a){f.widgets.push(a)};f.getWidgetById=function(a){var b,c,d=f.widgets.length;for(b=0;b<d;b++)if((c=f.widgets[b])&&c.hasOwnProperty("id")&&c.id.toLowerCase()===a.toLowerCase())return c};f.applyWidget=function(a,b){a=g(a)[0];var c= a.config,d=c.widgetOptions,e=[],m,k,n;c.debug&&(m=new Date);c.widgets.length&&(c.widgets=g.grep(c.widgets,function(a,b){return g.inArray(a,c.widgets)===b}),g.each(c.widgets||[],function(a,b){(n=f.getWidgetById(b))&&n.id&&(n.priority||(n.priority=10),e[a]=n)}),e.sort(function(a,b){return a.priority<b.priority?-1:a.priority===b.priority?0:1}),g.each(e,function(e,f){if(f){if(b||!c.widgetInit[f.id])f.hasOwnProperty("options")&&(d=a.config.widgetOptions=g.extend(!0,{},f.options,d)),f.hasOwnProperty("init")&& f.init(a,f,c,d),c.widgetInit[f.id]=!0;!b&&f.hasOwnProperty("format")&&f.format(a,c,d,!1)}}));c.debug&&(k=c.widgets.length,u("Completed "+(!0===b?"initializing ":"applying ")+k+" widget"+(1!==k?"s":""),m))};f.refreshWidgets=function(a,b,c){a=g(a)[0];var h,e=a.config,m=e.widgets,k=f.widgets,n=k.length;for(h=0;h<n;h++)k[h]&&k[h].id&&(b||0>g.inArray(k[h].id,m))&&(e.debug&&d('Refeshing widgets: Removing "'+k[h].id+'"'),k[h].hasOwnProperty("remove")&&e.widgetInit[k[h].id]&&(k[h].remove(a,e,e.widgetOptions), e.widgetInit[k[h].id]=!1));!0!==c&&f.applyWidget(a,b)};f.getData=function(a,b,c){var d="";a=g(a);var e,f;if(!a.length)return"";e=g.metadata?a.metadata():!1;f=" "+(a.attr("class")||"");"undefined"!==typeof a.data(c)||"undefined"!==typeof a.data(c.toLowerCase())?d+=a.data(c)||a.data(c.toLowerCase()):e&&"undefined"!==typeof e[c]?d+=e[c]:b&&"undefined"!==typeof b[c]?d+=b[c]:" "!==f&&f.match(" "+c+"-")&&(d=f.match(RegExp("\\s"+c+"-([\\w-]+)"))[1]||"");return g.trim(d)};f.formatFloat=function(a,b){if("string"!== typeof a||""===a)return a;var c;a=(b&&b.config?!1!==b.config.usNumberFormat:"undefined"!==typeof b?b:1)?a.replace(/,/g,""):a.replace(/[\s|\.]/g,"").replace(/,/g,".");/^\s*\([.\d]+\)/.test(a)&&(a=a.replace(/^\s*\(([.\d]+)\)/,"-$1"));c=parseFloat(a);return isNaN(c)?g.trim(a):c};f.isDigit=function(a){return isNaN(a)?/^[\-+(]?\d+[)]?$/.test(a.toString().replace(/[,.'"\s]/g,"")):!0}}});var p=g.tablesorter;g.fn.extend({tablesorter:p.construct});p.addParser({id:"text",is:function(){return!0},format:function(d, u){var m=u.config;d&&(d=g.trim(m.ignoreCase?d.toLocaleLowerCase():d),d=m.sortLocaleCompare?p.replaceAccents(d):d);return d},type:"text"});p.addParser({id:"digit",is:function(d){return p.isDigit(d)},format:function(d,u){var m=p.formatFloat((d||"").replace(/[^\w,. \-()]/g,""),u);return d&&"number"===typeof m?m:d?g.trim(d&&u.config.ignoreCase?d.toLocaleLowerCase():d):d},type:"numeric"});p.addParser({id:"currency",is:function(d){return/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/.test((d|| "").replace(/[+\-,. ]/g,""))},format:function(d,u){var m=p.formatFloat((d||"").replace(/[^\w,. \-()]/g,""),u);return d&&"number"===typeof m?m:d?g.trim(d&&u.config.ignoreCase?d.toLocaleLowerCase():d):d},type:"numeric"});p.addParser({id:"ipAddress",is:function(d){return/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/.test(d)},format:function(d,g){var m,t=d?d.split("."):"",s="",v=t.length;for(m=0;m<v;m++)s+=("00"+t[m]).slice(-3);return d?p.formatFloat(s,g):d},type:"numeric"});p.addParser({id:"url",is:function(d){return/^(https?|ftp|file):\/\//.test(d)}, format:function(d){return d?g.trim(d.replace(/(https?|ftp|file):\/\//,"")):d},type:"text"});p.addParser({id:"isoDate",is:function(d){return/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/.test(d)},format:function(d,g){return d?p.formatFloat(""!==d?(new Date(d.replace(/-/g,"/"))).getTime()||d:"",g):d},type:"numeric"});p.addParser({id:"percent",is:function(d){return/(\d\s*?%|%\s*?\d)/.test(d)&&15>d.length},format:function(d,g){return d?p.formatFloat(d.replace(/%/g,""),g):d},type:"numeric"});p.addParser({id:"usLongDate", is:function(d){return/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i.test(d)||/^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i.test(d)},format:function(d,g){return d?p.formatFloat((new Date(d.replace(/(\S)([AP]M)$/i,"$1 $2"))).getTime()||d,g):d},type:"numeric"});p.addParser({id:"shortDate",is:function(d){return/(^\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4})|(^\d{4}[\/\s]\d{1,2}[\/\s]\d{1,2})/.test((d||"").replace(/\s+/g," ").replace(/[\-.,]/g,"/"))},format:function(d,g,m,t){if(d){m=g.config; var s=m.$headers.filter("[data-column="+t+"]:last");t=s.length&&s[0].dateFormat||p.getData(s,m.headers[t],"dateFormat")||m.dateFormat;d=d.replace(/\s+/g," ").replace(/[\-.,]/g,"/");"mmddyyyy"===t?d=d.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,"$3/$1/$2"):"ddmmyyyy"===t?d=d.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,"$3/$2/$1"):"yyyymmdd"===t&&(d=d.replace(/(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/,"$1/$2/$3"))}return d?p.formatFloat((new Date(d)).getTime()||d,g):d},type:"numeric"});p.addParser({id:"time", is:function(d){return/^(([0-2]?\d:[0-5]\d)|([0-1]?\d:[0-5]\d\s?([AP]M)))$/i.test(d)},format:function(d,g){return d?p.formatFloat((new Date("2000/01/01 "+d.replace(/(\S)([AP]M)$/i,"$1 $2"))).getTime()||d,g):d},type:"numeric"});p.addParser({id:"metadata",is:function(){return!1},format:function(d,p,m){d=p.config;d=d.parserMetadataName?d.parserMetadataName:"sortValue";return g(m).metadata()[d]},type:"numeric"});p.addWidget({id:"zebra",priority:90,format:function(d,u,m){var t,s,v,A,D,C,E=RegExp(u.cssChildRow, "i"),B=u.$tbodies;u.debug&&(D=new Date);for(d=0;d<B.length;d++)t=B.eq(d),C=t.children("tr").length,1<C&&(v=0,t=t.children("tr:visible").not(u.selectorRemove),t.each(function(){s=g(this);E.test(this.className)||v++;A=0===v%2;s.removeClass(m.zebra[A?1:0]).addClass(m.zebra[A?0:1])}));u.debug&&p.benchmark("Applying Zebra widget",D)},remove:function(d,p,m){var t;p=p.$tbodies;var s=(m.zebra||["even","odd"]).join(" ");for(m=0;m<p.length;m++)t=g.tablesorter.processTbody(d,p.eq(m),!0),t.children().removeClass(s), g.tablesorter.processTbody(d,t,!1)}})}(jQuery);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/spel/static/spel/lib/jquery.tablesorter.widgets.min.js Mon Mar 10 18:26:42 2014 +0100
@@ -0,0 +1,17 @@
+/*! tableSorter 2.15+ widgets - updated 3/9/2014 (v2.15.7) */
+;(function(l){
+var c=l.tablesorter=l.tablesorter||{};
+c.themes={bootstrap:{table:"table table-bordered table-striped",caption:"caption",header:"bootstrap-header",footerRow:"",footerCells:"",icons:"",sortNone:"bootstrap-icon-unsorted",sortAsc:"icon-chevron-up glyphicon glyphicon-chevron-up",sortDesc:"icon-chevron-down glyphicon glyphicon-chevron-down",active:"",hover:"",filterRow:"",even:"",odd:""},jui:{table:"ui-widget ui-widget-content ui-corner-all",caption:"ui-widget-content ui-corner-all",header:"ui-widget-header ui-corner-all ui-state-default", footerRow:"",footerCells:"",icons:"ui-icon",sortNone:"ui-icon-carat-2-n-s",sortAsc:"ui-icon-carat-1-n",sortDesc:"ui-icon-carat-1-s",active:"ui-state-active",hover:"ui-state-hover",filterRow:"",even:"ui-widget-content",odd:"ui-state-default"}};l.extend(c.css,{filterRow:"tablesorter-filter-row",filter:"tablesorter-filter",wrapper:"tablesorter-wrapper",resizer:"tablesorter-resizer",grip:"tablesorter-resizer-grip",sticky:"tablesorter-stickyHeader",stickyVis:"tablesorter-sticky-visible"});
+c.storage=function(b, a,e,c){b=l(b)[0];var d,f,h=!1;d={};f=b.config;var k=l(b);b=c&&c.id||k.attr(c&&c.group||"data-table-group")||b.id||l(".tablesorter").index(k);c=c&&c.url||k.attr(c&&c.page||"data-table-page")||f&&f.fixedUrl||window.location.pathname;if("localStorage"in window)try{window.localStorage.setItem("_tmptest","temp"),h=!0,window.localStorage.removeItem("_tmptest")}catch(q){}l.parseJSON&&(h?d=l.parseJSON(localStorage[a]||"{}"):(f=document.cookie.split(/[;\s|=]/),d=l.inArray(a,f)+1,d=0!==d?l.parseJSON(f[d]|| "{}"):{}));if((e||""===e)&&window.JSON&&JSON.hasOwnProperty("stringify"))d[c]||(d[c]={}),d[c][b]=e,h?localStorage[a]=JSON.stringify(d):(e=new Date,e.setTime(e.getTime()+31536E6),document.cookie=a+"="+JSON.stringify(d).replace(/\"/g,'"')+"; expires="+e.toGMTString()+"; path=/");else return d&&d[c]?d[c][b]:""};
+c.addHeaderResizeEvent=function(b,a,c){var g;c=l.extend({},{timer:250},c);var d=b.config,f=d.widgetOptions,h=function(a){f.resize_flag=!0;g=[];d.$headers.each(function(){var a=l(this),b=a.data("savedSizes")|| [0,0],c=this.offsetWidth,e=this.offsetHeight;if(c!==b[0]||e!==b[1])a.data("savedSizes",[c,e]),g.push(this)});g.length&&!1!==a&&d.$table.trigger("resize",[g]);f.resize_flag=!1};h(!1);clearInterval(f.resize_timer);if(a)return f.resize_flag=!1;f.resize_timer=setInterval(function(){f.resize_flag||h()},c.timer)};
+c.addWidget({id:"uitheme",priority:10,format:function(b,a,e){var g,d,f,h,k=c.themes,q=a.$table,n=a.$headers,p=a.theme||"jui",m=k[p]||k.jui,v=m.sortNone+" "+m.sortDesc+" "+m.sortAsc;a.debug&&(g= new Date);q.hasClass("tablesorter-"+p)&&a.theme!==p&&b.hasInitialized||(""!==m.even&&(e.zebra[0]+=" "+m.even),""!==m.odd&&(e.zebra[1]+=" "+m.odd),q.find("caption").addClass(m.caption),b=q.removeClass(""===a.theme?"":"tablesorter-"+a.theme).addClass("tablesorter-"+p+" "+m.table).find("tfoot"),b.length&&b.find("tr").addClass(m.footerRow).children("th, td").addClass(m.footerCells),n.addClass(m.header).not(".sorter-false").bind("mouseenter.tsuitheme mouseleave.tsuitheme",function(a){l(this)["mouseenter"=== a.type?"addClass":"removeClass"](m.hover)}),n.find("."+c.css.wrapper).length||n.wrapInner('<div class="'+c.css.wrapper+'" style="position:relative;height:100%;width:100%"></div>'),a.cssIcon&&n.find("."+c.css.icon).addClass(m.icons),q.hasClass("hasFilters")&&n.find("."+c.css.filterRow).addClass(m.filterRow));l.each(n,function(){f=l(this);h=c.css.icon?f.find("."+c.css.icon):f;this.sortDisabled?(f.removeClass(v),h.removeClass(v+" "+m.icons)):(d=f.hasClass(c.css.sortAsc)?m.sortAsc:f.hasClass(c.css.sortDesc)? m.sortDesc:f.hasClass(c.css.header)?m.sortNone:"",f[d===m.sortNone?"removeClass":"addClass"](m.active),h.removeClass(v).addClass(d))});a.debug&&c.benchmark("Applying "+p+" theme",g)},remove:function(b,a,e){b=a.$table;a=a.theme||"jui";e=c.themes[a]||c.themes.jui;var g=b.children("thead").children(),d=e.sortNone+" "+e.sortDesc+" "+e.sortAsc;b.removeClass("tablesorter-"+a+" "+e.table).find(c.css.header).removeClass(e.header);g.unbind("mouseenter.tsuitheme mouseleave.tsuitheme").removeClass(e.hover+" "+ d+" "+e.active).find("."+c.css.filterRow).removeClass(e.filterRow);g.find("."+c.css.icon).removeClass(e.icons)}});
+c.addWidget({id:"columns",priority:30,options:{columns:["primary","secondary","tertiary"]},format:function(b,a,e){var g,d,f,h,k,q,n,p,m=a.$table,v=a.$tbodies,s=a.sortList,u=s.length,w=e&&e.columns||["primary","secondary","tertiary"],x=w.length-1;n=w.join(" ");a.debug&&(g=new Date);for(f=0;f<v.length;f++)d=c.processTbody(b,v.eq(f),!0),h=d.children("tr"),h.each(function(){k=l(this);if("none"!== this.style.display&&(q=k.children().removeClass(n),s&&s[0]&&(q.eq(s[0][0]).addClass(w[0]),1<u)))for(p=1;p<u;p++)q.eq(s[p][0]).addClass(w[p]||w[x])}),c.processTbody(b,d,!1);b=!1!==e.columns_thead?["thead tr"]:[];!1!==e.columns_tfoot&&b.push("tfoot tr");if(b.length&&(h=m.find(b.join(",")).children().removeClass(n),u))for(p=0;p<u;p++)h.filter('[data-column="'+s[p][0]+'"]').addClass(w[p]||w[x]);a.debug&&c.benchmark("Applying Columns widget",g)},remove:function(b,a,e){var g=a.$tbodies,d=(e.columns||["primary", "secondary","tertiary"]).join(" ");a.$headers.removeClass(d);a.$table.children("tfoot").children("tr").children("th, td").removeClass(d);for(a=0;a<g.length;a++)e=c.processTbody(b,g.eq(a),!0),e.children("tr").each(function(){l(this).children().removeClass(d)}),c.processTbody(b,e,!1)}});
+c.addWidget({id:"filter",priority:50,options:{filter_childRows:!1,filter_columnFilters:!0,filter_cssFilter:"",filter_external:"",filter_filteredRow:"filtered",filter_formatter:null,filter_functions:null,filter_hideEmpty:!0, filter_hideFilters:!1,filter_ignoreCase:!0,filter_liveSearch:!0,filter_onlyAvail:"filter-onlyAvail",filter_reset:null,filter_saveFilters:!1,filter_searchDelay:300,filter_startsWith:!1,filter_useParsedData:!1,filter_serversideFiltering:!1,filter_defaultAttrib:"data-value"},format:function(b,a,e){a.$table.hasClass("hasFilters")||c.filter.init(b,a,e)},remove:function(b,a,e){var g,d=a.$tbodies;a.$table.removeClass("hasFilters").unbind("addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search ".split(" ").join(a.namespace+ "filter ")).find("."+c.css.filterRow).remove();for(a=0;a<d.length;a++)g=c.processTbody(b,d.eq(a),!0),g.children().removeClass(e.filter_filteredRow).show(),c.processTbody(b,g,!1);e.filter_reset&&l(document).undelegate(e.filter_reset,"click.tsfilter")}});
+c.filter={regex:{regex:/^\/((?:\\\/|[^\/])+)\/([mig]{0,3})?$/,child:/tablesorter-childRow/,filtered:/filtered/,type:/undefined|number/,exact:/(^[\"|\'|=]+)|([\"|\'|=]+$)/g,nondigit:/[^\w,. \-()]/g,operators:/[<>=]/g},types:{regex:function(b,a,e,g){if(c.filter.regex.regex.test(a)){var d; b=c.filter.regex.regex.exec(a);try{d=RegExp(b[1],b[2]).test(g)}catch(f){d=!1}return d}return null},operators:function(b,a,e,g,d,f,h,k,l){if(/^[<>]=?/.test(a)){var n,p;n=h.config;b=c.formatFloat(a.replace(c.filter.regex.operators,""),h);e=n.parsers[f];k=b;if(l[f]||"numeric"===e.type)n=e.format(""+a.replace(c.filter.regex.operators,""),h,n.$headers.eq(f),f),b="number"!==typeof b||""===n||isNaN(n)?b:n;n=!l[f]&&"numeric"!==e.type||isNaN(b)||!d?isNaN(g)?c.formatFloat(g.replace(c.filter.regex.nondigit, ""),h):c.formatFloat(g,h):d;/>/.test(a)&&(p=/>=/.test(a)?n>=b:n>b);/</.test(a)&&(p=/<=/.test(a)?n<=b:n<b);p||""!==k||(p=!0);return p}return null},exact:function(b,a,e,g,d,f,h,k,q,n){return c.filter.regex.exact.test(a)?(b=a.replace(c.filter.regex.exact,""),n?0<=l.inArray(b,n):b==g):null},notMatch:function(b,a,c,g,d,f,h,k){return/^\!/.test(a)?(a=a.replace("!",""),b=g.search(l.trim(a)),""===a?!0:!(k.filter_startsWith?0===b:0<=b)):null},and:function(b,a,c,g){if(/\s+(AND|&&)\s+/g.test(b)){b=a.split(/(?:\s+(?:and|&&)\s+)/g); a=0<=g.search(l.trim(b[0]));for(c=b.length-1;a&&c;)a=a&&0<=g.search(l.trim(b[c])),c--;return a}return null},range:function(b,a,e,g,d,f,h,k,l){if(/\s+(-|to)\s+/.test(a)){b=h.config;var n=a.split(/(?: - | to )/);e=c.formatFloat(n[0].replace(c.filter.regex.nondigit,""),h);k=c.formatFloat(n[1].replace(c.filter.regex.nondigit,""),h);if(l[f]||"numeric"===b.parsers[f].type)a=b.parsers[f].format(""+n[0],h,b.$headers.eq(f),f),e=""===a||isNaN(a)?e:a,a=b.parsers[f].format(""+n[1],h,b.$headers.eq(f),f),k=""=== a||isNaN(a)?k:a;a=!l[f]&&"numeric"!==b.parsers[f].type||isNaN(e)||isNaN(k)?isNaN(g)?c.formatFloat(g.replace(c.filter.regex.nondigit,""),h):c.formatFloat(g,h):d;e>k&&(g=e,e=k,k=g);return a>=e&&a<=k||""===e||""===k}return null},wild:function(b,a,c,g,d,f,h,k,q,n){return/[\?|\*]/.test(a)||/\s+OR\s+/i.test(b)?(b=h.config,a=a.replace(/\s+OR\s+/gi,"|"),!b.$headers.filter('[data-column="'+f+'"]:last').hasClass("filter-match")&&/\|/.test(a)&&(a=l.isArray(n)?"("+a+")":"^("+a+")$"),RegExp(a.replace(/\?/g,"\\S{1}").replace(/\*/g, "\\S*")).test(g)):null},fuzzy:function(b,a,c,g){if(/^~/.test(a)){b=0;c=g.length;var d=a.slice(1);for(a=0;a<c;a++)g[a]===d[b]&&(b+=1);return b===d.length?!0:!1}return null}},init:function(b,a,e){var g,d,f,h,k,q;a.debug&&(q=new Date);a.$table.addClass("hasFilters");c.filter.regex.child=RegExp(a.cssChildRow);c.filter.regex.filtered=RegExp(e.filter_filteredRow);!1!==e.filter_columnFilters&&a.$headers.filter(".filter-false").length!==a.$headers.length&&c.filter.buildRow(b,a,e);a.$table.bind("addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search ".split(" ").join(a.namespace+ "filter "),function(d,f){a.$table.find("."+c.css.filterRow).toggle(!(e.filter_hideEmpty&&l.isEmptyObject(a.cache)));/(search|filter)/.test(d.type)||(d.stopPropagation(),c.filter.buildDefault(b,!0));"filterReset"===d.type?c.filter.searching(b,[]):"filterEnd"===d.type?c.filter.buildDefault(b,!0):(f="search"===d.type?f:"updateComplete"===d.type?a.$table.data("lastSearch"):"",/(update|add)/.test(d.type)&&"updateComplete"!==d.type&&(a.lastCombinedFilter=null),c.filter.searching(b,f,!0));return!1});e.filter_reset&& l(document).undelegate(e.filter_reset,"click.tsfilter").delegate(e.filter_reset,"click.tsfilter",function(){a.$table.trigger("filterReset")});if(e.filter_functions)for(h in e.filter_functions)if(e.filter_functions.hasOwnProperty(h)&&"string"===typeof h)if(f=a.$headers.filter('[data-column="'+h+'"]:last'),g="",!0===e.filter_functions[h]&&!f.hasClass("filter-false"))c.filter.buildSelect(b,h);else if("string"===typeof h&&!f.hasClass("filter-false")){for(d in e.filter_functions[h])"string"===typeof d&& (g+=""===g?'<option value="">'+(f.data("placeholder")||f.attr("data-placeholder")||"")+"</option>":"",g+='<option value="'+d+'">'+d+"</option>");a.$table.find("thead").find("select."+c.css.filter+'[data-column="'+h+'"]').append(g)}c.filter.buildDefault(b,!0);c.filter.bindSearch(b,a.$table.find("."+c.css.filter),!0);e.filter_external&&c.filter.bindSearch(b,e.filter_external);e.filter_hideFilters&&c.filter.hideFilters(b,a);a.showProcessing&&a.$table.bind("filterStart"+a.namespace+"filter filterEnd"+ a.namespace+"filter",function(d,e){f=e?a.$table.find("."+c.css.header).filter("[data-column]").filter(function(){return""!==e[l(this).data("column")]}):"";c.isProcessing(b,"filterStart"===d.type,e?f:"")});a.debug&&c.benchmark("Applying Filter widget",q);a.$table.bind("tablesorter-initialized pagerInitialized",function(){k=c.filter.setDefaults(b,a,e)||[];k.length&&c.setFilters(b,k,!0);a.$table.trigger("filterFomatterUpdate");c.filter.checkFilters(b,k)});e.filter_initialized=!0;a.$table.trigger("filterInit")}, setDefaults:function(b,a,e){var g,d=c.getFilters(b)||[];e.filter_saveFilters&&c.storage&&(g=c.storage(b,"tablesorter-filters")||[],(b=l.isArray(g))&&""===g.join("")||!b||(d=g));if(""===d.join(""))for(b=0;b<a.columns;b++)d[b]=a.$headers.filter('[data-column="'+b+'"]:last').attr(e.filter_defaultAttrib)||d[b];a.$table.data("lastSearch",d);return d},buildRow:function(b,a,e){var g,d,f,h=a.columns;d='<tr class="'+c.css.filterRow+'">';for(b=0;b<h;b++)d+="<td></td>";a.$filters=l(d+"</tr>").appendTo(a.$table.find("thead").eq(0)).find("td"); for(b=0;b<h;b++)g=a.$headers.filter('[data-column="'+b+'"]:last'),d=e.filter_functions&&e.filter_functions[b]&&"function"!==typeof e.filter_functions[b]||g.hasClass("filter-select"),f=c.getData?"false"===c.getData(g[0],a.headers[b],"filter"):a.headers[b]&&a.headers[b].hasOwnProperty("filter")&&!1===a.headers[b].filter||g.hasClass("filter-false"),d?d=l("<select>").appendTo(a.$filters.eq(b)):(e.filter_formatter&&l.isFunction(e.filter_formatter[b])?((d=e.filter_formatter[b](a.$filters.eq(b),b))&&0=== d.length&&(d=a.$filters.eq(b).children("input")),d&&(0===d.parent().length||d.parent().length&&d.parent()[0]!==a.$filters[b])&&a.$filters.eq(b).append(d)):d=l('<input type="search">').appendTo(a.$filters.eq(b)),d&&d.attr("placeholder",g.data("placeholder")||g.attr("data-placeholder")||"")),d&&(g=(l.isArray(e.filter_cssFilter)?"undefined"!==typeof e.filter_cssFilter[b]?e.filter_cssFilter[b]||"":"":e.filter_cssFilter)||"",d.addClass(c.css.filter+" "+g).attr("data-column",b),f&&(d.addClass("disabled")[0].disabled= !0))},bindSearch:function(b,a,e){b=l(b)[0];a=l(a);if(a.length){var g=b.config,d=g.widgetOptions,f=d.filter_$externalFilters;!0!==e&&(d.filter_$anyMatch=a.filter('[data-column="all"]'),d.filter_$externalFilters=f&&f.length?d.filter_$externalFilters.add(a):a,c.setFilters(b,g.$table.data("lastSearch")||[],!1===e));a.attr("data-lastSearchTime",(new Date).getTime()).unbind(["keyup","search","change",""].join(g.namespace+"filter ")).bind(["keyup","search","change",""].join(g.namespace+"filter "),function(a, e){l(this).attr("data-lastSearchTime",(new Date).getTime());if(27===a.which)this.value="";else if("number"===typeof d.filter_liveSearch&&this.value.length<d.filter_liveSearch&&""!==this.value||"keyup"===a.type&&(32>a.which&&8!==a.which&&!0===d.filter_liveSearch&&13!==a.which||37<=a.which&&40>=a.which||13!==a.which&&!1===d.filter_liveSearch))return;c.filter.searching(b,"",!0)});g.$table.bind("filterReset",function(){a.val("")})}},checkFilters:function(b,a,e){var g=b.config,d=g.widgetOptions,f=l.isArray(a), h=f?a:c.getFilters(b,!0),k=(h||[]).join("");f&&c.setFilters(b,h,!1,!0!==e);d.filter_hideFilters&&g.$table.find("."+c.css.filterRow).trigger(""===k?"mouseleave":"mouseenter");if(g.lastCombinedFilter!==k||!1===a)if(!1===a&&(g.lastCombinedFilter=null),g.$table.trigger("filterStart",[h]),g.showProcessing)setTimeout(function(){c.filter.findRows(b,h,k);return!1},30);else return c.filter.findRows(b,h,k),!1},hideFilters:function(b,a){var e,g,d;a.$table.find("."+c.css.filterRow).addClass("hideme").bind("mouseenter mouseleave", function(b){e=l(this);clearTimeout(d);d=setTimeout(function(){/enter|over/.test(b.type)?e.removeClass("hideme"):l(document.activeElement).closest("tr")[0]!==e[0]&&""===a.lastCombinedFilter&&e.addClass("hideme")},200)}).find("input, select").bind("focus blur",function(a){g=l(this).closest("tr");clearTimeout(d);d=setTimeout(function(){if(""===c.getFilters(b).join(""))g["focus"===a.type?"removeClass":"addClass"]("hideme")},200)})},findRows:function(b,a,e){if(b.config.lastCombinedFilter!==e){var g,d, f,h,k,q,n,p,m,v,s,u,w,x,B,z,y,D,C,A,L,E,G,H,I,J,M,r=b.config,t=r.widgetOptions,N=r.columns,K=r.$tbodies,O=["range","notMatch","operators"],F=r.$headers.map(function(a){return r.parsers&&r.parsers[a]&&r.parsers[a].parsed||(c.getData?"parsed"===c.getData(r.$headers.filter('[data-column="'+a+'"]:last'),r.headers[a],"filter"):l(this).hasClass("filter-parsed"))}).get();r.debug&&(L=new Date);for(q=0;q<K.length;q++)if(!K.eq(q).hasClass(c.css.info)){n=c.processTbody(b,K.eq(q),!0);f=n.children("tr").not(r.selectorRemove); d=f.length;if(""===e||t.filter_serversideFiltering)n.children().not("."+r.cssChildRow).show().removeClass(t.filter_filteredRow);else{D=!0;B=r.lastSearch||r.$table.data("lastSearch")||[];l.each(a,function(a,b){D=0===(b||"").indexOf(B[a]||"")&&D&&!/(\s+or\s+|\|)/g.test(b||"")});D&&0===f.filter(":visible").length&&(D=!1);if(t.filter_$anyMatch&&t.filter_$anyMatch.length||a[r.columns])E=t.filter_$anyMatch&&t.filter_$anyMatch.val()||a[r.columns]||"",r.sortLocaleCompare&&(E=c.replaceAccents(E)),G=E.toLowerCase(); for(k=h=0;k<d;k++)if(v=f[k].className,!(c.filter.regex.child.test(v)||D&&c.filter.regex.filtered.test(v))){A=!0;v=f.eq(k).nextUntil("tr:not(."+r.cssChildRow+")");s=v.length&&t.filter_childRows?v.text():"";s=t.filter_ignoreCase?s.toLocaleLowerCase():s;p=f.eq(k).children("td");E&&(H=p.map(function(a){F[a]?a=r.cache[q].normalized[h][a]:(a=t.filter_ignoreCase?l(this).text().toLowerCase():l(this).text(),r.sortLocaleCompare&&(a=c.replaceAccents(a)));return a}).get(),I=H.join(" "),J=I.toLowerCase(),M=r.cache[q].normalized[h].join(" "), C=null,l.each(c.filter.types,function(a,c){if(0>l.inArray(a,O)&&(z=c(E,G,I,J,M,N,b,t,F,H),null!==z))return C=z,!1}),A=null!==C?C:0<=(J+s).indexOf(G));for(m=0;m<N;m++)a[m]&&(g=r.cache[q].normalized[h][m],t.filter_useParsedData||F[m]?u=g:(u=l.trim(p.eq(m).text()),u=r.sortLocaleCompare?c.replaceAccents(u):u),w=!c.filter.regex.type.test(typeof u)&&t.filter_ignoreCase?u.toLocaleLowerCase():u,y=A,a[m]=r.sortLocaleCompare?c.replaceAccents(a[m]):a[m],x=t.filter_ignoreCase?(a[m]||"").toLocaleLowerCase():a[m], t.filter_functions&&t.filter_functions[m]?!0===t.filter_functions[m]?y=r.$headers.filter('[data-column="'+m+'"]:last').hasClass("filter-match")?0<=w.search(x):a[m]===u:"function"===typeof t.filter_functions[m]?y=t.filter_functions[m](u,g,a[m],m,f.eq(k)):"function"===typeof t.filter_functions[m][a[m]]&&(y=t.filter_functions[m][a[m]](u,g,a[m],m,f.eq(k))):(C=null,l.each(c.filter.types,function(c,d){z=d(a[m],x,u,w,g,m,b,t,F);if(null!==z)return C=z,!1}),null!==C?y=C:(u=(w+s).indexOf(x),y=!t.filter_startsWith&& 0<=u||t.filter_startsWith&&0===u)),A=y?A:!1);f[k].style.display=A?"":"none";f.eq(k)[A?"removeClass":"addClass"](t.filter_filteredRow);if(v.length){if(r.pager&&r.pager.countChildRows||t.pager_countChildRows||t.filter_childRows)v[A?"removeClass":"addClass"](t.filter_filteredRow);v.toggle(A)}h++}}c.processTbody(b,n,!1)}r.lastCombinedFilter=e;r.lastSearch=a;r.$table.data("lastSearch",a);t.filter_saveFilters&&c.storage&&c.storage(b,"tablesorter-filters",a);r.debug&&c.benchmark("Completed filter widget search", L);r.$table.trigger("applyWidgets");r.$table.trigger("filterEnd")}},buildSelect:function(b,a,e,g){if(b.config.cache&&!l.isEmptyObject(b.config.cache)){a=parseInt(a,10);var d,f,h,k;k=b.config;b=k.widgetOptions;var q=k.$tbodies,n=[],p=k.$headers.filter('[data-column="'+a+'"]:last'),m='<option value="">'+(p.data("placeholder")||p.attr("data-placeholder")||"")+"</option>";for(f=0;f<q.length;f++)for(h=k.cache[f].row.length,d=0;d<h;d++)g&&k.cache[f].row[d][0].className.match(b.filter_filteredRow)||(b.filter_useParsedData? n.push(""+k.cache[f].normalized[d][a]):(p=k.cache[f].row[d][0].cells[a])&&n.push(l.trim(p.textContent||p.innerText||l(p).text())));n=l.grep(n,function(a,b){return l.inArray(a,n)===b});n=c.sortNatural?n.sort(function(a,b){return c.sortNatural(a,b)}):n.sort(!0);d=k.$table.find("thead").find("select."+c.css.filter+'[data-column="'+a+'"]').val();for(g=0;g<n.length;g++)f=n[g].replace(/\"/g,"""),m+=""!==n[g]?'<option value="'+f+'"'+(d===f?' selected="selected"':"")+">"+n[g]+"</option>":"";k=(k.$filters? k.$filters:k.$table.children("thead")).find("."+c.css.filter);b.filter_$externalFilters&&(k=k&&k.length?k.add(b.filter_$externalFilters):b.filter_$externalFilters);k.filter('select[data-column="'+a+'"]')[e?"html":"append"](m)}},buildDefault:function(b,a){var e,g,d=b.config,f=d.widgetOptions,h=d.columns;for(e=0;e<h;e++)g=d.$headers.filter('[data-column="'+e+'"]:last'),(g.hasClass("filter-select")||f.filter_functions&&!0===f.filter_functions[e])&&!g.hasClass("filter-false")&&(f.filter_functions||(f.filter_functions= {}),f.filter_functions[e]=!0,c.filter.buildSelect(b,e,a,g.hasClass(f.filter_onlyAvail)))},searching:function(b,a,e){if("undefined"===typeof a||!0===a){var g=b.config.widgetOptions;clearTimeout(g.searchTimer);g.searchTimer=setTimeout(function(){c.filter.checkFilters(b,a,e)},g.filter_liveSearch?g.filter_searchDelay:10)}else c.filter.checkFilters(b,a,e)}};
+c.getFilters=function(b,a,e,g){var d,f=!1,h=b?l(b)[0].config:"",k=b?h.widgetOptions:"";if(!0!==a&&k&&!k.filter_columnFilters)return l(b).data("lastSearch"); if(h&&(h.$filters&&(d=h.$filters.find("."+c.css.filter)),k.filter_$externalFilters&&(d=d&&d.length?d.add(k.filter_$externalFilters):k.filter_$externalFilters),d&&d.length))for(f=e||[],b=0;b<h.columns+1;b++)a=d.filter('[data-column="'+(b===h.columns?"all":b)+'"]'),a.length&&(a=a.sort(function(a,b){return l(b).attr("data-lastSearchTime")-l(a).attr("data-lastSearchTime")}),l.isArray(e)?(g?a.slice(1):a).val(e[b]).trigger("change.tsfilter"):(f[b]=a.val()||"",a.slice(1).val(f[b])),b===h.columns&&a.length&& (k.filter_$anyMatch=a));0===f.length&&(f=!1);return f};
+c.setFilters=function(b,a,e,g){var d=b?l(b)[0].config:"";b=c.getFilters(b,!0,a,g);d&&e&&(d.lastCombinedFilter=null,d.$table.trigger("search",[a,!1]).trigger("filterFomatterUpdate"));return!!b};
+c.addWidget({id:"stickyHeaders",priority:60,options:{stickyHeaders:"",stickyHeaders_attachTo:null,stickyHeaders_offset:0,stickyHeaders_cloneId:"-sticky",stickyHeaders_addResizeEvent:!0,stickyHeaders_includeCaption:!0,stickyHeaders_zIndex:2},format:function(b, a,e){if(!(a.$table.hasClass("hasStickyHeaders")||0<=l.inArray("filter",a.widgets)&&!a.$table.hasClass("hasFilters"))){var g,d=a.$table,f=l(e.stickyHeaders_attachTo),h=d.children("thead:first"),k=f.length?f:l(window),q=h.children("tr").not(".sticky-false").children(),n="."+c.css.headerIn,p=d.find("tfoot"),m=isNaN(e.stickyHeaders_offset)?l(e.stickyHeaders_offset):"",v=f.length?0:m.length?m.height()||0:parseInt(e.stickyHeaders_offset,10)||0,s=e.$sticky=d.clone().addClass("containsStickyHeaders").css({position:f.length? "absolute":"fixed",margin:0,top:v,left:0,visibility:"hidden",zIndex:e.stickyHeaders_zIndex?e.stickyHeaders_zIndex:2}),u=s.children("thead:first").addClass(c.css.sticky+" "+e.stickyHeaders),w,x="",B=0,z="collapse"!==d.css("border-collapse")&&!/(webkit|msie)/i.test(navigator.userAgent),y=function(){v=m.length?m.height()||0:parseInt(e.stickyHeaders_offset,10)||0;B=0;z&&(B=2*parseInt(q.eq(0).css("border-left-width"),10));s.css({left:f.length?(parseInt(f.css("padding-left"),10)||0)+parseInt(a.$table.css("padding-left"), 10)+parseInt(a.$table.css("margin-left"),10)+parseInt(d.css("border-left-width"),10):h.offset().left-k.scrollLeft()-B,width:d.width()});w.filter(":visible").each(function(b){b=q.filter(":visible").eq(b);var c=z&&l(this).attr("data-column")===""+parseInt(a.columns/2,10)?1:0;l(this).css({width:b.width()-B,height:b.height()}).find(n).width(b.find(n).width()-c)})};s.attr("id")&&(s[0].id+=e.stickyHeaders_cloneId);s.find("thead:gt(0), tr.sticky-false, tbody, tfoot").hide();e.stickyHeaders_includeCaption? s.find("caption").css("margin-left","-1px"):s.find("caption").remove();w=u.children().children();s.css({height:0,width:0,padding:0,margin:0,border:0});w.find("."+c.css.resizer).remove();d.addClass("hasStickyHeaders").bind("sortEnd.tsSticky",function(){q.filter(":visible").each(function(b){g=w.filter(":visible").eq(b).attr("class",l(this).attr("class")).removeClass(c.css.processing+" "+a.cssProcessing);a.cssIcon&&g.find("."+c.css.icon).attr("class",l(this).find("."+c.css.icon).attr("class"))})}).bind("pagerComplete.tsSticky", function(){y()});c.bindEvents(b,u.children().children(".tablesorter-header"));d.after(s);k.bind("scroll.tsSticky resize.tsSticky",function(a){if(d.is(":visible")){var b=d.offset(),c=e.stickyHeaders_includeCaption?0:d.find("caption").outerHeight(!0),c=(f.length?f.offset().top:k.scrollTop())+v-c,g=d.height()-(s.height()+(p.height()||0)),b=c>b.top&&c<b.top+g?"visible":"hidden",c={visibility:b};f.length?c.top=f.scrollTop():c.left=h.offset().left-k.scrollLeft()-B;s.removeClass("tablesorter-sticky-visible tablesorter-sticky-hidden").addClass("tablesorter-sticky-"+ b).css(c);if(b!==x||"resize"===a.type)y(),x=b}});e.stickyHeaders_addResizeEvent&&c.addHeaderResizeEvent(b);d.hasClass("hasFilters")&&(d.bind("filterEnd",function(){var b=l(document.activeElement).closest("td"),b=b.parent().children().index(b);s.hasClass(c.css.stickyVis)&&(window.scrollTo(0,d.position().top),0<=b&&a.$filters.eq(b).find("a, select, input").filter(":visible").focus())}),c.filter.bindSearch(d,w.find("."+c.css.filter)));d.trigger("stickyHeadersInit")}},remove:function(b,a,e){a.$table.removeClass("hasStickyHeaders").unbind("sortEnd.tsSticky pagerComplete.tsSticky").find("."+ c.css.sticky).remove();e.$sticky&&e.$sticky.length&&e.$sticky.remove();l(".hasStickyHeaders").length||l(window).unbind("scroll.tsSticky resize.tsSticky");c.addHeaderResizeEvent(b,!1)}});
+c.addWidget({id:"resizable",priority:40,options:{resizable:!0,resizable_addLastColumn:!1},format:function(b,a,e){if(!a.$table.hasClass("hasResizable")){a.$table.addClass("hasResizable");var g,d,f,h,k={},q=a.$table,n=0,p=null,m=null,v=20>Math.abs(q.parent().width()-q.width()),s=function(){c.storage&&p&&m&&(k={},k[p.index()]= p.width(),k[m.index()]=m.width(),p.width(k[p.index()]),m.width(k[m.index()]),!1!==e.resizable&&c.storage(b,"tablesorter-resizable",k));n=0;p=m=null;l(window).trigger("resize")};if(k=c.storage&&!1!==e.resizable?c.storage(b,"tablesorter-resizable"):{})for(h in k)!isNaN(h)&&h<a.$headers.length&&a.$headers.eq(h).width(k[h]);g=q.children("thead:first").children("tr");g.children().each(function(){var b;b=l(this);h=b.attr("data-column");b="false"===c.getData(b,a.headers[h],"resizable");g.children().filter('[data-column="'+ h+'"]')[b?"addClass":"removeClass"]("resizable-false")});g.each(function(){f=l(this).children().not(".resizable-false");l(this).find("."+c.css.wrapper).length||f.wrapInner('<div class="'+c.css.wrapper+'" style="position:relative;height:100%;width:100%"></div>');e.resizable_addLastColumn||(f=f.slice(0,-1));d=d?d.add(f):f});d.each(function(){var a=l(this),b=parseInt(a.css("padding-right"),10)+10;a.find("."+c.css.wrapper).append('<div class="'+c.css.resizer+'" style="cursor:w-resize;position:absolute;z-index:1;right:-'+ b+'px;top:0;height:100%;width:20px;"></div>')}).bind("mousemove.tsresize",function(a){if(0!==n&&p){var b=a.pageX-n,c=p.width();p.width(c+b);p.width()!==c&&v&&m.width(m.width()-b);n=a.pageX}}).bind("mouseup.tsresize",function(){s()}).find("."+c.css.resizer+",."+c.css.grip).bind("mousedown",function(b){p=l(b.target).closest("th");var c=a.$headers.filter('[data-column="'+p.attr("data-column")+'"]');1<c.length&&(p=p.add(c));m=b.shiftKey?p.parent().find("th").not(".resizable-false").filter(":last"):p.nextAll(":not(.resizable-false)").eq(0); n=b.pageX});q.find("thead:first").bind("mouseup.tsresize mouseleave.tsresize",function(){s()}).bind("contextmenu.tsresize",function(){c.resizableReset(b);var a=l.isEmptyObject?l.isEmptyObject(k):!0;k={};return a})}},remove:function(b,a){a.$table.removeClass("hasResizable").children("thead").unbind("mouseup.tsresize mouseleave.tsresize contextmenu.tsresize").children("tr").children().unbind("mousemove.tsresize mouseup.tsresize").find("."+c.css.resizer+",."+c.css.grip).remove();c.resizableReset(b)}});
+c.resizableReset=function(b){l(b).each(function(){this.config.$headers.not(".resizable-false").css("width","");c.storage&&c.storage(this,"tablesorter-resizable",{})})};
+c.addWidget({id:"saveSort",priority:20,options:{saveSort:!0},init:function(b,a,c,g){a.format(b,c,g,!0)},format:function(b,a,e,g){var d,f=a.$table;e=!1!==e.saveSort;var h={sortList:a.sortList};a.debug&&(d=new Date);f.hasClass("hasSaveSort")?e&&b.hasInitialized&&c.storage&&(c.storage(b,"tablesorter-savesort",h),a.debug&&c.benchmark("saveSort widget: Saving last sort: "+ a.sortList,d)):(f.addClass("hasSaveSort"),h="",c.storage&&(h=(e=c.storage(b,"tablesorter-savesort"))&&e.hasOwnProperty("sortList")&&l.isArray(e.sortList)?e.sortList:"",a.debug&&c.benchmark('saveSort: Last sort loaded: "'+h+'"',d),f.bind("saveSortReset",function(a){a.stopPropagation();c.storage(b,"tablesorter-savesort","")})),g&&h&&0<h.length?a.sortList=h:b.hasInitialized&&h&&0<h.length&&f.trigger("sorton",[h]))},remove:function(b){c.storage&&c.storage(b,"tablesorter-savesort","")}})
+})(jQuery);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/spel/static/spel/lib/theme.bootstrap.css Mon Mar 10 18:26:42 2014 +0100
@@ -0,0 +1,139 @@
+/*************
+ Bootstrap theme
+ *************/
+/* jQuery Bootstrap Theme */
+.tablesorter-bootstrap {
+ width: 100%;
+}
+.tablesorter-bootstrap .tablesorter-header,
+.tablesorter-bootstrap tfoot th,
+.tablesorter-bootstrap tfoot td {
+ font: bold 14px/20px Arial, Sans-serif;
+ padding: 4px;
+ margin: 0 0 18px;
+ background-color: #eee;
+}
+
+.tablesorter-bootstrap .tablesorter-header {
+ cursor: pointer;
+}
+
+.tablesorter-bootstrap .tablesorter-header-inner {
+ position: relative;
+ padding: 4px 18px 4px 4px;
+}
+
+/* bootstrap uses <i> for icons */
+.tablesorter-bootstrap .tablesorter-header i {
+ font-size: 11px;
+ position: absolute;
+ right: 2px;
+ top: 50%;
+ margin-top: -7px; /* half the icon height; older IE doesn't like this */
+ width: 14px;
+ height: 14px;
+ background-repeat: no-repeat;
+ line-height: 14px;
+ display: inline-block;
+}
+.tablesorter-bootstrap .bootstrap-icon-unsorted {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWVJREFUeNqUUL9Lw2AUTGP8mqGlpBQkNeCSRcckEBcHq1jImMElToKuDvpHFMGhU0BQcHBwLji6CE1B4uB/INQsDi4d2jQ/fPeZxo764OV6915f7lLJ81xot9tCURXqdVEUr7IsO6ffH9Q5BlEUCaLwWxWqTcbYnaIoh0Dw4gAvcWlxq1qt9hqNxg6hUGAP+uIPUrGs0qXLer2+v/pTX6QpxLtkc2U2m53ACb8sSdIDXerSEms2m6+DweAICA4d89KGbduf9MpEVdXQ9/2LVqv1CASHjjn3iq/x1xKFfxQPqGnada1W86bT6SiO42OS3qk3KPStLMvbk8nkfjwen/LLuq6blFymMB0KdUPSGhAcOualjX6/f0bCiC7NaWGPQr0BwaFjzn0gYJqmLAiCA8/zni3LmhuGkQPBoWPOPwQeaPIqD4fDruu6L6Zp5kBw6IudchmdJAkLw3DXcZwnIPjy/FuAAQCiqqWWCAFKcwAAAABJRU5ErkJggg==);
+}
+
+/* since bootstrap (table-striped) uses nth-child(), we just use this to add a zebra stripe color */
+.tablesorter-bootstrap > tbody > tr.odd > td {
+ background-color: #f9f9f9;
+}
+.tablesorter-bootstrap > tbody > tr.odd:hover > td,
+.tablesorter-bootstrap > tbody > tr.even:hover > td {
+ background-color: #f5f5f5;
+}
+.tablesorter-bootstrap > tbody > tr.even > td {
+ background-color: #fff;
+}
+
+/* processing icon */
+.tablesorter-bootstrap .tablesorter-processing {
+ background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=');
+ background-position: center center !important;
+ background-repeat: no-repeat !important;
+ position: absolute;
+ z-index: 1000;
+}
+
+/* caption */
+.caption {
+ background: #fff;
+}
+
+/* filter widget */
+.tablesorter-bootstrap .tablesorter-filter-row .tablesorter-filter {
+ width: 98%;
+ height: auto;
+ margin: 0 auto;
+ padding: 4px 6px;
+ color: #333;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-transition: height 0.1s ease;
+ -moz-transition: height 0.1s ease;
+ -o-transition: height 0.1s ease;
+ transition: height 0.1s ease;
+}
+.tablesorter-bootstrap .tablesorter-filter-row .tablesorter-filter.disabled {
+ background-color: #eee;
+ color: #555;
+ cursor: not-allowed;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset;
+ box-sizing: border-box;
+ transition: height 0.1s ease;
+}
+.tablesorter-bootstrap .tablesorter-filter-row td {
+ background: #efefef;
+ line-height: normal;
+ text-align: center;
+ padding: 4px 6px;
+ vertical-align: middle;
+ -webkit-transition: line-height 0.1s ease;
+ -moz-transition: line-height 0.1s ease;
+ -o-transition: line-height 0.1s ease;
+ transition: line-height 0.1s ease;
+}
+/* hidden filter row */
+.tablesorter-bootstrap .tablesorter-filter-row.hideme td {
+ padding: 2px; /* change this to modify the thickness of the closed border row */
+ margin: 0;
+ line-height: 0;
+}
+.tablesorter-bootstrap .tablesorter-filter-row.hideme .tablesorter-filter {
+ height: 1px;
+ min-height: 0;
+ border: 0;
+ padding: 0;
+ margin: 0;
+ /* don't use visibility: hidden because it disables tabbing */
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+
+/* pager plugin */
+.tablesorter-bootstrap .tablesorter-pager select {
+ padding: 4px 6px;
+}
+.tablesorter-bootstrap .tablesorter-pager .pagedisplay {
+ border: 0;
+}
+/* tfoot i for pager controls */
+.tablesorter-bootstrap tfoot i {
+ font-size: 11px;
+}
+
+/* ajax error row */
+.tablesorter .tablesorter-errorRow td {
+ text-align: center;
+ cursor: pointer;
+ background-color: #e6bf99;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/spel/templates/partial/spel_annotations.html Mon Mar 10 18:26:42 2014 +0100
@@ -0,0 +1,16 @@
+{% load static %}
+{% load front_tags %}
+{% load spel_tags %}
+<p><span class="nb-annotations-found">{{ nb_annotations }}</span> annotation(s) trouvée(s) sur {{ nb_contents }} vidéo(s)</p>
+{% for res in results %}
+ {% for s in res.list %}
+<div class="searched-annot" data-type-inter="{{ s.tags|get_tags:'type_inter' }}">
+<p>{{ res.content.title }} / {{ s.start_ts|str_duration }} - {{ s.start_ts|add:s.duration|str_duration }} / {{ s.cutting_id }}</p>
+<p>{{ s.tags|get_tags:"modscen_and_perso" }}</p>
+<hr/>
+<p>{{ s.tags|get_tags:"ref_text_2" }}</p>
+<p>{{ s.abstract }}</p>
+<p>{{ s.tags|get_tags:"type_inter" }}</p>
+</div>
+ {% endfor %}
+{% endfor %}
--- a/src/spel/templates/partial/spel_chapters.html Mon Mar 10 12:28:22 2014 +0100
+++ b/src/spel/templates/partial/spel_chapters.html Mon Mar 10 18:26:42 2014 +0100
@@ -1,9 +1,12 @@
{% load static %}
{% load front_tags %}
{% load spel_tags %}
-<p>{{ segments|length }} segment(s) trouvés</p>
-<table class="table table-striped table-condensed">
- <tr><th>Type</th><th>Ref texte</th><th>début - fin</th><th> </th></tr>
+<p>{{ segments|length }} segment(s) trouvé(s)</p>
+<table class="table table-striped table-condensed tablesorter">
+ <thead>
+ <tr><th>Type</th><th>Ref texte</th><th>début - fin</th><th> </th></tr>
+ </thead>
+ <tbody>
{% for s in segments %}
<tr><td>{{ s.cutting_id }}</td><td>{{ s.tags|get_tags:"ref_text_2" }}</td><td>{{ s.start_ts|str_duration }} - {{ s.start_ts|add:s.duration|str_duration }}</td>
<td>
@@ -12,4 +15,5 @@
</td>
</tr>
{% endfor %}
+ <tbody>
</table>
--- a/src/spel/templates/spel_spectacle.html Mon Mar 10 12:28:22 2014 +0100
+++ b/src/spel/templates/spel_spectacle.html Mon Mar 10 18:26:42 2014 +0100
@@ -5,6 +5,7 @@
<link rel="stylesheet" href="{% static 'spel/lib/bootstrap/css/bootstrap.min.css' %}">
<link rel="stylesheet" href="{% static 'spel/lib/bootstrap-multiselect.css' %}">
<link rel="stylesheet" href="{% static 'spel/lib/datepicker3.css' %}">
+ <link rel="stylesheet" href="{% static 'spel/lib/theme.bootstrap.css' %}">
<link rel="stylesheet" href="{% static 'spel/css/spel.css' %}">
{% endblock %}
@@ -59,28 +60,34 @@
</div>
</div>
</form>
- <div class="col-md-8 col-md-offset-1">
- <select id="mulsel4" class="multiselect" multiple="multiple" data-title="Catégories d'annotations" disabled="disabled">
- </select>
- </div>
- <div class="col-md-3">
- <button id="btn-filter-annotations" class="btn btn-success" disabled="disabled">FILTRER</button>
- </div>
+ <div class="row">
+ <div class="col-md-8 col-md-offset-1">
+ <select id="mulsel4" class="multiselect" multiple="multiple" data-title="Catégories d'annotations" disabled="disabled">
+ </select>
+ </div>
+ <div class="col-md-3">
+ <button id="btn-filter-annotations" class="btn btn-success">FILTRER</button>
+ </div>
+ </div>
+ <div class="annotation-results"></div>
</div>
</div>
{% endblock %}
{% block page_js %}
<script type="text/javascript" src="{% static 'spel/lib/jquery-2.1.0.min.js' %}"></script>
+ <script type="text/javascript" src="{% static 'spel/lib/jquery.tablesorter.min.js' %}"></script>
+ <script type="text/javascript" src="{% static 'spel/lib/jquery.tablesorter.widgets.min.js' %}"></script>
<script type="text/javascript" src="{% static 'spel/lib/bootstrap/js/bootstrap.min.js' %}"></script>
<script type="text/javascript" src="{% static 'spel/lib/bootstrap-multiselect.js' %}"></script>
<script type="text/javascript" src="{% static 'spel/lib/bootstrap-datepicker.js' %}"></script>
<script type="text/javascript" src="{% static 'spel/lib/locales/bootstrap-datepicker.fr.js' %}"></script>
<script type="text/javascript" src="{% static 'spel/js/spectacle.js' %}"></script>
<script type="text/javascript">
- var urlMS = "http://localhost/spel/spel/api/ldt/1.0/tags/?format=json&limit=500&name__startswith=modalites_sceniques:";
- var urlP = "http://localhost/spel/spel/api/ldt/1.0/tags/?format=json&limit=500&name__startswith=personnages:";
- var urlTI = "http://localhost/spel/spel/api/ldt/1.0/tags/?format=json&limit=500&name__startswith=type_inter:";
+ var urlMS = "{% url 'api_dispatch_list' resource_name='tags' api_name='1.0' %}?format=json&limit=500&name__startswith=modalites_sceniques:";
+ var urlP = "{% url 'api_dispatch_list' resource_name='tags' api_name='1.0' %}?format=json&limit=500&name__startswith=personnages:";
+ var urlTI = "{% url 'api_dispatch_list' resource_name='tags' api_name='1.0' %}?format=json&limit=500&name__startswith=type_inter:";
var urlChapters = "{% url 'spel_chapters' %}";
+ var urlAnnotations = "{% url 'spel_annotations' %}";
$('.input-daterange').datepicker({
format: "yyyy-mm-dd",
language: "fr",
--- a/src/spel/templatetags/spel_tags.py Mon Mar 10 12:28:22 2014 +0100
+++ b/src/spel/templatetags/spel_tags.py Mon Mar 10 18:26:42 2014 +0100
@@ -18,18 +18,47 @@
val = []
if arg is None :
for t in a:
+ try:
+ t.index(":")
+ except:
+ continue
val.append(t[t.index(":")+2:])
elif arg=="ref_text_2":
for t in a:
+ try:
+ t.index(":")
+ except:
+ continue
if t[:t.index(":")]=="ref_text":
tag_split = t.split(":")
if len(tag_split)>2:
val.append( ":".join(tag_split[2:]) )
else:
val.append(t[t.index(":")+2:])
+ elif arg=="modscen_and_perso":
+ for t in a:
+ try:
+ t.index(":")
+ except:
+ continue
+ if t[:t.index(":")]=="modalites_sceniques" or t[:t.index(":")]=="personnages":
+ val.append(t[t.index(":")+2:])
+ elif arg in ["type_inter", "personnages"]:
+ for t in a:
+ try:
+ t.index(":")
+ except:
+ continue
+ if t[:t.index(":")]==arg:
+ tag_split = t.split(":")
+ val.append(t[t.index(":")+2:])
elif arg=="group":
key_vals = {}
for t in a:
+ try:
+ t.index(":")
+ except:
+ continue
k = t[:t.index(":")]
v = t[t.index(":")+2:]
if k not in key_vals:
--- a/src/spel/urls.py Mon Mar 10 12:28:22 2014 +0100
+++ b/src/spel/urls.py Mon Mar 10 18:26:42 2014 +0100
@@ -6,7 +6,7 @@
from django.views.generic import RedirectView, TemplateView
from ldt.auth.views import login as pf_login
from ldt.text import VERSION_STR
-from .views import ChapterRequest, Spectacle
+from .views import AnnotationRequest, ChapterRequest, Spectacle
#from django.conf import settings
@@ -46,6 +46,7 @@
url(r'^$', TemplateView.as_view(template_name="spel_home.html"), name='spel_home'),
url(r'^spectacle$', Spectacle.as_view(), name='spel_spectacle'),
url(r'^chapters$', ChapterRequest.as_view(), name='spel_chapters'),
+ url(r'^annotations', AnnotationRequest.as_view(), name='spel_annotations'),
)
urlpatterns += staticfiles_urlpatterns()
--- a/src/spel/views.py Mon Mar 10 12:28:22 2014 +0100
+++ b/src/spel/views.py Mon Mar 10 18:26:42 2014 +0100
@@ -11,6 +11,7 @@
import logging
+from ldt.ldt_utils.views.workspace import get_search_results
logger = logging.getLogger(__name__)
@@ -85,4 +86,29 @@
return self.render_to_response(context)
+
+
+class AnnotationRequest(TemplateView):
+
+ template_name = "partial/spel_annotations.html"
+
+ 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)
+
+ context = {"results": results.object_list, "nb_contents": nb, "nb_annotations": nb_segment}
+
+ return self.render_to_response(context)
+
+
+
+
+
+
+
+
+
\ No newline at end of file