Merge pull request #1898 from umap-project/fix-js-circular-import

fix: django cannot run collectstatic with circular imports in modules
This commit is contained in:
David Larlet 2024-06-14 16:38:38 -04:00 committed by GitHub
commit 610367c3a1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 37 additions and 26 deletions

View file

@ -1,5 +1,4 @@
import { translate } from '../../modules/i18n.js'
import { ServerRequest } from '../../modules/request.js'
import { uMapElement } from '../base.js'
class uMapAlert extends uMapElement {
@ -77,9 +76,14 @@ class uMapAlertCreation extends uMapAlert {
// biome-ignore lint/style/useNumberNamespace: Number.Infinity returns undefined by default
duration = Infinity,
editLink = undefined,
sendLink = undefined
sendCallback = undefined
) {
uMapAlertCreation.emit('alertCreation', { message, duration, editLink, sendLink })
uMapAlertCreation.emit('alertCreation', {
message,
duration,
editLink,
sendCallback,
})
}
constructor() {
@ -94,7 +98,7 @@ class uMapAlertCreation extends uMapAlert {
duration = 5000,
message = '',
editLink = undefined,
sendLink = undefined,
sendCallback = undefined,
} = event.detail
uMapAlert.prototype.onAlert.call(this, { detail: { level, duration, message } })
this.linkWrapper.querySelector('input[type="url"]').value = editLink
@ -104,15 +108,14 @@ class uMapAlertCreation extends uMapAlert {
L.Util.copyToClipboard(editLink)
event.target.value = translate('✅ Copied!')
})
if (sendLink) {
if (sendCallback) {
this.formWrapper.removeAttribute('hidden')
const form = this.formWrapper.querySelector('form')
form.addEventListener('submit', async (event) => {
event.preventDefault()
const formData = new FormData(form)
const server = new ServerRequest()
sendCallback(formData)
this.removeAttribute('open')
await server.post(sendLink, {}, formData)
})
}
}
@ -124,12 +127,8 @@ class uMapAlertCreation extends uMapAlert {
}
class uMapAlertConflict extends uMapAlert {
static error(
message,
// biome-ignore lint/style/useNumberNamespace: Number.Infinity returns undefined by default
duration = Infinity
) {
uMapAlertConflict.emit('alertConflict', { level: 'error', message, duration })
static error(message, forceCallback) {
uMapAlertConflict.emit('alertConflict', { level: 'error', message, forceCallback })
}
constructor() {
@ -138,14 +137,20 @@ class uMapAlertConflict extends uMapAlert {
}
onAlertConflict(event) {
const { level = 'info', duration = 5000, message = '' } = event.detail
// biome-ignore lint/style/useNumberNamespace: Number.Infinity returns undefined by default
const {
level = 'info',
duration = Infinity,
message = '',
forceCallback = undefined,
} = event.detail
uMapAlert.prototype.onAlert.call(this, { detail: { level, duration, message } })
const form = this.conflictWrapper.querySelector('form')
form.addEventListener('submit', (event) => {
event.preventDefault()
switch (event.submitter.id) {
case 'your-changes':
uMapAlertConflict.emit('alertConflictOverride')
forceCallback()
break
case 'their-changes':
window.location.reload()

View file

@ -13,7 +13,7 @@ L.Map.mergeOptions({
// we cannot rely on this because of the y is overriden by Leaflet
// See https://github.com/Leaflet/Leaflet/pull/9201
// And let's remove this -y when this PR is merged and released.
demoTileInfos: { s: 'a', z: 9, x: 265, y: 181, '-y': 181, r: '' },
demoTileInfos: { 's': 'a', 'z': 9, 'x': 265, 'y': 181, '-y': 181, 'r': '' },
licences: [],
licence: '',
enableMarkerDraw: true,
@ -1063,17 +1063,14 @@ U.Map = L.Map.extend({
this.permissions.setOptions(data.permissions)
this.permissions.commit()
if (data?.permissions?.anonymous_edit_url) {
const send_edit_link_url =
this.options.urls.map_send_edit_link &&
this.urls.get('map_send_edit_link', {
map_id: this.options.umap_id,
})
this.once('saved', () => {
U.AlertCreation.info(
L._('Your map has been created with an anonymous account!'),
Number.Infinity,
data.permissions.anonymous_edit_url,
send_edit_link_url
this.options.urls.map_send_edit_link
? this.sendEditLinkEmail.bind(this)
: null
)
})
} else {
@ -1887,4 +1884,13 @@ U.Map = L.Map.extend({
})
return bounds
},
sendEditLinkEmail: async function (formData) {
const sendLink =
this.options.urls.map_send_edit_link &&
this.urls.get('map_send_edit_link', {
map_id: this.options.umap_id,
})
await this.server.post(sendLink, {}, formData)
},
})

View file

@ -1708,11 +1708,11 @@ U.DataLayer = L.Evented.extend({
L._(
'Whoops! Other contributor(s) changed some of the same map elements as you. ' +
'This situation is tricky, you have to choose carefully which version is pertinent.'
)
)
document.addEventListener('umap:alertConflictOverride', async (event) => {
),
async () => {
await this._trySave(url, {}, formData)
})
}
)
}
} else {
// Response contains geojson only if save has conflicted and conflicts have