diff --git a/app/appearance/langs/ar_SA.json b/app/appearance/langs/ar_SA.json index 031410725..bdefc8dab 100644 --- a/app/appearance/langs/ar_SA.json +++ b/app/appearance/langs/ar_SA.json @@ -177,6 +177,7 @@ "thisDatabase": "قاعدة البيانات هذه", "relatedTo": "الربط بـ", "relation": "ربط", + "relatedItems": "العناصر المرتبطة", "rollup": "القيمة المحتسبة", "rollupProperty": "الخاصية", "rollupCalc": "الحساب بـ", diff --git a/app/appearance/langs/de_DE.json b/app/appearance/langs/de_DE.json index 144e55559..819056bc2 100644 --- a/app/appearance/langs/de_DE.json +++ b/app/appearance/langs/de_DE.json @@ -177,6 +177,7 @@ "thisDatabase": "Diese Datenbank", "relatedTo": "Verbindung zu", "relation": "Beziehung", + "relatedItems": "Verknüpfte Einträge", "rollup": "Rollup", "rollupProperty": "Eigenschaft", "rollupCalc": "Berechnen", diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 8f8185d44..7947ab32b 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -177,6 +177,7 @@ "thisDatabase": "This database", "relatedTo": "Relation to", "relation": "Relation", + "relatedItems": "Related Items", "rollup": "Rollup", "rollupProperty": "Property", "rollupCalc": "Calculate", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index b05f57216..632da1e4a 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -177,6 +177,7 @@ "thisDatabase": "Esta base de datos", "relatedTo": "Relación con", "relation": "Relación", + "relatedItems": "Elementos relacionados", "rollup": "Acumular", "rollupProperty": "Propiedad", "rollupCalc": "Calcular", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index f740c6caa..fbfdefecb 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -177,6 +177,7 @@ "thisDatabase": "Cette base de données", "relatedTo": " Relation avec ", "relation": "Relation", + "relatedItems": "Éléments liés", "rollup": "Rollup", "rollupProperty": "Propriété", "rollupCalc": "Calculer", diff --git a/app/appearance/langs/he_IL.json b/app/appearance/langs/he_IL.json index fbaed8cdc..27aa75cf4 100644 --- a/app/appearance/langs/he_IL.json +++ b/app/appearance/langs/he_IL.json @@ -177,6 +177,7 @@ "thisDatabase": "בסיס הנתונים הזה", "relatedTo": "קשר ל", "relation": "קשר", + "relatedItems": "פריטים קשורים", "rollup": "סיכום", "rollupProperty": "מאפיין", "rollupCalc": "חישוב", diff --git a/app/appearance/langs/it_IT.json b/app/appearance/langs/it_IT.json index 75922bfc0..8ed125a4b 100644 --- a/app/appearance/langs/it_IT.json +++ b/app/appearance/langs/it_IT.json @@ -177,6 +177,7 @@ "thisDatabase": "Questo database", "relatedTo": "Relazionato a", "relation": "Relazione", + "relatedItems": "Elementi correlati", "rollup": "Rollup", "rollupProperty": "Proprietà", "rollupCalc": "Calcola", diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json index 894872b15..b0e1faa0a 100644 --- a/app/appearance/langs/ja_JP.json +++ b/app/appearance/langs/ja_JP.json @@ -177,6 +177,7 @@ "thisDatabase": "現在のデータベース", "relatedTo": "関連付け", "relation": "関連", + "relatedItems": "関連項目", "rollup": "集計", "rollupProperty": "属性", "rollupCalc": "計算方法", diff --git a/app/appearance/langs/pl_PL.json b/app/appearance/langs/pl_PL.json index 3554eafa8..ee2e55f0e 100644 --- a/app/appearance/langs/pl_PL.json +++ b/app/appearance/langs/pl_PL.json @@ -177,6 +177,7 @@ "thisDatabase": "Ta baza danych", "relatedTo": "Powiązane z", "relation": "Relacja", + "relatedItems": "Powiązane elementy", "rollup": "Skumuluje", "rollupProperty": "Właściwość", "rollupCalc": "Oblicz", diff --git a/app/appearance/langs/pt_BR.json b/app/appearance/langs/pt_BR.json index 3931df5b2..b684bdb9a 100644 --- a/app/appearance/langs/pt_BR.json +++ b/app/appearance/langs/pt_BR.json @@ -177,6 +177,7 @@ "thisDatabase": "Este banco de dados", "relatedTo": "Relacionado a", "relation": "Relação", + "relatedItems": "Itens relacionados", "rollup": "Rollup", "rollupProperty": "Propriedade", "rollupCalc": "Calcular", diff --git a/app/appearance/langs/ru_RU.json b/app/appearance/langs/ru_RU.json index e6ee2bd65..9f0c2e67a 100644 --- a/app/appearance/langs/ru_RU.json +++ b/app/appearance/langs/ru_RU.json @@ -177,6 +177,7 @@ "thisDatabase": "Эта база данных", "relatedTo": "Связано с", "relation": "Связь", + "relatedItems": "Связанные элементы", "rollup": "Свод", "rollupProperty": "Свойство", "rollupCalc": "Вычислить", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index d45a75c53..06fd737de 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -177,6 +177,7 @@ "thisDatabase": "目前資料庫", "relatedTo": "關聯至", "relation": "關聯", + "relatedItems": "已關聯條目", "rollup": "匯總", "rollupProperty": "總計欄位", "rollupCalc": "彙總方式", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 425d9bafd..292a763bd 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -177,6 +177,7 @@ "thisDatabase": "当前数据库", "relatedTo": "关联至", "relation": "关联", + "relatedItems": "已关联条目", "rollup": "汇总", "rollupProperty": "汇总字段", "rollupCalc": "汇总方式", diff --git a/app/src/protyle/render/av/relation.ts b/app/src/protyle/render/av/relation.ts index bf8544a50..a08082359 100644 --- a/app/src/protyle/render/av/relation.ts +++ b/app/src/protyle/render/av/relation.ts @@ -13,6 +13,8 @@ import {getFieldsByData, getViewName} from "./view"; import {getColId} from "./col"; import {getFieldIdByCellElement} from "./row"; import {isMobile} from "../../../util/functions"; +import {showMessage} from "../../../dialog/message"; +import {writeText} from "../../util/compatibility"; interface IAVItem { avID: string; @@ -249,6 +251,17 @@ export const toggleUpdateRelationBtn = (menuItemsElement: HTMLElement, avId: str } }; +const updateCopyRelatedItems = (menuElement: Element) => { + const inputElement = menuElement.querySelector(".b3-form__icona .b3-text-field"); + if (menuElement.querySelector(".b3-menu__icon.fn__grab")) { + inputElement.nextElementSibling.classList.remove("fn__none"); + inputElement.classList.add("b3-form__icona-input"); + } else { + inputElement.nextElementSibling.classList.add("fn__none"); + inputElement.classList.remove("b3-form__icona-input"); + } +}; + const genSelectItemHTML = (options: { type: "selected" | "empty" | "unselect", id?: string, @@ -322,6 +335,7 @@ ${keyword ? genSelectItemHTML({ text: menuElement.querySelector(".popover__block").outerHTML }) : (html ? "" : genSelectItemHTML({type: "empty"}))}`; menuElement.querySelector(".b3-menu__items .b3-menu__item:not(.fn__none)").classList.add("b3-menu__item--current"); + updateCopyRelatedItems(menuElement); }); }; @@ -369,7 +383,7 @@ ${html || genSelectItemHTML({type: "empty"})}`; options.menuElement.querySelector(".b3-menu__items .b3-menu__item:not(.fn__none)").classList.add("b3-menu__item--current"); const inputElement = options.menuElement.querySelector("input"); inputElement.focus(); - const databaseName = inputElement.parentElement.querySelector(".popover__block"); + const databaseName = inputElement.parentElement.parentElement.querySelector(".popover__block"); databaseName.innerHTML = Lute.EscapeHTMLStr(response.data.name); databaseName.setAttribute("data-id", response.data.blockIDs[0]); const listElement = options.menuElement.querySelector(".b3-menu__items"); @@ -396,6 +410,26 @@ ${html || genSelectItemHTML({type: "empty"})}`; event.stopPropagation(); filterItem(options.menuElement, options.cellElements[0], inputElement.value); }); + updateCopyRelatedItems(options.menuElement) + options.menuElement.querySelector('[data-type="copyRelatedItems"]').addEventListener("click", () => { + let copyText = ""; + const selectedElements = options.menuElement.querySelectorAll('.b3-menu__item[draggable="true"]'); + selectedElements.forEach((item: HTMLElement) => { + if (selectedElements.length > 1) { + copyText += "* "; + } + const textElement = item.querySelector(".b3-menu__label") as HTMLElement; + if (!textElement.dataset.id || textElement.dataset.id === "undefined") { + copyText += textElement.textContent + "\n"; + } else { + copyText += `((${textElement.dataset.id} "${textElement.textContent}"))\n`; + } + }); + if (copyText) { + writeText(copyText.trimEnd()); + showMessage(window.siyuan.languages.copied); + } + }); }); }; @@ -410,9 +444,12 @@ export const getRelationHTML = (data: IAV, cellElements?: HTMLElement[]) => { if (colRelationData && colRelationData.avID) { return `