Fixing adding multiple points
This commit is contained in:
parent
32bc1433b4
commit
baf41cb79d
6 changed files with 20 additions and 25 deletions
|
@ -419,7 +419,6 @@ export class InitUiElements {
|
||||||
State.state.allElements.addElement(feature);
|
State.state.allElements.addElement(feature);
|
||||||
})
|
})
|
||||||
MetaTagging.addMetatags(features);
|
MetaTagging.addMetatags(features);
|
||||||
console.log("ALL FEATURES", features);
|
|
||||||
})
|
})
|
||||||
|
|
||||||
new ShowDataLayer(source.features, State.state.leafletMap,
|
new ShowDataLayer(source.features, State.state.leafletMap,
|
||||||
|
|
|
@ -13,27 +13,18 @@ export default class FeatureDuplicatorPerLayer implements FeatureSource {
|
||||||
|
|
||||||
|
|
||||||
constructor(layers: { layerDef: LayerConfig }[], upstream: FeatureSource) {
|
constructor(layers: { layerDef: LayerConfig }[], upstream: FeatureSource) {
|
||||||
let noPassthroughts = true;
|
|
||||||
for (const layer of layers) {
|
|
||||||
if (layer.layerDef.passAllFeatures) {
|
|
||||||
noPassthroughts = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.features = upstream.features.map(features => {
|
this.features = upstream.features.map(features => {
|
||||||
const newFeatures: { feature: any, freshness: Date }[] = [];
|
const newFeatures: { feature: any, freshness: Date }[] = [];
|
||||||
if(features === undefined){
|
if(features === undefined){
|
||||||
return newFeatures;
|
return newFeatures;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (const f of features) {
|
for (const f of features) {
|
||||||
if (f.feature._matching_layer_id) {
|
if (f.feature._matching_layer_id) {
|
||||||
// Already matched previously
|
// Already matched previously
|
||||||
// We simply add it
|
// We simply add it
|
||||||
newFeatures.push(f);
|
newFeatures.push(f);
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,9 @@ export default class FeatureSourceMerger implements FeatureSource {
|
||||||
private Update() {
|
private Update() {
|
||||||
let all = {}; // Mapping 'id' -> {feature, freshness}
|
let all = {}; // Mapping 'id' -> {feature, freshness}
|
||||||
for (const source of this._sources) {
|
for (const source of this._sources) {
|
||||||
|
if(source?.features?.data === undefined){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
for (const f of source.features.data) {
|
for (const f of source.features.data) {
|
||||||
const id = f.feature.properties.id+f.feature.geometry.type+f.feature._matching_layer_id;
|
const id = f.feature.properties.id+f.feature.geometry.type+f.feature._matching_layer_id;
|
||||||
const oldV = all[id];
|
const oldV = all[id];
|
||||||
|
|
|
@ -4,21 +4,24 @@
|
||||||
import FeatureSource from "./FeatureSource";
|
import FeatureSource from "./FeatureSource";
|
||||||
import {UIEventSource} from "../UIEventSource";
|
import {UIEventSource} from "../UIEventSource";
|
||||||
|
|
||||||
export default class RememberingSource implements FeatureSource{
|
export default class RememberingSource implements FeatureSource {
|
||||||
features: UIEventSource<{feature: any, freshness: Date}[]> = new UIEventSource<{feature: any, freshness: Date}[]>([]);
|
features: UIEventSource<{ feature: any, freshness: Date }[]>;
|
||||||
|
|
||||||
constructor(source: FeatureSource) {
|
constructor(source: FeatureSource) {
|
||||||
const self = this;
|
const self = this;
|
||||||
source.features.addCallbackAndRun(features => {
|
const empty = [];
|
||||||
if(features === undefined){
|
this.features = source.features.map(features => {
|
||||||
return;
|
const oldFeatures = self.features?.data ?? empty;
|
||||||
|
if (features === undefined) {
|
||||||
|
return oldFeatures;
|
||||||
}
|
}
|
||||||
const ids = new Set<string>( features.map(f => f.feature.properties.id+f.feature.geometry.type));
|
|
||||||
const newList = features.concat(
|
// Then new ids
|
||||||
self.features.data.filter(old => !ids.has(old.feature.properties.id+old.feature.geometry.type))
|
const ids = new Set<string>(features.map(f => f.feature.properties.id + f.feature.geometry.type));
|
||||||
)
|
// the old data
|
||||||
self.features.setData(newList);
|
const oldData = oldFeatures.filter(old => !ids.has(old.feature.properties.id + old.feature.geometry.type))
|
||||||
|
return [...features, ...oldData];
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
import { Utils } from "../Utils";
|
import { Utils } from "../Utils";
|
||||||
|
|
||||||
export default class Constants {
|
export default class Constants {
|
||||||
public static vNumber = "0.2.7-rc3";
|
public static vNumber = "0.2.7-rc4";
|
||||||
|
|
||||||
// The user journey states thresholds when a new feature gets unlocked
|
// The user journey states thresholds when a new feature gets unlocked
|
||||||
public static userJourney = {
|
public static userJourney = {
|
||||||
|
|
|
@ -32,7 +32,6 @@ export default class ShowDataLayer {
|
||||||
}
|
}
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
console.log("UPDATING!")
|
|
||||||
if (features.data === undefined) {
|
if (features.data === undefined) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue