fix: value handling and helper recomputation
This commit is contained in:
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();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user