@tsingroc/tsingroc-components 5.0.1 → 5.1.0

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.
Files changed (82) hide show
  1. package/dist/components/BarLineChart/BarLineChart.module.css +10 -0
  2. package/dist/components/BarLineChart/index.d.ts +66 -0
  3. package/dist/components/BarLineChart/index.js +590 -0
  4. package/dist/components/BaseBarChart/BaseBarChart.module.css +12 -0
  5. package/dist/components/BaseBarChart/index.d.ts +33 -0
  6. package/dist/components/BaseBarChart/index.js +121 -0
  7. package/dist/components/DataCellNumber/DataCellNumber.module.css +20 -0
  8. package/dist/components/DataCellNumber/index.d.ts +14 -0
  9. package/dist/components/DataCellNumber/index.js +142 -0
  10. package/dist/components/FlexColLayout/index.d.ts +6 -0
  11. package/dist/components/FlexColLayout/index.js +40 -0
  12. package/dist/components/FlexRowLayout/index.d.ts +5 -0
  13. package/dist/components/FlexRowLayout/index.js +45 -0
  14. package/dist/components/HighlightSyncedECharts/index.d.ts +47 -0
  15. package/dist/components/HighlightSyncedECharts/index.js +260 -0
  16. package/dist/components/HighlightSyncedTable/index.d.ts +8 -0
  17. package/dist/components/HighlightSyncedTable/index.js +183 -0
  18. package/dist/components/LoadingSection/index.d.ts +41 -0
  19. package/dist/components/LoadingSection/index.js +183 -0
  20. package/dist/components/LoadingSkeleton/index.d.ts +42 -0
  21. package/dist/components/LoadingSkeleton/index.js +634 -0
  22. package/dist/components/ScrollableTable/ScrollableTable.module.css +21 -0
  23. package/dist/components/ScrollableTable/index.d.ts +13 -0
  24. package/dist/components/ScrollableTable/index.js +29 -0
  25. package/dist/components/TsingrocTable/TsingrocTable.module.css +32 -0
  26. package/dist/components/TsingrocTable/index.d.ts +12 -0
  27. package/dist/components/TsingrocTable/index.js +23 -0
  28. package/dist/components/TsingrocTheme/index.js +3 -3
  29. package/dist/index.d.ts +4 -0
  30. package/dist/index.js +4 -0
  31. package/dist/pages/DayAheadReviewPage/components/PricePlot/index.d.ts +7 -0
  32. package/dist/pages/DayAheadReviewPage/components/PricePlot/index.js +136 -0
  33. package/dist/pages/DayAheadReviewPage/components/ProfitBarChart/ProfitBarChart.module.css +13 -0
  34. package/dist/pages/DayAheadReviewPage/components/ProfitBarChart/index.d.ts +17 -0
  35. package/dist/pages/DayAheadReviewPage/components/ProfitBarChart/index.js +278 -0
  36. package/dist/pages/DayAheadReviewPage/components/RevenueCard/RevenueCard.module.css +40 -0
  37. package/dist/pages/DayAheadReviewPage/components/RevenueCard/index.d.ts +9 -0
  38. package/dist/pages/DayAheadReviewPage/components/RevenueCard/index.js +195 -0
  39. package/dist/pages/DayAheadReviewPage/components/RevenueSummaryCard/RevenueSummaryCard.module.css +38 -0
  40. package/dist/pages/DayAheadReviewPage/components/RevenueSummaryCard/index.d.ts +10 -0
  41. package/dist/pages/DayAheadReviewPage/components/RevenueSummaryCard/index.js +117 -0
  42. package/dist/pages/DayAheadReviewPage/components/ReviewLineChart/ReviewLineChart.module.css +11 -0
  43. package/dist/pages/DayAheadReviewPage/components/ReviewLineChart/index.d.ts +53 -0
  44. package/dist/pages/DayAheadReviewPage/components/ReviewLineChart/index.js +398 -0
  45. package/dist/pages/DayAheadReviewPage/components/ReviewSummaryTable/ReviewSummaryTable.module.css +33 -0
  46. package/dist/pages/DayAheadReviewPage/components/ReviewSummaryTable/index.d.ts +17 -0
  47. package/dist/pages/DayAheadReviewPage/components/ReviewSummaryTable/index.js +187 -0
  48. package/dist/pages/DayAheadReviewPage/components/StrategyPlot/index.d.ts +10 -0
  49. package/dist/pages/DayAheadReviewPage/components/StrategyPlot/index.js +223 -0
  50. package/dist/pages/DayAheadReviewPage/components/SummaryTable/index.d.ts +7 -0
  51. package/dist/pages/DayAheadReviewPage/components/SummaryTable/index.js +39 -0
  52. package/dist/pages/DayAheadReviewPage/components/SummaryTable/useTableColumns.d.ts +10 -0
  53. package/dist/pages/DayAheadReviewPage/components/SummaryTable/useTableColumns.js +307 -0
  54. package/dist/pages/DayAheadReviewPage/hook/useDayAheadReviewDate.d.ts +137 -0
  55. package/dist/pages/DayAheadReviewPage/hook/useDayAheadReviewDate.js +252 -0
  56. package/dist/pages/DayAheadReviewPage/index.d.ts +149 -0
  57. package/dist/pages/DayAheadReviewPage/index.js +259 -0
  58. package/dist/pages/DayAheadReviewPage/layout/LeftChartContainer.d.ts +12 -0
  59. package/dist/pages/DayAheadReviewPage/layout/LeftChartContainer.js +236 -0
  60. package/dist/pages/DayAheadReviewPage/layout/ReviewPageLayout.d.ts +4 -0
  61. package/dist/pages/DayAheadReviewPage/layout/ReviewPageLayout.js +32 -0
  62. package/dist/pages/DayAheadReviewPage/layout/RightSummaryContainer.d.ts +14 -0
  63. package/dist/pages/DayAheadReviewPage/layout/RightSummaryContainer.js +199 -0
  64. package/dist/pages/DayAheadReviewPage/layout/TopDayReviewHeader.d.ts +9 -0
  65. package/dist/pages/DayAheadReviewPage/layout/TopDayReviewHeader.js +115 -0
  66. package/dist/pages/DayAheadReviewPage/types/dayahead.d.ts +172 -0
  67. package/dist/pages/DayAheadReviewPage/types/dayahead.js +1 -0
  68. package/dist/utils/accessibility.d.ts +114 -0
  69. package/dist/utils/accessibility.js +214 -0
  70. package/dist/utils/constants.d.ts +18 -0
  71. package/dist/utils/constants.js +34 -0
  72. package/dist/utils/export.d.ts +10 -0
  73. package/dist/utils/export.js +72 -0
  74. package/dist/utils/formatters.d.ts +46 -0
  75. package/dist/utils/formatters.js +84 -0
  76. package/dist/utils/index.d.ts +1 -0
  77. package/dist/utils/index.js +1 -0
  78. package/dist/utils/presenters.d.ts +24 -0
  79. package/dist/utils/presenters.js +48 -0
  80. package/dist/utils/ui.d.ts +116 -0
  81. package/dist/utils/ui.js +171 -0
  82. package/package.json +32 -31
