fetch identification in Address.vue
parent
b051529da6
commit
fef616a92f
|
@ -2,14 +2,19 @@
|
|||
<div class="address">
|
||||
<a v-if="isFile" :href="`/api/raw/${address}`">{{ address }}</a>
|
||||
<template v-else>
|
||||
<router-link v-if="link" :to="{name: 'Inspect', params: {address}}">{{ address }}</router-link>
|
||||
<template v-else>{{ address }}</template>
|
||||
<router-link v-if="link" :to="{ name: 'Inspect', params: { address } }">
|
||||
{{ inferredId || address }}
|
||||
</router-link>
|
||||
<template v-else>{{ inferredId || address }}</template>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import {defineComponent} from "vue";
|
||||
import { ListingResult } from "@/types/base";
|
||||
import { fetcher } from "@/utils";
|
||||
import useSWRV from "swrv";
|
||||
import { computed, defineComponent } from "vue";
|
||||
|
||||
export default defineComponent({
|
||||
name: "Address",
|
||||
|
@ -17,13 +22,51 @@ export default defineComponent({
|
|||
address: String,
|
||||
link: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
default: false,
|
||||
},
|
||||
isFile: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
default: false,
|
||||
},
|
||||
resolve: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
}
|
||||
}
|
||||
},
|
||||
setup(props) {
|
||||
const { data: addressEntries } = useSWRV<ListingResult, unknown>(
|
||||
() => `/api/obj/${props.address}`,
|
||||
fetcher
|
||||
);
|
||||
|
||||
const { data: typeId } = useSWRV<ListingResult, unknown>(() => {
|
||||
if (!props.isFile && props.resolve) {
|
||||
const entries = Object.values(addressEntries?.value || {});
|
||||
const isEntry = entries.find(
|
||||
(entry) => entry.entity === props.address && entry.attribute === "IS"
|
||||
);
|
||||
if (isEntry) {
|
||||
return `/api/obj?query=(matches "${isEntry.value.c}" "TYPE_ID" ?)`;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}, fetcher);
|
||||
|
||||
const inferredId = computed(() => {
|
||||
const typeIdValue = Object.values(typeId?.value || {})[0];
|
||||
if (typeIdValue) {
|
||||
return Object.values(addressEntries?.value || []).find(
|
||||
(entry) =>
|
||||
entry.entity === props.address &&
|
||||
entry.attribute === typeIdValue.value.c
|
||||
)?.value.c;
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
inferredId,
|
||||
};
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="inspect">
|
||||
<h2>
|
||||
<Address :address="address" :is-file="backlinks.some(([_, e]) => e.attribute === 'FILE_IS')"/>
|
||||
<Address :address="address" :is-file="backlinks.some(([_, e]) => e.attribute === 'FILE_IS')" :resolve="false"/>
|
||||
</h2>
|
||||
<div v-if="!error">
|
||||
<template v-if="attributes.length">
|
||||
|
|
Loading…
Reference in New Issue