等待后端更新接口

This commit is contained in:
2026-08-03 16:49:26 +08:00
parent ac5823547a
commit 5b79893650
131 changed files with 5324 additions and 1392 deletions
+86 -18
View File
@@ -94,6 +94,10 @@
return !api || !api.getToken || !api.getToken() || Number(status) === 401;
}
function isForbidden(error) {
return Number(error && (error.status || error.code)) === 403;
}
async function loadFamilyHome(api, genealogyId) {
var normalizedId = normalizeId(genealogyId);
var results;
@@ -135,11 +139,38 @@
if (element) element.textContent = value;
}
function setHomeState(selector, type, message) {
var element = query(selector);
if (!element) return;
if (root.ProfileUI && root.ProfileUI.setApiState) {
root.ProfileUI.setApiState(element, type, message);
return;
}
element.textContent = message;
}
function setHomeStatus(message, type) {
var element = query('[data-family-home-status]');
if (!element) return;
if (!message) {
element.innerHTML = '';
return;
}
if (type && root.ProfileUI && root.ProfileUI.setApiState) {
root.ProfileUI.setApiState(element, type, message);
return;
}
element.textContent = message;
}
async function initFamilyHomePage() {
var page = query('[data-family-home-page]');
var api = root.GenealogyApi && root.GenealogyApi.defaultClient;
var genealogyId;
var result;
var treeHtml;
if (!page) return;
if (shouldRedirectToLogin(api)) {
@@ -157,36 +188,72 @@
root.ProfileUI.syncGenealogyContextLinks();
}
if (!root.LineagePages || !root.LineagePages.renderLineageTreeHtml) {
setText('[data-family-home-status]', '世系预览初始化失败,请刷新后重试');
setHomeState('[data-family-home-overview]', 'error', '家谱主页初始化失败,请刷新后重试');
setHomeState('[data-lineage-home-tree]', 'error', '世系预览初始化失败,请刷新后重试。');
setHomeStatus('世系预览初始化失败,请刷新后重试。', 'error');
return;
}
setHomeState('[data-family-home-overview]', 'loading', '正在加载家谱概览…');
setHomeState('[data-lineage-home-tree]', 'loading', '正在加载世系树…');
setHomeStatus('正在读取家谱概览…', 'loading');
try {
result = await loadFamilyHome(api, genealogyId);
result = normalizeFamilyOverview(await api.genealogyOverview(genealogyId), genealogyId);
if (!result) throw new Error('家谱概览响应无效');
if (root.ProfileUI && root.ProfileUI.setCurrentGenealogyContext) {
root.ProfileUI.setCurrentGenealogyContext(result.overview.genealogyId, result.overview.genealogyName);
root.ProfileUI.setCurrentGenealogyContext(result.genealogyId, result.genealogyName);
}
setText('[data-family-home-title]', result.overview.genealogyName);
setText('[data-family-home-context]', result.overview.genealogyName);
query('[data-family-home-overview]').innerHTML = renderFamilyOverview(result.overview);
setText('[data-family-home-member-count]', String(result.overview.memberCount));
setText('[data-family-home-person-count]', String(result.overview.personCount));
setText('[data-family-home-title]', result.genealogyName);
setText('[data-family-home-context]', result.genealogyName);
query('[data-family-home-overview]').innerHTML = renderFamilyOverview(result);
setText('[data-family-home-member-count]', String(result.memberCount));
setText('[data-family-home-person-count]', String(result.personCount));
queryAll('[data-family-home-management]').forEach(function (element) {
element.hidden = !shouldShowFamilyManagement(result.overview);
element.hidden = !shouldShowFamilyManagement(result);
});
query('[data-lineage-home-tree]').innerHTML =
root.LineagePages.renderLineageTreeHtml(result.tree);
setText('[data-family-home-status]', '家谱概览已更新');
} catch (error) {
if (shouldRedirectToLogin(api, error)) {
redirectToLogin(api);
return;
}
query('[data-family-home-overview]').innerHTML =
'<div class="api-empty">家谱概览读取失败,请稍后重试</div>';
query('[data-lineage-home-tree]').innerHTML =
'<div class="api-empty">世系树读取失败,请稍后重试</div>';
setText('[data-family-home-status]', error.message || '家谱主页读取失败,请稍后重试');
setHomeState(
'[data-family-home-overview]',
isForbidden(error) ? 'forbidden' : 'error',
isForbidden(error) ? '当前账号无权查看该家谱。' : '家谱概览读取失败,请稍后重试。'
);
setHomeState(
'[data-lineage-home-tree]',
isForbidden(error) ? 'forbidden' : 'error',
isForbidden(error) ? '当前账号无权查看该家谱。' : '世系树读取失败,请稍后重试。'
);
setHomeStatus(
isForbidden(error) ? '当前账号无权查看该家谱。' : (error.message || '家谱主页读取失败,请稍后重试。'),
isForbidden(error) ? 'forbidden' : 'error'
);
return;
}
try {
result = await api.lineageTree(genealogyId);
treeHtml = Array.isArray(result) ? root.LineagePages.renderLineageTreeHtml(result) : '';
if (!treeHtml) {
setHomeState('[data-lineage-home-tree]', 'empty', '暂无世系树');
} else {
query('[data-lineage-home-tree]').innerHTML = treeHtml;
}
setHomeStatus('家谱概览已更新');
} catch (error) {
if (shouldRedirectToLogin(api, error)) {
redirectToLogin(api);
return;
}
setHomeState(
'[data-lineage-home-tree]',
isForbidden(error) ? 'forbidden' : 'error',
isForbidden(error) ? '当前账号无权查看该家谱世系树。' : '世系树读取失败,请稍后重试。'
);
setHomeStatus(
isForbidden(error) ? '当前账号无权查看该家谱世系树。' : (error.message || '世系树读取失败,请稍后重试。'),
isForbidden(error) ? 'forbidden' : 'error'
);
}
}
@@ -199,6 +266,7 @@
renderFamilyOverview: renderFamilyOverview,
shouldShowFamilyManagement: shouldShowFamilyManagement,
shouldRedirectToLogin: shouldRedirectToLogin,
isForbidden: isForbidden,
loadFamilyHome: loadFamilyHome,
initFamilyHomePage: initFamilyHomePage,
init: init