fix: value handling and helper recomputation

This commit is contained in:
Randall Morey committed 2021-11-10 10:38:16 -05:00
1 parent dca54b2040
commit f21627a9ba
3 files changed
+10 -14

No files matched your search

@@ -10,7 +10,7 @@ import { inject as service } from '@ember/service';
* type: 'oidc',
* status: ['active', 'pending']
* });
* console.log(filter.queryExpression);
* log(filter.queryExpression);
* // ("/item/type" == "oidc") and ("/item/status" == "active" or "/item/status" == "pending")
*/
export class ResourceFilter {
@@ -27,7 +27,7 @@
* // via a route transition.
* this.status = status;
* // Log the value of query param `filter-status`.
* console.log(this.status);
* log(this.status);
* }
* }
*
@@ -64,8 +64,10 @@ export function resourceFilterParam(allowedValues, defaultValue) {
* Returns the JSON-parsed query parameter value OR defaultValue.
*/
get() {
const value = this._router.currentRoute.queryParams[filterKey];
return value ? JSON.parse(value) : defaultValue || null;
const value =
this._router.currentRoute.queryParams[filterKey] ||
JSON.stringify(defaultValue);
return value ? JSON.parse(value) : null;
},
/**
@@ -29,14 +29,14 @@ export default class ResourceFilterParamHelper extends Helper {
*/
constructor() {
super(...arguments);
this.router.on('routeWillChange', this.routeWillChange);
this.router.on('routeDidChange', this.routeDidChange);
}
/**
* Stop listening to route events when this helper is destroyed.
*/
willDestroy() {
this.router.off('routeWillChange', this.routeWillChange);
this.router.off('routeDidChange', this.routeDidChange);
super.willDestroy();
}
@@ -56,13 +56,7 @@ export default class ResourceFilterParamHelper extends Helper {
const allowedValues = route[filterAllowedValuesKey];
// Selected filters
const rawValue = route[name];
let value = rawValue;
try {
value = JSON.parse(rawValue);
} catch (e) {
/* ignore parse errors */
}
const selectedValue = rawValue ? value : null;
const selectedValue = rawValue || null;
return { name, allowedValues, selectedValue };
}
@@ -73,7 +67,7 @@ export default class ResourceFilterParamHelper extends Helper {
* route query params change.
*/
@action
routeWillChange() {
routeDidChange() {
this.recompute();
}
}