@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 +57 -1
- package/dist/index.cjs +24 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +24 -19
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +24 -19
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +24 -19
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/axis-ticks.ts +32 -0
- package/src/kinds/chart-bar.tsx +14 -19
- package/src/kinds/chart-line.tsx +24 -8
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.
|
|
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
|
|
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:
|
|
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:
|
|
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\
|
|
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\
|
|
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:
|
|
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:
|
|
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
|