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 <[email protected]>
Gerrit-Reviewer: Cdentinger <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits