mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-20 08:30:12 +01:00
This commit is contained in:
parent
2da549fac0
commit
39408525a4
3 changed files with 19 additions and 9 deletions
|
|
@ -131,7 +131,7 @@ export const setFilter = async (options: {
|
||||||
|
|
||||||
let isSame = false;
|
let isSame = false;
|
||||||
options.data.view.filters.find((filter, index) => {
|
options.data.view.filters.find((filter, index) => {
|
||||||
if (filter.column === options.filter.column) {
|
if (filter.column === options.filter.column && filter.value.type === options.filter.value.type) {
|
||||||
if (filter.type && filter.type === "checkbox") {
|
if (filter.type && filter.type === "checkbox") {
|
||||||
hasMatch = true;
|
hasMatch = true;
|
||||||
delete filter.type;
|
delete filter.type;
|
||||||
|
|
@ -205,7 +205,7 @@ export const setFilter = async (options: {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
options.data.view.filters.find(item => {
|
options.data.view.filters.find(item => {
|
||||||
if (item.column === colData.id && item.type) {
|
if (item.column === colData.id && item.type === "rollup") {
|
||||||
item.operator = getDefaultOperatorByType(filterType);
|
item.operator = getDefaultOperatorByType(filterType);
|
||||||
item.value = genCellValue(filterType, "");
|
item.value = genCellValue(filterType, "");
|
||||||
delete item.type;
|
delete item.type;
|
||||||
|
|
@ -594,7 +594,7 @@ export const getFiltersHTML = (data: IAVTable) => {
|
||||||
} else if (filter.operator === "!=") {
|
} else if (filter.operator === "!=") {
|
||||||
filterValue = ` ${window.siyuan.languages.filterOperatorIsNot} ${selectContent}`;
|
filterValue = ` ${window.siyuan.languages.filterOperatorIsNot} ${selectContent}`;
|
||||||
}
|
}
|
||||||
} else if (item.type === "number" && filter.value.number) {
|
} else if (item.type === "number" && filter.value.number && filter.value.number.isNotEmpty) {
|
||||||
if (["=", "!=", ">", "<"].includes(filter.operator)) {
|
if (["=", "!=", ">", "<"].includes(filter.operator)) {
|
||||||
filterValue = ` ${filter.operator} ${filter.value.number.content}`;
|
filterValue = ` ${filter.operator} ${filter.value.number.content}`;
|
||||||
} else if (">=" === filter.operator) {
|
} else if (">=" === filter.operator) {
|
||||||
|
|
@ -617,7 +617,7 @@ export const getFiltersHTML = (data: IAVTable) => {
|
||||||
filterValue = ` ${window.siyuan.languages.filterOperatorEndsWith} ${content}`;
|
filterValue = ` ${window.siyuan.languages.filterOperatorEndsWith} ${content}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
filterHTML += `<span data-type="setFilter" class="b3-chip b3-chip--primary${filterValue ? " b3-chip--primary" : ""}">
|
filterHTML += `<span data-type="setFilter" class="b3-chip${filterValue ? " b3-chip--primary" : ""}">
|
||||||
${item.icon ? unicode2Emoji(item.icon, "icon", true) : `<svg class="icon"><use xlink:href="#${getColIconByType(item.type)}"></use></svg>`}
|
${item.icon ? unicode2Emoji(item.icon, "icon", true) : `<svg class="icon"><use xlink:href="#${getColIconByType(item.type)}"></use></svg>`}
|
||||||
<span class="fn__ellipsis">${item.name}${filterValue}</span>
|
<span class="fn__ellipsis">${item.name}${filterValue}</span>
|
||||||
</span>`;
|
</span>`;
|
||||||
|
|
@ -630,7 +630,7 @@ export const getFiltersHTML = (data: IAVTable) => {
|
||||||
data.filters.forEach((item: IAVFilter) => {
|
data.filters.forEach((item: IAVFilter) => {
|
||||||
const filterHTML = genFilterItem(item);
|
const filterHTML = genFilterItem(item);
|
||||||
if (filterHTML) {
|
if (filterHTML) {
|
||||||
html += `<button class="b3-menu__item" draggable="true" data-id="${item.column}">
|
html += `<button class="b3-menu__item" draggable="true" data-id="${item.column}" data-filter-type="${item.value.type}">
|
||||||
<svg class="b3-menu__icon fn__grab"><use xlink:href="#iconDrag"></use></svg>
|
<svg class="b3-menu__icon fn__grab"><use xlink:href="#iconDrag"></use></svg>
|
||||||
<div class="fn__flex-1">${filterHTML}</div>
|
<div class="fn__flex-1">${filterHTML}</div>
|
||||||
<svg class="b3-menu__action" data-type="removeFilter"><use xlink:href="#iconTrashcan"></use></svg>
|
<svg class="b3-menu__action" data-type="removeFilter"><use xlink:href="#iconTrashcan"></use></svg>
|
||||||
|
|
|
||||||
|
|
@ -572,7 +572,7 @@ export const openMenuPanel = (options: {
|
||||||
window.siyuan.menus.menu.remove();
|
window.siyuan.menus.menu.remove();
|
||||||
const oldFilters = Object.assign([], data.view.filters);
|
const oldFilters = Object.assign([], data.view.filters);
|
||||||
data.view.filters.find((item: IAVFilter, index: number) => {
|
data.view.filters.find((item: IAVFilter, index: number) => {
|
||||||
if (item.column === target.parentElement.dataset.id) {
|
if (item.column === target.parentElement.dataset.id && item.value.type === target.parentElement.dataset.filterType) {
|
||||||
data.view.filters.splice(index, 1);
|
data.view.filters.splice(index, 1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -595,7 +595,7 @@ export const openMenuPanel = (options: {
|
||||||
break;
|
break;
|
||||||
} else if (type === "setFilter") {
|
} else if (type === "setFilter") {
|
||||||
data.view.filters.find((item: IAVFilter) => {
|
data.view.filters.find((item: IAVFilter) => {
|
||||||
if (item.column === target.parentElement.parentElement.dataset.id) {
|
if (item.column === target.parentElement.parentElement.dataset.id && item.value.type === target.parentElement.parentElement.dataset.filterType) {
|
||||||
setFilter({
|
setFilter({
|
||||||
filter: item,
|
filter: item,
|
||||||
protyle: options.protyle,
|
protyle: options.protyle,
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,16 @@ export const avRender = (element: Element, protyle: IProtyle, cb?: () => void, v
|
||||||
let pinMaxIndex = -1;
|
let pinMaxIndex = -1;
|
||||||
let indexWidth = 0;
|
let indexWidth = 0;
|
||||||
const eWidth = e.clientWidth;
|
const eWidth = e.clientWidth;
|
||||||
|
let hasFilter = false;
|
||||||
data.columns.forEach((item, index) => {
|
data.columns.forEach((item, index) => {
|
||||||
|
if (!hasFilter) {
|
||||||
|
data.filters.find(filterItem => {
|
||||||
|
if (filterItem.value.type === item.type && item.id === filterItem.column) {
|
||||||
|
hasFilter = true
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
if (!item.hidden) {
|
if (!item.hidden) {
|
||||||
if (item.pin) {
|
if (item.pin) {
|
||||||
pinIndex = index;
|
pinIndex = index;
|
||||||
|
|
@ -160,6 +169,7 @@ ${cell.color ? `color:${cell.color};` : ""}">${renderCell(cell.value)}</div>`;
|
||||||
viewData = item;
|
viewData = item;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
e.firstElementChild.outerHTML = `<div class="av__container" style="--av-background:${e.style.backgroundColor || "var(--b3-theme-background)"}">
|
e.firstElementChild.outerHTML = `<div class="av__container" style="--av-background:${e.style.backgroundColor || "var(--b3-theme-background)"}">
|
||||||
<div class="av__header">
|
<div class="av__header">
|
||||||
<div class="fn__flex av__views">
|
<div class="fn__flex av__views">
|
||||||
|
|
@ -178,7 +188,7 @@ ${cell.color ? `color:${cell.color};` : ""}">${renderCell(cell.value)}</div>`;
|
||||||
<small>${response.data.views.length}</small>
|
<small>${response.data.views.length}</small>
|
||||||
</span>
|
</span>
|
||||||
<div class="fn__space"></div>
|
<div class="fn__space"></div>
|
||||||
<span data-type="av-filter" class="block__icon${data.filters.length > 0 ? " block__icon--active" : ""}">
|
<span data-type="av-filter" class="block__icon${hasFilter ? " block__icon--active" : ""}">
|
||||||
<svg><use xlink:href="#iconFilter"></use></svg>
|
<svg><use xlink:href="#iconFilter"></use></svg>
|
||||||
</span>
|
</span>
|
||||||
<div class="fn__space"></div>
|
<div class="fn__space"></div>
|
||||||
|
|
@ -302,7 +312,7 @@ export const refreshAV = (protyle: IProtyle, operation: IOperation) => {
|
||||||
} else {
|
} else {
|
||||||
Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-av-id="${operation.avID}"]`)).forEach((item: HTMLElement) => {
|
Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-av-id="${operation.avID}"]`)).forEach((item: HTMLElement) => {
|
||||||
item.removeAttribute("data-render");
|
item.removeAttribute("data-render");
|
||||||
const updateRow = item.querySelector('.av__row[data-need-update="true"]');
|
const updateRow = item.querySelector('.av__row[data-need-update="true"]');
|
||||||
avRender(item, protyle, () => {
|
avRender(item, protyle, () => {
|
||||||
const attrElement = document.querySelector(`.b3-dialog--open[data-key="${Constants.DIALOG_ATTR}"] div[data-av-id="${operation.avID}"]`) as HTMLElement;
|
const attrElement = document.querySelector(`.b3-dialog--open[data-key="${Constants.DIALOG_ATTR}"] div[data-av-id="${operation.avID}"]`) as HTMLElement;
|
||||||
if (attrElement) {
|
if (attrElement) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue