@takagaki/cortex-decisions-viewer 0.12.145 → 0.12.146

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/build.js CHANGED
@@ -60,6 +60,7 @@ exports.decidedByOf = decidedByOf;
60
60
  exports.isRelatedUrl = isRelatedUrl;
61
61
  exports.relatedMaterialsRead = relatedMaterialsRead;
62
62
  exports.relatedMaterialsView = relatedMaterialsView;
63
+ exports.attachRuleReferences = attachRuleReferences;
63
64
  exports.attachRelatedMaterials = attachRelatedMaterials;
64
65
  exports.createRefResolver = createRefResolver;
65
66
  const node_crypto_1 = require("node:crypto");
@@ -2446,6 +2447,8 @@ async function buildSite(opts, views) {
2446
2447
  records = records.filter((r) => !r.relations.some((x) => x.rel === "retracted_by"));
2447
2448
  // 関連の資料(cortex-engine #1094 F8)。ルール・用語だけ・欄の無い記録には何も付かない
2448
2449
  attachRelatedMaterials(e.name, records, refs);
2450
+ // ルールの参照(rule.card)。決定と同じ出典リンクにする
2451
+ attachRuleReferences(e.name, records, refs);
2449
2452
  // 用語集の並び(活性度・強さ)。**帳簿を持たない案件では並びもそのまま**
2450
2453
  const rederived = orderRecordsByLedgers(records, recordsDir, rederive, opts.generatedAt);
2451
2454
  // 関係者だけ、関与の多い順(engine の目次と同じ `order`・便 14b)。用語集の並び
@@ -2781,6 +2784,16 @@ function relatedMaterialsView(fm, refs) {
2781
2784
  }
2782
2785
  /** 関連の資料を持てる汎用の区画(関係者・ストーリーの日・Home の欄は拾わない) */
2783
2786
  exports.RELATED_MATERIALS_SECTIONS = new Set(["Rules", "Glossary"]);
2787
+ /** ルールの `references` を決定と同じ出典リンクにして載せる(rule.card)。ルールだけ・欄の無い記録にはキーごと付けない */
2788
+ function attachRuleReferences(section, records, refs) {
2789
+ if (section !== "Rules")
2790
+ return;
2791
+ for (const r of records) {
2792
+ const list = toStringArray(r.fm.references).map((x) => refs.resolve(x));
2793
+ if (list.length)
2794
+ r.references = list;
2795
+ }
2796
+ }
2784
2797
  /** 区画の記録に関連の資料を載せる(ルール・用語だけ・欄の無い記録にはキーごと付けない) */
2785
2798
  function attachRelatedMaterials(section, records, refs) {
2786
2799
  if (!exports.RELATED_MATERIALS_SECTIONS.has(section))
package/dist/render.js CHANGED
@@ -6984,6 +6984,24 @@ ${calendarAddUrl.toString()}
6984
6984
  box.appendChild(ul);
6985
6985
  return box;
6986
6986
  }
6987
+ /**
6988
+ * 詳細の節「参照」(根拠の出典リンク)。決定とルールが同じ出し方(rule.card・出典リンク)。
6989
+ * 参照の無い記録では null(要素を作らない)。リンクは http(s) だけ(ビルドが解決済みでも画面で二重に見る)
6990
+ */
6991
+ function referencesSection(r) {
6992
+ if (!r || !r.references || !r.references.length) return null;
6993
+ var box = el("div", { class: "refs-section" });
6994
+ box.appendChild(el("div", { class: "section-label", text: "参照" }));
6995
+ var ul = el("ul", { class: "refs" });
6996
+ r.references.forEach(function (ref) {
6997
+ var li = el("li");
6998
+ if (ref.url && /^https?:\\/\\//i.test(ref.url)) li.appendChild(el("a", { href: ref.url, target: "_blank", rel: "noopener", text: ref.label }));
6999
+ else li.textContent = ref.label;
7000
+ ul.appendChild(li);
7001
+ });
7002
+ box.appendChild(ul);
7003
+ return box;
7004
+ }
6987
7005
  /** 候補の帯(症状)。行の札は「候補」とだけ言い、理由はこの帯 1 行に寄せる(繰り返さない) */
6988
7006
  var SUPERSEDE_CANDIDATE_NOTE = "前の決定は人が直しているため、置き換えは候補です";
6989
7007
  /** 決定 1 件の行。SITE にあれば題名で詳細へのリンク、無ければ ID だけ */
@@ -7013,6 +7031,21 @@ ${calendarAddUrl.toString()}
7013
7031
  for (var i = 0; i < by.length; i++) if (by[i].id === d.id) return !by[i].confirmed;
7014
7032
  return false;
7015
7033
  }
7034
+ /**
7035
+ * 一覧のカードの「→ 変更先」(decision.show-superseded)。置き換えられた決定の行に、一番新しい置き換え先の題名を 1 行で添える。
7036
+ * 置き換え先が複数なら「ほか N 件」。置き換えられていない決定では null(行を作らない)。
7037
+ * 札(置き換え済み・最新の生成)は出さない(common.screen-no-state-label)。題名は textContent で入れる
7038
+ */
7039
+ function supersededToLine(d) {
7040
+ var by = (d && d.supersededBy && d.supersededBy.by) || [];
7041
+ if (!by.length) return null;
7042
+ // 画面で削除済みの置き換え先は題名を出さない(一覧から外れた決定を指さない)。見つからなければ ID の文字
7043
+ var shown = by.filter(function (b) { var n = byId[b.id]; return !(n && n.deleted); });
7044
+ var first = shown.length ? shown[0] : by[0];
7045
+ var next = byId[first.id];
7046
+ var name = next && next._kind === "decision" && !next.deleted ? humanTitle(next.title) : first.id;
7047
+ return el("p", { class: "card-superseded-to", text: "→ 変更先: " + name + (by.length > 1 ? " ほか " + (by.length - 1) + " 件" : "") });
7048
+ }
7016
7049
  /** 詳細の節「置き換え先の決定」「置き換えた決定」。どちらも無ければ null(要素を作らない) */
7017
7050
  function supersedeSection(d) {
7018
7051
  var by = (d && d.supersededBy && d.supersededBy.by) || [];
@@ -19721,6 +19754,7 @@ ${calendarAddUrl.toString()}
19721
19754
  // 消したレコードは一覧でも取り消し線(次のビルドまで一覧には残る)
19722
19755
  var card = el("div", { class: "card", title: d.id, "data-record-id": d.id }, head.concat([
19723
19756
  d.summary ? el("p", { class: "card-summary", text: d.summary }) : null,
19757
+ supersededToLine(d),
19724
19758
  ]));
19725
19759
  card.addEventListener("click", function () { go(d.id); });
19726
19760
  wrap.appendChild(card);
@@ -20591,6 +20625,10 @@ ${calendarAddUrl.toString()}
20591
20625
  app.appendChild(genBody);
20592
20626
  loadBody(r, genBody);
20593
20627
 
20628
+ // 参照(rule.card)。ルールだけ。決定の詳細と同じ「参照」の節(ビルドが解決した出典リンク)
20629
+ var refs2 = referencesSection(r);
20630
+ if (refs2) app.appendChild(refs2);
20631
+
20594
20632
  // 関連の資料(#1094 F8)。本文の後。ルール・用語にしか載らない
20595
20633
  var relm2 = relatedMaterialsSection(r);
20596
20634
  if (relm2) app.appendChild(relm2);
@@ -21544,17 +21582,8 @@ ${calendarAddUrl.toString()}
21544
21582
  app.appendChild(decBody);
21545
21583
  loadBody(d, decBody);
21546
21584
 
21547
- if (d.references && d.references.length) {
21548
- app.appendChild(el("div", { class: "section-label", text: "参照" }));
21549
- var ul = el("ul", { class: "refs" });
21550
- d.references.forEach(function (r) {
21551
- var li = el("li");
21552
- if (r.url) li.appendChild(el("a", { href: r.url, target: "_blank", rel: "noopener", text: r.label }));
21553
- else li.textContent = r.label;
21554
- ul.appendChild(li);
21555
- });
21556
- app.appendChild(ul);
21557
- }
21585
+ var refsBox = referencesSection(d);
21586
+ if (refsBox) app.appendChild(refsBox);
21558
21587
 
21559
21588
  // 関連の資料(#1094 F8)。「参照」(根拠)の後・置き換えの前。根拠と混ぜない
21560
21589
  var relm = relatedMaterialsSection(d);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takagaki/cortex-decisions-viewer",
3
- "version": "0.12.145",
3
+ "version": "0.12.146",
4
4
  "description": "Cortexの意思決定記録(Decisions/*.md)を静的サイトにビルドして閲覧する。各レコードに「Edit on GitHub」リンクを付与する。",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,