https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114410

Revision: 114410
Author:   foxtrott
Date:     2012-03-21 21:37:23 +0000 (Wed, 21 Mar 2012)
Log Message:
-----------
filtered format: printout parameter 'value filter values'

Modified Paths:
--------------
    trunk/extensions/SemanticResultFormats/Filtered/filters/SRF_FF_Value.php
    
trunk/extensions/SemanticResultFormats/Filtered/libs/ext.srf.filtered.value-filter.js

Modified: 
trunk/extensions/SemanticResultFormats/Filtered/filters/SRF_FF_Value.php
===================================================================
--- trunk/extensions/SemanticResultFormats/Filtered/filters/SRF_FF_Value.php    
2012-03-21 21:36:05 UTC (rev 114409)
+++ trunk/extensions/SemanticResultFormats/Filtered/filters/SRF_FF_Value.php    
2012-03-21 21:37:23 UTC (rev 114410)
@@ -37,21 +37,25 @@
                
                $ret = array();
 
-               if (  array_key_exists( 'value filter switches', $params ) ) {
+               if ( array_key_exists( 'value filter switches', $params ) ) {
                        $switches = explode( ',', $params['value filter 
switches'] );
                        $switches = array_map( 'trim', $switches );
 
                        $ret['switches'] = $switches;
                }
 
-               if (  array_key_exists( 'value filter collapsible', $params ) ) 
{
+               if ( array_key_exists( 'value filter collapsible', $params ) ) {
                        $ret['collapsible'] = trim($params['value filter 
collapsible']);
                }
 
-               if (  array_key_exists( 'value filter height', $params ) ) {
+               if ( array_key_exists( 'value filter height', $params ) ) {
                        $ret['height'] = trim($params['value filter height']);
                }
 
+               if ( array_key_exists( 'value filter values', $params ) ) {
+                       $ret['values'] = trim($params['value filter values']);
+               }
+
                return $ret;
        }
 

Modified: 
trunk/extensions/SemanticResultFormats/Filtered/libs/ext.srf.filtered.value-filter.js
===================================================================
--- 
trunk/extensions/SemanticResultFormats/Filtered/libs/ext.srf.filtered.value-filter.js
       2012-03-21 21:36:05 UTC (rev 114409)
+++ 
trunk/extensions/SemanticResultFormats/Filtered/libs/ext.srf.filtered.value-filter.js
       2012-03-21 21:37:23 UTC (rev 114410)
@@ -21,20 +21,20 @@
 
                                // show all if no value is checked
                                if ( selectedInputs.length == 0 ) {
-                                       for ( i in values ) {
+                                       for ( valueId in values ) {
                                                filtered.filtered( 
'voteItemVisibilityAndUpdate', {
                                                        'filter': 'value', 
                                                        'printout' : target, 
                                                        'visible': true,
-                                                       'item': i
+                                                       'item': valueId
                                                });
                                        }
 
                                } else {
 
-                                       for ( i in values ) {
+                                       for ( valueId in values ) {
 
-                                               var printoutValues = 
values[i]['printouts'][target]['values'];
+                                               var printoutValues = 
values[valueId]['printouts'][target]['values'];
                                                var useOr = filtered.filtered( 
'getFilterData', {filter: 'value', printout: target, configvar: 'use or'} );
 
                                                if ( useOr ) {
@@ -70,7 +70,7 @@
                                                        'filter': 'value', 
                                                        'printout' : target, 
                                                        'visible': selected,
-                                                       'item': i
+                                                       'item': valueId
                                                });
 
                                        }
@@ -85,32 +85,50 @@
                        var switches = filtered.filtered( 'getFilterData', 
{filter: 'value', printout: target, configvar: 'switches'} );
                        var collapsible = filtered.filtered( 'getFilterData', 
{filter: 'value', printout: target, configvar: 'collapsible'} );
                        var height = filtered.filtered( 'getFilterData', 
{filter: 'value', printout: target, configvar: 'height'} );
+                       var fixedValues = filtered.filtered( 'getFilterData', 
{filter: 'value', printout: target, configvar: 'values'} );
                        
-                       // find distinct values and set visibility for all 
items that have
-                       // some value for this printout
-                       var distinctValues = [];
-                       
-                       var i;
-                       for ( i in values ) {
-                               var printoutValues = 
values[i]['printouts'][target]['values'];
+                       var valueId; // just some valid value ID
+                       if ( fixedValues == null ) {
+                               // build filter values from available values in 
result set
                                
-                               for (var j in printoutValues) {
-                                       distinctValues[ printoutValues[j] ] = 
true;
+                               // find distinct values and set visibility for 
all items that have
+                               // some value for this printout
+                               var distinctValues = [];
+
+                               for ( valueId in values ) {
+                                       var printoutValues = 
values[valueId]['printouts'][target]['values'];
+
+                                       for (var j in printoutValues) {
+                                               distinctValues[ 
printoutValues[j] ] = true;
+                                       }
+
+                                       filtered.filtered( 
'voteItemVisibility', {
+                                               'filter': 'value', 
+                                               'printout' : target, 
+                                               'visible': true,
+                                               'item': valueId
+                                       });
                                }
 
-                               filtered.filtered( 'voteItemVisibility', {
-                                       'filter': 'value', 
-                                       'printout' : target, 
-                                       'visible': true,
-                                       'item': i
-                               });
+                               var sortedDistinctValues = [];
+
+                               for ( var i in distinctValues ) {
+                                       sortedDistinctValues.push(i);
+                               }
+
+                               sortedDistinctValues.sort();
+                       } else {
+                               // use given values
+                               sortedDistinctValues = 
fixedValues.split(/\s*,\s*/);
+                               
+                               for ( valueId in values ) break; // get some 
valid value ID
                        }
                        
                        // build filter controls
                        var filtercontrols = 
this.children('.filtered-filters').children('.' + 
target).filter('.filtered-value');
                        
                        // insert the label of the printout this filter filters 
on
-                       filtercontrols.append('<div 
class="filtered-value-label"><span>' + values[i]['printouts'][target]['label'] 
+ '</span></div>');
+                       filtercontrols.append('<div 
class="filtered-value-label"><span>' + 
values[valueId]['printouts'][target]['label'] + '</span></div>');
 
                        if ( collapsible != null && ( collapsible == 
'collapsed' || collapsible == 'uncollapsed') ) {
                                
@@ -192,14 +210,6 @@
                        }
                        
                        
-                       var sortedDistinctValues = [];
-                       
-                       for ( var i in distinctValues ) {
-                               sortedDistinctValues.push(i);
-                       }
-                       
-                       sortedDistinctValues.sort();
-                       
                        // insert options (checkboxes and labels) and attach 
event handlers
                        // TODO: Do we need to wrap these in a form?
                        for ( var j in sortedDistinctValues ) {


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to