fixes
This commit is contained in:
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useDialogPluginComponent } from 'quasar';
|
import { useDialogPluginComponent } from 'quasar';
|
||||||
import { reverseGeocodeRateLimited } from 'functions/reverseGeocode';
|
import { reverseGeocodeRateLimited } from 'functions/reverseGeocodeSocket';
|
||||||
import { ref, onMounted } from 'vue';
|
import { ref, onMounted } from 'vue';
|
||||||
import FormattedAddress from 'components/FormattedAddress.vue';
|
import FormattedAddress from 'components/FormattedAddress.vue';
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ function handleEmit() {
|
|||||||
const event = sockEvent.value;
|
const event = sockEvent.value;
|
||||||
const jsonArgs = eventArgs.value;
|
const jsonArgs = eventArgs.value;
|
||||||
socket.emit(event as keyof ClientToServerEvents, jsonArgs, (resp: unknown) => {
|
socket.emit(event as keyof ClientToServerEvents, jsonArgs, (resp: unknown) => {
|
||||||
console.log('Server Reponse: ' + String(resp));
|
console.log('Server Response: %s', resp);
|
||||||
});
|
});
|
||||||
sockEvent.value = '';
|
sockEvent.value = '';
|
||||||
eventArgs.value = '';
|
eventArgs.value = '';
|
||||||
|
|||||||
@@ -237,6 +237,13 @@ export interface ClientToServerEvents {
|
|||||||
},
|
},
|
||||||
callback?: (response: LocationMarkUpdateResponse) => void,
|
callback?: (response: LocationMarkUpdateResponse) => void,
|
||||||
) => void;
|
) => void;
|
||||||
|
reverse_geocode: (
|
||||||
|
args: {
|
||||||
|
latitude: number;
|
||||||
|
longitude: number;
|
||||||
|
},
|
||||||
|
callback?: (response: NominatimResponse) => void,
|
||||||
|
) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SimulationControlResponse {
|
export interface SimulationControlResponse {
|
||||||
|
|||||||
24
src/functions/reverseGeocodeSocket.ts
Normal file
24
src/functions/reverseGeocodeSocket.ts
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
// services/nominatimService.ts
|
||||||
|
import { useSocketioStore } from 'stores/socketio';
|
||||||
|
import type { NominatimResponse, NominatimRequest } from 'components/models';
|
||||||
|
|
||||||
|
const socketStore = useSocketioStore();
|
||||||
|
|
||||||
|
let lastRequestTime = 0;
|
||||||
|
|
||||||
|
export const reverseGeocodeRateLimited = async (
|
||||||
|
lat: number,
|
||||||
|
lon: number,
|
||||||
|
): Promise<NominatimResponse> => {
|
||||||
|
const now = Date.now();
|
||||||
|
const timeSinceLast = now - lastRequestTime;
|
||||||
|
|
||||||
|
// Wait if less than 1000ms has passed
|
||||||
|
if (timeSinceLast < 1000) {
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 1000 - timeSinceLast));
|
||||||
|
}
|
||||||
|
const response: NominatimResponse = await socketStore.revGeoCode({latitude: lat, longitude: lon} as NominatimRequest);
|
||||||
|
|
||||||
|
lastRequestTime = Date.now();
|
||||||
|
return response;
|
||||||
|
};
|
||||||
@@ -14,6 +14,8 @@ import type {
|
|||||||
SimulationStatus,
|
SimulationStatus,
|
||||||
LocationMarkUpdateResponse,
|
LocationMarkUpdateResponse,
|
||||||
LocationItemUpdate,
|
LocationItemUpdate,
|
||||||
|
NominatimResponse,
|
||||||
|
NominatimRequest,
|
||||||
} from 'components/models';
|
} from 'components/models';
|
||||||
|
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
@@ -159,9 +161,10 @@ export const useSocketioStore = defineStore('socketio', {
|
|||||||
console.log('Location item update received, data: ', inData);
|
console.log('Location item update received, data: ', inData);
|
||||||
this.locationQueueData[inData.loc_id] = inData.data;
|
this.locationQueueData[inData.loc_id] = inData.data;
|
||||||
});
|
});
|
||||||
|
/*
|
||||||
socket.onAny((eventName, ...args) => {
|
socket.onAny((eventName, ...args) => {
|
||||||
console.log('Event received: ', eventName, ' Args: ', args, '');
|
console.log('Event received: ', eventName, ' Args: ', args, '');
|
||||||
/* if (serverToClientKnownEvents.includes(eventName)) {
|
if (serverToClientKnownEvents.includes(eventName)) {
|
||||||
console.log('Known event received: ', eventName, ' Args: ', args, '');
|
console.log('Known event received: ', eventName, ' Args: ', args, '');
|
||||||
} else {
|
} else {
|
||||||
console.log(
|
console.log(
|
||||||
@@ -175,8 +178,9 @@ export const useSocketioStore = defineStore('socketio', {
|
|||||||
);
|
);
|
||||||
console.log(`Received UNKNOWN Event: ${eventName}`, args);
|
console.log(`Received UNKNOWN Event: ${eventName}`, args);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
},
|
},
|
||||||
connect() {
|
connect() {
|
||||||
if (debugLog) {
|
if (debugLog) {
|
||||||
@@ -396,7 +400,7 @@ export const useSocketioStore = defineStore('socketio', {
|
|||||||
if (response.command_status === 'ERROR') {
|
if (response.command_status === 'ERROR') {
|
||||||
throw new Error(response.message);
|
throw new Error(response.message);
|
||||||
} else {
|
} else {
|
||||||
this.simulationState = response.data?.simulation_queue_state
|
this.simulationState = response.data?.simulation_queue_state;
|
||||||
if (debugLog) {
|
if (debugLog) {
|
||||||
console.log('response from simulate_control_test-mode: ', response);
|
console.log('response from simulate_control_test-mode: ', response);
|
||||||
}
|
}
|
||||||
@@ -495,11 +499,17 @@ export const useSocketioStore = defineStore('socketio', {
|
|||||||
throw new Error('latitude or longitude not set');
|
throw new Error('latitude or longitude not set');
|
||||||
}
|
}
|
||||||
if (!address) {
|
if (!address) {
|
||||||
address = "{latitude}, {longitude}"
|
address = '{latitude}, {longitude}';
|
||||||
}
|
}
|
||||||
socket.emit(
|
socket.emit(
|
||||||
'simulation_control',
|
'simulation_control',
|
||||||
{ command: 'add', latitude: latitude, longitude: longitude, delay: delay, address: address },
|
{
|
||||||
|
command: 'add',
|
||||||
|
latitude: latitude,
|
||||||
|
longitude: longitude,
|
||||||
|
delay: delay,
|
||||||
|
address: address,
|
||||||
|
},
|
||||||
(response) => {
|
(response) => {
|
||||||
if (response.command_status == 'ERROR') {
|
if (response.command_status == 'ERROR') {
|
||||||
throw new Error(response.message);
|
throw new Error(response.message);
|
||||||
@@ -575,15 +585,31 @@ export const useSocketioStore = defineStore('socketio', {
|
|||||||
setDeviceState(state: boolean) {
|
setDeviceState(state: boolean) {
|
||||||
this.deviceConnected = state;
|
this.deviceConnected = state;
|
||||||
},
|
},
|
||||||
|
revGeoCode(nomRequest: NominatimRequest): Promise<NominatimResponse> {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
socket.emit('reverse_geocode', { latitude: nomRequest.latitude, longitude: nomRequest.longitude }, (response) => {
|
||||||
|
resolve(response);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
updateLocationMark(loc_id: string, key: string, value: string | number) {
|
updateLocationMark(loc_id: string, key: string, value: string | number) {
|
||||||
let fnctRtn: { command_status: string, message: string } = { command_status: '', message: '' };
|
let fnctRtn: { command_status: string; message: string } = {
|
||||||
|
command_status: '',
|
||||||
|
message: '',
|
||||||
|
};
|
||||||
if (debugLog) {
|
if (debugLog) {
|
||||||
console.log('socketStore: Update LocationMark request, loc_id: %s, key: %s, new value: %s', loc_id, key, value);
|
console.log(
|
||||||
|
'socketStore: Update LocationMark request, loc_id: %s, key: %s, new value: %s',
|
||||||
|
loc_id,
|
||||||
|
key,
|
||||||
|
value,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (
|
if (!this.locationQueueData[loc_id]) {
|
||||||
!this.locationQueueData[loc_id]
|
fnctRtn = {
|
||||||
) {
|
command_status: 'error',
|
||||||
fnctRtn = { command_status: 'error', message: 'Location Id: ' + loc_id + ' is not in the simulation queue' };
|
message: 'Location Id: ' + loc_id + ' is not in the simulation queue',
|
||||||
|
};
|
||||||
throw new Error('loc_id ' + loc_id + 'not found');
|
throw new Error('loc_id ' + loc_id + 'not found');
|
||||||
}
|
}
|
||||||
if (debugLog) {
|
if (debugLog) {
|
||||||
|
|||||||
Reference in New Issue
Block a user