diff --git a/app/src/protyle/render/av/blockAttr.ts b/app/src/protyle/render/av/blockAttr.ts index 9bb0fb55f..7b64b5222 100644 --- a/app/src/protyle/render/av/blockAttr.ts +++ b/app/src/protyle/render/av/blockAttr.ts @@ -12,7 +12,11 @@ const genAVRollupHTML = (value: IAVCellValue) => { let html = ""; switch (value.type) { case "block": - html = value.block.content; + if (value?.isDetached) { + html = `${value.block?.content || "Untitled"}`; + } else { + html = `${value.block?.content || "Untitled"}`; + } break; case "text": html = value.text.content; @@ -109,19 +113,25 @@ export const genAVValueHTML = (value: IAVCellValue) => { `; break; case "relation": - value.relation?.blockIDs?.forEach((item, index) => { - html += `${value.relation?.contents[index] || "Untitled"}`; + value?.relation?.contents?.forEach((item) => { + const rollupText = genAVRollupHTML(item); + if (rollupText) { + html += rollupText + ", "; + } }); + if (html && html.endsWith(", ")) { + html = html.substring(0, html.length - 7); + } break; case "rollup": value?.rollup?.contents?.forEach((item) => { const rollupText = ["select", "mSelect", "mAsset", "checkbox", "relation"].includes(item.type) ? genAVValueHTML(item) : genAVRollupHTML(item); if (rollupText) { - html += rollupText + ", "; + html += rollupText + ", "; } }); - if (html && html.endsWith(", ")) { - html = html.substring(0, html.length - 2); + if (html && html.endsWith(", ")) { + html = html.substring(0, html.length - 7); } break; }