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;
}