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