fixes
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useDialogPluginComponent } from 'quasar';
|
||||
import { reverseGeocodeRateLimited } from 'functions/reverseGeocode';
|
||||
import { reverseGeocodeRateLimited } from 'functions/reverseGeocodeSocket';
|
||||
import { ref, onMounted } from 'vue';
|
||||
import FormattedAddress from 'components/FormattedAddress.vue';
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ function handleEmit() {
|
||||
const event = sockEvent.value;
|
||||
const jsonArgs = eventArgs.value;
|
||||
socket.emit(event as keyof ClientToServerEvents, jsonArgs, (resp: unknown) => {
|
||||
console.log('Server Reponse: ' + String(resp));
|
||||
console.log('Server Response: %s', resp);
|
||||
});
|
||||
sockEvent.value = '';
|
||||
eventArgs.value = '';
|
||||
|
||||
@@ -237,6 +237,13 @@ export interface ClientToServerEvents {
|
||||
},
|
||||
callback?: (response: LocationMarkUpdateResponse) => void,
|
||||
) => void;
|
||||
reverse_geocode: (
|
||||
args: {
|
||||
latitude: number;
|
||||
longitude: number;
|
||||
},
|
||||
callback?: (response: NominatimResponse) => void,
|
||||
) => void;
|
||||
}
|
||||
|
||||
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,
|
||||
LocationMarkUpdateResponse,
|
||||
LocationItemUpdate,
|
||||
NominatimResponse,
|
||||
NominatimRequest,
|
||||
} from 'components/models';
|
||||
|
||||
const $q = useQuasar();
|
||||
@@ -159,9 +161,10 @@ export const useSocketioStore = defineStore('socketio', {
|
||||
console.log('Location item update received, data: ', inData);
|
||||
this.locationQueueData[inData.loc_id] = inData.data;
|
||||
});
|
||||
/*
|
||||
socket.onAny((eventName, ...args) => {
|
||||
console.log('Event received: ', eventName, ' Args: ', args, '');
|
||||
/* if (serverToClientKnownEvents.includes(eventName)) {
|
||||
if (serverToClientKnownEvents.includes(eventName)) {
|
||||
console.log('Known event received: ', eventName, ' Args: ', args, '');
|
||||
} else {
|
||||
console.log(
|
||||
@@ -175,8 +178,9 @@ export const useSocketioStore = defineStore('socketio', {
|
||||
);
|
||||
console.log(`Received UNKNOWN Event: ${eventName}`, args);
|
||||
}
|
||||
*/
|
||||
|
||||
});
|
||||
*/
|
||||
},
|
||||
connect() {
|
||||
if (debugLog) {
|
||||
@@ -396,7 +400,7 @@ export const useSocketioStore = defineStore('socketio', {
|
||||
if (response.command_status === 'ERROR') {
|
||||
throw new Error(response.message);
|
||||
} else {
|
||||
this.simulationState = response.data?.simulation_queue_state
|
||||
this.simulationState = response.data?.simulation_queue_state;
|
||||
if (debugLog) {
|
||||
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');
|
||||
}
|
||||
if (!address) {
|
||||
address = "{latitude}, {longitude}"
|
||||
address = '{latitude}, {longitude}';
|
||||
}
|
||||
socket.emit(
|
||||
'simulation_control',
|
||||
{ command: 'add', latitude: latitude, longitude: longitude, delay: delay, address: address },
|
||||
{
|
||||
command: 'add',
|
||||
latitude: latitude,
|
||||
longitude: longitude,
|
||||
delay: delay,
|
||||
address: address,
|
||||
},
|
||||
(response) => {
|
||||
if (response.command_status == 'ERROR') {
|
||||
throw new Error(response.message);
|
||||
@@ -575,15 +585,31 @@ export const useSocketioStore = defineStore('socketio', {
|
||||
setDeviceState(state: boolean) {
|
||||
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) {
|
||||
let fnctRtn: { command_status: string, message: string } = { command_status: '', message: '' };
|
||||
let fnctRtn: { command_status: string; message: string } = {
|
||||
command_status: '',
|
||||
message: '',
|
||||
};
|
||||
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 (
|
||||
!this.locationQueueData[loc_id]
|
||||
) {
|
||||
fnctRtn = { command_status: 'error', message: 'Location Id: ' + loc_id + ' is not in the simulation queue' };
|
||||
if (!this.locationQueueData[loc_id]) {
|
||||
fnctRtn = {
|
||||
command_status: 'error',
|
||||
message: 'Location Id: ' + loc_id + ' is not in the simulation queue',
|
||||
};
|
||||
throw new Error('loc_id ' + loc_id + 'not found');
|
||||
}
|
||||
if (debugLog) {
|
||||
|
||||
Reference in New Issue
Block a user