diff --git a/app/src/history/diff.ts b/app/src/history/diff.ts index c9c7c1e9d..974eb5600 100644 --- a/app/src/history/diff.ts +++ b/app/src/history/diff.ts @@ -10,7 +10,7 @@ import {isMobile} from "../util/functions"; const genItem = (data: [], data2?: { title: string, fileID: string }[]) => { if (!data || data.length === 0) { - return `
  • ${window.siyuan.languages.emptyContent}
  • `; + return `
  • ${window.siyuan.languages.emptyContent}
  • `; } let html = ""; data.forEach((item: { title: string, fileID: string }, index) => { @@ -18,7 +18,7 @@ const genItem = (data: [], data2?: { title: string, fileID: string }[]) => { if (data2) { id2 = `data-id2="${data2[index].fileID}"`; } - html += `
  • + html += `
  • ${escapeHtml(item.title)}
  • `; }); @@ -75,6 +75,7 @@ const renderCompare = (element: HTMLElement) => { leftElement.lastElementChild.classList.remove("fn__none"); onGet(response, leftEditor.protyle, [Constants.CB_GET_HISTORY, Constants.CB_GET_HTML]); } + textElement.previousElementSibling.textContent = dayjs(response.data.updated).format("YYYY-MM-DD HH:mm") }); const id2 = element.getAttribute("data-id2"); if (id2) { @@ -90,6 +91,7 @@ const renderCompare = (element: HTMLElement) => { rightElement.lastElementChild.classList.remove("fn__none"); onGet(response, rightEditor.protyle, [Constants.CB_GET_HISTORY, Constants.CB_GET_HTML]); } + textElement.previousElementSibling.textContent = dayjs(response.data.updated).format("YYYY-MM-DD HH:mm") }); } else { rightElement.classList.add("fn__none"); @@ -100,19 +102,78 @@ export const showDiff = (data: { id: string, time: string }[]) => { if (data.length !== 2) { return; } - let left; - let right; - if (data[0].time > data[1].time) { + let left: string; + let right: string; + if (data[0].time < data[1].time) { left = data[1].id; right = data[0].id; } else { left = data[0].id; right = data[1].id; } + + const dialog = new Dialog({ + title: window.siyuan.languages.compare, + content: "", + width: isMobile() ? "92vw" : "80vw", + height: "80vh", + destroyCallback() { + leftEditor = undefined; + rightEditor = undefined; + } + }); + dialog.element.addEventListener("click", (event) => { + let target = event.target as HTMLElement; + while (target && target !== dialog.element) { + if (target.classList.contains("b3-list-item") && !target.dataset.id) { + target.nextElementSibling.classList.toggle("fn__none"); + target.querySelector("svg").classList.toggle("b3-list-item__arrow--open"); + event.preventDefault(); + event.stopPropagation(); + break; + } else if (target.classList.contains("b3-list-item") && target.dataset.id) { + if (target.classList.contains("b3-list-item--focus")) { + return; + } + dialog.element.querySelector(".history__diff .b3-list-item--focus")?.classList.remove("b3-list-item--focus"); + target.classList.add("b3-list-item--focus"); + renderCompare(target); + event.preventDefault(); + event.stopPropagation(); + break; + } else if (target.classList.contains("block__icon")) { + if (target.getAttribute("data-direct") === "left") { + target.setAttribute("data-direct", "right") + genHTML(right, left, dialog); + } else { + target.setAttribute("data-direct", "left") + genHTML(left, right, dialog); + } + event.preventDefault(); + event.stopPropagation(); + break; + } + target = target.parentElement; + } + }); + genHTML(left, right, dialog); +}; + +const genHTML = (left: string, right: string, dialog: Dialog) => { + leftEditor = undefined; + rightEditor = undefined; fetchPost("/api/repo/diffRepoSnapshots", {left, right}, (response) => { - const dialog = new Dialog({ - title: window.siyuan.languages.compare, - content: `
    + const headElement = dialog.element.querySelector(".b3-dialog__header"); + headElement.innerHTML = `
    + + ${dayjs(response.data.left.created).format("YYYY-MM-DD HH:mm")} + + + + ${dayjs(response.data.right.created).format("YYYY-MM-DD HH:mm")} + +
    ` + headElement.nextElementSibling.innerHTML = `
    • @@ -154,31 +215,6 @@ export const showDiff = (data: { id: string, time: string }[]) => {
    -
    `, - width: isMobile() ? "92vw" : "80vw", - height: "80vh", - destroyCallback() { - leftEditor = undefined; - rightEditor = undefined; - } - }); - dialog.element.addEventListener("click", (event) => { - let target = event.target as HTMLElement; - while (target && target !== dialog.element) { - if (target.classList.contains("b3-list-item") && !target.dataset.id) { - target.nextElementSibling.classList.toggle("fn__none"); - target.querySelector("svg").classList.toggle("b3-list-item__arrow--open"); - break; - } else if (target.classList.contains("b3-list-item") && target.dataset.id) { - if (target.classList.contains("b3-list-item--focus")) { - return; - } - dialog.element.querySelector(".history__diff .b3-list-item--focus")?.classList.remove("b3-list-item--focus"); - target.classList.add("b3-list-item--focus"); - renderCompare(target); - } - target = target.parentElement; - } - }); +`; }); -}; +}