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;
- }
- });
+`;
});
-};
+}