Restructure project
This commit is contained in:
parent
e44e7caa11
commit
16b2f17301
46 changed files with 1744 additions and 1265 deletions
|
@ -18,7 +18,6 @@ import "primeicons/primeicons.css";
|
|||
import "primeflex/primeflex.css";
|
||||
|
||||
export const API_ENDPOINT_URL = window.origin + "/api";
|
||||
export const WEBSOCKET_ENDPOINT_URL = API_ENDPOINT_URL.replace("http", "ws") + "/orders/ws";
|
||||
OpenAPI.BASE = API_ENDPOINT_URL;
|
||||
|
||||
async function getHealth() {
|
||||
|
|
|
@ -27,7 +27,7 @@ import { computed, defineComponent, onUnmounted, provide, ref } from "vue";
|
|||
import BaseCard from "@/components/UI/BaseCard.vue";
|
||||
import { OrdersService, service_Order, types_ItemType, user_User } from "@/services/openapi";
|
||||
import { detailedItemTypeIcon, detailedItemTypeString, NotifierType, WebSocketMsg } from "@/utils";
|
||||
import { WEBSOCKET_ENDPOINT_URL } from "@/main";
|
||||
import { API_ENDPOINT_URL } from "@/main";
|
||||
import EmptyView from "@/views/Empty.vue";
|
||||
import WaveSpinner from "@/components/UI/WaveSpinner.vue";
|
||||
import { disabled, loading } from "@/keys";
|
||||
|
@ -68,7 +68,7 @@ export default defineComponent({
|
|||
return new Map([...temp.entries()].sort());
|
||||
});
|
||||
const coldOrders = computed(() => orders.value.filter((order) => order.order_item.item_type === types_ItemType.ColdDrink));
|
||||
const ws = ref<WebSocket | null>(null);
|
||||
const sse = ref<EventSource | null>(null);
|
||||
|
||||
getData();
|
||||
function getData() {
|
||||
|
@ -77,51 +77,36 @@ export default defineComponent({
|
|||
.then((res) => (orders.value = res))
|
||||
.finally(() => {
|
||||
isLoading.value = false;
|
||||
startWebsocket();
|
||||
setupSSE();
|
||||
});
|
||||
}
|
||||
onUnmounted(() => stopWebsocket());
|
||||
onUnmounted(() => sse.value && sse.value.close());
|
||||
addEventListener("beforeunload", () => {
|
||||
sse.value && sse.value.close();
|
||||
});
|
||||
|
||||
function filterOrder(id: number) {
|
||||
orders.value = orders.value.filter((old) => old.id !== id);
|
||||
}
|
||||
|
||||
function startWebsocket() {
|
||||
ws.value = new WebSocket(WEBSOCKET_ENDPOINT_URL);
|
||||
ws.value.addEventListener("message", parseWebsocket);
|
||||
ws.value.addEventListener("error", handleWebsocketError);
|
||||
}
|
||||
|
||||
function stopWebsocket() {
|
||||
if (ws.value) {
|
||||
ws.value.removeEventListener("message", parseWebsocket);
|
||||
ws.value.removeEventListener("error", handleWebsocketError);
|
||||
ws.value.close();
|
||||
}
|
||||
}
|
||||
|
||||
function handleWebsocketError() {
|
||||
stopWebsocket();
|
||||
setTimeout(() => {
|
||||
startWebsocket();
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
function parseWebsocket(evt: Event) {
|
||||
isDisabled.value = true;
|
||||
const messageEvent = evt as MessageEvent;
|
||||
const webSocketMsg: WebSocketMsg = JSON.parse(messageEvent.data);
|
||||
if (webSocketMsg.type === NotifierType.Create) {
|
||||
orders.value.push(webSocketMsg.payload[0]);
|
||||
} else if (webSocketMsg.type === NotifierType.Delete) {
|
||||
orders.value = orders.value.filter((o) => o.id !== webSocketMsg.payload[0].id);
|
||||
} else if (webSocketMsg.type === NotifierType.DeleteAll) {
|
||||
webSocketMsg.payload.forEach((obj) => {
|
||||
orders.value = orders.value.filter((o) => o.id !== obj.id);
|
||||
});
|
||||
}
|
||||
sortOrders();
|
||||
isDisabled.value = false;
|
||||
function setupSSE() {
|
||||
sse.value = new EventSource(API_ENDPOINT_URL + "/orders/sse?stream=sse");
|
||||
sse.value.onmessage = (evt: Event) => {
|
||||
isDisabled.value = true;
|
||||
const messageEvent = evt as MessageEvent;
|
||||
const webSocketMsg: WebSocketMsg = JSON.parse(messageEvent.data);
|
||||
if (webSocketMsg.type === NotifierType.Create) {
|
||||
orders.value.push(webSocketMsg.payload[0]);
|
||||
} else if (webSocketMsg.type === NotifierType.Delete) {
|
||||
orders.value = orders.value.filter((o) => o.id !== webSocketMsg.payload[0].id);
|
||||
} else if (webSocketMsg.type === NotifierType.DeleteAll) {
|
||||
webSocketMsg.payload.forEach((obj) => {
|
||||
orders.value = orders.value.filter((o) => o.id !== obj.id);
|
||||
});
|
||||
}
|
||||
sortOrders();
|
||||
isDisabled.value = false;
|
||||
};
|
||||
}
|
||||
|
||||
function sortOrders() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue