等待后端更新接口
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user