This commit is contained in:
Vanessa 2023-09-22 20:40:28 +08:00
parent 643d5e82c5
commit a55b980512
4 changed files with 59 additions and 46 deletions

View file

@ -13,6 +13,7 @@ import {hideElements} from "../../ui/hideElements";
import {focusByRange} from "../../util/selection"; import {focusByRange} from "../../util/selection";
import {writeText} from "../../util/compatibility"; import {writeText} from "../../util/compatibility";
import {showMessage} from "../../../dialog/message"; import {showMessage} from "../../../dialog/message";
import {previewImage} from "../../preview/image";
export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLElement }) => { export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLElement }) => {
const blockElement = hasClosestBlock(event.target); const blockElement = hasClosestBlock(event.target);
@ -118,13 +119,23 @@ export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLEle
const linkElement = hasClosestByClassName(event.target, "av__celltext--url"); const linkElement = hasClosestByClassName(event.target, "av__celltext--url");
if (linkElement) { if (linkElement) {
let prefix = ""; let linkAddress = linkElement.textContent.trim();
if (linkElement.dataset.type === "phone") { if (linkElement.dataset.type === "phone") {
prefix = "tel:"; linkAddress = "tel:" + linkAddress;
} else if (linkElement.dataset.type === "email") { } else if (linkElement.dataset.type === "email") {
prefix = "mailto:"; linkAddress = "mailto:" + linkAddress;
} else if (linkElement.classList.contains("b3-chip")) {
linkAddress = linkElement.dataset.url;
} }
window.open(prefix + linkElement.textContent.trim()); window.open(linkAddress);
event.preventDefault();
event.stopPropagation();
return true;
}
const imgElement = hasClosestByClassName(event.target, "av__cellassetimg") as HTMLImageElement
if (imgElement) {
previewImage(imgElement.src);
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
return true; return true;

View file

@ -379,48 +379,50 @@ export const showColMenu = (protyle: IProtyle, blockElement: Element, cellElemen
}); });
} }
}); });
menu.addItem({ if (type !== "mAsset") {
icon: "iconFilter", menu.addItem({
label: window.siyuan.languages.filter, icon: "iconFilter",
click() { label: window.siyuan.languages.filter,
fetchPost("/api/av/renderAttributeView", { click() {
id: avID, fetchPost("/api/av/renderAttributeView", {
nodeID id: avID,
}, (response) => { nodeID
const avData = response.data as IAV; }, (response) => {
let filter: IAVFilter; const avData = response.data as IAV;
avData.view.filters.find((item) => { let filter: IAVFilter;
if (item.column === colId) { avData.view.filters.find((item) => {
filter = item; if (item.column === colId) {
return true; filter = item;
return true;
}
});
if (!filter) {
filter = {
column: colId,
operator: getDefaultOperatorByType(type),
value: genCellValue(type, "")
};
avData.view.filters.push(filter);
transaction(protyle, [{
action: "setAttrViewFilters",
avID,
data: [filter]
}], [{
action: "setAttrViewFilters",
avID,
data: []
}]);
} }
setFilter({
filter,
protyle,
data: avData,
target: blockElement.querySelector(`.av__row--header .av__cell[data-col-id="${colId}"]`),
});
}); });
if (!filter) { }
filter = { });
column: colId, }
operator: getDefaultOperatorByType(type),
value: genCellValue(type, "")
};
avData.view.filters.push(filter);
transaction(protyle, [{
action: "setAttrViewFilters",
avID,
data: [filter]
}], [{
action: "setAttrViewFilters",
avID,
data: []
}]);
}
setFilter({
filter,
protyle,
data: avData,
target: blockElement.querySelector(`.av__row--header .av__cell[data-col-id="${colId}"]`),
});
});
}
});
menu.addSeparator(); menu.addSeparator();
if (type !== "block") { if (type !== "block") {
menu.addItem({ menu.addItem({

View file

@ -301,7 +301,7 @@ export const addFilter = (options: {
return true; return true;
} }
}); });
if (!hasFilter) { if (!hasFilter && column.type !== "mAsset") {
menu.addItem({ menu.addItem({
label: column.name, label: column.name,
icon: getColIconByType(column.type), icon: getColIconByType(column.type),

View file

@ -103,7 +103,7 @@ style="width: ${column.width || "200px"}">${getCalcValue(column) || '<svg><use x
if (item.type === "image") { if (item.type === "image") {
text += `<img class="av__cellassetimg" src="${item.content}">`; text += `<img class="av__cellassetimg" src="${item.content}">`;
} else { } else {
text += `<span class="b3-chip b3-chip--middle" data-url="${item.content}">${item.name}</span>`; text += `<span class="b3-chip b3-chip--middle av__celltext--url" data-url="${item.content}">${item.name}</span>`;
} }
}); });
if (!text) { if (!text) {