stash
This commit is contained in:
parent
4c9e8f942e
commit
23185e1721
13 changed files with 365 additions and 107 deletions
|
|
@ -27,7 +27,7 @@
|
|||
<tbody>
|
||||
<tr v-for="location in storage_locations" :key="location.id">
|
||||
<td>
|
||||
<router-link :to="`/storage-locations/${location.id}`">{{ location.name }}</router-link>
|
||||
<router-link :to="locationRoute(location)">{{ location.name }}</router-link>
|
||||
</td>
|
||||
<td class="d-none d-md-table-cell">
|
||||
<span class="text-muted">{{ location.path }}</span>
|
||||
|
|
@ -37,10 +37,10 @@
|
|||
<span class="text-muted" v-else>-</span>
|
||||
</td>
|
||||
<td class="table-action">
|
||||
<router-link :to="`/storage-locations/${location.id}/edit`">
|
||||
<router-link :to="`${locationRoute(location)}/edit`">
|
||||
<b-icon-pencil-square></b-icon-pencil-square>
|
||||
</router-link>
|
||||
<a :href="`/storage-locations/${location.id}/delete`" @click.prevent="deleteStorageLocation(location)">
|
||||
<a :href="`${locationRoute(location)}/delete`" @click.prevent="deleteStorageLocation(location)">
|
||||
<b-icon-trash></b-icon-trash>
|
||||
</a>
|
||||
<router-link v-if="shortIdLink(location)" :to="shortIdLink(location)">
|
||||
|
|
@ -60,7 +60,7 @@
|
|||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title mb-0">
|
||||
<router-link :to="`/storage-locations/${location.id}`">
|
||||
<router-link :to="locationRoute(location)">
|
||||
{{ location.name }}
|
||||
</router-link>
|
||||
</h5>
|
||||
|
|
@ -75,7 +75,7 @@
|
|||
<button class="btn btn-danger btn-sm"
|
||||
@click="deleteStorageLocation(location.id)">Delete
|
||||
</button>
|
||||
<router-link :to="`/storage-locations/${location.id}/edit`"
|
||||
<router-link :to="`${locationRoute(location)}/edit`"
|
||||
class="btn btn-primary btn-sm">Edit
|
||||
</router-link>
|
||||
<router-link v-if="shortIdLink(location)" :to="shortIdLink(location)"
|
||||
|
|
@ -109,7 +109,7 @@
|
|||
import {mapActions, mapGetters, mapState} from "vuex";
|
||||
import * as BIcons from "bootstrap-icons-vue";
|
||||
import BaseLayout from "@/components/BaseLayout.vue";
|
||||
import {shortenedRoute} from "@/router";
|
||||
import {shortenedRoute, encodeHandleForUrl} from "@/router";
|
||||
|
||||
export default {
|
||||
name: "StorageLocation",
|
||||
|
|
@ -123,12 +123,25 @@ export default {
|
|||
...BIcons
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(["identityIdByHandle"]),
|
||||
...mapGetters(["identityIdByHandle", "groupIdByHandle"]),
|
||||
...mapState(["user", "storage_locations"]),
|
||||
},
|
||||
methods: {
|
||||
...mapActions(["fetchStorageLocations", "deleteStorageLocation", "fetchIdMap"]),
|
||||
// This list is always the caller's own personal locations (fetchStorageLocations has no
|
||||
// group content), so the owner_group branches below are currently unreachable here - kept
|
||||
// for parity with Inventory.vue's shortIdLink/printLinkFor in case that ever changes.
|
||||
locationRoute(location) {
|
||||
return `/storage-locations/${encodeHandleForUrl(location.owner_group || location.owner)}/${location.id}`
|
||||
},
|
||||
shortIdLink(location) {
|
||||
if (location.owner_group) {
|
||||
const owner_group_id = this.groupIdByHandle[location.owner_group]
|
||||
if (owner_group_id === undefined) return null
|
||||
return shortenedRoute({
|
||||
kind: 'group_storage_location', owner_group_id, storage_location_id: location.id
|
||||
})
|
||||
}
|
||||
const owner_identity_id = this.identityIdByHandle[location.owner]
|
||||
if (owner_identity_id === undefined) return null
|
||||
return shortenedRoute({kind: 'storage_location', owner_identity_id, storage_location_id: location.id})
|
||||
|
|
@ -136,7 +149,8 @@ export default {
|
|||
// Routes to Print.vue with this location's raw identity, same shape as Inventory.vue's
|
||||
// printLinkFor. See docs/implementation.md#print-link-shape-for-storage-locations.
|
||||
printLinkFor(location) {
|
||||
return {path: '/print', query: {kind: 'storage-location', userHandle: location.owner, location: location.id}}
|
||||
const userHandle = location.owner_group || location.owner
|
||||
return {path: '/print', query: {kind: 'storage-location', userHandle, location: location.id}}
|
||||
},
|
||||
},
|
||||
async mounted() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue