|
|
|
@ -10,10 +10,10 @@ |
|
|
|
import Notes from '../notes/RelatedNotes.svelte'; |
|
|
|
import Notes from '../notes/RelatedNotes.svelte'; |
|
|
|
import Tags from '../tags/TagList.svelte'; |
|
|
|
import Tags from '../tags/TagList.svelte'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let loc_data = $derived.by(loadLocation); |
|
|
|
let loc_data = $derived.by(loadLocation); |
|
|
|
let item = $state(null); |
|
|
|
let item = $state(null); |
|
|
|
let location = $state(null); |
|
|
|
let location = $state(null); |
|
|
|
|
|
|
|
let draggedItem = $state(null) |
|
|
|
|
|
|
|
|
|
|
|
$effect(() => { |
|
|
|
$effect(() => { |
|
|
|
// This effect runs whenever `location` changes |
|
|
|
// This effect runs whenever `location` changes |
|
|
|
@ -22,6 +22,19 @@ |
|
|
|
let properties = $state(null); |
|
|
|
let properties = $state(null); |
|
|
|
let top_level = $state(null); |
|
|
|
let top_level = $state(null); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async function move_dragged_to(new_loc){ |
|
|
|
|
|
|
|
const data = { item : draggedItem, target: new_loc }; |
|
|
|
|
|
|
|
const url = api('stock/move_item'); |
|
|
|
|
|
|
|
const res = await fetch(url,{ |
|
|
|
|
|
|
|
credentials : 'include', |
|
|
|
|
|
|
|
method : 'PATCH', |
|
|
|
|
|
|
|
body : JSON.stringify(data) |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
if (res.ok){ |
|
|
|
|
|
|
|
yikes(); |
|
|
|
|
|
|
|
} else error(res); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
async function loadLocation(){ |
|
|
|
async function loadLocation(){ |
|
|
|
if (!location) return null; |
|
|
|
if (!location) return null; |
|
|
|
const url = api(`stock/location/${location.id}`) |
|
|
|
const url = api(`stock/location/${location.id}`) |
|
|
|
@ -76,7 +89,7 @@ |
|
|
|
{#each top_level as realm,idx} |
|
|
|
{#each top_level as realm,idx} |
|
|
|
<h3>{realm.name}</h3> |
|
|
|
<h3>{realm.name}</h3> |
|
|
|
{#if realm.locations} |
|
|
|
{#if realm.locations} |
|
|
|
<Locations locations={realm.locations} parent={realm} bind:selected={location} /> |
|
|
|
<Locations locations={realm.locations} bind:selected={location} {move_dragged_to} /> |
|
|
|
{/if} |
|
|
|
{/if} |
|
|
|
{/each} |
|
|
|
{/each} |
|
|
|
{/if} |
|
|
|
{/if} |
|
|
|
@ -88,7 +101,7 @@ |
|
|
|
{#if location} |
|
|
|
{#if location} |
|
|
|
<h3>{location.name}</h3> |
|
|
|
<h3>{location.name}</h3> |
|
|
|
{/if} |
|
|
|
{/if} |
|
|
|
<ItemList items={data?.items.sort((a,b) => a.code.localeCompare(b.code))} bind:selected={item} /> |
|
|
|
<ItemList items={data?.items.sort((a,b) => a.code.localeCompare(b.code))} bind:selected={item} drag_start={item => draggedItem = item} /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="properties"> |
|
|
|
<div class="properties"> |
|
|
|
<ItemProps {item} {properties} /> |
|
|
|
<ItemProps {item} {properties} /> |
|
|
|
|