feat: recipe version selector
- fix recipe not show on overview - fix recipe show late after select country - disable queue message on no connection ws - fix infinite topping(s) list if moving between pages Signed-off-by: pakintada@gmail.com <Pakin>
This commit is contained in:
parent
e25881d016
commit
a29ff0be1a
19 changed files with 314 additions and 108 deletions
|
|
@ -1,6 +1,7 @@
|
|||
import { writable } from 'svelte/store';
|
||||
import type { RecipeOverview } from '../../../routes/(authed)/recipe/overview/columns';
|
||||
import type { Material } from '$lib/models/material.model';
|
||||
import type { RecipeVersion } from '$lib/models/recipe_version.model';
|
||||
|
||||
export const recipeData = writable<any>(null);
|
||||
export const recipeLoading = writable(false);
|
||||
|
|
@ -10,8 +11,12 @@ export const recipeStreamMeta = writable<{
|
|||
total_size: number;
|
||||
chunk_size: number;
|
||||
progress: number;
|
||||
version?: string;
|
||||
country?: string;
|
||||
} | null>(null);
|
||||
|
||||
export const currentRecipeVersionsSelector = writable<RecipeVersion[]>([]);
|
||||
|
||||
// from server
|
||||
export const recipeOverviewData = writable<RecipeOverview[] | null>(null);
|
||||
export const materialData = writable<Material | undefined>();
|
||||
|
|
@ -45,41 +50,3 @@ export const materialFromMachineQuery = writable<any>({});
|
|||
|
||||
export const referenceFromPage = writable<string>('');
|
||||
export const currentEditingRecipeProductCode = writable<string>('');
|
||||
|
||||
let worker: Worker | null = null;
|
||||
let initialized = false;
|
||||
|
||||
export function loadRecipe(url: string) {
|
||||
if (initialized) return;
|
||||
initialized = true;
|
||||
|
||||
recipeLoading.set(true);
|
||||
|
||||
worker = new Worker(new URL('../../workers/data.worker.ts', import.meta.url), {
|
||||
type: 'module'
|
||||
});
|
||||
|
||||
worker.onmessage = (e) => {
|
||||
const { type, payload } = e.data;
|
||||
if (type === 'data') {
|
||||
recipeData.set(payload);
|
||||
recipeLoading.set(false);
|
||||
}
|
||||
|
||||
if (type === 'error') {
|
||||
recipeDataError.set(payload);
|
||||
recipeLoading.set(false);
|
||||
}
|
||||
};
|
||||
|
||||
worker.postMessage({ url });
|
||||
}
|
||||
|
||||
export function getWorker() {
|
||||
if (!worker) {
|
||||
worker = new Worker(new URL('../../workers/data.worker.ts', import.meta.url), {
|
||||
type: 'module'
|
||||
});
|
||||
}
|
||||
return worker;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,15 +43,15 @@ export function connectToWebsocket() {
|
|||
}
|
||||
|
||||
// recover messages on connect, flushing
|
||||
while (get(msgQueue).length) {
|
||||
let queue = get(msgQueue);
|
||||
let current = queue.shift();
|
||||
if (current && socket) {
|
||||
socket.send(current);
|
||||
// set next
|
||||
msgQueue.set(queue);
|
||||
}
|
||||
}
|
||||
// while (get(msgQueue).length) {
|
||||
// let queue = get(msgQueue);
|
||||
// let current = queue.shift();
|
||||
// if (current && socket) {
|
||||
// socket.send(current);
|
||||
// // set next
|
||||
// msgQueue.set(queue);
|
||||
// }
|
||||
// }
|
||||
|
||||
// heartbeat 10s
|
||||
setInterval(() => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue