forked from MapComplete/MapComplete
Fix dependency injection of refactoring
This commit is contained in:
parent
f0675a026b
commit
39e6cdfda4
4 changed files with 25 additions and 15 deletions
|
@ -27,8 +27,10 @@ export class Changes {
|
||||||
public features = new UIEventSource<{ feature: any, freshness: Date }[]>([]);
|
public features = new UIEventSource<{ feature: any, freshness: Date }[]>([]);
|
||||||
public readonly pendingChanges: UIEventSource<ChangeDescription[]> = LocalStorageSource.GetParsed<ChangeDescription[]>("pending-changes", [])
|
public readonly pendingChanges: UIEventSource<ChangeDescription[]> = LocalStorageSource.GetParsed<ChangeDescription[]>("pending-changes", [])
|
||||||
public readonly allChanges = new UIEventSource<ChangeDescription[]>(undefined)
|
public readonly allChanges = new UIEventSource<ChangeDescription[]>(undefined)
|
||||||
public readonly state: { allElements: ElementStorage; historicalUserLocations: FeatureSource; osmConnection: OsmConnection }
|
public readonly state: { allElements: ElementStorage; osmConnection: OsmConnection }
|
||||||
public readonly extraComment: UIEventSource<string> = new UIEventSource(undefined)
|
public readonly extraComment: UIEventSource<string> = new UIEventSource(undefined)
|
||||||
|
|
||||||
|
private historicalUserLocations: FeatureSource
|
||||||
private _nextId: number = -1; // Newly assigned ID's are negative
|
private _nextId: number = -1; // Newly assigned ID's are negative
|
||||||
private readonly isUploading = new UIEventSource(false);
|
private readonly isUploading = new UIEventSource(false);
|
||||||
private readonly previouslyCreated: OsmObject[] = []
|
private readonly previouslyCreated: OsmObject[] = []
|
||||||
|
@ -38,7 +40,6 @@ export class Changes {
|
||||||
constructor(
|
constructor(
|
||||||
state?: {
|
state?: {
|
||||||
allElements: ElementStorage,
|
allElements: ElementStorage,
|
||||||
historicalUserLocations: FeatureSource,
|
|
||||||
osmConnection: OsmConnection
|
osmConnection: OsmConnection
|
||||||
},
|
},
|
||||||
leftRightSensitive: boolean = false) {
|
leftRightSensitive: boolean = false) {
|
||||||
|
@ -148,7 +149,7 @@ export class Changes {
|
||||||
|
|
||||||
private calculateDistanceToChanges(change: OsmChangeAction, changeDescriptions: ChangeDescription[]) {
|
private calculateDistanceToChanges(change: OsmChangeAction, changeDescriptions: ChangeDescription[]) {
|
||||||
|
|
||||||
const locations = this.state?.historicalUserLocations?.features?.data
|
const locations = this.historicalUserLocations?.features?.data
|
||||||
if (locations === undefined) {
|
if (locations === undefined) {
|
||||||
// No state loaded or no locations -> we can't calculate...
|
// No state loaded or no locations -> we can't calculate...
|
||||||
return;
|
return;
|
||||||
|
@ -520,4 +521,8 @@ export class Changes {
|
||||||
console.debug("Calculated the pending changes: ", result.newObjects.length, "new; ", result.modifiedObjects.length, "modified;", result.deletedObjects, "deleted")
|
console.debug("Calculated the pending changes: ", result.newObjects.length, "new; ", result.modifiedObjects.length, "modified;", result.deletedObjects, "deleted")
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public setHistoricalUserLocations(locations: FeatureSource ){
|
||||||
|
this.historicalUserLocations = locations
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -20,11 +20,7 @@ export default class ElementsState extends FeatureSwitchState {
|
||||||
The mapping from id -> UIEventSource<properties>
|
The mapping from id -> UIEventSource<properties>
|
||||||
*/
|
*/
|
||||||
public allElements: ElementStorage = new ElementStorage();
|
public allElements: ElementStorage = new ElementStorage();
|
||||||
/**
|
|
||||||
THe change handler
|
|
||||||
*/
|
|
||||||
public changes: Changes;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The latest element that was selected
|
The latest element that was selected
|
||||||
*/
|
*/
|
||||||
|
@ -48,9 +44,6 @@ export default class ElementsState extends FeatureSwitchState {
|
||||||
constructor(layoutToUse: LayoutConfig) {
|
constructor(layoutToUse: LayoutConfig) {
|
||||||
super(layoutToUse);
|
super(layoutToUse);
|
||||||
|
|
||||||
// @ts-ignore
|
|
||||||
this.changes = new Changes(this, layoutToUse?.isLeftRightSensitive() ?? false)
|
|
||||||
{
|
|
||||||
// -- Location control initialization
|
// -- Location control initialization
|
||||||
const zoom = UIEventSource.asFloat(
|
const zoom = UIEventSource.asFloat(
|
||||||
QueryParameters.GetQueryParameter(
|
QueryParameters.GetQueryParameter(
|
||||||
|
@ -85,10 +78,7 @@ export default class ElementsState extends FeatureSwitchState {
|
||||||
lat.setData(latlonz.lat);
|
lat.setData(latlonz.lat);
|
||||||
lon.setData(latlonz.lon);
|
lon.setData(latlonz.lon);
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
new ChangeToElementsActor(this.changes, this.allElements)
|
|
||||||
new PendingChangesUploader(this.changes, this.selectedElement);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -271,6 +271,7 @@ export default class MapState extends UserRelatedState {
|
||||||
let gpsLayerDef: FilteredLayer = this.filteredLayers.data.filter(l => l.layerDef.id === "gps_location_history")[0]
|
let gpsLayerDef: FilteredLayer = this.filteredLayers.data.filter(l => l.layerDef.id === "gps_location_history")[0]
|
||||||
if (gpsLayerDef !== undefined) {
|
if (gpsLayerDef !== undefined) {
|
||||||
this.historicalUserLocations = new SimpleFeatureSource(gpsLayerDef, Tiles.tile_index(0, 0, 0), features);
|
this.historicalUserLocations = new SimpleFeatureSource(gpsLayerDef, Tiles.tile_index(0, 0, 0), features);
|
||||||
|
this.changes.setHistoricalUserLocations(this.historicalUserLocations)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,9 @@ import {Utils} from "../../Utils";
|
||||||
import Locale from "../../UI/i18n/Locale";
|
import Locale from "../../UI/i18n/Locale";
|
||||||
import ElementsState from "./ElementsState";
|
import ElementsState from "./ElementsState";
|
||||||
import SelectedElementTagsUpdater from "../Actors/SelectedElementTagsUpdater";
|
import SelectedElementTagsUpdater from "../Actors/SelectedElementTagsUpdater";
|
||||||
|
import {Changes} from "../Osm/Changes";
|
||||||
|
import ChangeToElementsActor from "../Actors/ChangeToElementsActor";
|
||||||
|
import PendingChangesUploader from "../Actors/PendingChangesUploader";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The part of the state which keeps track of user-related stuff, e.g. the OSM-connection,
|
* The part of the state which keeps track of user-related stuff, e.g. the OSM-connection,
|
||||||
|
@ -20,6 +23,10 @@ export default class UserRelatedState extends ElementsState {
|
||||||
The user credentials
|
The user credentials
|
||||||
*/
|
*/
|
||||||
public osmConnection: OsmConnection;
|
public osmConnection: OsmConnection;
|
||||||
|
/**
|
||||||
|
THe change handler
|
||||||
|
*/
|
||||||
|
public changes: Changes;
|
||||||
/**
|
/**
|
||||||
* The key for mangrove
|
* The key for mangrove
|
||||||
*/
|
*/
|
||||||
|
@ -44,6 +51,13 @@ export default class UserRelatedState extends ElementsState {
|
||||||
attemptLogin: options?.attemptLogin
|
attemptLogin: options?.attemptLogin
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
this.changes = new Changes(this, layoutToUse?.isLeftRightSensitive() ?? false)
|
||||||
|
|
||||||
|
|
||||||
|
new ChangeToElementsActor(this.changes, this.allElements)
|
||||||
|
new PendingChangesUploader(this.changes, this.selectedElement);
|
||||||
|
|
||||||
this.mangroveIdentity = new MangroveIdentity(
|
this.mangroveIdentity = new MangroveIdentity(
|
||||||
this.osmConnection.GetLongPreference("identity", "mangrove")
|
this.osmConnection.GetLongPreference("identity", "mangrove")
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue