@cardenelabs/cdl 0.40.9 → 0.40.11
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 +62 -1
- package/dist/index.cjs +118 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +118 -12
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +118 -12
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +118 -12
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/chart-bar.tsx +39 -1
- package/src/kinds/chart-gauge.tsx +81 -11
- package/src/kinds/chart-radial.tsx +59 -0
- package/src/kinds/chart-stat.tsx +56 -7
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,65 @@ CDL (Chainome Diagram Language) の主要変更履歴。
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.40.11] - 2026-09-09
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **棒 / 弧 / 半円 が受け取った前の時点の値を描くようにした** (#767)
|
|
13
|
+
|
|
14
|
+
`previous` を読むのは円 / 内訳の帯 / 2 時点の線 / 数値ひとつの図の 4 種だけで、残る
|
|
15
|
+
3 種は **受け取っておきながら 1 度も読んでいなかった**。 数値ひとつの図で同じ抜けを
|
|
16
|
+
直したのが `#763` で、そちらは画面に出る文字の数の記録が落ちて初めて見つかっている。
|
|
17
|
+
|
|
18
|
+
下流の見本帳が 49 組を描き比べて残りを洗い出した。
|
|
19
|
+
|
|
20
|
+
| 種別 | 置き方 | 役割名 |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| 棒 | 棒の上に、前の高さを指す印を 1 本引く | `chart-bar-previous` |
|
|
23
|
+
| 弧 | 弧の帯を横切る印を、前の割合の角度に置く | `chart-radial-previous` |
|
|
24
|
+
| 半円 | 内側に前の内訳の輪を 1 本足す | `chart-gauge-previous` |
|
|
25
|
+
|
|
26
|
+
**薄い色で後ろに重ねる形は採らない**。 前が今より小さい件で今の形に完全に隠れ、1 px も
|
|
27
|
+
見えなくなる。 棒と弧は 1 件が 1 本なので印を引き、半円は件を積んで合計を出す図
|
|
28
|
+
(半分の円グラフ) なので円グラフ (`#679`) と同じく内側の輪にする。
|
|
29
|
+
|
|
30
|
+
棒は縦軸の天井を前の時点まで含めて決めるようにした。 含めないと、前が今より大きい件で
|
|
31
|
+
印が枠の外へ出る。
|
|
32
|
+
|
|
33
|
+
書かない図では役割を 1 つも出さず、半円の輪の太さも変わらない。
|
|
34
|
+
|
|
35
|
+
対象外が 4 つある。 折れ線の `previous` (横軸そのものが時の流れで、点ごとの前の時点は
|
|
36
|
+
線の中に既にある)、100 個の印の `previous` (印が 200 個になり 100 個で読む前提が崩れる)、
|
|
37
|
+
折れ線の `tone` (線は 1 本 1 色)、棒の `tone` (`#747` が 1 色 + 濃さと決めた形)。
|
|
38
|
+
|
|
39
|
+
## [0.40.10] - 2026-09-08
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
|
|
43
|
+
- **`chart-stat` が受け取った前の時点の値を描くようにした** (#763)
|
|
44
|
+
|
|
45
|
+
記法は datum に `previous` を書けて解決の処理も通していたのに、数値を主役にする図だけが
|
|
46
|
+
読んでいなかった。 書き手からは「前の値も見せたくて書いた」 のに、絵は何も変わらなかった。
|
|
47
|
+
|
|
48
|
+
数値の下に 1 行添える。 呼び方は積み上げの帯 (`chart-stacked-bar`) と揃えた。
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
解約率 <- 名前
|
|
52
|
+
24 <- 数値 (主役)
|
|
53
|
+
前 38 <- 足した行
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
| 図 | 前の行 | 縦の位置 |
|
|
57
|
+
|---|---|---|
|
|
58
|
+
| `previous` を書いた | 出る (`chart-stat-previous`) | 行のぶん中身が高くなる |
|
|
59
|
+
| 書いていない | 出さない | 変わらない |
|
|
60
|
+
|
|
61
|
+
**`0` は値として描く**。 `undefined` と同じに扱うと、前が 0 だった件だけ黙って消える。
|
|
62
|
+
一部の件だけ前を持つ図では、行の位置を件ごとにずらさず揃える。
|
|
63
|
+
|
|
64
|
+
字は名前と同じ級までにする。 数値より大きくすると「数値が主役」 というこの種別の中身が
|
|
65
|
+
入れ替わる。
|
|
66
|
+
|
|
8
67
|
## [0.40.9] - 2026-09-08
|
|
9
68
|
|
|
10
69
|
### Fixed
|
|
@@ -2004,7 +2063,9 @@ Initial OSS release.
|
|
|
2004
2063
|
使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
|
|
2005
2064
|
行き止まりになる。
|
|
2006
2065
|
|
|
2007
|
-
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.40.
|
|
2066
|
+
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.40.11...HEAD
|
|
2067
|
+
[0.40.11]: https://github.com/cardene777/cdl/compare/v0.40.10...v0.40.11
|
|
2068
|
+
[0.40.10]: https://github.com/cardene777/cdl/compare/v0.40.9...v0.40.10
|
|
2008
2069
|
[0.40.9]: https://github.com/cardene777/cdl/compare/v0.40.8...v0.40.9
|
|
2009
2070
|
[0.40.8]: https://github.com/cardene777/cdl/compare/v0.40.7...v0.40.8
|
|
2010
2071
|
[0.40.7]: https://github.com/cardene777/cdl/compare/v0.40.6...v0.40.7
|
package/dist/index.cjs
CHANGED
|
@@ -24961,18 +24961,35 @@ function ChartGaugeNode({
|
|
|
24961
24961
|
const \u5185\u534A\u5F84 = radius * 0.62;
|
|
24962
24962
|
const cx = node.w / 2;
|
|
24963
24963
|
const cy = PAD_TOP2 + radius;
|
|
24964
|
+
const \u524D\u3042\u308A = \u51FA\u3059\u4EF6\u305F\u3061.some((d) => d.previous !== void 0);
|
|
24965
|
+
const \u524D\u306E\u5024 = \u51FA\u3059\u4EF6\u305F\u3061.map((d) => Math.max(0, d.previous ?? 0));
|
|
24966
|
+
const \u524D\u306E\u5408\u8A08 = \u524D\u306E\u5024.reduce((acc, v) => acc + v, 0);
|
|
24967
|
+
const \u5E2F = radius - \u5185\u534A\u5F84;
|
|
24968
|
+
const \u4ECA\u306E\u5185\u534A\u5F84 = \u524D\u3042\u308A ? \u5185\u534A\u5F84 + \u5E2F * 0.42 : \u5185\u534A\u5F84;
|
|
24969
|
+
const \u524D\u306E\u5185\u534A\u5F84 = \u5185\u534A\u5F84;
|
|
24970
|
+
const \u524D\u306E\u5916\u534A\u5F84 = \u5185\u534A\u5F84 + \u5E2F * 0.32;
|
|
24971
|
+
const \u6247\u306E\u9053 = (a0, a1, \u5185, \u5916) => {
|
|
24972
|
+
const \u59161 = \u6975(cx, cy, \u5916, a0);
|
|
24973
|
+
const \u59162 = \u6975(cx, cy, \u5916, a1);
|
|
24974
|
+
const \u51852 = \u6975(cx, cy, \u5185, a1);
|
|
24975
|
+
const \u51851 = \u6975(cx, cy, \u5185, a0);
|
|
24976
|
+
return `M ${\u59161.x} ${\u59161.y} A ${\u5916} ${\u5916} 0 0 1 ${\u59162.x} ${\u59162.y} L ${\u51852.x} ${\u51852.y} A ${\u5185} ${\u5185} 0 0 0 ${\u51851.x} ${\u51851.y} Z`;
|
|
24977
|
+
};
|
|
24964
24978
|
let cumFrac = 0;
|
|
24965
24979
|
const slices = \u51FA\u3059\u4EF6\u305F\u3061.map((d) => {
|
|
24966
24980
|
const frac = d.value / total;
|
|
24967
24981
|
const a0 = Math.PI + cumFrac * Math.PI;
|
|
24968
24982
|
const a1 = a0 + frac * Math.PI;
|
|
24969
24983
|
cumFrac += frac;
|
|
24970
|
-
|
|
24971
|
-
|
|
24972
|
-
|
|
24973
|
-
|
|
24974
|
-
const
|
|
24975
|
-
|
|
24984
|
+
return { d, frac, path: \u6247\u306E\u9053(a0, a1, \u4ECA\u306E\u5185\u534A\u5F84, radius) };
|
|
24985
|
+
});
|
|
24986
|
+
let \u524D\u306Ecum = 0;
|
|
24987
|
+
const \u524D\u306E\u6247\u305F\u3061 = \u51FA\u3059\u4EF6\u305F\u3061.map((d, idx) => {
|
|
24988
|
+
const frac = \u524D\u306E\u5408\u8A08 > 0 ? (\u524D\u306E\u5024[idx] ?? 0) / \u524D\u306E\u5408\u8A08 : 0;
|
|
24989
|
+
const a0 = Math.PI + \u524D\u306Ecum * Math.PI;
|
|
24990
|
+
const a1 = a0 + frac * Math.PI;
|
|
24991
|
+
\u524D\u306Ecum += frac;
|
|
24992
|
+
return { d, frac, path: \u6247\u306E\u9053(a0, a1, \u524D\u306E\u5185\u534A\u5F84, \u524D\u306E\u5916\u534A\u5F84) };
|
|
24976
24993
|
});
|
|
24977
24994
|
const \u5408\u8A08\u306E\u6587\u5B57 = \u5B9F\u5024\u8868\u8A18(Math.round(total));
|
|
24978
24995
|
const \u5358\u4F4D\u5E45 = Math.max(textWidth(\u5408\u8A08\u306E\u6587\u5B57, 100), 1) / 100;
|
|
@@ -25001,6 +25018,20 @@ function ChartGaugeNode({
|
|
|
25001
25018
|
},
|
|
25002
25019
|
`arc-${idx}`
|
|
25003
25020
|
));
|
|
25021
|
+
const \u524D\u306E\u5F27\u305F\u3061 = \u524D\u3042\u308A ? \u524D\u306E\u6247\u305F\u3061.map((s, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
25022
|
+
"path",
|
|
25023
|
+
{
|
|
25024
|
+
"data-cdl-role": "chart-gauge-previous",
|
|
25025
|
+
"data-cdl-unresolved": s.d.unresolved ? "true" : void 0,
|
|
25026
|
+
d: s.path,
|
|
25027
|
+
fill: arcColor(s.d.tone, idx),
|
|
25028
|
+
fillOpacity: 0.45,
|
|
25029
|
+
stroke: "var(--cdl-node-fill, #ffffff)",
|
|
25030
|
+
strokeWidth: 1.5,
|
|
25031
|
+
strokeLinejoin: "round"
|
|
25032
|
+
},
|
|
25033
|
+
`prev-arc-${idx}`
|
|
25034
|
+
)) : null;
|
|
25004
25035
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x0} ${y0})`, children: [
|
|
25005
25036
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25006
25037
|
"rect",
|
|
@@ -25017,7 +25048,13 @@ function ChartGaugeNode({
|
|
|
25017
25048
|
}
|
|
25018
25049
|
),
|
|
25019
25050
|
drawing && /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("clipPath", { id: \u5207\u308A\u629C\u304Did, children: \u6247\u5F62\u306E\u5207\u308A\u629C\u304D(cx, cy, radius + 2, \u4F38\u3073, Math.PI, Math.PI) }) }),
|
|
25020
|
-
drawing ? /* @__PURE__ */ jsxRuntime.
|
|
25051
|
+
drawing ? /* @__PURE__ */ jsxRuntime.jsxs("g", { clipPath: `url(#${\u5207\u308A\u629C\u304Did})`, children: [
|
|
25052
|
+
\u524D\u306E\u5F27\u305F\u3061,
|
|
25053
|
+
\u5F27\u305F\u3061
|
|
25054
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25055
|
+
\u524D\u306E\u5F27\u305F\u3061,
|
|
25056
|
+
\u5F27\u305F\u3061
|
|
25057
|
+
] }),
|
|
25021
25058
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25022
25059
|
"text",
|
|
25023
25060
|
{
|
|
@@ -25126,9 +25163,11 @@ function ChartRadialNode({
|
|
|
25126
25163
|
const rings = data.map((d, idx) => {
|
|
25127
25164
|
const frac = d.value / total;
|
|
25128
25165
|
const \u4E2D\u5FC3\u534A\u5F84 = \u5916\u534A\u5F84 - \u5E2F1\u672C * idx - \u5E2F1\u672C / 2;
|
|
25166
|
+
const \u524D\u306E\u5272\u5408 = d.previous === void 0 ? null : Math.max(0, d.previous) / total;
|
|
25129
25167
|
return {
|
|
25130
25168
|
d,
|
|
25131
25169
|
frac,
|
|
25170
|
+
\u524D\u306E\u5272\u5408,
|
|
25132
25171
|
\u4E2D\u5FC3\u534A\u5F84,
|
|
25133
25172
|
// 軌道は全周。 1 周ちょうどは弧で表せないので、 わずかに欠かして描く
|
|
25134
25173
|
\u8ECC\u9053: \u5F27\u306E\u90532(\u5F27\u306Ecx, cy, \u4E2D\u5FC3\u534A\u5F84, \u5E2F\u306E\u5E45, 0.9999),
|
|
@@ -25177,6 +25216,20 @@ function ChartRadialNode({
|
|
|
25177
25216
|
)),
|
|
25178
25217
|
drawing && /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("clipPath", { id: \u5207\u308A\u629C\u304Did, children: \u6247\u5F62\u306E\u5207\u308A\u629C\u304D(\u5F27\u306Ecx, cy, \u5916\u534A\u5F84 + \u5E2F\u306E\u5E45, \u958B\u304D) }) }),
|
|
25179
25218
|
drawing ? /* @__PURE__ */ jsxRuntime.jsx("g", { clipPath: `url(#${\u5207\u308A\u629C\u304Did})`, children: \u53D6\u308A\u5206\u305F\u3061 }) : \u53D6\u308A\u5206\u305F\u3061,
|
|
25219
|
+
rings.map(
|
|
25220
|
+
(r, idx) => r.\u524D\u306E\u5272\u5408 === null ? null : /* @__PURE__ */ jsxRuntime.jsx(
|
|
25221
|
+
"line",
|
|
25222
|
+
{
|
|
25223
|
+
"data-cdl-role": "chart-radial-previous",
|
|
25224
|
+
"data-cdl-unresolved": r.d.unresolved ? "true" : void 0,
|
|
25225
|
+
...\u5E2F\u3092\u6A2A\u5207\u308B\u5370(\u5F27\u306Ecx, cy, r.\u4E2D\u5FC3\u534A\u5F84, \u5E2F\u306E\u5E45, Math.min(r.\u524D\u306E\u5272\u5408, 0.9999)),
|
|
25226
|
+
stroke: "var(--cdl-text-mute, #8a8678)",
|
|
25227
|
+
strokeWidth: 2,
|
|
25228
|
+
strokeLinecap: "round"
|
|
25229
|
+
},
|
|
25230
|
+
`prev-${idx}`
|
|
25231
|
+
)
|
|
25232
|
+
),
|
|
25180
25233
|
data.map((d, idx) => {
|
|
25181
25234
|
const y = \u4E00\u89A7\u306E\u59CB\u307E\u308A + \u884C\u306E\u9AD8\u3055 * idx;
|
|
25182
25235
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-role": "chart-radial-item", children: [
|
|
@@ -25216,6 +25269,18 @@ function \u5F27\u306E\u90532(cx, cy, \u4E2D\u5FC3\u534A\u5F84, \u5E45, \u5272\u5
|
|
|
25216
25269
|
const p = (r, a) => `${cx + r * Math.cos(a)} ${cy + r * Math.sin(a)}`;
|
|
25217
25270
|
return `M ${p(\u5916, a0)} A ${\u5916} ${\u5916} 0 ${large} 1 ${p(\u5916, a1)} L ${p(\u5185, a1)} A ${\u5185} ${\u5185} 0 ${large} 0 ${p(\u5185, a0)} Z`;
|
|
25218
25271
|
}
|
|
25272
|
+
function \u5E2F\u3092\u6A2A\u5207\u308B\u5370(cx, cy, \u4E2D\u5FC3\u534A\u5F84, \u5E45, \u5272\u5408) {
|
|
25273
|
+
const \u306F\u307F\u51FA\u3057 = Math.min(\u5E45 * 0.3, 5);
|
|
25274
|
+
const \u5916 = \u4E2D\u5FC3\u534A\u5F84 + \u5E45 / 2 + \u306F\u307F\u51FA\u3057;
|
|
25275
|
+
const \u5185 = Math.max(0.5, \u4E2D\u5FC3\u534A\u5F84 - \u5E45 / 2 - \u306F\u307F\u51FA\u3057);
|
|
25276
|
+
const a = -Math.PI / 2 + \u5272\u5408 * Math.PI * 2;
|
|
25277
|
+
return {
|
|
25278
|
+
x1: cx + \u5185 * Math.cos(a),
|
|
25279
|
+
y1: cy + \u5185 * Math.sin(a),
|
|
25280
|
+
x2: cx + \u5916 * Math.cos(a),
|
|
25281
|
+
y2: cy + \u5916 * Math.sin(a)
|
|
25282
|
+
};
|
|
25283
|
+
}
|
|
25219
25284
|
function arcColor2(tone, idx) {
|
|
25220
25285
|
if (tone) return TONE[tone];
|
|
25221
25286
|
return chartSeriesColor(idx);
|
|
@@ -25229,7 +25294,8 @@ function ChartStatNode({
|
|
|
25229
25294
|
const y0 = node.cy - node.h / 2;
|
|
25230
25295
|
const data = resolveChartData(node.chartData ?? [], stateValues);
|
|
25231
25296
|
const total = data.reduce((acc, d) => acc + d.value, 0) || 1;
|
|
25232
|
-
const \
|
|
25297
|
+
const \u524D\u3092\u51FA\u3059 = data.some((d) => d.previous !== void 0);
|
|
25298
|
+
const \u533A\u753B = \u533A\u753B\u306E\u5272\u4ED8(node.w, node.h, data.length, \u524D\u3092\u51FA\u3059);
|
|
25233
25299
|
const \u5272\u5408\u3092\u51FA\u3059 = data.length > 1;
|
|
25234
25300
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x0} ${y0})`, children: [
|
|
25235
25301
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -25297,6 +25363,24 @@ function ChartStatNode({
|
|
|
25297
25363
|
children: \u6570\u5024
|
|
25298
25364
|
}
|
|
25299
25365
|
),
|
|
25366
|
+
d.previous !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
25367
|
+
"text",
|
|
25368
|
+
{
|
|
25369
|
+
"data-cdl-role": "chart-stat-previous",
|
|
25370
|
+
"data-cdl-unresolved": d.unresolved ? "true" : void 0,
|
|
25371
|
+
x: \u67A02.w / 2,
|
|
25372
|
+
y: \u533A\u753B.\u524D\u306Ey,
|
|
25373
|
+
fontSize: \u53CE\u3081\u308B\u7D1A(
|
|
25374
|
+
`\u524D ${\u5B9F\u5024\u8868\u8A18(d.previous)}`,
|
|
25375
|
+
\u67A02.w - \u533A\u753B.\u4F59\u767D * 2,
|
|
25376
|
+
\u533A\u753B.\u524D\u306E\u7D1A,
|
|
25377
|
+
8
|
|
25378
|
+
),
|
|
25379
|
+
textAnchor: "middle",
|
|
25380
|
+
fill: "var(--cdl-text-dim, #5a6270)",
|
|
25381
|
+
children: `\u524D ${\u5B9F\u5024\u8868\u8A18(d.previous)}`
|
|
25382
|
+
}
|
|
25383
|
+
),
|
|
25300
25384
|
\u5272\u5408\u3092\u51FA\u3059 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
25301
25385
|
"circle",
|
|
25302
25386
|
{
|
|
@@ -25340,29 +25424,34 @@ function ChartStatNode({
|
|
|
25340
25424
|
})
|
|
25341
25425
|
] });
|
|
25342
25426
|
}
|
|
25343
|
-
function \u533A\u753B\u306E\u5272\u4ED8(w, h, \u4EF6\u6570) {
|
|
25427
|
+
function \u533A\u753B\u306E\u5272\u4ED8(w, h, \u4EF6\u6570, \u524D\u3092\u51FA\u3059) {
|
|
25344
25428
|
const \u4F59\u767D = 20;
|
|
25345
25429
|
const \u5E45 = \u4EF6\u6570 > 0 ? w / \u4EF6\u6570 : w;
|
|
25346
25430
|
const \u540D\u524D\u306E\u7D1A = 14;
|
|
25347
25431
|
const \u6570\u5024\u306E\u7D1A = 40;
|
|
25432
|
+
const \u524D\u306E\u7D1A = \u540D\u524D\u306E\u7D1A;
|
|
25348
25433
|
const \u5272\u5408\u306E\u7D1A = 12;
|
|
25349
25434
|
const \u5F27\u306E\u534A\u5F84 = 20;
|
|
25350
25435
|
const \u5F27\u306E\u592A\u3055 = 4;
|
|
25351
|
-
const \
|
|
25436
|
+
const \u524D\u306E\u9AD8\u3055 = \u524D\u3092\u51FA\u3059 ? 8 + \u524D\u306E\u7D1A : 0;
|
|
25437
|
+
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
25438
|
const \u4E0A\u7AEF = Math.max(\u4F59\u767D, (h - \u4E2D\u8EAB\u306E\u9AD8\u3055) / 2);
|
|
25353
25439
|
const \u540D\u524D\u306Ey = \u4E0A\u7AEF + \u540D\u524D\u306E\u7D1A;
|
|
25354
25440
|
const \u6570\u5024\u306Ey = \u540D\u524D\u306Ey + 12 + \u6570\u5024\u306E\u7D1A * 0.78;
|
|
25355
|
-
const \
|
|
25441
|
+
const \u524D\u306Ey = \u6570\u5024\u306Ey + 8 + \u524D\u306E\u7D1A;
|
|
25442
|
+
const \u5F27\u306Ey = \u6570\u5024\u306Ey + \u524D\u306E\u9AD8\u3055 + 16 + \u5F27\u306E\u534A\u5F84;
|
|
25356
25443
|
const \u5272\u5408\u306Ey = \u5F27\u306Ey + \u5F27\u306E\u534A\u5F84 + 8 + \u5272\u5408\u306E\u7D1A;
|
|
25357
25444
|
return {
|
|
25358
25445
|
\u4F59\u767D,
|
|
25359
25446
|
\u540D\u524D\u306E\u7D1A,
|
|
25360
25447
|
\u6570\u5024\u306E\u7D1A,
|
|
25448
|
+
\u524D\u306E\u7D1A,
|
|
25361
25449
|
\u5272\u5408\u306E\u7D1A,
|
|
25362
25450
|
\u5F27\u306E\u534A\u5F84,
|
|
25363
25451
|
\u5F27\u306E\u592A\u3055,
|
|
25364
25452
|
\u540D\u524D\u306Ey,
|
|
25365
25453
|
\u6570\u5024\u306Ey,
|
|
25454
|
+
\u524D\u306Ey,
|
|
25366
25455
|
\u5F27\u306Ey,
|
|
25367
25456
|
\u5272\u5408\u306Ey,
|
|
25368
25457
|
\u67A0: (idx) => ({ x: \u5E45 * idx, y: 0, w: \u5E45, h })
|
|
@@ -25942,8 +26031,9 @@ function ChartBarNode({
|
|
|
25942
26031
|
const canvasW = node.w - PAD_LEFT2 - PAD_RIGHT2;
|
|
25943
26032
|
const canvasH = node.h - PAD_TOP2 - PAD_BOTTOM2;
|
|
25944
26033
|
const vMax = data.length > 0 ? Math.max(...data.map((d) => d.value)) : 1;
|
|
26034
|
+
const \u8EF8\u306E\u3082\u3068 = data.length > 0 ? Math.max(vMax, ...data.map((d) => d.previous ?? 0)) : vMax;
|
|
25945
26035
|
const \u76EE\u76DB\u308A\u306E\u76EE\u5B892 = 4;
|
|
25946
|
-
const \u5929\u4E95\u306E\u3082\u3068 =
|
|
26036
|
+
const \u5929\u4E95\u306E\u3082\u3068 = \u8EF8\u306E\u3082\u3068 > 0 ? \u8EF8\u306E\u3082\u3068 : 1;
|
|
25947
26037
|
const \u523B\u307F = \u76EE\u76DB\u308A\u306E\u523B\u307F(\u5929\u4E95\u306E\u3082\u3068, \u76EE\u76DB\u308A\u306E\u76EE\u5B892);
|
|
25948
26038
|
const \u523B\u307F\u306E\u6841 = \u5C0F\u6570\u306E\u6841(\u523B\u307F);
|
|
25949
26039
|
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);
|
|
@@ -26036,8 +26126,24 @@ function ChartBarNode({
|
|
|
26036
26126
|
fillOpacity: \u6FC3\u3055(d.value)
|
|
26037
26127
|
}
|
|
26038
26128
|
);
|
|
26129
|
+
const \u5370\u306E\u306F\u307F\u51FA\u3057 = Math.min(barW * 0.18, 8);
|
|
26130
|
+
const \u524D\u306E\u5370 = d.previous === void 0 ? null : /* @__PURE__ */ jsxRuntime.jsx(
|
|
26131
|
+
"line",
|
|
26132
|
+
{
|
|
26133
|
+
"data-cdl-role": "chart-bar-previous",
|
|
26134
|
+
"data-cdl-unresolved": d.unresolved ? "true" : void 0,
|
|
26135
|
+
x1: bx - \u5370\u306E\u306F\u307F\u51FA\u3057,
|
|
26136
|
+
y1: yAt(Math.max(0, d.previous)),
|
|
26137
|
+
x2: bx + barW + \u5370\u306E\u306F\u307F\u51FA\u3057,
|
|
26138
|
+
y2: yAt(Math.max(0, d.previous)),
|
|
26139
|
+
stroke: "var(--cdl-text-mute, #8a8678)",
|
|
26140
|
+
strokeWidth: 1.5,
|
|
26141
|
+
strokeDasharray: "5 3"
|
|
26142
|
+
}
|
|
26143
|
+
);
|
|
26039
26144
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
26040
26145
|
drawing ? /* @__PURE__ */ jsxRuntime.jsx("g", { transform: `translate(0 ${\u6A2A\u8EF8\u306Ey}) scale(1 ${\u4F38\u3073}) translate(0 ${-\u6A2A\u8EF8\u306Ey})`, children: \u68D2 }) : \u68D2,
|
|
26146
|
+
\u524D\u306E\u5370,
|
|
26041
26147
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26042
26148
|
"text",
|
|
26043
26149
|
{
|