fixup: changes after @ybon's review.

This commit is contained in:
Alexis Métaireau 2024-05-31 10:31:59 +02:00
parent 50b7188647
commit 90780fbf6d
4 changed files with 19 additions and 32 deletions

View file

@ -313,7 +313,7 @@ export const SCHEMA = {
}, },
outlink: { outlink: {
type: String, type: String,
impacts: ['data'], impacts: [],
label: translate('Link to…'), label: translate('Link to…'),
helpEntries: 'outlink', helpEntries: 'outlink',
placeholder: 'http://...', placeholder: 'http://...',
@ -321,7 +321,7 @@ export const SCHEMA = {
}, },
outlinkTarget: { outlinkTarget: {
type: String, type: String,
impacts: ['data'], impacts: [],
label: translate('Open link in…'), label: translate('Open link in…'),
inheritable: true, inheritable: true,
default: 'blank', default: 'blank',
@ -511,6 +511,7 @@ export const SCHEMA = {
label: translate('Default zoom level'), label: translate('Default zoom level'),
inheritable: true, inheritable: true,
}, },
// FIXME This is an internal Leaflet property, we might want to do this differently.
_latlng: { _latlng: {
type: Object, type: Object,
impacts: ['data'], impacts: ['data'],

View file

@ -4,7 +4,7 @@ import { MapUpdater, DataLayerUpdater, FeatureUpdater } from './updaters.js'
export class SyncEngine { export class SyncEngine {
constructor(map) { constructor(map) {
this.map = map this.map = map
this.receiver = new MessagesDispatcher(this.map) this.dispatcher = new MessagesDispatcher(this.map)
this._initialize() this._initialize()
} }
_initialize() { _initialize() {
@ -22,7 +22,7 @@ export class SyncEngine {
} }
start(webSocketURI, authToken) { start(webSocketURI, authToken) {
this.transport = new WebSocketTransport(webSocketURI, authToken, this.receiver) this.transport = new WebSocketTransport(webSocketURI, authToken, this.dispatcher)
this.sender = new MessagesSender(this.transport) this.sender = new MessagesSender(this.transport)
this.upsert = this.sender.upsert.bind(this.sender) this.upsert = this.sender.upsert.bind(this.sender)
this.update = this.sender.update.bind(this.sender) this.update = this.sender.update.bind(this.sender)

View file

@ -51,6 +51,7 @@ export class DataLayerUpdater extends BaseUpdater {
upsert({ value }) { upsert({ value }) {
// Inserts does not happen (we use multiple updates instead). // Inserts does not happen (we use multiple updates instead).
this.map.createDataLayer(value, false) this.map.createDataLayer(value, false)
this.map.render()
} }
update({ key, metadata, value }) { update({ key, metadata, value }) {
@ -60,14 +61,6 @@ export class DataLayerUpdater extends BaseUpdater {
} }
} }
/**
* This is an abstract base class
* And needs to be subclassed to be used.
*
* The child classes need to expose:
* - `featureClass`: the name of the class to create the feature
* - `featureArgument`: an object with the properties to pass to the class when bulding it.
**/
export class FeatureUpdater extends BaseUpdater { export class FeatureUpdater extends BaseUpdater {
getFeatureFromMetadata({ id, layerId }) { getFeatureFromMetadata({ id, layerId }) {
const datalayer = this.getDataLayerFromID(layerId) const datalayer = this.getDataLayerFromID(layerId)
@ -79,16 +72,14 @@ export class FeatureUpdater extends BaseUpdater {
let { id, layerId } = metadata let { id, layerId } = metadata
const datalayer = this.getDataLayerFromID(layerId) const datalayer = this.getDataLayerFromID(layerId)
let feature = this.getFeatureFromMetadata(metadata, value) let feature = this.getFeatureFromMetadata(metadata, value)
if (feature === undefined) {
console.log(`Unable to find feature with id = ${metadata.id}. Creating a new one`)
}
feature = datalayer.geometryToFeature({ feature = datalayer.geometryToFeature({
geometry: value.geometry, geometry: value.geometry,
geojson: value, geojson: value,
id, id,
feature, feature,
}) })
feature.addTo(datalayer) datalayer.addLayer(feature)
} }
// Update a property of an object // Update a property of an object
@ -103,9 +94,9 @@ export class FeatureUpdater extends BaseUpdater {
datalayer.geometryToFeature({ geometry: value, id: metadata.id, feature }) datalayer.geometryToFeature({ geometry: value, id: metadata.id, feature })
default: default:
this.updateObjectValue(feature, key, value) this.updateObjectValue(feature, key, value)
feature.datalayer.indexProperties(feature)
} }
feature.datalayer.indexProperties(feature)
feature.render([key]) feature.render([key])
} }

View file

@ -792,7 +792,6 @@ def get_websocket_auth_token(request, map_id, map_inst):
""" """
map_object: Map = Map.objects.get(pk=map_id) map_object: Map = Map.objects.get(pk=map_id)
if map_object.can_edit(request.user, request):
permissions = ["edit"] permissions = ["edit"]
if map_object.is_owner(request.user, request): if map_object.is_owner(request.user, request):
permissions.append("owner") permissions.append("owner")
@ -805,10 +804,6 @@ def get_websocket_auth_token(request, map_id, map_inst):
{"user": user, "map_id": map_id, "permissions": permissions} {"user": user, "map_id": map_id, "permissions": permissions}
) )
return simple_json_response(token=signed_token) return simple_json_response(token=signed_token)
else:
return HttpResponseForbidden(
_("You cannot edit this map with your current permissions.")
)
class MapUpdate(FormLessEditMixin, PermissionsMixin, UpdateView): class MapUpdate(FormLessEditMixin, PermissionsMixin, UpdateView):