@takagaki/cortex-decisions-viewer 0.12.138 → 0.12.140
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 +26 -105
- 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
|
@@ -4986,12 +4986,6 @@ a.pager-btn:hover { text-decoration: none; }
|
|
|
4986
4986
|
font-size: 12px; font-weight: 600; line-height: 1.6;
|
|
4987
4987
|
background: #eceef1; color: #41474f;
|
|
4988
4988
|
}
|
|
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
4989
|
.badge.draft { background: #fef3c7; color: #92400e; border: 1px solid #fcd34d; }
|
|
4996
4990
|
/* 直近のGold昇格で作られたレコードの印。draft(黄・要対応)と区別できるよう、新着を示す緑系にする */
|
|
4997
4991
|
.badge.latest { background: #dcfce7; color: #166534; border: 1px solid #86efac; }
|
|
@@ -5022,7 +5016,6 @@ a.pager-btn:hover { text-decoration: none; }
|
|
|
5022
5016
|
.story-card {
|
|
5023
5017
|
border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 18px; background: var(--surface);
|
|
5024
5018
|
}
|
|
5025
|
-
.story-card-focus { border-color: #2563eb; box-shadow: 0 0 0 2px rgba(37,99,235,0.25); }
|
|
5026
5019
|
.story-quiet { margin: -6px 0; padding: 0 18px; font-size: 12.5px; color: var(--muted); }
|
|
5027
5020
|
.story-quiet-date { font-variant-numeric: tabular-nums; }
|
|
5028
5021
|
.story-card-heading { margin: 0 0 8px; font-size: 15px; }
|
|
@@ -5312,10 +5305,9 @@ a.pager-btn:hover { text-decoration: none; }
|
|
|
5312
5305
|
.followup-section { margin: 14px 0 4px; }
|
|
5313
5306
|
/* 置き換え(#699 F3) */
|
|
5314
5307
|
.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; }
|
|
5308
|
+
/* 取り下げ済みルールの薄い表示 */
|
|
5318
5309
|
.card.is-faded { opacity: .55; }
|
|
5310
|
+
/* 論点・固さ(#1094)。欄の無い記録には付かない */
|
|
5319
5311
|
.badge.topic { background: #f5f3ff; color: #5b21b6; border: 1px solid #ddd6fe; font-weight: 500; }
|
|
5320
5312
|
.badge.firmness-fixed { background: #ecfdf5; color: #047857; border: 1px solid #a7f3d0; }
|
|
5321
5313
|
.badge.firmness-tentative { background: #fffbeb; color: #92400e; border: 1px solid #fde68a; }
|
|
@@ -6791,9 +6783,6 @@ ${calendarAddUrl.toString()}
|
|
|
6791
6783
|
});
|
|
6792
6784
|
return img;
|
|
6793
6785
|
}
|
|
6794
|
-
function catBadge(cat) {
|
|
6795
|
-
return el("span", { class: "badge cat-" + cat, text: cat || "未分類" });
|
|
6796
|
-
}
|
|
6797
6786
|
// 未確認(status: draft = AI生成・人間未確認)の印。Gold層の4型(決定事項・用語集・メンバー・ルール)共通で、active・status無しには何も出さない
|
|
6798
6787
|
function draftBadge(rec) {
|
|
6799
6788
|
return rec && unconfirmed(rec) ? el("span", { class: "badge draft", text: "AI生成・未確認" }) : null;
|
|
@@ -7156,7 +7145,7 @@ ${calendarAddUrl.toString()}
|
|
|
7156
7145
|
* -------------------------------------------------------------------------
|
|
7157
7146
|
* 欄(topic / firmness / decidedBy)は**ビルド側で語彙・形を確かめてある**。欄の無い記録では
|
|
7158
7147
|
* キーごと無いので、画面は有無だけを見る。🔴 **欄の無い記録だけの案件では要素を 1 つも作らない**
|
|
7159
|
-
*
|
|
7148
|
+
* (絞り込み・固さの札・決めた人の節が出ない=今と同じ DOM)。
|
|
7160
7149
|
* 「置き換えられた」の判定は isRetired(ビルドが supersedes.ts で組んだ答え)をそのまま使う。
|
|
7161
7150
|
*/
|
|
7162
7151
|
function hasTopic(rec) {
|
|
@@ -7182,27 +7171,6 @@ ${calendarAddUrl.toString()}
|
|
|
7182
7171
|
}
|
|
7183
7172
|
return a.id < b.id ? 1 : a.id > b.id ? -1 : 0;
|
|
7184
7173
|
}
|
|
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
7174
|
/** 論点の札(一覧の行)。札が無ければ null */
|
|
7207
7175
|
function topicBadge(rec) {
|
|
7208
7176
|
return hasTopic(rec) ? el("span", { class: "badge topic", title: "論点", text: rec.topic }) : null;
|
|
@@ -7214,10 +7182,6 @@ ${calendarAddUrl.toString()}
|
|
|
7214
7182
|
if (typeof f !== "string" || !Object.prototype.hasOwnProperty.call(FIRMNESS_CLASS, f)) return null;
|
|
7215
7183
|
return el("span", { class: "badge firmness firmness-" + FIRMNESS_CLASS[f], title: "固さ", text: f });
|
|
7216
7184
|
}
|
|
7217
|
-
/** 置き換えられた決定を薄く出すか(論点の札を持つ決定だけ。欄の無い記録の見た目は変えない) */
|
|
7218
|
-
function fadedClass(rec) {
|
|
7219
|
-
return hasTopic(rec) && isRetired(rec) ? " is-faded" : "";
|
|
7220
|
-
}
|
|
7221
7185
|
/** 決めた人 1 人の札。関係者が名簿にあればそのページへ、{name, url} は url があれば元の URL へ */
|
|
7222
7186
|
function decidedByChip(who) {
|
|
7223
7187
|
if (!who || typeof who !== "object") return null;
|
|
@@ -8408,7 +8372,6 @@ ${calendarAddUrl.toString()}
|
|
|
8408
8372
|
// 文中のリンクは「押したら進む=戻れる」に見えるので、そちらだけ積む
|
|
8409
8373
|
function switchTab(tabKey, push) {
|
|
8410
8374
|
listState.tab = tabKey;
|
|
8411
|
-
storyFocus = null;
|
|
8412
8375
|
listState.page = 1;
|
|
8413
8376
|
if (push) history.pushState({}, "", tabUrl(tabKey));
|
|
8414
8377
|
else history.replaceState(null, "", tabUrl(tabKey));
|
|
@@ -8545,7 +8508,7 @@ ${calendarAddUrl.toString()}
|
|
|
8545
8508
|
}
|
|
8546
8509
|
}
|
|
8547
8510
|
|
|
8548
|
-
var listState = { tab: DEFAULT_TAB, q: "",
|
|
8511
|
+
var listState = { tab: DEFAULT_TAB, q: "", month: "", status: "", topic: "", page: 1 };
|
|
8549
8512
|
|
|
8550
8513
|
// 一覧のページネーション(描画コスト対策。1ページあたりの件数)
|
|
8551
8514
|
var PAGE_SIZE = 30;
|
|
@@ -8690,8 +8653,6 @@ ${calendarAddUrl.toString()}
|
|
|
8690
8653
|
var STORY_SUB_DEFAULT = "daily";
|
|
8691
8654
|
var STORY_SUBS = [["daily", "日次"], ["weekly", "週次"], ["monthly", "月次"]];
|
|
8692
8655
|
var storySub = STORY_SUB_DEFAULT;
|
|
8693
|
-
// 記録の詳細の「この日のストーリー」から着いたときに目立たせる日(日次)・週の月曜(週次)。URL の ?day= / ?week=(engine #551)
|
|
8694
|
-
var storyFocus = null;
|
|
8695
8656
|
|
|
8696
8657
|
function storySubUrl(sub) {
|
|
8697
8658
|
return sub === STORY_SUB_DEFAULT ? "?tab=story" : "?tab=story&sub=" + encodeURIComponent(sub);
|
|
@@ -8699,7 +8660,6 @@ ${calendarAddUrl.toString()}
|
|
|
8699
8660
|
function switchStorySub(sub) {
|
|
8700
8661
|
if (storySub === sub) return;
|
|
8701
8662
|
storySub = sub;
|
|
8702
|
-
storyFocus = null;
|
|
8703
8663
|
history.replaceState(null, "", storySubUrl(sub));
|
|
8704
8664
|
renderList();
|
|
8705
8665
|
}
|
|
@@ -8722,7 +8682,7 @@ ${calendarAddUrl.toString()}
|
|
|
8722
8682
|
]));
|
|
8723
8683
|
return;
|
|
8724
8684
|
}
|
|
8725
|
-
list.appendChild(el("section", { class: "story-card"
|
|
8685
|
+
list.appendChild(el("section", { class: "story-card" }, [
|
|
8726
8686
|
el("h3", { class: "story-card-heading", text: d.heading || d.date }),
|
|
8727
8687
|
d.bodyHtml ? el("div", { class: "body", html: d.bodyHtml }) : null,
|
|
8728
8688
|
// その日のファイルを GitHub で開く(表示の文字にファイル名を出さない)。URL が無い案件は出さない
|
|
@@ -8738,7 +8698,7 @@ ${calendarAddUrl.toString()}
|
|
|
8738
8698
|
el("h4", { text: "人の追記" }),
|
|
8739
8699
|
el("div", { class: "body", html: entry.humanHtml }),
|
|
8740
8700
|
]) : null;
|
|
8741
|
-
return el("section", { class: "story-card"
|
|
8701
|
+
return el("section", { class: "story-card" }, [
|
|
8742
8702
|
el("h3", { class: "story-card-heading", text: entry.heading }),
|
|
8743
8703
|
entry.phase ? el("p", { class: "story-phase" }, [
|
|
8744
8704
|
el("span", { class: "story-phase-label", text: phaseLabel }),
|
|
@@ -8840,53 +8800,6 @@ ${calendarAddUrl.toString()}
|
|
|
8840
8800
|
if (storySub === "weekly") renderStoryWeekly();
|
|
8841
8801
|
else if (storySub === "monthly") renderStoryMonthly();
|
|
8842
8802
|
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
8803
|
}
|
|
8891
8804
|
|
|
8892
8805
|
// 導入経緯(overview.adoption)の表示情報。Home見出し横のチップに出すラベルだけを返す。
|
|
@@ -14245,6 +14158,22 @@ ${calendarAddUrl.toString()}
|
|
|
14245
14158
|
var payload = { type: probeTypeOf(s.type), ref: s.ref };
|
|
14246
14159
|
if (s.workspace) payload.workspace = s.workspace;
|
|
14247
14160
|
try {
|
|
14161
|
+
// 🔴 **組織が分からない行は、確認の前に所属を判定し直す。** 表示のたびの自動判定
|
|
14162
|
+
// (requestOrgResolve)は 1 回きりで、アプリを招待したあとに押しても直らなかった。
|
|
14163
|
+
// 判定できたら、社内の鍵で測った結果(届かない)を出さず、反映したことと次の一手を伝える
|
|
14164
|
+
if (s.type === "slack" && s.orgUnknown === true) {
|
|
14165
|
+
try {
|
|
14166
|
+
var rr = await callIntake("slack-resolve", {});
|
|
14167
|
+
var rj = rr.ok ? await rr.json().catch(function () { return null; }) : null;
|
|
14168
|
+
if (rj && rj.resolved) {
|
|
14169
|
+
wrap.className = "ds-probe is-shown";
|
|
14170
|
+
msg.className = "ds-toggle-msg";
|
|
14171
|
+
msg.textContent = "✓ " + rj.resolved + "件の所属ワークスペースを反映しました。一覧の表示は次回の更新から正しくなります。";
|
|
14172
|
+
endBusy();
|
|
14173
|
+
return;
|
|
14174
|
+
}
|
|
14175
|
+
} catch (resolveErr) { /* 判定し直せなくても、そのまま確認へ進む */ }
|
|
14176
|
+
}
|
|
14248
14177
|
var res = await callIntake("probe", payload);
|
|
14249
14178
|
var j = await res.json().catch(function () { return {}; });
|
|
14250
14179
|
if (!res.ok) {
|
|
@@ -19728,7 +19657,6 @@ ${calendarAddUrl.toString()}
|
|
|
19728
19657
|
if (SITE.months && SITE.months.length) {
|
|
19729
19658
|
filters.appendChild(buildSelect("すべての期間", SITE.months, listState.month, function (v) { listState.month = v; listState.page = 1; drawCards(); }, monthLabel));
|
|
19730
19659
|
}
|
|
19731
|
-
filters.appendChild(buildSelect("すべてのカテゴリー", SITE.categories, listState.category, function (v) { listState.category = v; listState.page = 1; drawCards(); }));
|
|
19732
19660
|
var statusOptsD = statusFilterOptions(visibleRecords(SITE.decisions));
|
|
19733
19661
|
if (statusOptsD.length) {
|
|
19734
19662
|
filters.appendChild(buildSelect("すべての状態", statusOptsD, listState.status, function (v) { listState.status = v; listState.page = 1; drawCards(); }, statusLabel));
|
|
@@ -19763,7 +19691,7 @@ ${calendarAddUrl.toString()}
|
|
|
19763
19691
|
}
|
|
19764
19692
|
|
|
19765
19693
|
/**
|
|
19766
|
-
*
|
|
19694
|
+
* 今の絞り込み(検索語・期間・状態・論点)を当てた決定の一覧(並びは
|
|
19767
19695
|
* SITE.decisions の順=新しい順のまま)。drawCards と、詳細の「前へ/次へ」
|
|
19768
19696
|
* (#2)の両方がここを通る——一覧の並びと前後移動の並びがずれないように、口を1つにする。
|
|
19769
19697
|
*/
|
|
@@ -19773,7 +19701,6 @@ ${calendarAddUrl.toString()}
|
|
|
19773
19701
|
var all = visibleRecords(SITE.decisions);
|
|
19774
19702
|
var out = all.filter(function (d) {
|
|
19775
19703
|
if (listState.month && d.date.slice(0, 7) !== listState.month) return false;
|
|
19776
|
-
if (listState.category && d.category !== listState.category) return false;
|
|
19777
19704
|
if (!matchesStatusFilter(d)) return false;
|
|
19778
19705
|
if (!matchesTopicFilter(d)) return false;
|
|
19779
19706
|
if (q) {
|
|
@@ -19812,12 +19739,10 @@ ${calendarAddUrl.toString()}
|
|
|
19812
19739
|
|
|
19813
19740
|
pg.slice.forEach(function (d) {
|
|
19814
19741
|
var meta = el("div", { class: "card-meta" }, [
|
|
19815
|
-
nowBadge(d),
|
|
19816
19742
|
draftBadge(d),
|
|
19817
19743
|
retiredBadge(d),
|
|
19818
19744
|
latestBadge(d),
|
|
19819
19745
|
el("span", { class: "mono", text: d.date || "----" }),
|
|
19820
|
-
catBadge(d.category),
|
|
19821
19746
|
firmnessBadge(d),
|
|
19822
19747
|
topicBadge(d),
|
|
19823
19748
|
]);
|
|
@@ -19826,7 +19751,7 @@ ${calendarAddUrl.toString()}
|
|
|
19826
19751
|
var traceD = el("a", { class: "mc-trace", href: "?tab=graph", text: "🕸 つながり" });
|
|
19827
19752
|
traceD.addEventListener("click", function (ev) { ev.preventDefault(); ev.stopPropagation(); openExplorerFor(d); });
|
|
19828
19753
|
meta.appendChild(traceD);
|
|
19829
|
-
var card = el("div", { class: "card"
|
|
19754
|
+
var card = el("div", { class: "card", title: d.id, "data-record-id": d.id }, [
|
|
19830
19755
|
meta,
|
|
19831
19756
|
// 消したレコードは一覧でも取り消し線(次のビルドまで一覧には残る)
|
|
19832
19757
|
cardTitleLink(d, d.deleted ? " is-deleted" : ""),
|
|
@@ -20717,7 +20642,7 @@ ${calendarAddUrl.toString()}
|
|
|
20717
20642
|
// 警告帯が出ない記録の削除の口はここ(編集の行の末尾)。draft には出さない
|
|
20718
20643
|
var delMsgR = attachDeleteToEditRow(r, editRowR);
|
|
20719
20644
|
head.appendChild(el("div", { class: "detail-actions" }, [
|
|
20720
|
-
el("div", { class: "detail-actions-row" }, [ traceBtn2
|
|
20645
|
+
el("div", { class: "detail-actions-row" }, [ traceBtn2 ]),
|
|
20721
20646
|
editRowR.children.length ? editRowR : null,
|
|
20722
20647
|
delMsgR,
|
|
20723
20648
|
]));
|
|
@@ -21659,19 +21584,17 @@ ${calendarAddUrl.toString()}
|
|
|
21659
21584
|
// 警告帯が出ない記録の削除の口はここ(編集の行の末尾)。draft には出さない
|
|
21660
21585
|
var delMsgD = attachDeleteToEditRow(d, editRowD);
|
|
21661
21586
|
head.appendChild(el("div", { class: "detail-actions" }, [
|
|
21662
|
-
el("div", { class: "detail-actions-row" }, [ traceBtn
|
|
21587
|
+
el("div", { class: "detail-actions-row" }, [ traceBtn ]),
|
|
21663
21588
|
editRowD.children.length ? editRowD : null,
|
|
21664
21589
|
delMsgD,
|
|
21665
21590
|
]));
|
|
21666
21591
|
app.appendChild(head);
|
|
21667
21592
|
|
|
21668
21593
|
var meta = el("div", { class: "detail-meta" }, [
|
|
21669
|
-
nowBadge(d),
|
|
21670
21594
|
draftBadge(d),
|
|
21671
21595
|
retiredBadge(d),
|
|
21672
21596
|
latestBadge(d),
|
|
21673
21597
|
el("span", { class: "mono", text: d.date || "----" }),
|
|
21674
|
-
catBadge(d.category),
|
|
21675
21598
|
firmnessBadge(d),
|
|
21676
21599
|
]);
|
|
21677
21600
|
meta.title = d.id;
|
|
@@ -22189,8 +22112,6 @@ ${calendarAddUrl.toString()}
|
|
|
22189
22112
|
var validSub = false;
|
|
22190
22113
|
STORY_SUBS.forEach(function (s) { if (s[0] === sub) validSub = true; });
|
|
22191
22114
|
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
22115
|
}
|
|
22195
22116
|
renderList();
|
|
22196
22117
|
}
|
package/package.json
CHANGED