diff --git a/modules/system/assets/ui/storm-min.js b/modules/system/assets/ui/storm-min.js index 7f847b32f..2be4a559d 100644 --- a/modules/system/assets/ui/storm-min.js +++ b/modules/system/assets/ui/storm-min.js @@ -2982,41 +2982,49 @@ this.activeScopeName=null this.isActiveScopeDirty=false this.init()} FilterWidget.DEFAULTS={optionsHandler:null,updateHandler:null} -FilterWidget.prototype.getPopoverTemplate=function(){return' \ -
\ - \ -
\ - \ -
\ -
    \ - {{#available}} \ -
  • {{name}}
  • \ - {{/available}} \ - {{#loading}} \ -
  • \ - {{/loading}} \ -
\ -
\ -
\ -
    \ - {{#active}} \ -
  • {{name}}
  • \ - {{/active}} \ -
\ -
\ -
\ -
\ +FilterWidget.prototype.getPopoverTemplate=function(){return' \ +
\ + \ +
\ + \ +
\ +
\ '} FilterWidget.prototype.init=function(){var self=this this.$el.on('change','.filter-scope input[type="checkbox"]',function(){var $scope=$(this).closest('.filter-scope') @@ -3038,7 +3046,11 @@ self.$activeScope=null setTimeout(function(){$scope.removeClass('filter-scope-open')},200)}) $(document).on('click','#controlFilterPopover .filter-items > ul > li',function(){self.selectItem($(this))}) $(document).on('click','#controlFilterPopover .filter-active-items > ul > li',function(){self.selectItem($(this),true)}) -$(document).on('ajaxDone','#controlFilterPopover input.filter-search-input',function(event,context,data){self.filterAvailable(data.scopeName,data.options.available)})} +$(document).on('ajaxDone','#controlFilterPopover input.filter-search-input',function(event,context,data){self.filterAvailable(data.scopeName,data.options.available)}) +$(document).on('click','#controlFilterPopover [data-trigger="apply"]',function(e){e.preventDefault() +self.filterScope()}) +$(document).on('click','#controlFilterPopover [data-trigger="clear"]',function(e){e.preventDefault() +self.filterScope(true)})} FilterWidget.prototype.focusSearch=function(){if(Modernizr.touch) return var $input=$('#controlFilterPopover input.filter-search-input'),length=$input.val().length @@ -3061,22 +3073,26 @@ else this.scopeValues[this.activeScopeName].available=filtered if(item) toItems.push(item) +this.toggleFilterButtons(items) this.updateScopeSetting(this.$activeScope,items.active.length) this.isActiveScopeDirty=true this.focusSearch()} FilterWidget.prototype.displayPopover=function($scope){var self=this,scopeName=$scope.data('scope-name'),data=this.scopeValues[scopeName],isLoaded=true if(!data){data={loading:true} isLoaded=false} +data=$.extend({},data,{apply_button_text:this.getLang('filter.scopes.apply_button_text','Apply'),clear_button_text:this.getLang('filter.scopes.clear_button_text','Clear')}) data.scopeName=scopeName data.optionsHandler=self.options.optionsHandler $scope.data('oc.popover',null) $scope.ocPopover({content:Mustache.render(self.getPopoverTemplate(),data),modal:false,highlightModalTarget:true,closeOnPageClick:true,placement:'bottom'}) +this.toggleFilterButtons() if(!isLoaded){self.loadOptions(scopeName)}} FilterWidget.prototype.loadOptions=function(scopeName){var $form=this.$el.closest('form'),self=this,data={scopeName:scopeName} var populated=this.$el.data('filterScopes') if(populated&&populated[scopeName]){self.fillOptions(scopeName,populated[scopeName]) return false} -return $form.request(this.options.optionsHandler,{data:data,success:function(data){self.fillOptions(scopeName,data.options)}})} +return $form.request(this.options.optionsHandler,{data:data,success:function(data){self.fillOptions(scopeName,data.options) +self.toggleFilterButtons()}})} FilterWidget.prototype.fillOptions=function(scopeName,data){if(this.scopeValues[scopeName]) return if(!data.active)data.active=[] @@ -3102,6 +3118,9 @@ var container=$('#controlFilterPopover .filter-items > ul').empty() self.addItemsToListElement(container,filtered)} FilterWidget.prototype.addItemsToListElement=function($ul,items){$.each(items,function(key,obj){var item=$('
  • ').data({'item-id':obj.id}).append($('').prop({'href':'javascript:;',}).text(obj.name)) $ul.append(item)})} +FilterWidget.prototype.toggleFilterButtons=function(data) +{var items=$('#controlFilterPopover .filter-active-items > ul'),buttonContainer=$('#controlFilterPopover .filter-buttons') +if(data){data.active.length>0?buttonContainer.show():buttonContainer.hide()}else{items.children().length>0?buttonContainer.show():buttonContainer.hide()}} FilterWidget.prototype.pushOptions=function(scopeName){if(!this.isActiveScopeDirty||!this.options.updateHandler) return var $form=this.$el.closest('form'),data={scopeName:scopeName,options:this.scopeValues[scopeName]} @@ -3119,6 +3138,10 @@ if(this.options.updateHandler){var $form=this.$el.closest('form'),data={scopeNam $.oc.stripeLoadIndicator.show() $form.request(this.options.updateHandler,{data:data}).always(function(){$.oc.stripeLoadIndicator.hide()})} $scope.toggleClass('active',!!switchValue)} +FilterWidget.prototype.filterScope=function(isReset){var scopeName=this.$activeScope.data('scope-name') +if(isReset){this.scopeValues[scopeName]=null +this.updateScopeSetting(this.$activeScope,0)} +this.pushOptions(scopeName);this.isActiveScopeDirty=true;this.$activeScope.data('oc.popover').hide()} FilterWidget.prototype.getLang=function(name,defaultValue){if($.oc===undefined||$.oc.lang===undefined){return defaultValue} return $.oc.lang.get(name,defaultValue)} var old=$.fn.filterWidget @@ -3153,16 +3176,16 @@ self.isActiveScopeDirty=false if($scope.hasClass('range')){self.displayPopoverRange($scope)} else{self.displayPopoverDate($scope)} $scope.addClass('filter-scope-open')}) -$(document).on('click','#controlFilterPopover [data-trigger="filter"]',function(e){e.preventDefault() +$(document).on('click','#controlFilterPopoverDate [data-trigger="filter"]',function(e){e.preventDefault() e.stopPropagation() self.filterByDate()}) -$(document).on('click','#controlFilterPopover [data-trigger="clear"]',function(e){e.preventDefault() +$(document).on('click','#controlFilterPopoverDate [data-trigger="clear"]',function(e){e.preventDefault() e.stopPropagation() self.filterByDate(true)})} FilterWidget.prototype.getPopoverDateTemplate=function(){return' \
    \ \ -
    \ +
    \