Browse Source

fix: view filter handle bool, number & date

gh-pages
Michael Shanks 6 years ago
parent
commit
27015ebd17
  1. 17
      packages/builder/src/components/database/DataTable/popovers/Filter.svelte
  2. 5
      packages/server/src/api/controllers/view/viewBuilder.js

17
packages/builder/src/components/database/DataTable/popovers/Filter.svelte

@ -81,11 +81,18 @@
function isMultipleChoice(field) {
return (
viewModel.schema[field].constraints &&
viewModel.schema[field].constraints.inclusion &&
viewModel.schema[field].constraints.inclusion.length
(viewModel.schema[field].constraints &&
viewModel.schema[field].constraints.inclusion &&
viewModel.schema[field].constraints.inclusion.length) ||
viewModel.schema[field].type === "boolean"
)
}
function fieldOptions(field) {
return viewModel.schema[field].type === "string"
? viewModel.schema[field].constraints.inclusion
: [true, false]
}
</script>
<div bind:this={anchor}>
@ -126,8 +133,8 @@
</Select>
{#if filter.key && isMultipleChoice(filter.key)}
<Select secondary thin bind:value={filter.value}>
{#each viewModel.schema[filter.key].constraints.inclusion as option}
<option value={option}>{option}</option>
{#each fieldOptions(filter.key) as option}
<option value={option}>{option.toString()}</option>
{/each}
</Select>
{:else}

5
packages/server/src/api/controllers/view/viewBuilder.js

@ -61,8 +61,11 @@ function parseFilterExpression(filters) {
`doc["${filter.key}"].${TOKEN_MAP[filter.condition]}("${filter.value}")`
)
} else {
const value =
typeof filter.value == "string" ? `"${filter.value}"` : filter.value
expression.push(
`doc["${filter.key}"] ${TOKEN_MAP[filter.condition]} "${filter.value}"`
`doc["${filter.key}"] ${TOKEN_MAP[filter.condition]} ${value}`
)
}
}

Loading…
Cancel
Save