mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-22 09:30:14 +01:00
This commit is contained in:
parent
714557550c
commit
d45421572e
2 changed files with 18 additions and 16 deletions
|
|
@ -11,6 +11,7 @@ import {openMenuPanel} from "./openMenuPanel";
|
|||
import {fetchSyncPost} from "../../../util/fetch";
|
||||
import {showMessage} from "../../../dialog/message";
|
||||
import {upDownHint} from "../../../util/upDownHint";
|
||||
import {getFieldsByData} from "./view";
|
||||
|
||||
export const getDefaultOperatorByType = (type: TAVCol) => {
|
||||
if (["select", "number", "date", "created", "updated"].includes(type)) {
|
||||
|
|
@ -190,7 +191,7 @@ export const setFilter = async (options: {
|
|||
}]);
|
||||
const menuElement = hasClosestByClassName(options.target, "b3-menu");
|
||||
if (menuElement) {
|
||||
menuElement.innerHTML = getFiltersHTML(options.data.view);
|
||||
menuElement.innerHTML = getFiltersHTML(options.data);
|
||||
}
|
||||
});
|
||||
if (menu.isOpen) {
|
||||
|
|
@ -198,7 +199,8 @@ export const setFilter = async (options: {
|
|||
}
|
||||
let selectHTML = "";
|
||||
let colData: IAVColumn;
|
||||
options.data.view.columns.find((column) => {
|
||||
const fields = getFieldsByData(options.data)
|
||||
fields.find((column) => {
|
||||
if (column.id === options.filter.column) {
|
||||
colData = column;
|
||||
return true;
|
||||
|
|
@ -217,7 +219,7 @@ export const setFilter = async (options: {
|
|||
return;
|
||||
}
|
||||
let targetAVId = "";
|
||||
options.data.view.columns.find((column) => {
|
||||
fields.find((column) => {
|
||||
if (column.id === colData.rollup.relationKeyID) {
|
||||
targetAVId = column.relation.avID;
|
||||
return true;
|
||||
|
|
@ -499,7 +501,7 @@ export const setFilter = async (options: {
|
|||
}]);
|
||||
const menuElement = hasClosestByClassName(options.target, "b3-menu");
|
||||
if (menuElement) {
|
||||
menuElement.innerHTML = getFiltersHTML(options.data.view);
|
||||
menuElement.innerHTML = getFiltersHTML(options.data);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -571,7 +573,7 @@ export const addFilter = (options: {
|
|||
blockElement: Element
|
||||
}) => {
|
||||
const menu = new Menu("av-add-filter");
|
||||
options.data.view.columns.forEach((column) => {
|
||||
getFieldsByData(options.data).forEach((column) => {
|
||||
let filter: IAVFilter;
|
||||
options.data.view.filters.find((item) => {
|
||||
if (item.column === column.id && item.value.type === column.type) {
|
||||
|
|
@ -592,7 +594,7 @@ export const addFilter = (options: {
|
|||
value: cellValue,
|
||||
};
|
||||
options.data.view.filters.push(filter);
|
||||
options.menuElement.innerHTML = getFiltersHTML(options.data.view);
|
||||
options.menuElement.innerHTML = getFiltersHTML(options.data);
|
||||
setPosition(options.menuElement, options.tabRect.right - options.menuElement.clientWidth, options.tabRect.bottom, options.tabRect.height);
|
||||
const filterElement = options.menuElement.querySelector(`[data-id="${column.id}"] .b3-chip`) as HTMLElement;
|
||||
setFilter({
|
||||
|
|
@ -613,11 +615,12 @@ export const addFilter = (options: {
|
|||
});
|
||||
};
|
||||
|
||||
export const getFiltersHTML = (data: IAVTable) => {
|
||||
export const getFiltersHTML = (data: IAV) => {
|
||||
let html = "";
|
||||
const fields = getFieldsByData(data);
|
||||
const genFilterItem = (filter: IAVFilter) => {
|
||||
let filterHTML = "";
|
||||
data.columns.find((item) => {
|
||||
fields.find((item) => {
|
||||
if (item.id === filter.column && item.type === filter.value.type) {
|
||||
let filterText = "";
|
||||
const filterValue = item.type === "rollup" ? (filter.value.rollup?.contents?.length > 0 ? filter.value.rollup.contents[0] : {type: "rollup"} as IAVCellValue) : filter.value;
|
||||
|
|
@ -717,8 +720,7 @@ export const getFiltersHTML = (data: IAVTable) => {
|
|||
});
|
||||
return filterHTML;
|
||||
};
|
||||
|
||||
data.filters.forEach((item: IAVFilter) => {
|
||||
data.view.filters.forEach((item: IAVFilter) => {
|
||||
const filterHTML = genFilterItem(item);
|
||||
if (filterHTML) {
|
||||
html += `<button class="b3-menu__item" draggable="true" data-id="${item.column}" data-filter-type="${item.value.type}">
|
||||
|
|
@ -737,7 +739,7 @@ export const getFiltersHTML = (data: IAVTable) => {
|
|||
</button>
|
||||
<button class="b3-menu__separator"></button>
|
||||
${html}
|
||||
<button class="b3-menu__item${data.filters.length === data.columns.length ? " fn__none" : ""}" data-type="addFilter">
|
||||
<button class="b3-menu__item${data.view.filters.length === fields.length ? " fn__none" : ""}" data-type="addFilter">
|
||||
<svg class="b3-menu__icon"><use xlink:href="#iconAdd"></use></svg>
|
||||
<span class="b3-menu__label">${window.siyuan.languages.addFilter}</span>
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ export const openMenuPanel = (options: {
|
|||
} else if (options.type === "switcher") {
|
||||
html = getSwitcherHTML(data.views, data.viewID);
|
||||
} else if (options.type === "filters") {
|
||||
html = getFiltersHTML(data.view);
|
||||
html = getFiltersHTML(data);
|
||||
} else if (options.type === "select") {
|
||||
html = getSelectHTML(data.view, options.cellElements, true);
|
||||
} else if (options.type === "asset") {
|
||||
|
|
@ -285,7 +285,7 @@ export const openMenuPanel = (options: {
|
|||
data: oldData,
|
||||
blockID
|
||||
}]);
|
||||
menuElement.innerHTML = getFiltersHTML(data.view);
|
||||
menuElement.innerHTML = getFiltersHTML(data);
|
||||
return;
|
||||
}
|
||||
if (targetElement.querySelector('[data-type="av-view-edit"]')) {
|
||||
|
|
@ -621,7 +621,7 @@ export const openMenuPanel = (options: {
|
|||
event.stopPropagation();
|
||||
break;
|
||||
} else if (type === "goFilters") {
|
||||
menuElement.innerHTML = getFiltersHTML(data.view);
|
||||
menuElement.innerHTML = getFiltersHTML(data);
|
||||
setPosition(menuElement, tabRect.right - menuElement.clientWidth, tabRect.bottom, tabRect.height);
|
||||
window.siyuan.menus.menu.remove();
|
||||
event.preventDefault();
|
||||
|
|
@ -640,7 +640,7 @@ export const openMenuPanel = (options: {
|
|||
blockID
|
||||
}]);
|
||||
data.view.filters = [];
|
||||
menuElement.innerHTML = getFiltersHTML(data.view);
|
||||
menuElement.innerHTML = getFiltersHTML(data);
|
||||
setPosition(menuElement, tabRect.right - menuElement.clientWidth, tabRect.bottom, tabRect.height);
|
||||
window.siyuan.menus.menu.remove();
|
||||
event.preventDefault();
|
||||
|
|
@ -679,7 +679,7 @@ export const openMenuPanel = (options: {
|
|||
data: oldFilters,
|
||||
blockID
|
||||
}]);
|
||||
menuElement.innerHTML = getFiltersHTML(data.view);
|
||||
menuElement.innerHTML = getFiltersHTML(data);
|
||||
setPosition(menuElement, tabRect.right - menuElement.clientWidth, tabRect.bottom, tabRect.height);
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue