@cardenelabs/cdl 0.40.9 → 0.40.10

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,34 @@ CDL (Chainome Diagram Language) の主要変更履歴。
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.40.10] - 2026-09-08
9
+
10
+ ### Fixed
11
+
12
+ - **`chart-stat` が受け取った前の時点の値を描くようにした** (#763)
13
+
14
+ 記法は datum に `previous` を書けて解決の処理も通していたのに、数値を主役にする図だけが
15
+ 読んでいなかった。 書き手からは「前の値も見せたくて書いた」 のに、絵は何も変わらなかった。
16
+
17
+ 数値の下に 1 行添える。 呼び方は積み上げの帯 (`chart-stacked-bar`) と揃えた。
18
+
19
+ ```
20
+ 解約率 <- 名前
21
+ 24 <- 数値 (主役)
22
+ 前 38 <- 足した行
23
+ ```
24
+
25
+ | 図 | 前の行 | 縦の位置 |
26
+ |---|---|---|
27
+ | `previous` を書いた | 出る (`chart-stat-previous`) | 行のぶん中身が高くなる |
28
+ | 書いていない | 出さない | 変わらない |
29
+
30
+ **`0` は値として描く**。 `undefined` と同じに扱うと、前が 0 だった件だけ黙って消える。
31
+ 一部の件だけ前を持つ図では、行の位置を件ごとにずらさず揃える。
32
+
33
+ 字は名前と同じ級までにする。 数値より大きくすると「数値が主役」 というこの種別の中身が
34
+ 入れ替わる。
35
+
8
36
  ## [0.40.9] - 2026-09-08
9
37
 
10
38
  ### Fixed
@@ -2004,7 +2032,8 @@ Initial OSS release.
2004
2032
  使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
2005
2033
  行き止まりになる。
2006
2034
 
2007
- [Unreleased]: https://github.com/cardene777/cdl/compare/v0.40.9...HEAD
2035
+ [Unreleased]: https://github.com/cardene777/cdl/compare/v0.40.10...HEAD
2036
+ [0.40.10]: https://github.com/cardene777/cdl/compare/v0.40.9...v0.40.10
2008
2037
  [0.40.9]: https://github.com/cardene777/cdl/compare/v0.40.8...v0.40.9
2009
2038
  [0.40.8]: https://github.com/cardene777/cdl/compare/v0.40.7...v0.40.8
2010
2039
  [0.40.7]: https://github.com/cardene777/cdl/compare/v0.40.6...v0.40.7
package/dist/index.cjs CHANGED
@@ -25229,7 +25229,8 @@ function ChartStatNode({
25229
25229
  const y0 = node.cy - node.h / 2;
25230
25230
  const data = resolveChartData(node.chartData ?? [], stateValues);
25231
25231
  const total = data.reduce((acc, d) => acc + d.value, 0) || 1;
25232
- const \u533A\u753B = \u533A\u753B\u306E\u5272\u4ED8(node.w, node.h, data.length);
25232
+ const \u524D\u3092\u51FA\u3059 = data.some((d) => d.previous !== void 0);
25233
+ const \u533A\u753B = \u533A\u753B\u306E\u5272\u4ED8(node.w, node.h, data.length, \u524D\u3092\u51FA\u3059);
25233
25234
  const \u5272\u5408\u3092\u51FA\u3059 = data.length > 1;
25234
25235
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x0} ${y0})`, children: [
25235
25236
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -25297,6 +25298,24 @@ function ChartStatNode({
25297
25298
  children: \u6570\u5024
25298
25299
  }
25299
25300
  ),
25301
+ d.previous !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
25302
+ "text",
25303
+ {
25304
+ "data-cdl-role": "chart-stat-previous",
25305
+ "data-cdl-unresolved": d.unresolved ? "true" : void 0,
25306
+ x: \u67A02.w / 2,
25307
+ y: \u533A\u753B.\u524D\u306Ey,
25308
+ fontSize: \u53CE\u3081\u308B\u7D1A(
25309
+ `\u524D ${\u5B9F\u5024\u8868\u8A18(d.previous)}`,
25310
+ \u67A02.w - \u533A\u753B.\u4F59\u767D * 2,
25311
+ \u533A\u753B.\u524D\u306E\u7D1A,
25312
+ 8
25313
+ ),
25314
+ textAnchor: "middle",
25315
+ fill: "var(--cdl-text-dim, #5a6270)",
25316
+ children: `\u524D ${\u5B9F\u5024\u8868\u8A18(d.previous)}`
25317
+ }
25318
+ ),
25300
25319
  \u5272\u5408\u3092\u51FA\u3059 && /* @__PURE__ */ jsxRuntime.jsx(
25301
25320
  "circle",
25302
25321
  {
@@ -25340,29 +25359,34 @@ function ChartStatNode({
25340
25359
  })
25341
25360
  ] });
25342
25361
  }
25343
- function \u533A\u753B\u306E\u5272\u4ED8(w, h, \u4EF6\u6570) {
25362
+ function \u533A\u753B\u306E\u5272\u4ED8(w, h, \u4EF6\u6570, \u524D\u3092\u51FA\u3059) {
25344
25363
  const \u4F59\u767D = 20;
25345
25364
  const \u5E45 = \u4EF6\u6570 > 0 ? w / \u4EF6\u6570 : w;
25346
25365
  const \u540D\u524D\u306E\u7D1A = 14;
25347
25366
  const \u6570\u5024\u306E\u7D1A = 40;
25367
+ const \u524D\u306E\u7D1A = \u540D\u524D\u306E\u7D1A;
25348
25368
  const \u5272\u5408\u306E\u7D1A = 12;
25349
25369
  const \u5F27\u306E\u534A\u5F84 = 20;
25350
25370
  const \u5F27\u306E\u592A\u3055 = 4;
25351
- const \u4E2D\u8EAB\u306E\u9AD8\u3055 = \u540D\u524D\u306E\u7D1A + 12 + \u6570\u5024\u306E\u7D1A + 16 + \u5F27\u306E\u534A\u5F84 * 2 + 8 + \u5272\u5408\u306E\u7D1A;
25371
+ const \u524D\u306E\u9AD8\u3055 = \u524D\u3092\u51FA\u3059 ? 8 + \u524D\u306E\u7D1A : 0;
25372
+ const \u4E2D\u8EAB\u306E\u9AD8\u3055 = \u540D\u524D\u306E\u7D1A + 12 + \u6570\u5024\u306E\u7D1A + \u524D\u306E\u9AD8\u3055 + 16 + \u5F27\u306E\u534A\u5F84 * 2 + 8 + \u5272\u5408\u306E\u7D1A;
25352
25373
  const \u4E0A\u7AEF = Math.max(\u4F59\u767D, (h - \u4E2D\u8EAB\u306E\u9AD8\u3055) / 2);
25353
25374
  const \u540D\u524D\u306Ey = \u4E0A\u7AEF + \u540D\u524D\u306E\u7D1A;
25354
25375
  const \u6570\u5024\u306Ey = \u540D\u524D\u306Ey + 12 + \u6570\u5024\u306E\u7D1A * 0.78;
25355
- const \u5F27\u306Ey = \u6570\u5024\u306Ey + 16 + \u5F27\u306E\u534A\u5F84;
25376
+ const \u524D\u306Ey = \u6570\u5024\u306Ey + 8 + \u524D\u306E\u7D1A;
25377
+ const \u5F27\u306Ey = \u6570\u5024\u306Ey + \u524D\u306E\u9AD8\u3055 + 16 + \u5F27\u306E\u534A\u5F84;
25356
25378
  const \u5272\u5408\u306Ey = \u5F27\u306Ey + \u5F27\u306E\u534A\u5F84 + 8 + \u5272\u5408\u306E\u7D1A;
25357
25379
  return {
25358
25380
  \u4F59\u767D,
25359
25381
  \u540D\u524D\u306E\u7D1A,
25360
25382
  \u6570\u5024\u306E\u7D1A,
25383
+ \u524D\u306E\u7D1A,
25361
25384
  \u5272\u5408\u306E\u7D1A,
25362
25385
  \u5F27\u306E\u534A\u5F84,
25363
25386
  \u5F27\u306E\u592A\u3055,
25364
25387
  \u540D\u524D\u306Ey,
25365
25388
  \u6570\u5024\u306Ey,
25389
+ \u524D\u306Ey,
25366
25390
  \u5F27\u306Ey,
25367
25391
  \u5272\u5408\u306Ey,
25368
25392
  \u67A0: (idx) => ({ x: \u5E45 * idx, y: 0, w: \u5E45, h })