wip: remove AutoComplete.URL (can't set class properties yet)

This commit is contained in:
Yohan Boniface 2024-06-05 13:01:17 +02:00
parent 1cefd4c9a7
commit 8dd1c4bc7f
3 changed files with 12 additions and 7 deletions

View file

@ -222,12 +222,16 @@ export class BaseAutocomplete {
} }
export class BaseAjax extends BaseAutocomplete { export class BaseAjax extends BaseAutocomplete {
URL = '/foobar/?q={q}'
constructor(el, options) { constructor(el, options) {
super(el, options) super(el, options)
this.setUrl()
this.initRequest() this.initRequest()
} }
setUrl() {
this.url = this.options?.url
}
initRequest() { initRequest() {
this.request = new Request() this.request = new Request()
} }
@ -248,7 +252,7 @@ export class BaseAjax extends BaseAutocomplete {
if (val === this.cache) return if (val === this.cache) return
else this.cache = val else this.cache = val
val = val.toLowerCase() val = val.toLowerCase()
const url = Util.template(this.URL, { q: encodeURIComponent(val) }) const url = Util.template(this.url, { q: encodeURIComponent(val) })
this.handleResults(await this._search(url)) this.handleResults(await this._search(url))
} }
@ -261,7 +265,10 @@ export class BaseAjax extends BaseAutocomplete {
} }
class BaseServerAjax extends BaseAjax { class BaseServerAjax extends BaseAjax {
URL = '/agnocomplete/AutocompleteUser/?q={q}' setUrl() {
this.url = '/agnocomplete/AutocompleteUser/?q={q}'
}
initRequest() { initRequest() {
this.server = new ServerRequest() this.server = new ServerRequest()
} }

View file

@ -2,8 +2,6 @@ import { DomUtil } from '../../../vendors/leaflet/leaflet-src.esm.js'
import { BaseAjax, SingleMixin } from '../autocomplete.js' import { BaseAjax, SingleMixin } from '../autocomplete.js'
class Autocomplete extends SingleMixin(BaseAjax) { class Autocomplete extends SingleMixin(BaseAjax) {
URL = 'https://geo.api.gouv.fr/communes?nom={q}&limit=5'
createResult(item) { createResult(item) {
return super.createResult({ return super.createResult({
value: item.code, value: item.code,
@ -26,6 +24,7 @@ export class Importer {
textContent: "Importer les contours d'une commune française.", textContent: "Importer les contours d'une commune française.",
}) })
const options = { const options = {
url: 'https://geo.api.gouv.fr/communes?nom={q}&limit=5',
on_select: (choice) => { on_select: (choice) => {
importer.url = `https://geo.api.gouv.fr/communes?code=${choice.item.value}&format=geojson&geometry=contour` importer.url = `https://geo.api.gouv.fr/communes?code=${choice.item.value}&format=geojson&geometry=contour`
importer.format = 'geojson' importer.format = 'geojson'

View file

@ -21,8 +21,6 @@ const TEMPLATE = `
` `
class Autocomplete extends SingleMixin(BaseAjax) { class Autocomplete extends SingleMixin(BaseAjax) {
URL = 'https://geodatamine.fr/boundaries/search?text={q}'
createResult(item) { createResult(item) {
return super.createResult({ return super.createResult({
value: item.id, value: item.id,
@ -58,6 +56,7 @@ export class Importer {
} }
const asPoint = container.querySelector('[name=aspoint]') const asPoint = container.querySelector('[name=aspoint]')
this.autocomplete = new Autocomplete(container, { this.autocomplete = new Autocomplete(container, {
url: `${this.baseUrl}/boundaries/search?text={q}`,
on_select: (choice) => { on_select: (choice) => {
boundary = choice.item.value boundary = choice.item.value
}, },