Main #17

Merged
qing merged 8 commits from main into dev_qing 2026-08-02 11:51:32 +08:00
2 changed files with 18 additions and 1 deletions

No files matched your search

+2
View File
@@ -1,5 +1,7 @@
#prjs
*.db
*.db-shm
*.db-wal
*.bin
*.build
*.dist
+16 -1
View File
@@ -772,6 +772,18 @@ function cancelEdit() {
resetTextareaHeight(); /* 恢复初始高度 */
}
/* 导航守卫:表单有未提交内容时先 confirm;确认放弃则清空表单放行,否则本次导航不执行。
* 必须在调用方修改 stack 之前调用(点卡片 push 前 / 返回上一层 pop 前),
* 否则用户选择"不放弃"时 stack 已被改动,后续导航与新增节点的 pid 全部错位 */
function confirmLeaveIfDirty() {
if (input_note_title.value == "" && input_note_content.value == "") return true;
if (confirm("是否放弃当前输入的内容?") == false) return false;
input_note_title.value = "";
input_note_content.value = "";
cancelEdit();
return true;
}
function load_notes(main_node) {
/* 这个不能设置为空的 */
@@ -802,6 +814,7 @@ function load_notes(main_node) {
let card = document.createElement('div');
card.className = "card";
card.addEventListener('click', function(event) {
if (!confirmLeaveIfDirty()) return; /* 未放弃输入则不跳转,stack 保持原样 */
var id = Number(item.id)
stack.push(id)
getNode(id).then(load_notes)
@@ -904,8 +917,10 @@ function loadMap(children_json) {
back.className = "tag back";
back.textContent = "← 返回上一层";
back.addEventListener("click", () => {
if (!confirmLeaveIfDirty()) return; /* 未放弃输入则不返回,stack 保持原样 */
stack.pop();
var id = (stack.length >= 0) ? stack[stack.length - 1] : 0;
/* 栈空(回到根)时取 0:原判断 stack.length >= 0 恒真,空栈取 stack[-1] 得 undefined */
var id = (stack.length > 0) ? stack[stack.length - 1] : 0;
getNode(id).then(load_notes);
getNode(id).then(loadMap);
});