Cdentinger has submitted this change and it was merged.

Change subject: Add numeric filters
......................................................................


Add numeric filters

Bug: T120678
Change-Id: I90ccc9e76778c8212cd44a730fc111f44f8f6265
---
M src/app/startup.js
M src/components/filters/filters.js
A src/components/filters/number-filter/number-filter.html
A src/components/filters/number-filter/number-filter.js
M src/components/filters/operators.js
5 files changed, 63 insertions(+), 1 deletion(-)

Approvals:
  Cdentinger: Verified; Looks good to me, approved



diff --git a/src/app/startup.js b/src/app/startup.js
index 0e2998e..775e4bd 100644
--- a/src/app/startup.js
+++ b/src/app/startup.js
@@ -15,10 +15,11 @@
                        ko.components.register( 'date-pickers',               { 
require: 'components/utils/date-pickers/date-pickers' });
 
                        //register boards
-                       ko.components.register( 'generic-board',               
{ require: 'components/boards/generic-board/generic-board' });
+                       ko.components.register( 'generic-board',              { 
require: 'components/boards/generic-board/generic-board' });
                        //register filters
                        ko.components.register( 'filters',                    { 
require: 'components/filters/filters' });
                        ko.components.register( 'dropdown-filter',            { 
require: 'components/filters/dropdown-filter/dropdown-filter' });
+                       ko.components.register( 'number-filter',              { 
require: 'components/filters/number-filter/number-filter' });
                        ko.components.register( 'text-filter',                { 
require: 'components/filters/text-filter/text-filter' });
 
                        //register individual widgets
diff --git a/src/components/filters/filters.js 
b/src/components/filters/filters.js
index cab0a71..8b0fe64 100644
--- a/src/components/filters/filters.js
+++ b/src/components/filters/filters.js
@@ -43,6 +43,7 @@
                                                filter.userChoices = 
ko.observableArray( params.userChoices()[name] || [] );
                                                break;
                                        case 'text':
+                                       case 'number':
                                                filter.userChoices = 
ko.observable( params.userChoices()[name] || {} );
                                                break;
                                        default:
diff --git a/src/components/filters/number-filter/number-filter.html 
b/src/components/filters/number-filter/number-filter.html
new file mode 100644
index 0000000..e029fb3
--- /dev/null
+++ b/src/components/filters/number-filter/number-filter.html
@@ -0,0 +1,2 @@
+<select data-bind="options:operators, value: selectedOperator, optionsText: 
'text', optionsValue: 'value'"></select>
+<input type="number" data-bind="value:value, attr: { min: min, max: max }" />
diff --git a/src/components/filters/number-filter/number-filter.js 
b/src/components/filters/number-filter/number-filter.js
new file mode 100644
index 0000000..61e132a
--- /dev/null
+++ b/src/components/filters/number-filter/number-filter.js
@@ -0,0 +1,48 @@
+define( [
+       'knockout',
+       'text!components/filters/number-filter/number-filter.html',
+       'operators'
+       ],
+function( ko, template, ops ){
+
+       function NumberFilterViewModel( params ){
+               var self = this;
+
+               this.operators = [
+                       ops.eq,
+                       ops.gt,
+                       ops.lt,
+                       ops.ge,
+                       ops.le
+               ];
+               this.selectedOperator = ko.observable( 
params.userChoices().operator || 'eq' );
+               this.value = ko.observable( params.userChoices().value || '' );
+               this.min = params.metadata.min;
+               this.max = params.metadata.max;
+
+               this.changed = function() {
+                       var value = self.value();
+
+                       params.userChoices( {
+                               operator: self.selectedOperator(),
+                               value: value
+                       } );
+
+                       if ( value === '' ) {
+                               params.queryString( '' );
+                               return;
+                       }
+
+                       params.queryString(
+                                       params.name + ' ' + 
self.selectedOperator() + ' \'' + value + '\''
+                       );
+                       return;
+               };
+
+               this.selectedOperator.subscribe( this.changed );
+               this.value.subscribe( this.changed );
+               this.changed();
+       }
+
+       return { viewModel: NumberFilterViewModel, template: template };
+} );
diff --git a/src/components/filters/operators.js 
b/src/components/filters/operators.js
index a3ba22e..68e2e84 100644
--- a/src/components/filters/operators.js
+++ b/src/components/filters/operators.js
@@ -1,9 +1,19 @@
 define({
+       ge: {
+               value: 'ge',
+               text: 'At least',
+               abbr: '\u2265'
+       },
        gt: {
                value: 'gt',
                text: 'Greater than',
                abbr: '>'
        },
+       le: {
+               value: 'le',
+               text: 'At most',
+               abbr: '\u2264'
+       },
        lt: {
                value: 'lt',
                text: 'Less than',

-- 
To view, visit https://gerrit.wikimedia.org/r/257203
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I90ccc9e76778c8212cd44a730fc111f44f8f6265
Gerrit-PatchSet: 6
Gerrit-Project: wikimedia/fundraising/dash
Gerrit-Branch: master
Gerrit-Owner: Ejegg <eeggles...@wikimedia.org>
Gerrit-Reviewer: Cdentinger <cdentin...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to