@takagaki/cortex-decisions-viewer 0.12.104 → 0.12.105
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/dist/render.js +60 -8
- package/package.json +1 -1
package/dist/render.js
CHANGED
|
@@ -8626,11 +8626,56 @@ ${calendarAddUrl.toString()}
|
|
|
8626
8626
|
]);
|
|
8627
8627
|
}
|
|
8628
8628
|
|
|
8629
|
-
//
|
|
8629
|
+
// 週・月の抜けを埋めるための日付計算(UTC 固定で計算し YYYY-MM-DD/YYYY-MM の文字列を返す。
|
|
8630
|
+
// これらの文字列は桁がそろっているので、そのまま辞書式に比べれば新旧が分かる)
|
|
8631
|
+
function storyUtcMs(day) { return Date.parse(day + "T00:00:00Z"); }
|
|
8632
|
+
function storyDayOfMs(ms) { return new Date(ms).toISOString().slice(0, 10); }
|
|
8633
|
+
function storyMondayOf(day) {
|
|
8634
|
+
var dow = new Date(storyUtcMs(day)).getUTCDay(); // 0=日 … 6=土
|
|
8635
|
+
var back = dow === 0 ? 6 : dow - 1;
|
|
8636
|
+
return storyDayOfMs(storyUtcMs(day) - back * 86400000);
|
|
8637
|
+
}
|
|
8638
|
+
function storyPrevWeekKey(monday) { return storyDayOfMs(storyUtcMs(monday) - 7 * 86400000); }
|
|
8639
|
+
function storyPrevMonthKey(month) {
|
|
8640
|
+
var y = parseInt(month.slice(0, 4), 10);
|
|
8641
|
+
var m = parseInt(month.slice(5, 7), 10) - 1;
|
|
8642
|
+
if (m < 1) { m = 12; y -= 1; }
|
|
8643
|
+
return y + "-" + (m < 10 ? "0" + m : String(m));
|
|
8644
|
+
}
|
|
8645
|
+
function storyWeekLabel(monday) {
|
|
8646
|
+
var md = function (d) { var p = d.split("-"); return parseInt(p[1], 10) + "/" + parseInt(p[2], 10); };
|
|
8647
|
+
return md(monday) + "〜" + md(storyDayOfMs(storyUtcMs(monday) + 6 * 86400000)) + " の週";
|
|
8648
|
+
}
|
|
8649
|
+
// その案件でストーリーが分かっている一番古い日付(YYYY-MM-DD)。月・週・日のどれかに載っている
|
|
8650
|
+
// 一番古いものを使う(無ければ null=今の区切りだけ見る)。この日より前の区切りには案内を足さない
|
|
8651
|
+
function storyEarliestKnownDate() {
|
|
8652
|
+
var dates = [];
|
|
8653
|
+
((SITE.storyDigest && SITE.storyDigest.months) || []).forEach(function (m) { dates.push(m.key + "-01"); });
|
|
8654
|
+
((SITE.storyDigest && SITE.storyDigest.weeks) || []).forEach(function (w) { dates.push(w.key); });
|
|
8655
|
+
(SITE.story || []).forEach(function (d) { dates.push(d.date); });
|
|
8656
|
+
if (!dates.length) return null;
|
|
8657
|
+
return dates.reduce(function (a, b) { return b < a ? b : a; });
|
|
8658
|
+
}
|
|
8659
|
+
|
|
8660
|
+
// 週のあらすじを新しい週から順に。「今週」と「週が閉じたがまだあらすじが無い週」は見出し+案内の1行で埋め、
|
|
8661
|
+
// 欠けなく新しい週から並べる(その案件でストーリーが始まる前の週までは埋めない)
|
|
8630
8662
|
function renderStoryWeekly() {
|
|
8631
8663
|
var weeks = (SITE.storyDigest && SITE.storyDigest.weeks) || [];
|
|
8632
8664
|
var list = el("div", { class: "story-cards" });
|
|
8633
|
-
|
|
8665
|
+
var curMonday = SITE.storyToday ? storyMondayOf(SITE.storyToday) : null;
|
|
8666
|
+
if (curMonday) {
|
|
8667
|
+
var have = {};
|
|
8668
|
+
weeks.forEach(function (w) { have[w.key] = true; });
|
|
8669
|
+
var earliest = storyEarliestKnownDate();
|
|
8670
|
+
var earliestMonday = earliest ? storyMondayOf(earliest) : curMonday;
|
|
8671
|
+
for (var wk = curMonday; !have[wk] && wk >= earliestMonday; wk = storyPrevWeekKey(wk)) {
|
|
8672
|
+
list.appendChild(el("section", { class: "story-card" }, [
|
|
8673
|
+
el("h3", { class: "story-card-heading", text: storyWeekLabel(wk) }),
|
|
8674
|
+
el("p", { class: "story-empty", text: "週が閉じて 2 日後の夜に作ります" }),
|
|
8675
|
+
]));
|
|
8676
|
+
}
|
|
8677
|
+
}
|
|
8678
|
+
if (!weeks.length && !list.children.length) {
|
|
8634
8679
|
list.appendChild(el("p", { class: "story-empty", text: "あらすじはまだありません(週が閉じて 2 日後の夜に作ります)" }));
|
|
8635
8680
|
} else {
|
|
8636
8681
|
weeks.forEach(function (w) { list.appendChild(storyDigestCard(w, "この週の局面")); });
|
|
@@ -8638,16 +8683,23 @@ ${calendarAddUrl.toString()}
|
|
|
8638
8683
|
app.appendChild(list);
|
|
8639
8684
|
}
|
|
8640
8685
|
|
|
8641
|
-
//
|
|
8686
|
+
// 月のあらすじを新しい月から順に。「今月」と「月が閉じたがまだあらすじが無い月」は見出し+案内の1行で埋め、
|
|
8687
|
+
// 欠けなく新しい月から並べる(その案件でストーリーが始まる前の月までは埋めない)
|
|
8642
8688
|
function renderStoryMonthly() {
|
|
8643
8689
|
var months = (SITE.storyDigest && SITE.storyDigest.months) || [];
|
|
8644
8690
|
var list = el("div", { class: "story-cards" });
|
|
8645
8691
|
var curMonth = SITE.storyToday ? SITE.storyToday.slice(0, 7) : null;
|
|
8646
|
-
if (curMonth
|
|
8647
|
-
|
|
8648
|
-
|
|
8649
|
-
|
|
8650
|
-
|
|
8692
|
+
if (curMonth) {
|
|
8693
|
+
var have = {};
|
|
8694
|
+
months.forEach(function (m) { have[m.key] = true; });
|
|
8695
|
+
var earliest = storyEarliestKnownDate();
|
|
8696
|
+
var earliestMonth = earliest ? earliest.slice(0, 7) : curMonth;
|
|
8697
|
+
for (var mo = curMonth; !have[mo] && mo >= earliestMonth; mo = storyPrevMonthKey(mo)) {
|
|
8698
|
+
list.appendChild(el("section", { class: "story-card" }, [
|
|
8699
|
+
el("h3", { class: "story-card-heading", text: monthLabel(mo) }),
|
|
8700
|
+
el("p", { class: "story-empty", text: "月が閉じて 3 日後の夜に作ります" }),
|
|
8701
|
+
]));
|
|
8702
|
+
}
|
|
8651
8703
|
}
|
|
8652
8704
|
months.forEach(function (m) { list.appendChild(storyDigestCard(m, "この月の局面")); });
|
|
8653
8705
|
app.appendChild(list);
|
package/package.json
CHANGED