@cardenelabs/cdl 0.40.7 → 0.40.8

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/CHANGELOG.md CHANGED
@@ -5,6 +5,61 @@ CDL (Chainome Diagram Language) の主要変更履歴。
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.40.8] - 2026-09-08
9
+
10
+ ### Changed
11
+
12
+ - **折れ線グラフの目盛りと軸の名前を役割名で拾えるようにした** (#755)
13
+
14
+ 軸を持つ図は棒と折れ線の 2 つで、折れ線だけ縦軸の目盛りと横軸の名前に役割名が無かった。
15
+
16
+ | 字 | 棒グラフ | 折れ線グラフ (直す前) | 折れ線グラフ (直した後) |
17
+ |---|---|---|---|
18
+ | 縦軸の目盛りの数字 | `chart-bar-tick` | なし | `chart-line-tick` |
19
+ | 値札 | `chart-bar-value` | `chart-line-value` | `chart-line-value` |
20
+ | 横軸の名前 | `chart-bar-label` | なし | `chart-line-label` |
21
+
22
+ 役割名が無いと字を位置か中身で拾うことになり、**図の見た目を変えていないのに検査が落ちる**。
23
+ 位置で拾う形は余白を動かすと壊れ、中身で拾う形は同じ数が 2 か所に出ると壊れる
24
+ (実測で 4 件のはずが 5 件になった)。
25
+
26
+ 描いたものは役割名が増えた以外 1 文字も変わらない。 円グラフと凡例を持つ図は
27
+ 字の役割が別 (名前 / 割合 / 中央の合計) で同じ 3 つ組では表せないため、対象にしていない。
28
+
29
+ - **折れ線グラフだけ値札が軸の名前より小さかったのを揃えた** (#753)
30
+
31
+ 軸を持つ図は棒と折れ線の 2 つで、この 2 つだけ大きさの順が逆だった。
32
+
33
+ | 図 | 値札 | 軸の名前 |
34
+ |---|---|---|
35
+ | 棒グラフ | `12` | `11` |
36
+ | 折れ線グラフ (直す前) | `11` | `12` |
37
+ | 折れ線グラフ (直した後) | `12` | `11` |
38
+
39
+ 棒を直した `#747` より前は棒も `11` / `12` で折れ線と同じだった = 逆転させたのは `#747` で、
40
+ 片方だけ直して残りを置いていった形になっていた。
41
+
42
+ **凡例を持つ図 (半円ゲージ / 同心の弧 / 100 個の印 / 内訳の帯) は逆の順のまま**。
43
+ 凡例では名前が行を見分ける鍵で、数値はそれに添える数になる。 軸の図では値札が印の上に
44
+ 載る数そのもので、軸の名前は目盛りの側にある = 役割が違うので順も違ってよい。
45
+
46
+ 大きさに名前を付け (`値札の級` / `軸の名前の級`)、2 図で揃っていることを検査が実物から
47
+ 読んで確かめる。
48
+
49
+ - **目盛りの刻みの計算が 2 箇所にあったのを 1 つに寄せた** (#751)
50
+
51
+ `1 / 2 / 2.5 / 5` に 10 の累乗を掛けた中から刻みを選ぶ計算が、折れ線と棒の両方にあった。
52
+ 折れ線が先にあり、棒を直した `#747` で同じ計算を書き足していた。
53
+
54
+ `packages/cdl/src/kinds/axis-ticks.ts` に 1 つだけ置き、両方がそこから読む。
55
+ 引数は「範囲」 と「目盛りの本数の目安」 で、折れ線は `最大 - 最小`、
56
+ 棒は床が必ず 0 なので `最大` を渡す。
57
+
58
+ **天井と床の決め方は寄せない** = 折れ線は床も動かし、棒は床が必ず 0 で規則が違う。
59
+ 目盛りの数字の書き方も図ごとに残す (折れ線は `toLocaleString`、棒は桁で丸めた数)。
60
+
61
+ 出る目盛りは寄せる前と 1 つも変わらない。 描画にも記法にも影響しない。
62
+
8
63
  ## [0.40.7] - 2026-09-08
9
64
 
10
65
  ### Changed
@@ -1932,7 +1987,8 @@ Initial OSS release.
1932
1987
  使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
1933
1988
  行き止まりになる。
1934
1989
 
1935
- [Unreleased]: https://github.com/cardene777/cdl/compare/v0.40.7...HEAD
1990
+ [Unreleased]: https://github.com/cardene777/cdl/compare/v0.40.8...HEAD
1991
+ [0.40.8]: https://github.com/cardene777/cdl/compare/v0.40.7...v0.40.8
1936
1992
  [0.40.7]: https://github.com/cardene777/cdl/compare/v0.40.6...v0.40.7
1937
1993
  [0.40.6]: https://github.com/cardene777/cdl/compare/v0.40.5...v0.40.6
1938
1994
  [0.40.5]: https://github.com/cardene777/cdl/compare/v0.40.4...v0.40.5
package/dist/index.cjs CHANGED
@@ -22422,6 +22422,19 @@ function StateDiffCard({
22422
22422
  }
22423
22423
  );
22424
22424
  }
22425
+
22426
+ // src/kinds/axis-ticks.ts
22427
+ function \u76EE\u76DB\u308A\u306E\u523B\u307F(\u7BC4\u56F2, \u76EE\u5B89\u306E\u672C\u6570) {
22428
+ if (!(\u7BC4\u56F2 > 0) || false) return 0;
22429
+ const \u7C97\u3044 = \u7BC4\u56F2 / \u76EE\u5B89\u306E\u672C\u6570;
22430
+ const \u6841 = 10 ** Math.floor(Math.log10(\u7C97\u3044));
22431
+ const \u6B63\u898F = \u7C97\u3044 / \u6841;
22432
+ const \u5019\u88DC = \u6B63\u898F <= 1 ? 1 : \u6B63\u898F <= 2 ? 2 : \u6B63\u898F <= 2.5 ? 2.5 : \u6B63\u898F <= 5 ? 5 : 10;
22433
+ return \u5019\u88DC * \u6841;
22434
+ }
22435
+ var \u76EE\u76DB\u308A\u306E\u76EE\u5B89 = 4;
22436
+ var \u5024\u672D\u306E\u7D1A = 12;
22437
+ var \u8EF8\u306E\u540D\u524D\u306E\u7D1A = 11;
22425
22438
  var \u6570\u3092\u66F8\u304F = (value) => value.toLocaleString("en-US", { maximumFractionDigits: 12 });
22426
22439
  function \u6298\u308C\u7DDA\u306E\u76EE\u76DB(values) {
22427
22440
  let rawMin = values.length > 0 ? Math.min(...values) : 0;
@@ -22431,11 +22444,7 @@ function \u6298\u308C\u7DDA\u306E\u76EE\u76DB(values) {
22431
22444
  rawMin -= room;
22432
22445
  rawMax += room;
22433
22446
  }
22434
- const roughStep = (rawMax - rawMin) / 4;
22435
- const power = 10 ** Math.floor(Math.log10(roughStep));
22436
- const fraction = roughStep / power;
22437
- const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 2.5 ? 2.5 : fraction <= 5 ? 5 : 10;
22438
- const step = niceFraction * power;
22447
+ const step = \u76EE\u76DB\u308A\u306E\u523B\u307F(rawMax - rawMin, \u76EE\u76DB\u308A\u306E\u76EE\u5B89);
22439
22448
  const min = Math.floor(rawMin / step) * step;
22440
22449
  const max = Math.ceil(rawMax / step) * step;
22441
22450
  const tickCount = Math.round((max - min) / step);
@@ -22542,6 +22551,7 @@ function ChartLineNode({
22542
22551
  /* @__PURE__ */ jsxRuntime.jsx(
22543
22552
  "text",
22544
22553
  {
22554
+ "data-cdl-role": "chart-line-tick",
22545
22555
  x: PAD_LEFT2 - 8,
22546
22556
  y: t.y + 4,
22547
22557
  fontSize: 11,
@@ -22619,7 +22629,7 @@ function ChartLineNode({
22619
22629
  "data-cdl-role": "chart-line-value",
22620
22630
  x: cx,
22621
22631
  y: labelY,
22622
- fontSize: 11,
22632
+ fontSize: \u5024\u672D\u306E\u7D1A,
22623
22633
  fontWeight: 600,
22624
22634
  textAnchor: "middle",
22625
22635
  fill: "var(--cdl-text, #1a1f2a)",
@@ -22677,9 +22687,10 @@ function ChartLineNode({
22677
22687
  /* @__PURE__ */ jsxRuntime.jsx(
22678
22688
  "text",
22679
22689
  {
22690
+ "data-cdl-role": "chart-line-label",
22680
22691
  x: cx,
22681
22692
  y: PAD_TOP2 + canvasH + 20,
22682
- fontSize: 12,
22693
+ fontSize: \u8EF8\u306E\u540D\u524D\u306E\u7D1A,
22683
22694
  textAnchor: "middle",
22684
22695
  fill: "var(--cdl-text-dim, #5a6270)",
22685
22696
  children: d.label
@@ -25897,19 +25908,13 @@ function \u53CE\u3081\u308B\u7D1A2(\u540D\u524D\u305F\u3061, \u5E45, \u4E0A\u965
25897
25908
  while (\u7D1A > \u4E0B\u9650 && Math.max(...\u540D\u524D\u305F\u3061.map((n) => textWidth(n, \u7D1A))) > \u5E45) \u7D1A -= 1;
25898
25909
  return \u7D1A;
25899
25910
  }
25900
- function \u76EE\u76DB\u308A\u306E\u523B\u307F(\u6700\u5927, \u76EE\u5B89\u306E\u672C\u6570) {
25901
- if (!(\u6700\u5927 > 0) || false) return 0;
25902
- const \u7C97\u3044 = \u6700\u5927 / \u76EE\u5B89\u306E\u672C\u6570;
25903
- const \u6841 = 10 ** Math.floor(Math.log10(\u7C97\u3044));
25904
- const \u6B63\u898F = \u7C97\u3044 / \u6841;
25905
- const \u5019\u88DC = \u6B63\u898F <= 1 ? 1 : \u6B63\u898F <= 2 ? 2 : \u6B63\u898F <= 2.5 ? 2.5 : \u6B63\u898F <= 5 ? 5 : 10;
25906
- return \u5019\u88DC * \u6841;
25907
- }
25908
25911
  function \u5C0F\u6570\u306E\u6841(n) {
25909
25912
  const [\u4EEE\u6570, \u6307\u6570] = n.toExponential().split("e");
25910
25913
  const \u5C0F\u6570\u90E8 = (\u4EEE\u6570 ?? "").split(".")[1]?.length ?? 0;
25911
25914
  return Math.min(20, Math.max(0, \u5C0F\u6570\u90E8 - Number(\u6307\u6570)));
25912
25915
  }
25916
+ var \u5024\u672D\u306E\u7D1A2 = 12;
25917
+ var \u8EF8\u306E\u540D\u524D\u306E\u7D1A2 = 11;
25913
25918
  var \u6841\u3067\u4E38\u3081\u308B = (v, \u6841) => Number(v.toFixed(\u6841));
25914
25919
  function ChartBarNode({
25915
25920
  node,
@@ -25928,9 +25933,9 @@ function ChartBarNode({
25928
25933
  const canvasW = node.w - PAD_LEFT2 - PAD_RIGHT2;
25929
25934
  const canvasH = node.h - PAD_TOP2 - PAD_BOTTOM2;
25930
25935
  const vMax = data.length > 0 ? Math.max(...data.map((d) => d.value)) : 1;
25931
- const \u76EE\u76DB\u308A\u306E\u76EE\u5B89 = 4;
25936
+ const \u76EE\u76DB\u308A\u306E\u76EE\u5B892 = 4;
25932
25937
  const \u5929\u4E95\u306E\u3082\u3068 = vMax > 0 ? vMax : 1;
25933
- const \u523B\u307F = \u76EE\u76DB\u308A\u306E\u523B\u307F(\u5929\u4E95\u306E\u3082\u3068, \u76EE\u76DB\u308A\u306E\u76EE\u5B89);
25938
+ const \u523B\u307F = \u76EE\u76DB\u308A\u306E\u523B\u307F(\u5929\u4E95\u306E\u3082\u3068, \u76EE\u76DB\u308A\u306E\u76EE\u5B892);
25934
25939
  const \u523B\u307F\u306E\u6841 = \u5C0F\u6570\u306E\u6841(\u523B\u307F);
25935
25940
  const \u5929\u4E95 = \u6841\u3067\u4E38\u3081\u308B(Math.ceil(\u5929\u4E95\u306E\u3082\u3068 / \u523B\u307F - 1e-9) * \u523B\u307F, \u523B\u307F\u306E\u6841);
25936
25941
  const \u68D2\u3068\u9699\u9593\u306E\u6BD4 = 2.2;
@@ -26030,7 +26035,7 @@ function ChartBarNode({
26030
26035
  "data-cdl-role": "chart-bar-value",
26031
26036
  x: bx + barW / 2,
26032
26037
  y: \u898B\u3048\u3066\u3044\u308B\u982D - 8,
26033
- fontSize: 12,
26038
+ fontSize: \u5024\u672D\u306E\u7D1A2,
26034
26039
  fontWeight: 600,
26035
26040
  textAnchor: "middle",
26036
26041
  fill: "var(--cdl-text, #1a1f2a)",
@@ -26043,7 +26048,7 @@ function ChartBarNode({
26043
26048
  "data-cdl-role": "chart-bar-label",
26044
26049
  x: bx + barW / 2,
26045
26050
  y: PAD_TOP2 + canvasH + 18,
26046
- fontSize: 11,
26051
+ fontSize: \u8EF8\u306E\u540D\u524D\u306E\u7D1A2,
26047
26052
  textAnchor: "middle",
26048
26053
  fill: "var(--cdl-text-dim, #5a6270)",
26049
26054
  children: d.label