diff --git a/src/lib/components/recipe-details/columns.ts b/src/lib/components/recipe-details/columns.ts index 8a0b59a..54d9fa0 100644 --- a/src/lib/components/recipe-details/columns.ts +++ b/src/lib/components/recipe-details/columns.ts @@ -22,6 +22,7 @@ import { DragHandle } from './recipelist-table.svelte'; import { createRawSnippet } from 'svelte'; import RecipelistMatSelect from './recipelist-mat-select.svelte'; import { recipeDataEvent } from '$lib/core/stores/recipeStore'; +import RecipelistValueEditor from './recipelist-value-editor.svelte'; export type RecipelistMaterial = { id: number; @@ -122,5 +123,13 @@ export const columns: ColumnDef[] = [ ...row.original.values }); } + }, + { + id: 'actions', + cell: ({ row }) => { + return renderComponent(RecipelistValueEditor, { + row_id: row.original.id + }); + } } ]; diff --git a/src/lib/components/recipe-details/recipelist-value-editor.svelte b/src/lib/components/recipe-details/recipelist-value-editor.svelte new file mode 100644 index 0000000..15e4d04 --- /dev/null +++ b/src/lib/components/recipe-details/recipelist-value-editor.svelte @@ -0,0 +1,491 @@ + + + + + + + + + Value Editor + + Make changes to current order of material. Click save when you're done. + + + + +
+
+ + + + + Current Material + + +
+ Material Type: {current_editing_data.mat_type.toString().toUpperCase()} + {#if current_editing_data.mat_type === 'cup'} + + {:else if current_editing_data.mat_type === 'topping'} + + {/if} +
+
+
+
+
+ + + +
+ + + Group + handleToppingGroupChange(v)} + > + + + {selected_category?.otherName ?? selected_category?.name ?? 'Select Category'} + + + + {#each categories as tg} + {tg.otherName ?? tg.name} + {/each} + + + + + + Select + handleToppingListChange(v)} + > + + + {selected_topping_list?.otherName ?? + selected_topping_list?.name ?? + 'Select Topping'} + + + + {#each available_topping_lists as tl} + {tl.otherName ?? tl.name} + {/each} + + + +
+ + + + +
+ Powder + +
+
+ +
+ + + Powder (g) + + onFieldValueChange(['powder', 'gram'], v.currentTarget.value)} + /> + + + Powder (sec) + + onFieldValueChange(['powder', 'time'], v.currentTarget.value)} + /> + +
+
+
+ + + + +
+ Syrup + +
+
+ +
+ + + Syrup (g) + onFieldValueChange(['syrup', 'gram'], v.currentTarget.value)} + /> + + + Syrup (sec) + onFieldValueChange(['syrup', 'time'], v.currentTarget.value)} + /> + +
+
+
+ + + + +
+ Water + +
+
+ +
+ + + Water (Hot) + + onFieldValueChange(['water', 'yield'], v.currentTarget.value)} + /> + + + Water (Cold) + onFieldValueChange(['water', 'cold'], v.currentTarget.value)} + /> + +
+
+
+ + + + +
+ Feed + +
+
+ +
+ + + Feed Pattern + + onFieldValueChange(['feed', 'pattern'], v.currentTarget.value)} + /> + + + Feed Level + + onFieldValueChange(['feed', 'parameter'], v.currentTarget.value)} + /> + +
+
+
+ + + + Stirring time + onFieldValueChange(['stir_time'], v.currentTarget.value)} + /> + +
+
+
+ + + + + + Parameters + diff --git a/src/lib/core/stores/websocketStore.ts b/src/lib/core/stores/websocketStore.ts index 6451c93..2fa53bf 100644 --- a/src/lib/core/stores/websocketStore.ts +++ b/src/lib/core/stores/websocketStore.ts @@ -4,6 +4,7 @@ import { get, writable } from 'svelte/store'; import { handleIncomingMessages } from '../handlers/messageHandler'; import { queue as msgQueue } from '../handlers/ws_messageSender'; import { auth } from '../client/firebase'; +import { addNotification } from './noti'; let socket: WebSocket | null = null; @@ -16,6 +17,7 @@ export function connectToWebsocket() { socket.addEventListener('open', () => { socketStore.set(socket); + addNotification('INFO:Connected!'); // recover messages on connect, flushing while (get(msgQueue).length) {