diff --git a/app/src/protyle/render/av/col.ts b/app/src/protyle/render/av/col.ts index 8d07859d5..17bce4717 100644 --- a/app/src/protyle/render/av/col.ts +++ b/app/src/protyle/render/av/col.ts @@ -784,45 +784,43 @@ export const showColMenu = (protyle: IProtyle, blockElement: Element, cellElemen // 行号类型不参与筛选和排序 if (type !== "lineNumber") { - if (type !== "mAsset") { - menu.addItem({ - id: "filter", - icon: "iconFilter", - label: window.siyuan.languages.filter, - click() { - fetchPost("/api/av/renderAttributeView", { - id: avID, - }, (response) => { - const avData = response.data as IAV; - let filter: IAVFilter; - avData.view.filters.find((item) => { - if (item.column === colId && item.value.type === type) { - filter = item; - return true; - } - }); - let empty = false; - if (!filter) { - empty = true; - filter = { - column: colId, - operator: getDefaultOperatorByType(type), - value: genCellValue(type, ""), - }; - avData.view.filters.push(filter); + menu.addItem({ + id: "filter", + icon: "iconFilter", + label: window.siyuan.languages.filter, + click() { + fetchPost("/api/av/renderAttributeView", { + id: avID, + }, (response) => { + const avData = response.data as IAV; + let filter: IAVFilter; + avData.view.filters.find((item) => { + if (item.column === colId && item.value.type === type) { + filter = item; + return true; } - setFilter({ - empty, - filter, - protyle, - data: avData, - blockElement: blockElement, - target: blockElement.querySelector(`.av__row--header .av__cell[data-col-id="${colId}"]`), - }); }); - } - }); - } + let empty = false; + if (!filter) { + empty = true; + filter = { + column: colId, + operator: getDefaultOperatorByType(type), + value: genCellValue(type, ""), + }; + avData.view.filters.push(filter); + } + setFilter({ + empty, + filter, + protyle, + data: avData, + blockElement: blockElement, + target: blockElement.querySelector(`.av__row--header .av__cell[data-col-id="${colId}"]`), + }); + }); + } + }); menu.addItem({ id: "asc", icon: "iconUp", diff --git a/app/src/protyle/render/av/filter.ts b/app/src/protyle/render/av/filter.ts index 166240bbb..bd0035c91 100644 --- a/app/src/protyle/render/av/filter.ts +++ b/app/src/protyle/render/av/filter.ts @@ -140,7 +140,7 @@ export const setFilter = async (options: { newFilter.relativeDate = null; newFilter.relativeDate2 = null; } - } else if (["text", "url", "block", "email", "phone", "template", "relation", "number"].includes(filterValue.type)) { + } else if (["text", "mAsset", "url", "block", "email", "phone", "template", "relation", "number"].includes(filterValue.type)) { newValue = genCellValue(filterValue.type, textElements[0].value); } else if (filterValue.type === "checkbox") { newValue = genCellValue(filterValue.type, { @@ -429,6 +429,8 @@ export const setFilter = async (options: { if (filterValue) { if (filterValue.type === "relation") { value = filterValue.relation.blockIDs[0] || ""; + } else if (filterValue.type === "mAsset") { + value = filterValue.mAsset[0]?.content || ""; } else { value = filterValue[filterValue.type as "text"].content || ""; } @@ -732,8 +734,15 @@ export const getFiltersHTML = (data: IAV) => { } else if ("<=" === filter.operator) { filterText = ` ${filterText}≤ ${filterValue.number.content}`; } - } else if (["text", "block", "url", "phone", "email", "relation", "template"].includes(filterValue.type) && filterValue[filterValue.type as "text"]) { - const content = filterValue[filterValue.type as "text"].content || filterValue.relation?.blockIDs[0] || ""; + } else if (["text", "block", "url", "mAsset", "phone", "email", "relation", "template"].includes(filterValue.type) && filterValue[filterValue.type as "text"]) { + let content: string; + if (filterValue.type === "relation") { + content = filterValue.relation.blockIDs[0] || ""; + } else if (filterValue.type === "mAsset") { + content = filterValue.mAsset[0]?.content || ""; + } else { + content = filterValue[filterValue.type as "text"].content || ""; + } if (content) { if (["=", "Contains"].includes(filter.operator)) { filterText = `: ${filterText}${content}`;