From f529210f6793e317b90b92cb6adcfa48d3807886 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Wed, 6 Mar 2024 16:06:46 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/10519 --- app/src/protyle/render/av/filter.ts | 31 +++++++++++++++-------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/app/src/protyle/render/av/filter.ts b/app/src/protyle/render/av/filter.ts index 531508f40..055367451 100644 --- a/app/src/protyle/render/av/filter.ts +++ b/app/src/protyle/render/av/filter.ts @@ -538,7 +538,7 @@ export const getFiltersHTML = (data: IAVTable) => { const genFilterItem = (filter: IAVFilter) => { let filterHTML = ""; data.columns.find((item) => { - if (item.id === filter.column) { + if (item.id === filter.column && item.type === filter.value.type) { let filterValue = ""; if (filter.operator === "Is empty") { filterValue = ": " + window.siyuan.languages.filterOperatorIsEmpty; @@ -548,7 +548,7 @@ export const getFiltersHTML = (data: IAVTable) => { filterValue = ": " + window.siyuan.languages.unchecked; } else if (filter.operator === "Is true") { filterValue = ": " + window.siyuan.languages.checked; - } else if (filter.value?.date?.content || filter.relativeDate || filter.relativeDate2) { + } else if (["created", "updated", "date"].includes(item.type)) { let dateValue = ""; let dateValue2 = ""; if (filter.relativeDate) { @@ -560,9 +560,9 @@ export const getFiltersHTML = (data: IAVTable) => { ${filter.relativeDate2.direction ? filter.relativeDate2.count : ""} ${window.siyuan.languages[["day", "week", "month", "year"][filter.relativeDate2.unit]]}`; } - } else if (filter.value?.date?.content) { - dateValue = dayjs(filter.value.date.content).format("YYYY-MM-DD"); - dateValue2 = dayjs(filter.value.date.content2).format("YYYY-MM-DD"); + } else if (filter.value && filter.value[item.type as "date"].content) { + dateValue = dayjs(filter.value[item.type as "date"].content).format("YYYY-MM-DD"); + dateValue2 = dayjs(filter.value[item.type as "date"].content2).format("YYYY-MM-DD"); } if (filter.operator === "Is between") { @@ -576,9 +576,9 @@ export const getFiltersHTML = (data: IAVTable) => { } else if ("<=" === filter.operator) { filterValue = ` ≤ ${dateValue}`; } - } else if (filter.value?.mSelect?.length > 0) { + } else if (["mSelect", "select"].includes(item.type)) { let selectContent = ""; - filter.value.mSelect.forEach((item, index) => { + filter.value.mSelect?.forEach((item, index) => { selectContent += item.content; if (index !== filter.value.mSelect.length - 1) { selectContent += ", "; @@ -589,7 +589,7 @@ export const getFiltersHTML = (data: IAVTable) => { } else if (filter.operator === "Does not contains") { filterValue = ` ${window.siyuan.languages.filterOperatorDoesNotContain} ${selectContent}`; } - } else if (filter.value?.number?.content) { + } else if (filter.value.number?.content) { if (["=", "!=", ">", "<"].includes(filter.operator)) { filterValue = ` ${filter.operator} ${filter.value.number.content}`; } else if (">=" === filter.operator) { @@ -597,11 +597,9 @@ export const getFiltersHTML = (data: IAVTable) => { } else if ("<=" === filter.operator) { filterValue = ` ≤ ${filter.value.number.content}`; } - } else if (filter.value?.text?.content || filter.value?.block?.content || filter.value?.url?.content || - filter.value?.phone?.content || filter.value?.email?.content || filter.value?.relation?.contents.length > 0) { - const content = filter.value?.text?.content || filter.value?.block?.content || - filter.value?.url?.content || filter.value?.phone?.content || filter.value?.email?.content || - filter.value?.relation?.contents[0]; + } else if (["text", "block", "url", "phone", "email", "relation"].includes(item.type)) { + const content = filter.value[item.type as "text"].content || + filter.value.relation?.contents[0]; if (["=", "Contains"].includes(filter.operator)) { filterValue = `: ${content}`; } else if (filter.operator === "Does not contains") { @@ -625,11 +623,14 @@ export const getFiltersHTML = (data: IAVTable) => { }; data.filters.forEach((item: IAVFilter) => { - html += ``; + } }); return `