@takagaki/cortex-decisions-viewer 0.12.138 → 0.12.141
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/build.js +0 -2
- package/dist/render.js +50 -127
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -55,7 +55,7 @@ cortex-decisions-viewer build [dir] [options]
|
|
|
55
55
|
| `title` | タイトル |
|
|
56
56
|
| `date` | 日付(`YYYY-MM-DD`)。一覧は日付降順。期間(月)フィルタの導出元 |
|
|
57
57
|
| `sprint` | フィルタ用(`sprint` を使っている案件のみフィルタ表示) |
|
|
58
|
-
| `category` |
|
|
58
|
+
| `category` | 画面には出さない(旧い記録の欄は読むだけ) |
|
|
59
59
|
| `deciders` | 決定者チップ |
|
|
60
60
|
| `summary` | 一覧・詳細の要約 |
|
|
61
61
|
| `references` | 参照リンク。`[label](url)` 形式・URL・リポジトリルート相対パスに対応(ローカルパスはGitHubのblobリンクに変換) |
|
package/dist/build.js
CHANGED
|
@@ -2573,7 +2573,6 @@ async function buildSite(opts, views) {
|
|
|
2573
2573
|
return a.date < b.date ? 1 : -1;
|
|
2574
2574
|
return a.id < b.id ? 1 : -1;
|
|
2575
2575
|
});
|
|
2576
|
-
const categories = uniqueSorted(decisions.map((d) => d.category).filter(Boolean));
|
|
2577
2576
|
// 期間フィルタ用の月(YYYY-MM)を日付から導出し、降順(新しい順)にする
|
|
2578
2577
|
const months = uniqueSorted(decisions.map((d) => d.date.slice(0, 7)).filter((m) => /^\d{4}-\d{2}$/.test(m))).reverse();
|
|
2579
2578
|
// **突き合わなかった提案の件数をビルドログに出す。** path が1文字違うだけで
|
|
@@ -2632,7 +2631,6 @@ async function buildSite(opts, views) {
|
|
|
2632
2631
|
...(memoryV2 ? { memoryV2: true } : {}),
|
|
2633
2632
|
sections,
|
|
2634
2633
|
graph,
|
|
2635
|
-
categories,
|
|
2636
2634
|
months,
|
|
2637
2635
|
intake: opts.intakeUrl && opts.projectKey && opts.intakeToken
|
|
2638
2636
|
? {
|
package/dist/render.js
CHANGED
|
@@ -4962,6 +4962,8 @@ button.site-icon[aria-busy="true"] .site-icon-plus { opacity: 0; }
|
|
|
4962
4962
|
新しい見た目は作らず、.card:hover と同じ強調(アクセント色の枠)を使い回す */
|
|
4963
4963
|
.card.is-returned-to { border-color: var(--accent); }
|
|
4964
4964
|
.card-meta { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font-size: 12.5px; color: var(--muted); margin-bottom: 6px; }
|
|
4965
|
+
.card-titlerow { display: flex; align-items: baseline; gap: 12px; margin: 0 0 6px; }
|
|
4966
|
+
.card-titlerow .card-title { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; margin: 2px 0 0; }
|
|
4965
4967
|
/* card-title はカードの見出し(#1 新しいタブでも開けるよう <a> にした)。見た目は元の <div> と揃える */
|
|
4966
4968
|
.card-title { display: block; font-size: 16px; font-weight: 650; margin: 2px 0 6px; color: var(--text); }
|
|
4967
4969
|
.card-summary { color: #3b424c; font-size: 14px; margin: 0; }
|
|
@@ -4986,12 +4988,6 @@ a.pager-btn:hover { text-decoration: none; }
|
|
|
4986
4988
|
font-size: 12px; font-weight: 600; line-height: 1.6;
|
|
4987
4989
|
background: #eceef1; color: #41474f;
|
|
4988
4990
|
}
|
|
4989
|
-
.badge.cat-技術選定 { background: #e8f0ff; color: #1d4ed8; }
|
|
4990
|
-
.badge.cat-設計方針 { background: #e9f7ef; color: #1f7a45; }
|
|
4991
|
-
.badge.cat-運用ルール { background: #fdf0e3; color: #b45309; }
|
|
4992
|
-
.badge.cat-インフラ { background: #efe9fb; color: #6d28d9; }
|
|
4993
|
-
.badge.cat-ビジネス { background: #fde9ef; color: #be185d; }
|
|
4994
|
-
.badge.cat-デザイン { background: #fce7f3; color: #a21caf; }
|
|
4995
4991
|
.badge.draft { background: #fef3c7; color: #92400e; border: 1px solid #fcd34d; }
|
|
4996
4992
|
/* 直近のGold昇格で作られたレコードの印。draft(黄・要対応)と区別できるよう、新着を示す緑系にする */
|
|
4997
4993
|
.badge.latest { background: #dcfce7; color: #166534; border: 1px solid #86efac; }
|
|
@@ -5022,7 +5018,6 @@ a.pager-btn:hover { text-decoration: none; }
|
|
|
5022
5018
|
.story-card {
|
|
5023
5019
|
border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 18px; background: var(--surface);
|
|
5024
5020
|
}
|
|
5025
|
-
.story-card-focus { border-color: #2563eb; box-shadow: 0 0 0 2px rgba(37,99,235,0.25); }
|
|
5026
5021
|
.story-quiet { margin: -6px 0; padding: 0 18px; font-size: 12.5px; color: var(--muted); }
|
|
5027
5022
|
.story-quiet-date { font-variant-numeric: tabular-nums; }
|
|
5028
5023
|
.story-card-heading { margin: 0 0 8px; font-size: 15px; }
|
|
@@ -5312,10 +5307,9 @@ a.pager-btn:hover { text-decoration: none; }
|
|
|
5312
5307
|
.followup-section { margin: 14px 0 4px; }
|
|
5313
5308
|
/* 置き換え(#699 F3) */
|
|
5314
5309
|
.badge.retired { background: #f5f5f4; color: #57534e; border: 1px solid #d6d3d1; }
|
|
5315
|
-
/*
|
|
5316
|
-
.badge.now { background: #1d4ed8; color: #fff; }
|
|
5317
|
-
.card.is-now { border-left: 3px solid #1d4ed8; }
|
|
5310
|
+
/* 取り下げ済みルールの薄い表示 */
|
|
5318
5311
|
.card.is-faded { opacity: .55; }
|
|
5312
|
+
/* 論点・固さ(#1094)。欄の無い記録には付かない */
|
|
5319
5313
|
.badge.topic { background: #f5f3ff; color: #5b21b6; border: 1px solid #ddd6fe; font-weight: 500; }
|
|
5320
5314
|
.badge.firmness-fixed { background: #ecfdf5; color: #047857; border: 1px solid #a7f3d0; }
|
|
5321
5315
|
.badge.firmness-tentative { background: #fffbeb; color: #92400e; border: 1px solid #fde68a; }
|
|
@@ -6791,9 +6785,6 @@ ${calendarAddUrl.toString()}
|
|
|
6791
6785
|
});
|
|
6792
6786
|
return img;
|
|
6793
6787
|
}
|
|
6794
|
-
function catBadge(cat) {
|
|
6795
|
-
return el("span", { class: "badge cat-" + cat, text: cat || "未分類" });
|
|
6796
|
-
}
|
|
6797
6788
|
// 未確認(status: draft = AI生成・人間未確認)の印。Gold層の4型(決定事項・用語集・メンバー・ルール)共通で、active・status無しには何も出さない
|
|
6798
6789
|
function draftBadge(rec) {
|
|
6799
6790
|
return rec && unconfirmed(rec) ? el("span", { class: "badge draft", text: "AI生成・未確認" }) : null;
|
|
@@ -7156,7 +7147,7 @@ ${calendarAddUrl.toString()}
|
|
|
7156
7147
|
* -------------------------------------------------------------------------
|
|
7157
7148
|
* 欄(topic / firmness / decidedBy)は**ビルド側で語彙・形を確かめてある**。欄の無い記録では
|
|
7158
7149
|
* キーごと無いので、画面は有無だけを見る。🔴 **欄の無い記録だけの案件では要素を 1 つも作らない**
|
|
7159
|
-
*
|
|
7150
|
+
* (絞り込み・固さの札・決めた人の節が出ない=今と同じ DOM)。
|
|
7160
7151
|
* 「置き換えられた」の判定は isRetired(ビルドが supersedes.ts で組んだ答え)をそのまま使う。
|
|
7161
7152
|
*/
|
|
7162
7153
|
function hasTopic(rec) {
|
|
@@ -7182,27 +7173,6 @@ ${calendarAddUrl.toString()}
|
|
|
7182
7173
|
}
|
|
7183
7174
|
return a.id < b.id ? 1 : a.id > b.id ? -1 : 0;
|
|
7184
7175
|
}
|
|
7185
|
-
/**
|
|
7186
|
-
* 札ごとの「今」の決定(一番新しく、置き換えられていない 1 件)の ID の集合。
|
|
7187
|
-
* 削除済みは数えない(一覧と同じ材料)
|
|
7188
|
-
*/
|
|
7189
|
-
function nowDecisionIds() {
|
|
7190
|
-
var best = {};
|
|
7191
|
-
visibleRecords(SITE.decisions).forEach(function (d) {
|
|
7192
|
-
if (!hasTopic(d) || isRetired(d)) return;
|
|
7193
|
-
var cur = best[d.topic];
|
|
7194
|
-
if (!cur || newestDecisionFirst(d, cur) < 0) best[d.topic] = d;
|
|
7195
|
-
});
|
|
7196
|
-
var ids = {};
|
|
7197
|
-
Object.keys(best).forEach(function (t) { ids[best[t].id] = true; });
|
|
7198
|
-
return ids;
|
|
7199
|
-
}
|
|
7200
|
-
function isNowDecision(rec) {
|
|
7201
|
-
return !!(rec && rec._kind === "decision" && hasTopic(rec) && nowDecisionIds()[rec.id]);
|
|
7202
|
-
}
|
|
7203
|
-
function nowBadge(rec) {
|
|
7204
|
-
return isNowDecision(rec) ? el("span", { class: "badge now", title: "この論点で今有効な決定", text: "今" }) : null;
|
|
7205
|
-
}
|
|
7206
7176
|
/** 論点の札(一覧の行)。札が無ければ null */
|
|
7207
7177
|
function topicBadge(rec) {
|
|
7208
7178
|
return hasTopic(rec) ? el("span", { class: "badge topic", title: "論点", text: rec.topic }) : null;
|
|
@@ -7214,10 +7184,6 @@ ${calendarAddUrl.toString()}
|
|
|
7214
7184
|
if (typeof f !== "string" || !Object.prototype.hasOwnProperty.call(FIRMNESS_CLASS, f)) return null;
|
|
7215
7185
|
return el("span", { class: "badge firmness firmness-" + FIRMNESS_CLASS[f], title: "固さ", text: f });
|
|
7216
7186
|
}
|
|
7217
|
-
/** 置き換えられた決定を薄く出すか(論点の札を持つ決定だけ。欄の無い記録の見た目は変えない) */
|
|
7218
|
-
function fadedClass(rec) {
|
|
7219
|
-
return hasTopic(rec) && isRetired(rec) ? " is-faded" : "";
|
|
7220
|
-
}
|
|
7221
7187
|
/** 決めた人 1 人の札。関係者が名簿にあればそのページへ、{name, url} は url があれば元の URL へ */
|
|
7222
7188
|
function decidedByChip(who) {
|
|
7223
7189
|
if (!who || typeof who !== "object") return null;
|
|
@@ -8408,7 +8374,6 @@ ${calendarAddUrl.toString()}
|
|
|
8408
8374
|
// 文中のリンクは「押したら進む=戻れる」に見えるので、そちらだけ積む
|
|
8409
8375
|
function switchTab(tabKey, push) {
|
|
8410
8376
|
listState.tab = tabKey;
|
|
8411
|
-
storyFocus = null;
|
|
8412
8377
|
listState.page = 1;
|
|
8413
8378
|
if (push) history.pushState({}, "", tabUrl(tabKey));
|
|
8414
8379
|
else history.replaceState(null, "", tabUrl(tabKey));
|
|
@@ -8545,7 +8510,7 @@ ${calendarAddUrl.toString()}
|
|
|
8545
8510
|
}
|
|
8546
8511
|
}
|
|
8547
8512
|
|
|
8548
|
-
var listState = { tab: DEFAULT_TAB, q: "",
|
|
8513
|
+
var listState = { tab: DEFAULT_TAB, q: "", month: "", status: "", topic: "", page: 1 };
|
|
8549
8514
|
|
|
8550
8515
|
// 一覧のページネーション(描画コスト対策。1ページあたりの件数)
|
|
8551
8516
|
var PAGE_SIZE = 30;
|
|
@@ -8575,6 +8540,20 @@ ${calendarAddUrl.toString()}
|
|
|
8575
8540
|
return !ev.defaultPrevented && ev.button === 0 && !ev.metaKey && !ev.ctrlKey && !ev.shiftKey && !ev.altKey;
|
|
8576
8541
|
}
|
|
8577
8542
|
|
|
8543
|
+
/** 一覧カードの頭(上の段 + 題)を組む。左側の中身(札・日付・エラーの札)が 1 つも無いときは
|
|
8544
|
+
* 空の .card-meta を作らず、「🕸 つながり」を題の行の右端に置く(#1094)。 */
|
|
8545
|
+
function cardHead(rec, leftNodes, titleExtra) {
|
|
8546
|
+
var trace = el("a", { class: "mc-trace", href: "?tab=graph", text: "🕸 つながり" });
|
|
8547
|
+
trace.addEventListener("click", function (ev) { ev.preventDefault(); ev.stopPropagation(); openExplorerFor(rec); });
|
|
8548
|
+
var meta = el("div", { class: "card-meta" }, leftNodes);
|
|
8549
|
+
var eb = fmErrorBadge(rec);
|
|
8550
|
+
if (eb) meta.appendChild(eb);
|
|
8551
|
+
var title = cardTitleLink(rec, titleExtra);
|
|
8552
|
+
if (!meta.childNodes.length) return [el("div", { class: "card-titlerow" }, [title, trace])];
|
|
8553
|
+
meta.appendChild(trace);
|
|
8554
|
+
return [meta, title];
|
|
8555
|
+
}
|
|
8556
|
+
|
|
8578
8557
|
/**
|
|
8579
8558
|
* 一覧カードの見出し(#1)。普通の a href="?id=..." にして、中クリック・
|
|
8580
8559
|
* Ctrl/Cmd クリックで新しいタブでも開けるようにする(opsTabLink と同じ型)。
|
|
@@ -8690,8 +8669,6 @@ ${calendarAddUrl.toString()}
|
|
|
8690
8669
|
var STORY_SUB_DEFAULT = "daily";
|
|
8691
8670
|
var STORY_SUBS = [["daily", "日次"], ["weekly", "週次"], ["monthly", "月次"]];
|
|
8692
8671
|
var storySub = STORY_SUB_DEFAULT;
|
|
8693
|
-
// 記録の詳細の「この日のストーリー」から着いたときに目立たせる日(日次)・週の月曜(週次)。URL の ?day= / ?week=(engine #551)
|
|
8694
|
-
var storyFocus = null;
|
|
8695
8672
|
|
|
8696
8673
|
function storySubUrl(sub) {
|
|
8697
8674
|
return sub === STORY_SUB_DEFAULT ? "?tab=story" : "?tab=story&sub=" + encodeURIComponent(sub);
|
|
@@ -8699,7 +8676,6 @@ ${calendarAddUrl.toString()}
|
|
|
8699
8676
|
function switchStorySub(sub) {
|
|
8700
8677
|
if (storySub === sub) return;
|
|
8701
8678
|
storySub = sub;
|
|
8702
|
-
storyFocus = null;
|
|
8703
8679
|
history.replaceState(null, "", storySubUrl(sub));
|
|
8704
8680
|
renderList();
|
|
8705
8681
|
}
|
|
@@ -8722,7 +8698,7 @@ ${calendarAddUrl.toString()}
|
|
|
8722
8698
|
]));
|
|
8723
8699
|
return;
|
|
8724
8700
|
}
|
|
8725
|
-
list.appendChild(el("section", { class: "story-card"
|
|
8701
|
+
list.appendChild(el("section", { class: "story-card" }, [
|
|
8726
8702
|
el("h3", { class: "story-card-heading", text: d.heading || d.date }),
|
|
8727
8703
|
d.bodyHtml ? el("div", { class: "body", html: d.bodyHtml }) : null,
|
|
8728
8704
|
// その日のファイルを GitHub で開く(表示の文字にファイル名を出さない)。URL が無い案件は出さない
|
|
@@ -8738,7 +8714,7 @@ ${calendarAddUrl.toString()}
|
|
|
8738
8714
|
el("h4", { text: "人の追記" }),
|
|
8739
8715
|
el("div", { class: "body", html: entry.humanHtml }),
|
|
8740
8716
|
]) : null;
|
|
8741
|
-
return el("section", { class: "story-card"
|
|
8717
|
+
return el("section", { class: "story-card" }, [
|
|
8742
8718
|
el("h3", { class: "story-card-heading", text: entry.heading }),
|
|
8743
8719
|
entry.phase ? el("p", { class: "story-phase" }, [
|
|
8744
8720
|
el("span", { class: "story-phase-label", text: phaseLabel }),
|
|
@@ -8840,53 +8816,6 @@ ${calendarAddUrl.toString()}
|
|
|
8840
8816
|
if (storySub === "weekly") renderStoryWeekly();
|
|
8841
8817
|
else if (storySub === "monthly") renderStoryMonthly();
|
|
8842
8818
|
else renderStoryDaily();
|
|
8843
|
-
// 記録の詳細から着いた日(週)のカードを目立たせて、そこまで送る
|
|
8844
|
-
if (storyFocus) {
|
|
8845
|
-
var focused = null;
|
|
8846
|
-
app.querySelectorAll(".story-card[data-story-key]").forEach(function (c) {
|
|
8847
|
-
if (!focused && c.getAttribute("data-story-key") === storyFocus) focused = c;
|
|
8848
|
-
});
|
|
8849
|
-
if (focused) {
|
|
8850
|
-
focused.classList.add("story-card-focus");
|
|
8851
|
-
if (typeof focused.scrollIntoView === "function") focused.scrollIntoView({ block: "start" });
|
|
8852
|
-
}
|
|
8853
|
-
}
|
|
8854
|
-
}
|
|
8855
|
-
|
|
8856
|
-
/**
|
|
8857
|
-
* 記録の日付から「その日のストーリー」の行き先を決める(engine #551・オーナー決定 10/1)。
|
|
8858
|
-
* その日の日次のカード(動きのあった日)があれば日次へ、無ければその日を含む週のあらすじへ。どちらも無ければ null(リンクを出さない)
|
|
8859
|
-
*/
|
|
8860
|
-
function storyTargetOf(date) {
|
|
8861
|
-
if (!date || !/^\\d{4}-\\d{2}-\\d{2}$/.test(date) || !hasTab("story")) return null;
|
|
8862
|
-
var days = SITE.story || [];
|
|
8863
|
-
for (var i = 0; i < days.length; i++) {
|
|
8864
|
-
if (!days[i].quiet && days[i].date === date) return { sub: "daily", key: date, href: "?tab=story&day=" + encodeURIComponent(date) };
|
|
8865
|
-
}
|
|
8866
|
-
var weeks = (SITE.storyDigest && SITE.storyDigest.weeks) || [];
|
|
8867
|
-
var monday = storyMondayOf(date);
|
|
8868
|
-
for (var j = 0; j < weeks.length; j++) {
|
|
8869
|
-
if (weeks[j].key === monday) return { sub: "weekly", key: monday, href: "?tab=story&sub=weekly&week=" + encodeURIComponent(monday) };
|
|
8870
|
-
}
|
|
8871
|
-
return null;
|
|
8872
|
-
}
|
|
8873
|
-
/** 記録の詳細の「この日のストーリー」(行き先が無ければ null) */
|
|
8874
|
-
function storyLinkFor(rec) {
|
|
8875
|
-
var target = storyTargetOf(rec && rec.date);
|
|
8876
|
-
if (!target) return null;
|
|
8877
|
-
var a = el("a", { class: "trace-btn story-link-btn", href: target.href, text: target.sub === "daily" ? "📖 この日のストーリー" : "📖 この週のストーリー" });
|
|
8878
|
-
a.addEventListener("click", function (ev) {
|
|
8879
|
-
// 新しいタブで開く操作(修飾キー・中ボタン)はブラウザに任せる(href は本物の URL)
|
|
8880
|
-
if (ev.metaKey || ev.ctrlKey || ev.shiftKey || ev.altKey || (typeof ev.button === "number" && ev.button !== 0)) return;
|
|
8881
|
-
ev.preventDefault();
|
|
8882
|
-
listState.tab = "story";
|
|
8883
|
-
storySub = target.sub;
|
|
8884
|
-
storyFocus = target.key;
|
|
8885
|
-
lastWasDetail = false;
|
|
8886
|
-
history.pushState({}, "", target.href);
|
|
8887
|
-
renderList();
|
|
8888
|
-
});
|
|
8889
|
-
return a;
|
|
8890
8819
|
}
|
|
8891
8820
|
|
|
8892
8821
|
// 導入経緯(overview.adoption)の表示情報。Home見出し横のチップに出すラベルだけを返す。
|
|
@@ -14245,6 +14174,22 @@ ${calendarAddUrl.toString()}
|
|
|
14245
14174
|
var payload = { type: probeTypeOf(s.type), ref: s.ref };
|
|
14246
14175
|
if (s.workspace) payload.workspace = s.workspace;
|
|
14247
14176
|
try {
|
|
14177
|
+
// 🔴 **組織が分からない行は、確認の前に所属を判定し直す。** 表示のたびの自動判定
|
|
14178
|
+
// (requestOrgResolve)は 1 回きりで、アプリを招待したあとに押しても直らなかった。
|
|
14179
|
+
// 判定できたら、社内の鍵で測った結果(届かない)を出さず、反映したことと次の一手を伝える
|
|
14180
|
+
if (s.type === "slack" && s.orgUnknown === true) {
|
|
14181
|
+
try {
|
|
14182
|
+
var rr = await callIntake("slack-resolve", {});
|
|
14183
|
+
var rj = rr.ok ? await rr.json().catch(function () { return null; }) : null;
|
|
14184
|
+
if (rj && rj.resolved) {
|
|
14185
|
+
wrap.className = "ds-probe is-shown";
|
|
14186
|
+
msg.className = "ds-toggle-msg";
|
|
14187
|
+
msg.textContent = "✓ " + rj.resolved + "件の所属ワークスペースを反映しました。一覧の表示は次回の更新から正しくなります。";
|
|
14188
|
+
endBusy();
|
|
14189
|
+
return;
|
|
14190
|
+
}
|
|
14191
|
+
} catch (resolveErr) { /* 判定し直せなくても、そのまま確認へ進む */ }
|
|
14192
|
+
}
|
|
14248
14193
|
var res = await callIntake("probe", payload);
|
|
14249
14194
|
var j = await res.json().catch(function () { return {}; });
|
|
14250
14195
|
if (!res.ok) {
|
|
@@ -19728,7 +19673,6 @@ ${calendarAddUrl.toString()}
|
|
|
19728
19673
|
if (SITE.months && SITE.months.length) {
|
|
19729
19674
|
filters.appendChild(buildSelect("すべての期間", SITE.months, listState.month, function (v) { listState.month = v; listState.page = 1; drawCards(); }, monthLabel));
|
|
19730
19675
|
}
|
|
19731
|
-
filters.appendChild(buildSelect("すべてのカテゴリー", SITE.categories, listState.category, function (v) { listState.category = v; listState.page = 1; drawCards(); }));
|
|
19732
19676
|
var statusOptsD = statusFilterOptions(visibleRecords(SITE.decisions));
|
|
19733
19677
|
if (statusOptsD.length) {
|
|
19734
19678
|
filters.appendChild(buildSelect("すべての状態", statusOptsD, listState.status, function (v) { listState.status = v; listState.page = 1; drawCards(); }, statusLabel));
|
|
@@ -19763,7 +19707,7 @@ ${calendarAddUrl.toString()}
|
|
|
19763
19707
|
}
|
|
19764
19708
|
|
|
19765
19709
|
/**
|
|
19766
|
-
*
|
|
19710
|
+
* 今の絞り込み(検索語・期間・状態・論点)を当てた決定の一覧(並びは
|
|
19767
19711
|
* SITE.decisions の順=新しい順のまま)。drawCards と、詳細の「前へ/次へ」
|
|
19768
19712
|
* (#2)の両方がここを通る——一覧の並びと前後移動の並びがずれないように、口を1つにする。
|
|
19769
19713
|
*/
|
|
@@ -19773,7 +19717,6 @@ ${calendarAddUrl.toString()}
|
|
|
19773
19717
|
var all = visibleRecords(SITE.decisions);
|
|
19774
19718
|
var out = all.filter(function (d) {
|
|
19775
19719
|
if (listState.month && d.date.slice(0, 7) !== listState.month) return false;
|
|
19776
|
-
if (listState.category && d.category !== listState.category) return false;
|
|
19777
19720
|
if (!matchesStatusFilter(d)) return false;
|
|
19778
19721
|
if (!matchesTopicFilter(d)) return false;
|
|
19779
19722
|
if (q) {
|
|
@@ -19811,27 +19754,18 @@ ${calendarAddUrl.toString()}
|
|
|
19811
19754
|
(pg.pages > 1 ? "(" + pg.page + "/" + pg.pages + "ページ)" : "");
|
|
19812
19755
|
|
|
19813
19756
|
pg.slice.forEach(function (d) {
|
|
19814
|
-
var
|
|
19815
|
-
nowBadge(d),
|
|
19757
|
+
var head = cardHead(d, [
|
|
19816
19758
|
draftBadge(d),
|
|
19817
19759
|
retiredBadge(d),
|
|
19818
19760
|
latestBadge(d),
|
|
19819
19761
|
el("span", { class: "mono", text: d.date || "----" }),
|
|
19820
|
-
catBadge(d.category),
|
|
19821
19762
|
firmnessBadge(d),
|
|
19822
19763
|
topicBadge(d),
|
|
19823
|
-
]);
|
|
19824
|
-
|
|
19825
|
-
|
|
19826
|
-
var traceD = el("a", { class: "mc-trace", href: "?tab=graph", text: "🕸 つながり" });
|
|
19827
|
-
traceD.addEventListener("click", function (ev) { ev.preventDefault(); ev.stopPropagation(); openExplorerFor(d); });
|
|
19828
|
-
meta.appendChild(traceD);
|
|
19829
|
-
var card = el("div", { class: "card" + fadedClass(d) + (isNowDecision(d) ? " is-now" : ""), title: d.id, "data-record-id": d.id }, [
|
|
19830
|
-
meta,
|
|
19831
|
-
// 消したレコードは一覧でも取り消し線(次のビルドまで一覧には残る)
|
|
19832
|
-
cardTitleLink(d, d.deleted ? " is-deleted" : ""),
|
|
19764
|
+
], d.deleted ? " is-deleted" : "");
|
|
19765
|
+
// 消したレコードは一覧でも取り消し線(次のビルドまで一覧には残る)
|
|
19766
|
+
var card = el("div", { class: "card", title: d.id, "data-record-id": d.id }, head.concat([
|
|
19833
19767
|
d.summary ? el("p", { class: "card-summary", text: d.summary }) : null,
|
|
19834
|
-
]);
|
|
19768
|
+
]));
|
|
19835
19769
|
card.addEventListener("click", function () { go(d.id); });
|
|
19836
19770
|
wrap.appendChild(card);
|
|
19837
19771
|
});
|
|
@@ -19879,22 +19813,15 @@ ${calendarAddUrl.toString()}
|
|
|
19879
19813
|
shown.length + " / " + items.length + " 件" +
|
|
19880
19814
|
(pg.pages > 1 ? "(" + pg.page + "/" + pg.pages + "ページ)" : "");
|
|
19881
19815
|
pg.slice.forEach(function (r) {
|
|
19882
|
-
var
|
|
19816
|
+
var head = cardHead(r, [
|
|
19883
19817
|
draftBadge(r),
|
|
19884
19818
|
retractedBadge(r),
|
|
19885
19819
|
latestBadge(r),
|
|
19886
19820
|
r.date ? el("span", { class: "mono", text: r.date }) : null,
|
|
19887
|
-
]);
|
|
19888
|
-
var
|
|
19889
|
-
if (ebr) meta.appendChild(ebr);
|
|
19890
|
-
var traceR = el("a", { class: "mc-trace", href: "?tab=graph", text: "🕸 つながり" });
|
|
19891
|
-
traceR.addEventListener("click", function (ev) { ev.preventDefault(); ev.stopPropagation(); openExplorerFor(r); });
|
|
19892
|
-
meta.appendChild(traceR);
|
|
19893
|
-
var card = el("div", { class: "card" + retractedFadedClass(r), title: r.id, "data-record-id": r.id }, [
|
|
19894
|
-
meta,
|
|
19895
|
-
cardTitleLink(r, r.deleted ? " is-deleted" : ""),
|
|
19821
|
+
], r.deleted ? " is-deleted" : "");
|
|
19822
|
+
var card = el("div", { class: "card" + retractedFadedClass(r), title: r.id, "data-record-id": r.id }, head.concat([
|
|
19896
19823
|
r.summary ? el("p", { class: "card-summary", text: r.summary }) : null,
|
|
19897
|
-
]);
|
|
19824
|
+
]));
|
|
19898
19825
|
card.addEventListener("click", function () { go(r.id); });
|
|
19899
19826
|
listWrap.appendChild(card);
|
|
19900
19827
|
});
|
|
@@ -20717,7 +20644,7 @@ ${calendarAddUrl.toString()}
|
|
|
20717
20644
|
// 警告帯が出ない記録の削除の口はここ(編集の行の末尾)。draft には出さない
|
|
20718
20645
|
var delMsgR = attachDeleteToEditRow(r, editRowR);
|
|
20719
20646
|
head.appendChild(el("div", { class: "detail-actions" }, [
|
|
20720
|
-
el("div", { class: "detail-actions-row" }, [ traceBtn2
|
|
20647
|
+
el("div", { class: "detail-actions-row" }, [ traceBtn2 ]),
|
|
20721
20648
|
editRowR.children.length ? editRowR : null,
|
|
20722
20649
|
delMsgR,
|
|
20723
20650
|
]));
|
|
@@ -21659,19 +21586,17 @@ ${calendarAddUrl.toString()}
|
|
|
21659
21586
|
// 警告帯が出ない記録の削除の口はここ(編集の行の末尾)。draft には出さない
|
|
21660
21587
|
var delMsgD = attachDeleteToEditRow(d, editRowD);
|
|
21661
21588
|
head.appendChild(el("div", { class: "detail-actions" }, [
|
|
21662
|
-
el("div", { class: "detail-actions-row" }, [ traceBtn
|
|
21589
|
+
el("div", { class: "detail-actions-row" }, [ traceBtn ]),
|
|
21663
21590
|
editRowD.children.length ? editRowD : null,
|
|
21664
21591
|
delMsgD,
|
|
21665
21592
|
]));
|
|
21666
21593
|
app.appendChild(head);
|
|
21667
21594
|
|
|
21668
21595
|
var meta = el("div", { class: "detail-meta" }, [
|
|
21669
|
-
nowBadge(d),
|
|
21670
21596
|
draftBadge(d),
|
|
21671
21597
|
retiredBadge(d),
|
|
21672
21598
|
latestBadge(d),
|
|
21673
21599
|
el("span", { class: "mono", text: d.date || "----" }),
|
|
21674
|
-
catBadge(d.category),
|
|
21675
21600
|
firmnessBadge(d),
|
|
21676
21601
|
]);
|
|
21677
21602
|
meta.title = d.id;
|
|
@@ -22189,8 +22114,6 @@ ${calendarAddUrl.toString()}
|
|
|
22189
22114
|
var validSub = false;
|
|
22190
22115
|
STORY_SUBS.forEach(function (s) { if (s[0] === sub) validSub = true; });
|
|
22191
22116
|
storySub = validSub ? sub : STORY_SUB_DEFAULT;
|
|
22192
|
-
var focusKey = storySub === "weekly" ? getParam("week") : storySub === "daily" ? getParam("day") : null;
|
|
22193
|
-
storyFocus = focusKey && /^\\d{4}-\\d{2}-\\d{2}$/.test(focusKey) ? focusKey : null;
|
|
22194
22117
|
}
|
|
22195
22118
|
renderList();
|
|
22196
22119
|
}
|
package/package.json
CHANGED