@@ -0,0 +1,195 @@
1
+ import { c as _c } from "react/compiler-runtime";
2
+ import { Card } from "antd";
3
+ import { presentCardValue } from "#src/utils/formatters";
4
+ import styles from "./RevenueCard.module.css";
5
+ import AgentIcon from "./agent-icon.svg?react";
6
+ import HumanIcon from "./human-icon.svg?react";
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ const stylesRevenueCard = backgroundColor => ({
9
+ title: {
10
+ fontSize: 16,
11
+ fontWeight: 500
12
+ },
13
+ body: {
14
+ backgroundColor,
15
+ borderRadius: 8,
16
+ gap: 0
17
+ }
18
+ });
19
+ const stylesCardMeta = fontColor => ({
20
+ title: {
21
+ fontSize: "0.875rem",
22
+ marginBottom: 0,
23
+ fontWeight: 500
24
+ },
25
+ description: {
26
+ color: fontColor,
27
+ fontSize: "2.2rem",
28
+ fontWeight: 600
29
+ },
30
+ avatar: {
31
+ display: "flex",
32
+ alignItems: "center"
33
+ }
34
+ });
35
+ export function RevenueCard(t0) {
36
+ const $ = _c(29);
37
+ const {
38
+ title,
39
+ num,
40
+ bgColour,
41
+ fontColor,
42
+ circleSize: t1,
43
+ secondaryText
44
+ } = t0;
45
+ const circleSize = t1 === undefined ? 24 : t1;
46
+ const isAgent = title === "\u667A\u80FD\u4F53";
47
+ let t2;
48
+ if ($[0] !== circleSize) {
49
+ t2 = {
50
+ width: circleSize,
51
+ height: circleSize,
52
+ padding: "12px",
53
+ boxSizing: "content-box"
54
+ };
55
+ $[0] = circleSize;
56
+ $[1] = t2;
57
+ } else {
58
+ t2 = $[1];
59
+ }
60
+ let t3;
61
+ if ($[2] !== isAgent) {
62
+ t3 = isAgent ? /*#__PURE__*/_jsx(AgentIcon, {
63
+ style: {
64
+ width: "100%",
65
+ height: "100%"
66
+ }
67
+ }) : /*#__PURE__*/_jsx(HumanIcon, {
68
+ style: {
69
+ width: "100%",
70
+ height: "100%"
71
+ }
72
+ });
73
+ $[2] = isAgent;
74
+ $[3] = t3;
75
+ } else {
76
+ t3 = $[3];
77
+ }
78
+ let t4;
79
+ if ($[4] !== t2 || $[5] !== t3) {
80
+ t4 = /*#__PURE__*/_jsx("div", {
81
+ className: styles["revenue-summary-container__card-icon"],
82
+ style: t2,
83
+ children: t3
84
+ });
85
+ $[4] = t2;
86
+ $[5] = t3;
87
+ $[6] = t4;
88
+ } else {
89
+ t4 = $[6];
90
+ }
91
+ const iconNode = t4;
92
+ let t5;
93
+ if ($[7] !== bgColour) {
94
+ t5 = stylesRevenueCard(bgColour);
95
+ $[7] = bgColour;
96
+ $[8] = t5;
97
+ } else {
98
+ t5 = $[8];
99
+ }
100
+ let t6;
101
+ if ($[9] !== fontColor) {
102
+ t6 = stylesCardMeta(fontColor);
103
+ $[9] = fontColor;
104
+ $[10] = t6;
105
+ } else {
106
+ t6 = $[10];
107
+ }
108
+ let t7;
109
+ if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
110
+ t7 = {
111
+ display: "flex",
112
+ flexDirection: "column",
113
+ gap: 4
114
+ };
115
+ $[11] = t7;
116
+ } else {
117
+ t7 = $[11];
118
+ }
119
+ let t8;
120
+ if ($[12] !== num) {
121
+ t8 = presentCardValue(num != null ? num.toFixed(2) : null);
122
+ $[12] = num;
123
+ $[13] = t8;
124
+ } else {
125
+ t8 = $[13];
126
+ }
127
+ const t9 = `¥${t8}`;
128
+ let t10;
129
+ if ($[14] !== t9) {
130
+ t10 = /*#__PURE__*/_jsx("div", {
131
+ children: t9
132
+ });
133
+ $[14] = t9;
134
+ $[15] = t10;
135
+ } else {
136
+ t10 = $[15];
137
+ }
138
+ let t11;
139
+ if ($[16] !== secondaryText) {
140
+ t11 = secondaryText && /*#__PURE__*/_jsx("div", {
141
+ style: {
142
+ fontSize: "0.7rem",
143
+ color: "#999",
144
+ fontWeight: 400
145
+ },
146
+ children: secondaryText
147
+ });
148
+ $[16] = secondaryText;
149
+ $[17] = t11;
150
+ } else {
151
+ t11 = $[17];
152
+ }
153
+ let t12;
154
+ if ($[18] !== t10 || $[19] !== t11) {
155
+ t12 = /*#__PURE__*/_jsxs("div", {
156
+ style: t7,
157
+ children: [t10, t11]
158
+ });
159
+ $[18] = t10;
160
+ $[19] = t11;
161
+ $[20] = t12;
162
+ } else {
163
+ t12 = $[20];
164
+ }
165
+ let t13;
166
+ if ($[21] !== iconNode || $[22] !== t12 || $[23] !== t6 || $[24] !== title) {
167
+ t13 = /*#__PURE__*/_jsx(Card.Meta, {
168
+ styles: t6,
169
+ avatar: iconNode,
170
+ title: title,
171
+ description: t12
172
+ });
173
+ $[21] = iconNode;
174
+ $[22] = t12;
175
+ $[23] = t6;
176
+ $[24] = title;
177
+ $[25] = t13;
178
+ } else {
179
+ t13 = $[25];
180
+ }
181
+ let t14;
182
+ if ($[26] !== t13 || $[27] !== t5) {
183
+ t14 = /*#__PURE__*/_jsx(Card, {
184
+ className: styles["revenue-summary-container__card"],
185
+ styles: t5,
186
+ children: t13
187
+ });
188
+ $[26] = t13;
189
+ $[27] = t5;
190
+ $[28] = t14;
191
+ } else {
192
+ t14 = $[28];
193
+ }
194
+ return t14;
195
+ }
@@ -0,0 +1,38 @@
1
+ .root {
2
+ border: 0;
3
+ width: 100%;
4
+ height: 100%;
5
+ }
6
+
7
+ .header {
8
+ display: flex;
9
+ justify-content: space-between;
10
+ align-items: center;
11
+ }
12
+
13
+ .title {
14
+ font-size: 1.25rem;
15
+ }
16
+
17
+ .cards {
18
+ display: flex;
19
+ flex-direction: row;
20
+ gap: 16px;
21
+ width: 100%;
22
+ height: 100%;
23
+ align-items: stretch;
24
+ }
25
+
26
+ .cards :global(.ant-card) {
27
+ flex: 1;
28
+ min-width: 0;
29
+ display: flex;
30
+ }
31
+
32
+ .cards :global(.ant-card .ant-card-body) {
33
+ flex: 1;
34
+ display: flex;
35
+ flex-direction: column;
36
+ justify-content: center;
37
+ width: 100%;
38
+ }
@@ -0,0 +1,10 @@
1
+ export type FilterOption = "all" | "agent" | "manual";
2
+ export type RevenueSummaryCardProps = {
3
+ filterValue: FilterOption;
4
+ agent_profit: number;
5
+ agent_strategy_add?: number;
6
+ agent_predict_baseline?: number;
7
+ manual_profit: number;
8
+ hasManualData: boolean;
9
+ };
10
+ export default function RevenueSummaryCard({ hasManualData, filterValue, agent_profit, agent_strategy_add, agent_predict_baseline, manual_profit, }: RevenueSummaryCardProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,117 @@
1
+ import { c as _c } from "react/compiler-runtime";
2
+ import { Card } from "antd";
3
+ import { COLOR_CARD_BACKGROUND_MANUAL, COLOR_CARD_BACKGROUND_TSINGROC, COLOR_PROFIT_MANUAL, COLOR_PROFIT_TSINGROC } from "#src/utils/constants";
4
+ import { RevenueCard } from "../RevenueCard";
5
+ import styles from "./RevenueSummaryCard.module.css";
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ export default function RevenueSummaryCard(t0) {
8
+ const $ = _c(16);
9
+ const {
10
+ hasManualData,
11
+ filterValue,
12
+ agent_profit,
13
+ agent_strategy_add,
14
+ agent_predict_baseline,
15
+ manual_profit
16
+ } = t0;
17
+ let t1;
18
+ if ($[0] !== agent_predict_baseline || $[1] !== agent_profit || $[2] !== agent_strategy_add || $[3] !== filterValue) {
19
+ t1 = filterValue === "all" || filterValue === "agent" ? [{
20
+ id: "agent",
21
+ title: "\u667A\u80FD\u4F53",
22
+ num: agent_strategy_add ?? agent_profit,
23
+ bgColour: COLOR_CARD_BACKGROUND_TSINGROC,
24
+ fontColor: COLOR_PROFIT_TSINGROC,
25
+ secondaryText: agent_predict_baseline != null ? `基线: ¥${agent_predict_baseline.toFixed(2)}` : undefined
26
+ }] : [];
27
+ $[0] = agent_predict_baseline;
28
+ $[1] = agent_profit;
29
+ $[2] = agent_strategy_add;
30
+ $[3] = filterValue;
31
+ $[4] = t1;
32
+ } else {
33
+ t1 = $[4];
34
+ }
35
+ let t2;
36
+ if ($[5] !== filterValue || $[6] !== hasManualData || $[7] !== manual_profit) {
37
+ t2 = hasManualData && (filterValue === "all" || filterValue === "manual") ? [{
38
+ id: "manual",
39
+ title: "\u4EBA\u5DE5",
40
+ num: manual_profit,
41
+ bgColour: COLOR_CARD_BACKGROUND_MANUAL,
42
+ fontColor: COLOR_PROFIT_MANUAL
43
+ }] : [];
44
+ $[5] = filterValue;
45
+ $[6] = hasManualData;
46
+ $[7] = manual_profit;
47
+ $[8] = t2;
48
+ } else {
49
+ t2 = $[8];
50
+ }
51
+ let t3;
52
+ if ($[9] !== t1 || $[10] !== t2) {
53
+ t3 = [...t1, ...t2];
54
+ $[9] = t1;
55
+ $[10] = t2;
56
+ $[11] = t3;
57
+ } else {
58
+ t3 = $[11];
59
+ }
60
+ const cardsToRender = t3;
61
+ let t4;
62
+ if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
63
+ t4 = {
64
+ root: {
65
+ border: 0
66
+ },
67
+ body: {
68
+ padding: 0,
69
+ gap: 10,
70
+ display: "flex",
71
+ flexDirection: "column",
72
+ alignItems: "center"
73
+ }
74
+ };
75
+ $[12] = t4;
76
+ } else {
77
+ t4 = $[12];
78
+ }
79
+ let t5;
80
+ if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
81
+ t5 = /*#__PURE__*/_jsx("div", {
82
+ className: styles.header,
83
+ children: /*#__PURE__*/_jsx("div", {
84
+ className: styles.title,
85
+ children: "\u603B\u6536\u76CA\u7EDF\u8BA1"
86
+ })
87
+ });
88
+ $[13] = t5;
89
+ } else {
90
+ t5 = $[13];
91
+ }
92
+ let t6;
93
+ if ($[14] !== cardsToRender) {
94
+ t6 = /*#__PURE__*/_jsxs(Card, {
95
+ className: styles.root,
96
+ styles: t4,
97
+ children: [t5, /*#__PURE__*/_jsx("div", {
98
+ className: styles.cards,
99
+ children: cardsToRender.map(_temp)
100
+ })]
101
+ });
102
+ $[14] = cardsToRender;
103
+ $[15] = t6;
104
+ } else {
105
+ t6 = $[15];
106
+ }
107
+ return t6;
108
+ }
109
+ function _temp(t0) {
110
+ const {
111
+ id,
112
+ ...card
113
+ } = t0;
114
+ return /*#__PURE__*/_jsx(RevenueCard, {
115
+ ...card
116
+ }, id);
117
+ }
@@ -0,0 +1,11 @@
1
+ .reviewLineChart {
2
+ min-height: 0;
3
+ height: 100%;
4
+ width: 100%;
5
+ border: none;
6
+ }
7
+
8
+ .reviewLineChartContainer {
9
+ height: 100%;
10
+ width: 100%;
11
+ }
@@ -0,0 +1,53 @@
1
+ export interface LineSeriesConfig {
2
+ name: string;
3
+ data: (number | null | undefined)[];
4
+ option?: {
5
+ color?: string;
6
+ smooth?: boolean;
7
+ lineStyle?: {
8
+ width?: number;
9
+ type?: "solid" | "dashed" | "dotted";
10
+ };
11
+ tooltip?: {
12
+ valueFormatter?: (value: unknown) => string;
13
+ };
14
+ [key: string]: unknown;
15
+ };
16
+ }
17
+ export interface ReviewLineChartProps {
18
+ title: string;
19
+ className?: string;
20
+ chartClassName?: string;
21
+ gridOption?: {
22
+ left?: string | number;
23
+ top?: string | number;
24
+ bottom?: string | number;
25
+ right?: string | number;
26
+ };
27
+ xAxisData?: string[];
28
+ xAxisInterval?: number | ((dataLength: number) => number);
29
+ timeIntervalMinutes?: number;
30
+ useUtc?: boolean;
31
+ /** When true, do not append 24:00 to the x-axis (e.g. for 24-point hourly data) */
32
+ excludeTrailing24?: boolean;
33
+ series: LineSeriesConfig[];
34
+ legendData: string[];
35
+ legendOption?: {
36
+ left?: string | number;
37
+ right?: string | number;
38
+ top?: string | number;
39
+ bottom?: string | number;
40
+ orient?: "horizontal" | "vertical";
41
+ [key: string]: unknown;
42
+ };
43
+ /** Control default visibility of series. e.g. { "实发电量": false } hides that series by default */
44
+ legendSelected?: Record<string, boolean>;
45
+ showTitle?: boolean;
46
+ yAxisName?: string;
47
+ yAxisNameGap?: number;
48
+ yAxisNameLocation?: "start" | "middle" | "end";
49
+ yAxisNameRotate?: number;
50
+ yAxisNamePadding?: [number, number, number, number];
51
+ }
52
+ declare const ReviewLineChart: ({ title, className, chartClassName, gridOption, xAxisData, xAxisInterval, timeIntervalMinutes, useUtc, excludeTrailing24, series, legendData, legendOption, legendSelected, showTitle, yAxisName, yAxisNameLocation, yAxisNamePadding, }: ReviewLineChartProps) => import("react/jsx-runtime").JSX.Element;
53
+ export default ReviewLineChart;