@takagaki/cortex-decisions-viewer 0.12.110 → 0.12.111
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 +27 -84
- package/package.json +1 -1
package/dist/render.js
CHANGED
|
@@ -57,7 +57,6 @@ exports.nextMemoryReflectGoldAtMs = nextMemoryReflectGoldAtMs;
|
|
|
57
57
|
exports.memoryReflectDoneAtMs = memoryReflectDoneAtMs;
|
|
58
58
|
exports.memoryReflectTextOf = memoryReflectTextOf;
|
|
59
59
|
exports.runLogUrlOf = runLogUrlOf;
|
|
60
|
-
exports.lastSyncRunUrlOf = lastSyncRunUrlOf;
|
|
61
60
|
exports.runSourceWordOf = runSourceWordOf;
|
|
62
61
|
exports.fleetLastSyncOf = fleetLastSyncOf;
|
|
63
62
|
exports.stateRefKey = stateRefKey;
|
|
@@ -2722,27 +2721,6 @@ function runLogUrlOf(row) {
|
|
|
2722
2721
|
return "";
|
|
2723
2722
|
return row.runUrl;
|
|
2724
2723
|
}
|
|
2725
|
-
/**
|
|
2726
|
-
* 「最終同期: …」の横に出すリンク先(#560)。**その時刻を書いた run のときだけ。**
|
|
2727
|
-
*
|
|
2728
|
-
* 「最終同期」は `lastOkAt`(最後に取り込めた時刻)で、行の `runUrl` は**いまの status を
|
|
2729
|
-
* 書いた run**のもの。いま `failed` の行の `lastOkAt` が最大なら、その `runUrl` は失敗した run
|
|
2730
|
-
* を指すので出さない(間違った run へ送るより、無いほうがよい)。`ok` の行でも `lastOkAt` と
|
|
2731
|
-
* `statusAt` が違う(履歴だけ先に進んだ)回は出さない。
|
|
2732
|
-
*
|
|
2733
|
-
* **クロージャを持たない純関数に保つこと**(`.toString()` でクライアントへ渡す)。
|
|
2734
|
-
*/
|
|
2735
|
-
function lastSyncRunUrlOf(row) {
|
|
2736
|
-
// **部分失敗の回も「取り込めた」(#634)。** ここを `status === "ok"` のままにすると、
|
|
2737
|
-
// 「最終同期」の時刻は部分失敗の回のものになったのに、その時刻を書いた run へ行けない
|
|
2738
|
-
// ——R9(その時刻を書いた run にだけリンクを出す)が、まさにこの便の対象の回で満たせない
|
|
2739
|
-
if (!ingestSucceeded(row))
|
|
2740
|
-
return "";
|
|
2741
|
-
// 「最終同期」として出した時刻がこの行の `at` でないなら、リンク先の run は別の回のもの
|
|
2742
|
-
if (row.lastOkAt && row.lastOkAt > row.at)
|
|
2743
|
-
return "";
|
|
2744
|
-
return runLogUrlOf(row);
|
|
2745
|
-
}
|
|
2746
2724
|
/**
|
|
2747
2725
|
* `runUrl` の無い行に添える出どころの語(#560)。リンクが出る行・語の無い書き手は空文字。
|
|
2748
2726
|
*
|
|
@@ -5716,10 +5694,6 @@ a.ds-tile:hover { text-decoration: none; }
|
|
|
5716
5694
|
.ds-all-connected { color: var(--muted); }
|
|
5717
5695
|
.ds-gate { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; font-weight: 600; flex: 0 0 auto; }
|
|
5718
5696
|
.ds-gate-at { font-size: 11px; color: var(--muted); flex: 0 0 auto; }
|
|
5719
|
-
/* 実行ログへの導線(#560)。時刻の横の添え物なので .ds-gate-at と同じ弱さ。押せることだけ
|
|
5720
|
-
点線の下線で示す(目立たせない——案件リポジトリに入っていない人には開けない) */
|
|
5721
|
-
.ds-run-link { font-size: 11px; color: var(--muted); flex: 0 0 auto; text-decoration: underline dotted; text-underline-offset: 2px; }
|
|
5722
|
-
.ds-run-link:hover { color: var(--text); }
|
|
5723
5697
|
/* run の無い書き手の行の出どころ(「中央の処理」「その場で確認」)。同じ弱さの文字 */
|
|
5724
5698
|
.ds-run-src { font-size: 11px; color: var(--muted); flex: 0 0 auto; }
|
|
5725
5699
|
/* 接続先1件ごとの「取り込み」(段C・2026-08-24)。**「最終同期」(.ds-sync・run単位)とは
|
|
@@ -6430,7 +6404,6 @@ ${nextMemoryReflectGoldAtMs.toString()}
|
|
|
6430
6404
|
${memoryReflectDoneAtMs.toString()}
|
|
6431
6405
|
${memoryReflectTextOf.toString()}
|
|
6432
6406
|
${runLogUrlOf.toString()}
|
|
6433
|
-
${lastSyncRunUrlOf.toString()}
|
|
6434
6407
|
${runSourceWordOf.toString()}
|
|
6435
6408
|
var TILE_CAPS = ${JSON.stringify(TILE_CAPS)};
|
|
6436
6409
|
var BAD_STATE_STATUSES = ${JSON.stringify(BAD_STATE_STATUSES)};
|
|
@@ -12901,12 +12874,11 @@ ${calendarAddUrl.toString()}
|
|
|
12901
12874
|
var t = dsFmtTime(at || fleetSyncFallback(s) || "");
|
|
12902
12875
|
if (!t) return null;
|
|
12903
12876
|
var sync = el("span", { class: "ds-sync", text: "最終同期: " + t });
|
|
12904
|
-
//
|
|
12905
|
-
//
|
|
12906
|
-
//
|
|
12877
|
+
// run の無い書き手(中央 Apps Script の会議・資料の取り込み)は出どころの語を添える。
|
|
12878
|
+
// ストア由来の時刻のときだけ——まとめ表の後詰めには行が無い。行は「ingestedAtOf」 と
|
|
12879
|
+
// 同じ選び方(「ingestedRowOf」)で取る
|
|
12907
12880
|
var row = at ? ingestedRowOf(LIVE_STATE, capId, refs) : null;
|
|
12908
|
-
var
|
|
12909
|
-
var trail = url ? [runLogLink(url)] : row ? runTrailNodes(row, "") : [];
|
|
12881
|
+
var trail = row ? runTrailNodes(row) : [];
|
|
12910
12882
|
return trail.length ? frag([sync].concat(trail)) : sync;
|
|
12911
12883
|
}
|
|
12912
12884
|
|
|
@@ -14820,37 +14792,26 @@ ${calendarAddUrl.toString()}
|
|
|
14820
14792
|
}
|
|
14821
14793
|
|
|
14822
14794
|
/* -------------------------------------------------------------------------
|
|
14823
|
-
*
|
|
14795
|
+
* run の出どころの表示(#560・オーナー決定 2026-10-01: 「実行ログ ↗」は社内・お客様とも
|
|
14796
|
+
* 画面から外した)
|
|
14824
14797
|
* -------------------------------------------------------------------------
|
|
14825
|
-
*
|
|
14826
|
-
*
|
|
14827
|
-
*
|
|
14798
|
+
* run の無い書き手の行は、出どころを語で示す(「中央の処理」「その場で確認」)。run のある
|
|
14799
|
+
* 行(ingest / gold / nightly)は何も添えない——リンク先が実行用リポや案件リポの GitHub
|
|
14800
|
+
* Actions で、多くの利用者には開けないため。出すかどうかの判断は純関数
|
|
14801
|
+
* (runLogUrlOf / runSourceWordOf)が持ち、ここは描くだけ。
|
|
14828
14802
|
* ----------------------------------------------------------------------- */
|
|
14829
14803
|
|
|
14830
|
-
/** リンクの title。案件リポジトリに入っていない人には開けないので、押す前に分かるようにする */
|
|
14831
|
-
var RUN_LINK_TITLE = "GitHub Actions の実行ログを開きます(プロジェクトリポジトリへのアクセスが要ります)";
|
|
14832
|
-
/** 一覧(開始直後・run の番号がまだ無い)の title。飛び先が違うので文言も分ける */
|
|
14833
|
-
var RUN_LIST_TITLE = "GitHub Actions の実行の一覧を開きます(プロジェクトリポジトリへのアクセスが要ります)";
|
|
14834
|
-
var RUN_LIST_TEXT = "実行の一覧 ↗";
|
|
14835
|
-
|
|
14836
|
-
/** 「実行ログ ↗」(新しいタブ・title つき)。一覧のときは文言と title を一覧のものにする */
|
|
14837
|
-
function runLogLink(url, text) {
|
|
14838
|
-
var list = text === RUN_LIST_TEXT;
|
|
14839
|
-
return el("a", { class: "ds-run-link", href: url, target: "_blank", rel: "noopener", title: list ? RUN_LIST_TITLE : RUN_LINK_TITLE, text: text || "実行ログ ↗" });
|
|
14840
|
-
}
|
|
14841
|
-
|
|
14842
14804
|
/**
|
|
14843
|
-
*
|
|
14805
|
+
* 行の時刻の横に添える出どころの語。**無ければ空配列。**
|
|
14844
14806
|
* 「.ds-gate-at」「.ds-ingest」 の**兄弟**として置く(子にすると、文言の検査と
|
|
14845
14807
|
* 「いま測った結果」への差し替えが崩れる)。
|
|
14846
14808
|
*
|
|
14847
14809
|
* @param kind どの時刻に添えたか(「gate」=「◯分前に確認」)。「いま測った結果」への差し替えは
|
|
14848
|
-
* **この印のものだけ**消す——「取り込み:
|
|
14810
|
+
* **この印のものだけ**消す——「取り込み: 〜に成功」の横の語(別の行のもの)は残す
|
|
14849
14811
|
*/
|
|
14850
|
-
function runTrailNodes(row,
|
|
14851
|
-
var
|
|
14852
|
-
var
|
|
14853
|
-
var node = u ? runLogLink(u) : word ? el("span", { class: "ds-run-src", text: word }) : null;
|
|
14812
|
+
function runTrailNodes(row, kind) {
|
|
14813
|
+
var word = runSourceWordOf(row);
|
|
14814
|
+
var node = word ? el("span", { class: "ds-run-src", text: word }) : null;
|
|
14854
14815
|
if (!node) return [];
|
|
14855
14816
|
if (kind) node.setAttribute("data-trail", kind);
|
|
14856
14817
|
return [node];
|
|
@@ -14864,11 +14825,11 @@ ${calendarAddUrl.toString()}
|
|
|
14864
14825
|
}
|
|
14865
14826
|
|
|
14866
14827
|
/**
|
|
14867
|
-
*
|
|
14868
|
-
* (同じ行が 2 つのことを言わない)。「取り込み:
|
|
14828
|
+
* 「いま測った結果」に差し替えるとき、**「◯分前に確認」に添えた**古い出どころの語を外す
|
|
14829
|
+
* (同じ行が 2 つのことを言わない)。「取り込み: 〜に成功」の横の語は別の行のものなので残す
|
|
14869
14830
|
*/
|
|
14870
14831
|
function removeRunTrail(scope) {
|
|
14871
|
-
var old = scope.querySelectorAll('.ds-run-
|
|
14832
|
+
var old = scope.querySelectorAll('.ds-run-src[data-trail="gate"]');
|
|
14872
14833
|
for (var i = 0; i < old.length; i++) old[i].remove();
|
|
14873
14834
|
}
|
|
14874
14835
|
|
|
@@ -14907,7 +14868,7 @@ ${calendarAddUrl.toString()}
|
|
|
14907
14868
|
class: "ds-ingest" + (r.status === "failed" && !(f && f.partial) ? " ds-ingest-failed" : ""),
|
|
14908
14869
|
text: text,
|
|
14909
14870
|
});
|
|
14910
|
-
//
|
|
14871
|
+
// run の無い書き手は出どころの語を添える(#560)。成功でも失敗でも同じ
|
|
14911
14872
|
return frag([span].concat(runTrailNodes(r)));
|
|
14912
14873
|
}
|
|
14913
14874
|
|
|
@@ -14966,8 +14927,8 @@ ${calendarAddUrl.toString()}
|
|
|
14966
14927
|
row.appendChild(el("span", { class: "ds-gate " + gate.cls, text: gate.text }));
|
|
14967
14928
|
var when = rtAgo(r.at);
|
|
14968
14929
|
if (when) row.appendChild(el("span", { class: "ds-gate-at", text: when + "に確認" }));
|
|
14969
|
-
//
|
|
14970
|
-
runTrailNodes(r,
|
|
14930
|
+
// run の無い書き手は出どころの語を添える(#560)
|
|
14931
|
+
runTrailNodes(r, "gate").forEach(function (n) { row.appendChild(n); });
|
|
14971
14932
|
return row;
|
|
14972
14933
|
}
|
|
14973
14934
|
|
|
@@ -15116,28 +15077,15 @@ ${calendarAddUrl.toString()}
|
|
|
15116
15077
|
at: (before && before.at) || "",
|
|
15117
15078
|
startedAt: Date.now(),
|
|
15118
15079
|
message: (j && j.message) || "",
|
|
15119
|
-
// 起こした run(特定できた回)と一覧(#560)。描き直しでもリンクが消えないよう控える
|
|
15120
|
-
runUrl: (j && RUN_URL_RE.test(String(j.runUrl || ""))) ? String(j.runUrl) : "",
|
|
15121
|
-
runsUrl: (j && /^https:\\/\\/github\\.com\\/[^\\s"'<>]+$/.test(String(j.runsUrl || ""))) ? String(j.runsUrl) : "",
|
|
15122
15080
|
};
|
|
15123
15081
|
probeWaitNote(note, PROBE_WAITS[key]);
|
|
15124
15082
|
// 待っているあいだは取り直しを回す(届いた行で一覧が描き直される)
|
|
15125
15083
|
refreshStateTimer();
|
|
15126
15084
|
}
|
|
15127
15085
|
|
|
15128
|
-
/**
|
|
15129
|
-
* 待ちの 1 文と、その横の導線(#560)。**その run を特定できていればそれ、無ければ一覧。**
|
|
15130
|
-
* 開始直後は run の番号が無いことが多いので一覧へ。行が更新されて待ちが解けたら、
|
|
15131
|
-
* 行側の「実行ログ ↗」(その run)に置き換わる。run の無い経路(固定 IP・中央)は何も出ない
|
|
15132
|
-
*/
|
|
15086
|
+
/** 待ちの 1 文(#548)。「同期を開始しました」等、サーバの文言をそのまま出す */
|
|
15133
15087
|
function probeWaitNote(note, wait) {
|
|
15134
15088
|
note.textContent = (wait && wait.message) || "";
|
|
15135
|
-
if (!wait) return;
|
|
15136
|
-
var link = wait.runUrl ? runLogLink(wait.runUrl) : wait.runsUrl ? runLogLink(wait.runsUrl, RUN_LIST_TEXT) : null;
|
|
15137
|
-
if (link) {
|
|
15138
|
-
note.appendChild(document.createTextNode(" "));
|
|
15139
|
-
note.appendChild(link);
|
|
15140
|
-
}
|
|
15141
15089
|
}
|
|
15142
15090
|
|
|
15143
15091
|
/**
|
|
@@ -15216,12 +15164,7 @@ ${calendarAddUrl.toString()}
|
|
|
15216
15164
|
var phase = probeWaitPhaseOf(capId, ref);
|
|
15217
15165
|
var wait = probeWaitOf(capId, ref);
|
|
15218
15166
|
if (phase === "waiting") probeWaitNote(note, wait);
|
|
15219
|
-
else if (phase === "timeout")
|
|
15220
|
-
// 15 分待って届かないなら見に行く番。**行き先を添える**(#560)——一覧でも run でも
|
|
15221
|
-
note.textContent = PROBE_WAIT_TIMEOUT_TEXT;
|
|
15222
|
-
var to = wait && (wait.runUrl || wait.runsUrl);
|
|
15223
|
-
if (to) { note.appendChild(document.createTextNode(" ")); note.appendChild(runLogLink(to, wait.runUrl ? "実行ログ ↗" : RUN_LIST_TEXT)); }
|
|
15224
|
-
}
|
|
15167
|
+
else if (phase === "timeout") note.textContent = PROBE_WAIT_TIMEOUT_TEXT;
|
|
15225
15168
|
else note.hidden = true;
|
|
15226
15169
|
|
|
15227
15170
|
checkBtn.addEventListener("click", async function () {
|
|
@@ -16545,7 +16488,7 @@ ${calendarAddUrl.toString()}
|
|
|
16545
16488
|
// 起動できなかった案件(権限・スタブ未配布)ではリンクを出さない——押しても何も無い
|
|
16546
16489
|
if (j.runsUrl) {
|
|
16547
16490
|
msg.appendChild(document.createTextNode(" "));
|
|
16548
|
-
msg.appendChild(el("a", { href: j.runUrl || j.runsUrl, target: "_blank", rel: "noopener", title:
|
|
16491
|
+
msg.appendChild(el("a", { href: j.runUrl || j.runsUrl, target: "_blank", rel: "noopener", title: "GitHub Actions の実行ログを開きます(プロジェクトリポジトリへのアクセスが要ります)", text: "実行状況を見る →" })); // その run を特定できていればそれ、無ければ一覧
|
|
16549
16492
|
}
|
|
16550
16493
|
// **「反映の状況 →」のリンクは無くなった(#221・2026-08-25)。** 指していたのは
|
|
16551
16494
|
// 「画面を追いつかせるための fleet-status の実行」で、その起動ごと撤去した
|
|
@@ -17131,8 +17074,8 @@ ${calendarAddUrl.toString()}
|
|
|
17131
17074
|
var gateAtEl = s.gateAt
|
|
17132
17075
|
? el("span", { class: "ds-gate-at", text: rtAgo(s.gateAt) + "に確認" })
|
|
17133
17076
|
: null;
|
|
17134
|
-
//
|
|
17135
|
-
var gateTrail = s.gateAt ? runTrailNodes({ runUrl: s.gateRunUrl || "", by: s.gateBy || "" },
|
|
17077
|
+
// run の無い書き手は出どころの語を添える(#560)。overlay が写した 「gateRunUrl」 / 「gateBy」 から決める
|
|
17078
|
+
var gateTrail = s.gateAt ? runTrailNodes({ runUrl: s.gateRunUrl || "", by: s.gateBy || "" }, "gate") : [];
|
|
17136
17079
|
var card = el("div", { class: "ds-card" }, [
|
|
17137
17080
|
el("div", { class: "ds-card-main" }, [
|
|
17138
17081
|
el("span", { class: "ds-icon", text: meta.icon }),
|
|
@@ -18424,7 +18367,7 @@ ${calendarAddUrl.toString()}
|
|
|
18424
18367
|
// 起動できたときだけ、実行状況への導線を出す(鍵を入れた直後に効いたか確かめられる)
|
|
18425
18368
|
if (j.runsUrl) {
|
|
18426
18369
|
msg.appendChild(document.createTextNode(" "));
|
|
18427
|
-
msg.appendChild(el("a", { href: j.runUrl || j.runsUrl, target: "_blank", rel: "noopener", title:
|
|
18370
|
+
msg.appendChild(el("a", { href: j.runUrl || j.runsUrl, target: "_blank", rel: "noopener", title: "GitHub Actions の実行ログを開きます(プロジェクトリポジトリへのアクセスが要ります)", text: "実行状況を見る →" })); // その run を特定できていればそれ、無ければ一覧
|
|
18428
18371
|
}
|
|
18429
18372
|
// 入れた値は画面に残さない(肩越しに見えるのを防ぐ)
|
|
18430
18373
|
input.value = "";
|
package/package.json
CHANGED