Vanessa 2024-05-08 10:25:15 +08:00
parent 00e883d393
commit 14a874ae9e
2 changed files with 92 additions and 38 deletions

View file

@ -275,43 +275,43 @@ export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, positi
}
});
}
menu.addItem({
label: window.siyuan.languages.addToDatabase,
icon: "iconDatabase",
click() {
openSearchAV(blockElement.getAttribute("data-av-id"), rowElements[0] as HTMLElement, (listItemElement) => {
const srcs: IOperationSrcs[] = [];
const sourceIds: string[] = [];
rowElements.forEach(item => {
const rowId = item.getAttribute("data-id");
const blockValue = genCellValueByElement("block", item.querySelector(".av__cell[data-block-id]"));
srcs.push({
content: blockValue.block.content,
id: rowId,
isDetached: blockValue.isDetached,
});
sourceIds.push(rowId);
});
const avID = listItemElement.dataset.avId;
transaction(protyle, [{
action: "insertAttrViewBlock",
avID,
ignoreFillFilter: true,
srcs,
blockID: listItemElement.dataset.blockId
}, {
action: "doUpdateUpdated",
id: listItemElement.dataset.blockId,
data: dayjs().format("YYYYMMDDHHmmss"),
}], [{
action: "removeAttrViewBlock",
srcIDs: sourceIds,
avID,
}]);
});
}
});
if (!protyle.disabled) {
menu.addItem({
label: window.siyuan.languages.addToDatabase,
icon: "iconDatabase",
click() {
openSearchAV(blockElement.getAttribute("data-av-id"), rowElements[0] as HTMLElement, (listItemElement) => {
const srcs: IOperationSrcs[] = [];
const sourceIds: string[] = [];
rowElements.forEach(item => {
const rowId = item.getAttribute("data-id");
const blockValue = genCellValueByElement("block", item.querySelector(".av__cell[data-block-id]"));
srcs.push({
content: blockValue.block.content,
id: rowId,
isDetached: blockValue.isDetached,
});
sourceIds.push(rowId);
});
const avID = listItemElement.dataset.avId;
transaction(protyle, [{
action: "insertAttrViewBlock",
avID,
ignoreFillFilter: true,
srcs,
blockID: listItemElement.dataset.blockId
}, {
action: "doUpdateUpdated",
id: listItemElement.dataset.blockId,
data: dayjs().format("YYYYMMDDHHmmss"),
}], [{
action: "removeAttrViewBlock",
srcIDs: sourceIds,
avID,
}]);
});
}
});
if (rowElements.length === 1) {
if (keyCellElement.getAttribute("data-detached") !== "true") {
menu.addSeparator();

View file

@ -108,9 +108,16 @@ export const insertAttrViewBlockAnimation = (protyle: IProtyle, blockElement: El
colHTML = '<div class="av__colsticky"><div class="av__firstcol av__colsticky"><svg><use xlink:href="#iconUncheck"></use></svg></div>';
}
previousElement.querySelectorAll(".av__cell").forEach((item: HTMLElement, index) => {
let lineNumber = ""
if (getTypeByCellElement(item) === "lineNumber") {
const lineNumberValue = item.querySelector(".av__celltext")?.getAttribute("data-value")
if (lineNumberValue) {
lineNumber = (parseInt(lineNumberValue) + 1).toString();
}
}
colHTML += `<div class="av__cell" data-col-id="${item.dataset.colId}"
style="width: ${item.style.width};${item.dataset.dtype === "number" ? "text-align: right;" : ""}"
${getTypeByCellElement(item) === "block" ? ' data-detached="true"' : ""}><span class="${avId ? "av__celltext" : "av__pulse"}"></span></div>`;
${getTypeByCellElement(item) === "block" ? ' data-detached="true"' : ""}><span class="${avId ? "av__celltext" : "av__pulse"}">${lineNumber}</span></div>`;
if (pinIndex === index) {
colHTML += "</div>";
}
@ -160,7 +167,54 @@ ${getTypeByCellElement(item) === "block" ? ' data-detached="true"' : ""}><span c
}
});
}
if (sideRow.classList.contains("av__row")) {
// 当空或非空外,需要根据值进行判断
let isRenderValue = true
if (item.operator !== "Is empty" && item.operator !== "Is not empty") {
switch (item.value.type) {
case "select":
case "mSelect":
if (!item.value.mSelect || item.value.mSelect.length === 0) {
isRenderValue = false
}
break;
case "block":
if (!item.value.block || !item.value.block.content) {
isRenderValue = false
}
break;
case "number":
if (!item.value.number || !item.value.number.isNotEmpty) {
isRenderValue = false
}
break;
case "date":
case "created":
case "updated":
if (!item.value[item.value.type] || !item.value[item.value.type].isNotEmpty) {
isRenderValue = false
}
break;
case "mAsset":
if (!item.value.mAsset || item.value.mAsset.length === 0) {
isRenderValue = false
}
break;
case "checkbox":
if (!item.value.checkbox) {
isRenderValue = false
}
break;
case "text":
case "url":
case "phone":
case "email":
if (!item.value[item.value.type] || !item.value[item.value.type].content) {
isRenderValue = false
}
break;
}
}
if (sideRow.classList.contains("av__row") && isRenderValue) {
const sideRowCellElement = sideRow.querySelector(`.av__cell[data-col-id="${item.column}"]`) as HTMLElement;
const cellElement = currentRow.querySelector(`.av__cell[data-col-id="${item.column}"]`);
const cellValue = genCellValueByElement(getTypeByCellElement(sideRowCellElement), sideRowCellElement);