Tweak the filter tokenizer
This commit is contained in:
@@ -52,7 +52,7 @@ export class OrderByParser {
|
|||||||
const openGroupRegex = /\(/
|
const openGroupRegex = /\(/
|
||||||
const closeGroupRegex = /\)/
|
const closeGroupRegex = /\)/
|
||||||
const conjunctinoRegex = /AND|OR/
|
const conjunctinoRegex = /AND|OR/
|
||||||
const equalityRegex = /([a-zA-Z]+)\s?(=|!=|<|>|<=|>=|:)\s?([a-zA-Z'"\d]+)/
|
const equalityRegex = /([a-zA-Z]+)\s?(=|!=|<|>|<=|>=|:)\s?([\d]+)/
|
||||||
const stringEqualityRegex = /([a-zA-Z]+)\s?(=|!=|<|>|<=|>=|:)\s?\"([a-zA-Z'"\d\s]*)\"/
|
const stringEqualityRegex = /([a-zA-Z]+)\s?(=|!=|<|>|<=|>=|:)\s?\"([a-zA-Z'"\d\s]*)\"/
|
||||||
const spacerRegex = /\s/
|
const spacerRegex = /\s/
|
||||||
|
|
||||||
@@ -86,17 +86,18 @@ export class FilterParser {
|
|||||||
ctx.accept('conjunction', m[0])
|
ctx.accept('conjunction', m[0])
|
||||||
})
|
})
|
||||||
|
|
||||||
|
this.lexer.rule(stringEqualityRegex, (ctx, m) => {
|
||||||
|
ctx.accept('column', m[1])
|
||||||
|
ctx.accept('opperator', m[2])
|
||||||
|
ctx.accept('value', m[3])
|
||||||
|
})
|
||||||
|
|
||||||
this.lexer.rule(equalityRegex, (ctx, m) => {
|
this.lexer.rule(equalityRegex, (ctx, m) => {
|
||||||
ctx.accept('column', m[1])
|
ctx.accept('column', m[1])
|
||||||
ctx.accept('opperator', m[2])
|
ctx.accept('opperator', m[2])
|
||||||
ctx.accept('value', m[3])
|
ctx.accept('value', m[3])
|
||||||
})
|
})
|
||||||
|
|
||||||
this.lexer.rule(stringEqualityRegex, (ctx, m) => {
|
|
||||||
ctx.accept('column', m[1])
|
|
||||||
ctx.accept('opperator', m[2])
|
|
||||||
ctx.accept('value', m[3])
|
|
||||||
})
|
|
||||||
|
|
||||||
this.lexer.rule(spacerRegex, (ctx, m) => {
|
this.lexer.rule(spacerRegex, (ctx, m) => {
|
||||||
ctx.ignore()
|
ctx.ignore()
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
<a v-bind:href="`/#/characters/${item.id}`">{{ item.id }}</a>
|
<a v-bind:href="`/#/characters/${item.id}`">{{ item.id }}</a>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:item.characterName="{ item }">
|
<template v-slot:item.characterName="{ item }">
|
||||||
<a v-bind:href="`/#/characters/${item.characterName}`">{{ item.characterName }}</a>
|
<a v-bind:href="`/#/characters/${item.id}`">{{ item.characterName }}</a>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:item.creationDate="{ item }">
|
<template v-slot:item.creationDate="{ item }">
|
||||||
{{ new Date(item.creationDate * 1000).toISOString().split('T')[0] }}
|
{{ new Date(item.creationDate * 1000).toISOString().split('T')[0] }}
|
||||||
@@ -73,7 +73,7 @@ async function loadData({ page, itemsPerPage, sortBy }) {
|
|||||||
page: `${page - 1}`,
|
page: `${page - 1}`,
|
||||||
count: `${itemsPerPage}`,
|
count: `${itemsPerPage}`,
|
||||||
orderBy: sortString,
|
orderBy: sortString,
|
||||||
filter: filtervalue.value ? `characterName:${filtervalue.value}` : ''
|
filter: filtervalue.value ? `characterName:"${filtervalue.value}"` : ''
|
||||||
})
|
})
|
||||||
|
|
||||||
characters.value = response.data.characterData
|
characters.value = response.data.characterData
|
||||||
@@ -102,6 +102,7 @@ watch(filtervalue, (newFilter: string, oldFilter: string) => {
|
|||||||
debounce = setTimeout(() => {
|
debounce = setTimeout(() => {
|
||||||
router.replace({ query: { page: route.query.page, filter: newFilter } })
|
router.replace({ query: { page: route.query.page, filter: newFilter } })
|
||||||
}, 500)
|
}, 500)
|
||||||
|
loadData({page: page.value, itemsPerPage: resultePerPage.value, sortBy:[]})
|
||||||
})
|
})
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
|||||||
@@ -84,13 +84,6 @@ async function loadData({ page, itemsPerPage, sortBy }) {
|
|||||||
console.log(itemsPerPage)
|
console.log(itemsPerPage)
|
||||||
console.log(sortBy)
|
console.log(sortBy)
|
||||||
|
|
||||||
console.log({
|
|
||||||
page: `${page.value - 1}`,
|
|
||||||
count: `${itemsPerPage}`,
|
|
||||||
orderBy: sortString,
|
|
||||||
filter: filtervalue.value ? `title:"${filtervalue.value}"` : '',
|
|
||||||
})
|
|
||||||
|
|
||||||
const response = await axios.post('/api/game', {
|
const response = await axios.post('/api/game', {
|
||||||
page: `${page - 1}`,
|
page: `${page - 1}`,
|
||||||
count: `${itemsPerPage}`,
|
count: `${itemsPerPage}`,
|
||||||
@@ -127,6 +120,7 @@ watch(filtervalue, (newFilter: string, oldFilter: string) => {
|
|||||||
debounce = setTimeout(() => {
|
debounce = setTimeout(() => {
|
||||||
router.replace({ query: { page: route.query.page, filter: newFilter } })
|
router.replace({ query: { page: route.query.page, filter: newFilter } })
|
||||||
}, 500)
|
}, 500)
|
||||||
|
loadData({page: page.value, itemsPerPage: resultePerPage.value, sortBy:[]})
|
||||||
})
|
})
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user