Vanessa 2025-09-21 22:59:35 +08:00
parent 186c5e29d7
commit dad137f0d9
2 changed files with 47 additions and 40 deletions

View file

@ -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",

View file

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