2020-06-24 00:35:19 +02:00
|
|
|
import {UIElement} from "./UIElement";
|
|
|
|
import {UIEventSource} from "./UIEventSource";
|
2020-07-30 00:59:08 +02:00
|
|
|
import {Changes} from "../Logic/Osm/Changes";
|
2020-07-31 01:45:54 +02:00
|
|
|
import {State} from "../State";
|
2020-06-24 00:35:19 +02:00
|
|
|
|
2020-06-27 03:06:51 +02:00
|
|
|
export class PendingChanges extends UIElement {
|
|
|
|
private _pendingChangesCount: UIEventSource<number>;
|
|
|
|
private _isSaving: UIEventSource<boolean>;
|
|
|
|
|
2020-07-31 01:45:54 +02:00
|
|
|
constructor() {
|
|
|
|
super(State.state.changes.pendingChangesES);
|
|
|
|
this.ListenTo(State.state.changes.isSaving);
|
|
|
|
this.ListenTo(State.state.secondsTillChangesAreSaved);
|
|
|
|
this._pendingChangesCount = State.state.changes.pendingChangesES;
|
|
|
|
this._isSaving = State.state.changes.isSaving;
|
2020-07-19 00:13:45 +02:00
|
|
|
|
|
|
|
this.onClick(() => {
|
2020-07-31 01:45:54 +02:00
|
|
|
State.state.changes.uploadAll();
|
2020-07-19 00:13:45 +02:00
|
|
|
})
|
2020-06-24 00:35:19 +02:00
|
|
|
}
|
2020-06-27 03:06:51 +02:00
|
|
|
|
2020-07-21 00:07:04 +02:00
|
|
|
InnerRender(): string {
|
2020-06-27 03:06:51 +02:00
|
|
|
if (this._isSaving.data) {
|
|
|
|
return "<span class='alert'>Saving</span>";
|
|
|
|
}
|
|
|
|
if (this._pendingChangesCount.data == 0) {
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
2020-07-31 01:45:54 +02:00
|
|
|
var restingSeconds =State.state.secondsTillChangesAreSaved.data / 1000;
|
2020-06-27 03:06:51 +02:00
|
|
|
var dots = "";
|
|
|
|
while (restingSeconds > 0) {
|
|
|
|
dots += ".";
|
|
|
|
restingSeconds = restingSeconds - 1;
|
|
|
|
}
|
|
|
|
return "Saving "+this._pendingChangesCount.data;
|
|
|
|
}
|
2020-06-24 00:35:19 +02:00
|
|
|
|
|
|
|
}
|