This commit is contained in:
parent
bb5134ce24
commit
bb71e29cba
2 changed files with 24 additions and 13 deletions
|
@ -149,19 +149,19 @@ export const getEditHTML = (options: {
|
|||
</button>`;
|
||||
} else if (colData.type === "relation") {
|
||||
const isSelf = colData.relation?.avID === options.data.id;
|
||||
html += `<button class="b3-menu__item" data-type="goSearchAV" data-old-value='${JSON.stringify(colData.relation || {})}'>
|
||||
html += `<button class="b3-menu__item" data-type="goSearchAV" data-av-id="${colData.relation?.avID}" data-old-value='${JSON.stringify(colData.relation || {})}'>
|
||||
<span class="b3-menu__label">${window.siyuan.languages.relatedTo}</span>
|
||||
<span class="b3-menu__accelerator">${isSelf ? window.siyuan.languages.thisDatabase : ""}</span>
|
||||
<svg class="b3-menu__icon b3-menu__icon--small"><use xlink:href="#iconRight"></use></svg>
|
||||
</button>
|
||||
<label class="b3-menu__item${!colData.relation || (colData.relation?.isTwoWay && isSelf) ? " fn__none" : ""}">
|
||||
<label class="b3-menu__item fn__none">
|
||||
<span class="fn__flex-center">${window.siyuan.languages.backRelation}</span>
|
||||
<svg class="b3-menu__icon b3-menu__icon--small fn__none"><use xlink:href="#iconHelp"></use></svg>
|
||||
<span class="fn__space fn__flex-1"></span>
|
||||
<input data-type="backRelation" type="checkbox" class="b3-switch b3-switch--menu" ${colData.relation?.isTwoWay ? "checked" : ""}>
|
||||
</label>
|
||||
<div class="b3-menu__item fn__flex-column${!colData.relation || (colData.relation?.isTwoWay && isSelf) ? " fn__none" : ""}" data-type="nobg">
|
||||
<input data-type="colName" style="margin: 8px 0 4px" class="b3-text-field fn__block" placeholder="${window.siyuan.languages.title}">
|
||||
<div class="b3-menu__item fn__flex-column fn__none" data-type="nobg">
|
||||
<input data-old-value="" data-type="colName" style="margin: 8px 0 4px" class="b3-text-field fn__block" placeholder="${window.siyuan.languages.title}">
|
||||
</div>
|
||||
<div class="b3-menu__item fn__flex-column fn__none" data-type="nobg">
|
||||
<button style="margin: 4px 0 8px;" class="b3-button fn__block" data-type="updateRelation">${window.siyuan.languages.confirm}</button>
|
||||
|
@ -349,9 +349,11 @@ export const bindEditEvent = (options: {
|
|||
return true;
|
||||
}
|
||||
})
|
||||
toggleUpdateRelationBtn(options.menuElement, avID);
|
||||
});
|
||||
} else {
|
||||
openSearchAV(avID, goSearchElement);
|
||||
toggleUpdateRelationBtn(options.menuElement, avID);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -38,7 +38,7 @@ const setDatabase = (avId: string, element: HTMLElement, item: HTMLElement) => {
|
|||
element.querySelector(".b3-menu__accelerator").textContent = item.querySelector(".b3-list-item__hinticon").classList.contains("fn__none") ? item.querySelector(".b3-list-item__text").textContent : window.siyuan.languages.thisDatabase
|
||||
const menuElement = hasClosestByClassName(element, "b3-menu__items")
|
||||
if (menuElement) {
|
||||
toggleUpdateRelationBtn(menuElement, avId);
|
||||
toggleUpdateRelationBtn(menuElement, avId, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,7 +113,7 @@ export const updateRelation = (options: {
|
|||
action: "updateAttrViewColRelation",
|
||||
avID: options.avID,
|
||||
keyID: colId,
|
||||
id: newAVId,
|
||||
id: newAVId || oldValue.avID,
|
||||
backRelationKeyID: oldValue.avID === newAVId ? oldValue.backKeyID : Lute.NewNodeID(),
|
||||
isTwoWay: (options.avElement.querySelector(".b3-switch") as HTMLInputElement).checked,
|
||||
name: inputElement.value,
|
||||
|
@ -129,26 +129,35 @@ export const updateRelation = (options: {
|
|||
options.avElement.remove();
|
||||
}
|
||||
|
||||
export const toggleUpdateRelationBtn = (menuItemsElement: HTMLElement, avId: string) => {
|
||||
export const toggleUpdateRelationBtn = (menuItemsElement: HTMLElement, avId: string, resetData = false) => {
|
||||
const searchElement = menuItemsElement.querySelector('.b3-menu__item[data-type="goSearchAV"]') as HTMLElement
|
||||
const switchItemElement = searchElement.nextElementSibling;
|
||||
const switchElement = switchItemElement.querySelector(".b3-switch") as HTMLInputElement;
|
||||
const inputItemElement = switchItemElement.nextElementSibling;
|
||||
const btnElement = inputItemElement.nextElementSibling;
|
||||
const oldValue = JSON.parse(searchElement.dataset.oldValue);
|
||||
const oldValue = JSON.parse(searchElement.dataset.oldValue) as IAVCellRelationValue;
|
||||
if (oldValue.avID) {
|
||||
if (searchElement.dataset.avId !== avId || (searchElement.dataset.avId === avId && oldValue.avID !== avId)) {
|
||||
const inputElement = inputItemElement.querySelector("input") as HTMLInputElement;
|
||||
if (resetData) {
|
||||
if (searchElement.dataset.avId !== oldValue.avID) {
|
||||
inputElement.value = "";
|
||||
switchElement.checked = false;
|
||||
} else {
|
||||
inputElement.value = inputElement.dataset.oldValue
|
||||
switchElement.checked = oldValue.isTwoWay;
|
||||
}
|
||||
}
|
||||
if (searchElement.dataset.avId === avId && oldValue.avID === avId && oldValue.isTwoWay) {
|
||||
switchItemElement.classList.add("fn__none");
|
||||
inputItemElement.classList.add("fn__none");
|
||||
} else {
|
||||
switchItemElement.classList.remove("fn__none");
|
||||
if (switchElement.checked) {
|
||||
inputItemElement.classList.remove("fn__none");
|
||||
} else {
|
||||
inputItemElement.classList.add("fn__none");
|
||||
}
|
||||
} else {
|
||||
switchItemElement.classList.add("fn__none");
|
||||
inputItemElement.classList.add("fn__none");
|
||||
}
|
||||
const inputElement = inputItemElement.querySelector("input") as HTMLInputElement;
|
||||
if ((searchElement.dataset.avId && oldValue.avID !== searchElement.dataset.avId) || oldValue.isTwoWay !== switchElement.checked || inputElement.dataset.oldValue !== inputElement.value) {
|
||||
btnElement.classList.remove("fn__none");
|
||||
} else {
|
||||
|
|
Loading…
Add table
Reference in a new issue