mirror of
https://github.com/umap-project/umap.git
synced 2025-04-29 03:42:37 +02:00
fixup: changes after @ybon's review.
This commit is contained in:
parent
50b7188647
commit
90780fbf6d
4 changed files with 19 additions and 32 deletions
|
@ -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'],
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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):
|
||||||
|
|
Loading…
Reference in a new issue