This commit is contained in:
parent
fa4d66dcce
commit
a555105a55
7 changed files with 69 additions and 4 deletions
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"addToDatabase": "Add to Database",
|
||||
"clearContext": "Clear context",
|
||||
"cloudStoragePurge": "Purge cloud storage",
|
||||
"cloudStoragePurgeConfirm": "Note:<ul class='fn__list'><li>Please ensure that other devices have paused sync before execution</li><li>The purge operation is very time-consuming, please ensure that the network is stable</li></ul>Are you sure to execute it now?",
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"addToDatabase": "Agregar a la base de datos",
|
||||
"clearContext": "Borrar contexto",
|
||||
"cloudStoragePurge": "Borrar almacenamiento en la nube",
|
||||
"cloudStoragePurgeConfirm": "Nota:<ul class='fn__list'><li>Asegúrese de que otros dispositivos hayan pausado la sincronización antes de la ejecución</li><li>La operación de purga requiere mucho tiempo; asegúrese de que la red esté estable</li></ul>¿Está seguro de ejecutarla ahora?",
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"addToDatabase": "Ajouter à la base de données",
|
||||
"clearContext": "Effacer le contexte",
|
||||
"cloudStoragePurge": "Purger le stockage cloud",
|
||||
"cloudStoragePurgeConfirm": "Remarque :<ul class='fn__list'><li>Veuillez vous assurer que la synchronisation des autres appareils a été suspendue avant l'exécution</li><li>L'opération de purge prend beaucoup de temps, veuillez vous assurer que le réseau est stable</li></ul>Êtes-vous sûr de l'exécuter maintenant ?",
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"addToDatabase": "新增至資料庫",
|
||||
"clearContext": "清空上下文",
|
||||
"cloudStoragePurge": "清理雲端儲存",
|
||||
"cloudStoragePurgeConfirm": "請注意:<ul class='fn__list'><li>執行前請確保其他設備已經暫停同步</li><li>清理作業非常耗時,請確保網路穩定</li></ul>確定現在就執行嗎?",
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"addToDatabase": "添加到数据库",
|
||||
"clearContext": "清空上下文",
|
||||
"cloudStoragePurge": "清理云端存储",
|
||||
"cloudStoragePurgeConfirm": "请注意:<ul class='fn__list'><li>执行前请确保其他设备已经暂停同步</li><li>清理操作非常耗时,请确保网络稳定</li></ul> 确定现在就执行吗?",
|
||||
|
|
|
@ -46,6 +46,7 @@ import {avRender} from "../render/av/render";
|
|||
import {emitOpenMenu} from "../../plugin/EventBus";
|
||||
import {insertAttrViewBlockAnimation} from "../render/av/row";
|
||||
import {avContextmenu} from "../render/av/action";
|
||||
import {openSearchAV} from "../render/av/relation";
|
||||
|
||||
export class Gutter {
|
||||
public element: HTMLElement;
|
||||
|
@ -785,6 +786,29 @@ export class Gutter {
|
|||
});
|
||||
}
|
||||
}).element);
|
||||
window.siyuan.menus.menu.append(new MenuItem({
|
||||
label: window.siyuan.languages.addToDatabase,
|
||||
icon: "iconDatabase",
|
||||
click: () => {
|
||||
openSearchAV("", this.element, (listItemElement) => {
|
||||
const sourceIds: string[] = []
|
||||
selectsElement.forEach(item => {
|
||||
sourceIds.push(item.getAttribute("data-node-id"));
|
||||
});
|
||||
const avID = listItemElement.dataset.avId;
|
||||
transaction(protyle, [{
|
||||
action: "insertAttrViewBlock",
|
||||
avID,
|
||||
srcIDs: sourceIds,
|
||||
isDetached: false,
|
||||
}], [{
|
||||
action: "removeAttrViewBlock",
|
||||
srcIDs: sourceIds,
|
||||
avID,
|
||||
}]);
|
||||
});
|
||||
}
|
||||
}).element);
|
||||
window.siyuan.menus.menu.append(new MenuItem({
|
||||
label: window.siyuan.languages.delete,
|
||||
icon: "iconTrashcan",
|
||||
|
@ -1214,6 +1238,26 @@ export class Gutter {
|
|||
});
|
||||
}
|
||||
}).element);
|
||||
window.siyuan.menus.menu.append(new MenuItem({
|
||||
label: window.siyuan.languages.addToDatabase,
|
||||
icon: "iconDatabase",
|
||||
click: () => {
|
||||
openSearchAV("", this.element, (listItemElement) => {
|
||||
const sourceIds: string[] = [nodeElement.getAttribute("data-node-id")];
|
||||
const avID = listItemElement.dataset.avId;
|
||||
transaction(protyle, [{
|
||||
action: "insertAttrViewBlock",
|
||||
avID,
|
||||
srcIDs: sourceIds,
|
||||
isDetached: false,
|
||||
}], [{
|
||||
action: "removeAttrViewBlock",
|
||||
srcIDs: sourceIds,
|
||||
avID,
|
||||
}]);
|
||||
});
|
||||
}
|
||||
}).element);
|
||||
window.siyuan.menus.menu.append(new MenuItem({
|
||||
label: window.siyuan.languages.delete,
|
||||
icon: "iconTrashcan",
|
||||
|
|
|
@ -45,7 +45,7 @@ const setDatabase = (avId: string, element: HTMLElement, item: HTMLElement) => {
|
|||
}
|
||||
};
|
||||
|
||||
export const openSearchAV = (avId: string, target: HTMLElement) => {
|
||||
export const openSearchAV = (avId: string, target: HTMLElement, cb?: (element: HTMLElement) => void) => {
|
||||
window.siyuan.menus.menu.remove();
|
||||
const menu = new Menu();
|
||||
menu.addItem({
|
||||
|
@ -72,19 +72,34 @@ export const openSearchAV = (avId: string, target: HTMLElement) => {
|
|||
if (event.key === "Enter") {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
setDatabase(avId, target, listElement.querySelector(".b3-list-item--focus"));
|
||||
const listItemElement = listElement.querySelector(".b3-list-item--focus") as HTMLElement;
|
||||
if (cb) {
|
||||
cb(listItemElement);
|
||||
} else {
|
||||
setDatabase(avId, target, listItemElement);
|
||||
}
|
||||
window.siyuan.menus.menu.remove();
|
||||
}
|
||||
});
|
||||
inputElement.addEventListener("input", (event) => {
|
||||
inputElement.addEventListener("input", (event: InputEvent) => {
|
||||
event.stopPropagation();
|
||||
if (event.isComposing) {
|
||||
return;
|
||||
}
|
||||
genSearchList(listElement, inputElement.value, avId);
|
||||
});
|
||||
inputElement.addEventListener("compositionend", () => {
|
||||
genSearchList(listElement, inputElement.value, avId);
|
||||
});
|
||||
element.lastElementChild.addEventListener("click", (event) => {
|
||||
const listItemElement = hasClosestByClassName(event.target as HTMLElement, "b3-list-item");
|
||||
if (listItemElement) {
|
||||
event.stopPropagation();
|
||||
setDatabase(avId, target, listItemElement);
|
||||
if (cb) {
|
||||
cb(listItemElement);
|
||||
} else {
|
||||
setDatabase(avId, target, listItemElement);
|
||||
}
|
||||
window.siyuan.menus.menu.remove();
|
||||
}
|
||||
});
|
||||
|
@ -225,6 +240,7 @@ const filterItem = (listElement: Element, key: string) => {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
export const bindRelationEvent = (options: {
|
||||
menuElement: HTMLElement,
|
||||
protyle: IProtyle,
|
||||
|
|
Loading…
Add table
Reference in a new issue