# HG changeset patch # User Sylvain Thénault # Date 1309526605 -7200 # Node ID fbda46a4944fedb5674c301c020a96822a4d00fc # Parent 9030e8a4481e05a70cd9d9683d37e28cdc7955b7 [facets js] better cubicweb:facetargs handling and avoid initializing a same form twice (that may occurs) diff -r 9030e8a4481e -r fbda46a4944f web/data/cubicweb.facets.js --- a/web/data/cubicweb.facets.js Fri Jul 01 15:22:43 2011 +0200 +++ b/web/data/cubicweb.facets.js Fri Jul 01 15:23:25 2011 +0200 @@ -133,11 +133,20 @@ // may changes and we must send its value when the callback is // called, not when the page is initialized var facetargs = form.attr('cubicweb:facetargs'); - if (facetargs !== undefined) { + if (facetargs != undefined && !form.attr('cubicweb:initialized')) { + form.attr('cubicweb:initialized', '1'); + var jsfacetargs = cw.evalJSON(form.attr('cubicweb:facetargs')); form.submit(function() { - buildRQL.apply(null, cw.evalJSON(form.attr('cubicweb:facetargs'))); + buildRQL.apply(null, jsfacetargs); return false; }); + var divid = jsfacetargs[0]; + if (jQuery('#'+divid).length) { + var $loadingDiv = $(DIV({id:'facetLoading'}, + facetLoadingMsg)); + $loadingDiv.corner(); + $(jQuery('#'+divid).get(0).parentNode).append($loadingDiv); + } form.find('div.facet').each(function() { var facet = jQuery(this); facet.find('div.facetCheckBox').each(function(i) { @@ -188,7 +197,7 @@ var $img = jQuery(this).find('img'); $img.attr('src', SELECTED_IMG).attr('alt', (_('selected'))); } - buildRQL.apply(null, cw.evalJSON(form.attr('cubicweb:facetargs'))); + buildRQL.apply(null, jsfacetargs); facet.find('.facetBody').animate({ scrollTop: 0 }, @@ -197,7 +206,7 @@ facet.find('select.facetOperator').change(function() { var nbselected = facet.find('div.facetValueSelected').length; if (nbselected >= 2) { - buildRQL.apply(null, cw.evalJSON(form.attr('cubicweb:facetargs'))); + buildRQL.apply(null, jsfacetargs); } }); facet.find('div.facetTitle').click(function() {