mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-09-22 00:20:47 +02:00
This commit is contained in:
parent
186c5e29d7
commit
dad137f0d9
2 changed files with 47 additions and 40 deletions
|
@ -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",
|
||||
|
|
|
@ -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}`;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue