EQMS-1451/1453/1455: reference tweaks for QMS documents (#8083)

* EQMS-1451/1453/1455: reference tweaks for QMS documents

Signed-off-by: Victor Ilyushchenko <alt13ri@gmail.com>

* fmt

Signed-off-by: Victor Ilyushchenko <alt13ri@gmail.com>

---------

Signed-off-by: Victor Ilyushchenko <alt13ri@gmail.com>
This commit is contained in:
Victor Ilyushchenko
2025-02-24 17:13:35 +03:00
committed by GitHub
parent f98152986c
commit c6e752c7aa
22 changed files with 195 additions and 40 deletions
@@ -344,10 +344,30 @@ export async function getReferenceLabel<T extends Doc> (
return label
}
export async function getReferenceObject<T extends Doc> (
objectclass: Ref<Class<T>>,
id: Ref<T>,
doc?: T
): Promise<Doc | undefined> {
const client = getClient()
const hierarchy = client.getHierarchy()
const referenceObjectProvider = hierarchy.classHierarchyMixin(
objectclass as Ref<Class<Doc>>,
view.mixin.ReferenceObjectProvider
)
const referenceObjectProviderFn =
referenceObjectProvider !== undefined ? await getResource(referenceObjectProvider.provider) : undefined
return await referenceObjectProviderFn?.(client, id, doc)
}
export async function getReferenceFromUrl (urlString: string): Promise<ReferenceNodeProps | undefined> {
const target = await getTargetObjectFromUrl(urlString)
let target = await getTargetObjectFromUrl(urlString)
if (target === undefined) return
target = (await getReferenceObject(target._class, target._id)) ?? target
const label = await getReferenceLabel(target._class, target._id)
if (label === '') return