3c15e888be
* feat(gendo): scaffolding * feat(gendo): wip * feat(gendo): wip * feat(gendo): wip * feat(gendo): wip * feat(gendo): wip * feat(gendo): it's alive * feat(gendo): wip * feat(gendo): blobifies responses to make gergo happy * feat(gendo): ratelimiting + lints * feat(gendo): prettier fix * feat(gendo): last fixes * feat(gendo): clarifications * feat(gendo): helm base * feat(dataviewer): raw first pass * feat(dataviewer): some styling * feat(dataviewer): objects in new + fixes * feat(dataviewer): resources support for object cards * feat(dataviewer): adds selected object support * feat(dataviewer): removes button from main sidebar, integrates with explorer * feat(dataviewer): some value handling fixes * feat(dataviewer): linting fixes * feat(dataviewer): show raw viewer within Scene Explorer * feat(dataviewer): Update copy and labels * feat(dataviewer): Improve row borders and divider * Apply suggestions from code review * feat(dataviewer): Make sure arrow doesn't shrink --------- Co-authored-by: andrewwallacespeckle <139135120+andrewwallacespeckle@users.noreply.github.com> Co-authored-by: Benjamin Ottensten <benjamin.ottensten@gmail.com>
62 lines
1.6 KiB
Vue
62 lines
1.6 KiB
Vue
<template>
|
|
<div>
|
|
<CommonLoadingBar v-show="loading" :loading="loading" />
|
|
<div class="space-y-1">
|
|
<div v-for="kvp in limitedKvps" :key="kvp.key">
|
|
<ViewerDataviewerRow :prop="kvp" />
|
|
</div>
|
|
<div v-if="limit < kvps.length">
|
|
<FormButton text full-width size="xs" @click="limit += 20">
|
|
show more
|
|
</FormButton>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script setup lang="ts">
|
|
import { CommonLoadingBar } from '@speckle/ui-components'
|
|
import { useLazyQuery } from '@vue/apollo-composable'
|
|
import { useInjectedViewerState } from '~/lib/viewer/composables/setup'
|
|
import { viewerRawObjectQuery } from '~/lib/viewer/graphql/queries'
|
|
|
|
const { projectId } = useInjectedViewerState()
|
|
|
|
const props = defineProps<{
|
|
object: Record<string, unknown>
|
|
}>()
|
|
|
|
const { result, loading, load } = useLazyQuery(viewerRawObjectQuery, () => ({
|
|
streamId: projectId.value,
|
|
objectId: props.object['referencedId'] as string
|
|
}))
|
|
|
|
if (props.object['referencedId']) {
|
|
load()
|
|
}
|
|
|
|
const kvps = computed(() => {
|
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
const obj = (result.value?.stream?.object?.data || props.object) as Record<
|
|
string,
|
|
unknown
|
|
>
|
|
const keys = Object.keys(obj)
|
|
const localKvps = []
|
|
for (const key of keys) {
|
|
// if (!obj[key]) continue // TODO: deal with null/undef
|
|
const value = obj[key] || obj[key] === 0 ? obj[key] : 'null'
|
|
localKvps.push({
|
|
key,
|
|
value,
|
|
type: Array.isArray(value) ? 'array' : typeof value
|
|
})
|
|
}
|
|
return localKvps
|
|
})
|
|
|
|
const limit = ref(20)
|
|
const limitedKvps = computed(() => {
|
|
return kvps.value.slice(0, limit.value)
|
|
})
|
|
</script>
|