diff --git a/ismism.ts/ui/index/bind.ts b/ismism.ts/ui/index/bind.ts index 2e5c13b..0429e47 100644 --- a/ismism.ts/ui/index/bind.ts +++ b/ismism.ts/ui/index/bind.ts @@ -1,5 +1,5 @@ // deno-lint-ignore-file no-window-prefix -import { Agenda, Rec, User } from "../../../cli/json.ts" +import { Agenda, Rec, Soc, User } from "../../../cli/json.ts" import { utc_medium, utc_short } from "../../src/date.ts" import { Goal, Tag, Rec as Id } from "../../src/typ.ts" @@ -167,7 +167,6 @@ function erec( const count = [work.rec.length, worker.rec.length, fund.rec.length] b.forEach((btn, n) => { btn.getElementsByTagName("span")[0].innerText = `${count[n]}` - d[n].style.display = "none" btn.addEventListener("click", () => toggle(btn, d[n])) }) const role = new Map(worker.rec.map(r => [r.uid, r.role])) @@ -267,10 +266,45 @@ function euser( if (soc.length === 0) csoc.innerText += "无" else for (const s of soc) { - const [_, [a]] = template("member", ["member"]); - (a as HTMLAnchorElement).href = `#s${s._id}` + const a = csoc.appendChild(document.createElement("a")) + a.classList.add("member-soc") + a.href = `#s${s._id}` a.innerText = s.name - csoc.appendChild(a) + } + + erec([bwork, bworker, bfund], [dwork, dworker, dfund], rec) + + el.appendChild(t) +} +function esoc( + el: HTMLElement, + sid: number, + { name, utc, uid, uname, rec }: Soc +) { + el.innerHTML = "" + const [t, [ + cidname, cid, cname, cdate, cuser, + bwork, bworker, bfund, dwork, dworker, dfund, + ]] = template("soc", [ + "idname", "id", "name", "date", "user", + "tab.work", "tab.worker", "tab.fund", "rec.work", "rec.worker", "rec.fund", + ]); + + (cidname as HTMLAnchorElement).href = `#s${sid}` + cid.innerText = `s${sid}` + if (hash === cid.innerText) cid.classList.add("darkgray") + else cid.classList.remove("darkgray") + cname.innerText = name + cdate.innerText = `注册时间: ${utc_medium(utc)}` + + const user = new Map(uname) + cuser.innerText = uid.length === 0 ? "社团成员:无" : `社团成员(${uid.length}):` + for (const u of uid) { + const a = cuser.appendChild(document.createElement("a")) + a.classList.add("member-user") + a.href = `#u${u}` + a.innerText = user.get(u)! + cuser.appendChild(a) } erec([bwork, bworker, bfund], [dwork, dworker, dfund], rec) @@ -284,7 +318,7 @@ window.addEventListener("hashchange", () => { const main = document.getElementById("main")! switch (hash[0]) { case "u": json(hash).then(u => euser(main, parseInt(hash.substring(1)), u)); break - case "s": break + case "s": json(hash).then(s => esoc(main, parseInt(hash.substring(1)), s)); break case "a": eagenda(main, agenda.filter(a => a._id === parseInt(hash.substring(1)) )); break diff --git a/ismism.ts/ui/index/index.html b/ismism.ts/ui/index/index.html index 76f04b3..ac5e73c 100644 --- a/ismism.ts/ui/index/index.html +++ b/ismism.ts/ui/index/index.html @@ -149,12 +149,21 @@ background: var(--purple); } - a.member { + a.member-soc { color: var(--white); background: var(--black); + margin: 0.5ch 0.5ch 0 0; padding: 0.1em 8px; } + a.member-user::after { + content: ", "; + } + + a.member-user:last-child:after { + content: ""; + } + button.photo-prev, button.photo-next, button.tab { @@ -178,7 +187,8 @@ a.video:hover, a.detail:hover, a.initial:hover, - a.uname:hover { + a.uname:hover, + a.member-user:hover { color: var(--amber); } @@ -188,7 +198,7 @@ a.tag:hover, a.aname:hover, - a.member:hover, + a.member-soc:hover, button.photo-prev:hover, button.photo-next:hover, button.tab:hover { @@ -402,6 +412,7 @@ } div.rec { + display: none; background: var(--lightgray); border-radius: 16px; padding: 16px 8px; @@ -535,7 +546,6 @@ - +