Files
jiapu/dist/public/js/genealogy-entry-pages.js
T

2 lines
9.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
(function(a,p){if(typeof module=="object"&&module.exports){module.exports=p(a);return}a.GenealogyEntryPages=p(a),a.document&&a.document.addEventListener("DOMContentLoaded",function(){a.GenealogyEntryPages.init()})})(typeof globalThis!="undefined"?globalThis:window,function(a){"use strict";function p(n){var e=String(n||""),r=e.indexOf("#"),l=r<0?"":e.slice(r),t,u;return r>=0&&(e=e.slice(0,r)),t=e.split("?"),/^profile-[a-z-]+\.html$/.test(t[0])?(u=new URLSearchParams(t[1]||""),u.delete("genealogyId"),t[0]+(u.toString()?"?"+u.toString():"")+l):"profile-family-home.html"}function A(n){var e=new URLSearchParams(String(n===void 0&&a.location?a.location.search:n||"").replace(/^\?/,""));return p(e.get("next"))}function G(n){var e=n||{},r=[];return Number(e.createRemaining)===-1?r.push("创建不限"):Number(e.createRemaining)>=0&&r.push("还可创建 "+e.createRemaining+" 部"),Number(e.joinRemaining)===-1?r.push("加入不限"):Number(e.joinRemaining)>=0&&r.push("还可加入 "+e.joinRemaining+" 部"),r.length?"家谱额度:"+r.join("")+"。":""}function f(n){return String(n==null?"":n).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function P(n){var e;if(n!=null)return e=String(n).trim(),e||void 0}function w(n){var e;return typeof n=="number"&&!Number.isSafeInteger(n)||n==null?"":(e=String(n).trim(),/^[1-9][0-9]*$/.test(e)?e:"")}function L(n){var e=n||{},r={genealogyName:String(e.genealogyName||"").trim(),surname:String(e.surname||"").trim(),regionCode:String(e.regionCode||"").trim()},l=["ancestralHall","originPlace","addressDetail","intro"],t=w(e.coverOssId),u=P(e.visibility),o=P(e.joinMode);return l.forEach(function(g){var d=P(e[g]);d!==void 0&&(r[g]=d)}),e.coverOssId!==void 0&&e.coverOssId!==null&&e.coverOssId!==""&&(t?r.coverOssId=t:r.invalidCoverOssId=!0),u!==void 0&&(r.visibility=u),o!==void 0&&(r.joinMode=o),r}function E(n){return!n||!n.genealogyName?"请填写谱名":n.surname?n.regionCode?n.visibility!==void 0&&["0","1","2"].indexOf(n.visibility)<0?"可见范围选项无效":n.joinMode!==void 0&&["0","1","2"].indexOf(n.joinMode)<0?"加入方式选项无效":n.invalidCoverOssId?"封面文件无效,请重新选择":"":"请选择家谱所在地区":"请填写姓氏"}function O(n){var e=Number(n&&n.createRemaining);return n&&typeof n.canCreate=="boolean"?n.canCreate:Number.isInteger(e)&&(e===-1||e>0)}function I(n){var e=w(n&&n.genealogyId),r=String(n&&n.genealogyName||"").trim(),l=String(n&&n.surname||"").trim();return!e||!r||!l?null:{genealogyId:e,genealogyName:r,surname:l,regionFullName:String(n&&n.regionFullName||"")}}function q(n){var e=I(n);return e?U(e.genealogyId,"profile-family-home.html"):""}function c(n,e){var r=e&&(e.status||e.code);return!n||!n.getToken||!n.getToken()||Number(r)===401}function S(n){n&&n.clearToken&&n.clearToken(),a.NavigationUtil.open("login.html")}function z(n){var e={};return Array.prototype.forEach.call(n.querySelectorAll("[name]"),function(r){e[r.name]=r.value}),e}function y(n){return Number(n&&(n.status||n.code))===403?"forbidden":"error"}function m(n,e){var r=a.document&&a.document.querySelector("[data-genealogy-create-status]");if(r){if(!n){r.innerHTML="";return}if(a.ProfileUI&&a.ProfileUI.setApiState){a.ProfileUI.setApiState(r,e||"error",n);return}r.textContent=n}}function v(n,e){var r=a.document&&a.document.querySelector("[data-genealogy-entry-status]");if(r){if(!n){r.innerHTML="";return}if(e&&a.ProfileUI&&a.ProfileUI.setApiState){a.ProfileUI.setApiState(r,e,n);return}r.textContent=n}}function b(n,e,r){if(n){if(a.ProfileUI&&a.ProfileUI.setApiState){a.ProfileUI.setApiState(n,e,r);return}n.textContent=r}}function M(n){var e=a.document&&a.document.querySelector("[data-genealogy-create-submit]");e&&(e.dataset.defaultLabel||(e.dataset.defaultLabel=e.textContent),e.disabled=!!n,e.textContent=n?"正在创建…":e.dataset.defaultLabel,e.setAttribute("aria-busy",n?"true":"false"))}async function j(){var n=a.document&&a.document.querySelector("[data-genealogy-create-form]"),e=a.document&&a.document.querySelector("[data-genealogy-create-quota]"),r=a.GenealogyApi&&a.GenealogyApi.defaultClient,l,t=!1;if(n){if(c(r)){S(r);return}m("正在读取创建额度…","loading");try{if(l=await r.genealogyQuota(),e&&(e.textContent=G(l)||"当前额度信息不可用"),!O(l)){m("当前没有可用的家谱创建额度","empty"),n.querySelector("[data-genealogy-create-submit]").disabled=!0;return}m("")}catch(u){if(c(r,u)){S(r);return}e&&(e.textContent="家谱额度读取失败"),m(u.message||"无法读取家谱创建额度",y(u)),n.querySelector("[data-genealogy-create-submit]").disabled=!0;return}n.__genealogyCreateBound||(n.__genealogyCreateBound=!0,n.addEventListener("submit",async function(u){var o,g,d,s;if(u.preventDefault(),!t){if(o=L(z(n)),g=E(o),g){m(g,"error");return}delete o.invalidCoverOssId,t=!0,M(!0),m("正在创建家谱…","loading");try{if(d=I(await r.createGenealogy(o)),!d)throw new Error("创建响应缺少有效家谱信息");if(s=I(await r.genealogyDetail(d.genealogyId)),!s||s.genealogyId!==d.genealogyId)throw new Error("创建后无法读取同一家谱");a.ProfileUI&&a.ProfileUI.setCurrentGenealogyContext&&a.ProfileUI.setCurrentGenealogyContext(s.genealogyId,s.genealogyName),a.NavigationUtil.open(q(s))}catch(h){if(c(r,h)){S(r);return}m(h.message||"创建家谱失败,请稍后重试",y(h))}finally{t=!1,M(!1)}}}))}}function T(n){var e=n||{},r=e.genealogyId===void 0||e.genealogyId===null?"":String(e.genealogyId);return!/^[1-9][0-9]*$/.test(r)||!e.genealogyName?null:{genealogyId:r,genealogyName:String(e.genealogyName),surname:e.surname===void 0||e.surname===null?"":String(e.surname),regionFullName:e.regionFullName===void 0||e.regionFullName===null?"":String(e.regionFullName),memberCount:e.memberCount,personCount:e.personCount,roleType:e.roleType===void 0||e.roleType===null?"":String(e.roleType),canManage:e.canManage===!0}}function U(n,e){var r=p(e),l=r.split("#"),t=l[0],u=l.length>1?"#"+l.slice(1).join("#"):"",o=t.split("?"),g=new URLSearchParams(o[1]||"");return g.set("genealogyId",String(n)),o[0]+"?"+g.toString()+u}function B(n,e,r){var l=Array.isArray(e)?e.map(T).filter(Boolean):[];return n?!Array.isArray(e)||e.length&&!l.length?(b(n,"error","家谱响应字段不完整,请联系后端核对。"),[]):l.length?(n.innerHTML=l.map(function(t){var u=[t.surname?t.surname+"氏":"",t.regionFullName,t.memberCount===void 0||t.memberCount===null?"":t.memberCount+" 位成员",t.personCount===void 0||t.personCount===null?"":t.personCount+" 位世系人物"].filter(Boolean).join(" · ");return'<a class="module-row" data-genealogy-id="'+f(t.genealogyId)+'" data-genealogy-name="'+f(t.genealogyName)+'" href="'+f(U(t.genealogyId,r))+'"><div><h3>'+f(t.genealogyName)+"</h3><p>"+f(u)+'</p></div><span class="pill">'+(t.canManage?"管理并进入":"进入家谱")+"</span></a>"}).join(""),l):(b(n,"empty","当前账号还没有可进入的家谱"),[]):l}async function F(){if(a.document&&a.document.querySelector("[data-genealogy-create-page]")){await j();return}var n=a.document&&a.document.querySelector("[data-genealogy-entry-status]"),e=a.GenealogyApi&&a.GenealogyApi.defaultClient,r=A(),l=a.document&&a.document.querySelector('[data-genealogy-list="mine"]'),t=a.document&&a.document.querySelector("[data-genealogy-sort-select]"),u=a.document&&a.document.querySelector("[data-genealogy-sort-up]"),o=a.document&&a.document.querySelector("[data-genealogy-sort-down]"),g=a.document&&a.document.querySelector("[data-genealogy-sort-save]"),d,s=!1;if(!n)return;if(c(e)){S(e);return}if(!e||!e.genealogyQuota||!e.genealogiesMine||!e.saveGenealogyOrder){v("家谱入口接口初始化失败,请刷新后重试。","error"),b(l,"error","家谱列表接口初始化失败,请刷新后重试。");return}b(l,"loading","正在读取我的家谱…"),v("正在读取家谱额度…","loading");try{if(d=await e.genealogiesMine(),B(l,d,r),t){var h=Array.isArray(d)?d.map(T).filter(Boolean):[];t.innerHTML=h.map(function(i){return'<option value="'+f(i.genealogyId)+'">'+f(i.genealogyName)+"</option>"}).join(""),[t,u,o,g].forEach(function(i){i&&(i.disabled=h.length<2)})}}catch(i){if(c(e,i)){S(e);return}b(l,y(i),y(i)==="forbidden"?"当前账号无权查看我的家谱。":"无法读取我的家谱,请稍后重试。")}function R(i){var N,C,x;!t||s||(N=t.selectedIndex,C=N+i,!(N<0||C<0||C>=t.options.length)&&(x=t.options[N],i<0?t.insertBefore(x,t.options[C]):t.insertBefore(t.options[C],x),t.selectedIndex=C))}u&&u.addEventListener("click",function(){R(-1)}),o&&o.addEventListener("click",function(){R(1)}),g&&g.addEventListener("click",async function(){if(!(s||!t)){s=!0,[t,u,o,g].forEach(function(i){i&&(i.disabled=!0)}),v("正在保存家谱顺序…","loading");try{await e.saveGenealogyOrder(Array.prototype.map.call(t.options,function(i){return i.value})),v("家谱顺序已保存")}catch(i){v(i.message||"家谱顺序保存失败,请稍后重试。",y(i))}finally{s=!1,[t,u,o,g].forEach(function(i){i&&(i.disabled=t.options.length<2)})}}});try{d=await e.genealogyQuota(),v(G(d))}catch(i){if(c(e,i)){S(e);return}v(y(i)==="forbidden"?"当前账号无权读取家谱额度。":"家谱额度读取失败,请稍后重试。",y(i))}}return{normalizeTargetPage:p,getTargetPage:A,buildStatus:G,buildGenealogyCreateBody:L,validateGenealogyCreateBody:E,canCreateGenealogy:O,normalizeCreatedGenealogy:I,buildCreatedGenealogyUrl:q,shouldRedirectToLogin:c,initGenealogyCreatePage:j,normalizeGenealogy:T,buildEntryUrl:U,renderGenealogies:B,init:F}});