optimize autocomplete

pull/220/head^2
Pete Matsyburka 2 years ago
parent 801abd197b
commit 6ca44a5cc3

@ -24,9 +24,9 @@ module Api
if SELECT_COLUMNS.include?(params[:field]) if SELECT_COLUMNS.include?(params[:field])
column = Submitter.arel_table[params[:field].to_sym] column = Submitter.arel_table[params[:field].to_sym]
term = "%#{params[:q].downcase}%" term = "#{params[:q].downcase}%"
submitters.where(column.lower.matches(term)) submitters.where(column.matches(term, false, true))
else else
Submitters.search(submitters, params[:q]) Submitters.search(submitters, params[:q])
end end

@ -37,7 +37,9 @@ export default class extends HTMLElement {
if (q) { if (q) {
const queryParams = new URLSearchParams({ q, field: this.dataset.field }) const queryParams = new URLSearchParams({ q, field: this.dataset.field })
fetch('/api/submitters_autocomplete?' + queryParams).then(async (resp) => { this.currentFetch ||= fetch('/api/submitters_autocomplete?' + queryParams)
this.currentFetch.then(async (resp) => {
const items = await resp.json() const items = await resp.json()
if (q.length < 3) { if (q.length < 3) {
@ -47,6 +49,8 @@ export default class extends HTMLElement {
} }
}).catch(() => { }).catch(() => {
resolve([]) resolve([])
}).finally(() => {
this.currentFetch = null
}) })
} else { } else {
resolve([]) resolve([])

Loading…
Cancel
Save