Merge branch 'v0.1.0' of https://github.com/Pax1601/DCSOlympus into v0.1.0

This commit is contained in:
PeekabooSteam
2023-03-06 20:44:39 +00:00
12 changed files with 84 additions and 65 deletions

View File

@@ -99,17 +99,29 @@ function setup() {
getUnits((data: UnitsData) => getUnitsManager()?.update(data), true /* Does a full refresh */);
/* Start periodically requesting updates */
requestUpdate(true /* Start looping */);
startPeriodicUpdate();
}
function requestUpdate(loop: boolean) {
function startPeriodicUpdate()
{
requestUpdate();
requestRefresh();
}
function requestUpdate() {
/* Main update rate = 250ms is minimum time, equal to server update time. */
getUnits((data: UnitsData) => getUnitsManager()?.update(data))
setTimeout(() => requestUpdate(loop), getConnected() ? 250 : 1000);
getUnits((data: UnitsData) => getUnitsManager()?.update(data), false);
setTimeout(() => requestUpdate(), getConnected() ? 250 : 1000);
getConnectionStatusPanel()?.update(getConnected());
}
function requestRefresh() {
/* Main refresh rate = 5000ms. */
getUnits((data: UnitsData) => getUnitsManager()?.update(data), true);
setTimeout(() => requestUpdate(), 5000);
}
export function getMap() {
return map;
}

View File

@@ -1,7 +1,7 @@
import * as L from 'leaflet'
import { setConnected } from '..';
const DEMO = true;
const DEMO = false;
/* Edit here to change server address */
const REST_ADDRESS = "http://localhost:30000/olympus";
@@ -18,9 +18,11 @@ export function GET(callback: CallableFunction, uri: string){
xmlHttp.onload = function (e) {
var data = JSON.parse(xmlHttp.responseText);
callback(data);
setConnected(true);
};
xmlHttp.onerror = function () {
console.error("An error occurred during the XMLHttpRequest");
setConnected(false);
};
xmlHttp.send(null);
}
@@ -29,7 +31,9 @@ export function POST(request: object, callback: CallableFunction){
var xhr = new XMLHttpRequest();
xhr.open("PUT", REST_ADDRESS);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = () => { callback(); };
xhr.onreadystatechange = () => {
callback();
};
xhr.send(JSON.stringify(request));
}
@@ -47,7 +51,7 @@ export function getLogs(callback: CallableFunction) {
export function getUnits(callback: CallableFunction, refresh: boolean = false) {
if (!DEMO)
GET(callback, `${UNITS_URI}/${refresh? REFRESH_URI: UPDATE_URI}}`);
GET(callback, `${UNITS_URI}/${refresh? REFRESH_URI: UPDATE_URI}`);
else
callback(refresh? generateRandomUnitsDemoData(100): {units:{}});
}

View File

@@ -49,14 +49,14 @@ export class UnitsManager {
.reduce((timeout: number, ID: string) => {
setTimeout(() => {
this.addUnit(parseInt(ID), data.units[ID]);
this.#units[parseInt(ID)].setData(data.units[ID]);
this.#units[parseInt(ID)]?.setData(data.units[ID]);
}, timeout);
return timeout + 10;
}, 10);
Object.keys(data.units)
.filter((ID: string) => ID in this.#units)
.forEach((ID: string) => this.#units[parseInt(ID)].setData(data.units[ID]));
.forEach((ID: string) => this.#units[parseInt(ID)]?.setData(data.units[ID]));
}
forceUpdate() {