greeks-live-ui 0.0.20 → 0.0.21

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 (201) hide show
  1. package/dist/index.css +1 -1
  2. package/es/components/chart/index.d.ts +28 -28
  3. package/es/components/chart/src/chart.vue.d.ts +28 -28
  4. package/es/components/chart-panel/index.d.ts +10 -10
  5. package/es/components/chart-panel/src/chart-panel.vue.d.ts +10 -10
  6. package/es/components/demo/index.d.ts +28 -28
  7. package/es/components/demo/src/demo.vue.d.ts +28 -28
  8. package/es/hooks/use-floating/index.d.ts +8 -8
  9. package/es/index.mjs +19 -19
  10. package/es/packages/components/button1/index.mjs +2 -2
  11. package/es/packages/components/button1/src/button1.mjs +5 -72
  12. package/es/packages/components/button1/src/button1.mjs.map +1 -1
  13. package/es/packages/components/button1/src/button12.mjs +72 -5
  14. package/es/packages/components/button1/src/button12.mjs.map +1 -1
  15. package/es/packages/components/chart/index.mjs +2 -2
  16. package/es/packages/components/chart/src/chart.mjs +12 -85
  17. package/es/packages/components/chart/src/chart.mjs.map +1 -1
  18. package/es/packages/components/chart/src/chart2.mjs +85 -12
  19. package/es/packages/components/chart/src/chart2.mjs.map +1 -1
  20. package/es/packages/components/checkbox/index.mjs +2 -2
  21. package/es/packages/components/checkbox/src/checkbox.mjs +5 -31
  22. package/es/packages/components/checkbox/src/checkbox.mjs.map +1 -1
  23. package/es/packages/components/checkbox/src/checkbox2.mjs +31 -5
  24. package/es/packages/components/checkbox/src/checkbox2.mjs.map +1 -1
  25. package/es/packages/components/icon/index.mjs +2 -2
  26. package/es/packages/components/icon/src/icon.mjs +15 -48
  27. package/es/packages/components/icon/src/icon.mjs.map +1 -1
  28. package/es/packages/components/icon/src/icon2.mjs +48 -15
  29. package/es/packages/components/icon/src/icon2.mjs.map +1 -1
  30. package/es/packages/components/index.mjs +19 -19
  31. package/es/packages/components/menu/index.mjs +2 -2
  32. package/es/packages/components/menu/src/menu.mjs +5 -31
  33. package/es/packages/components/menu/src/menu.mjs.map +1 -1
  34. package/es/packages/components/menu/src/menu2.mjs +31 -5
  35. package/es/packages/components/menu/src/menu2.mjs.map +1 -1
  36. package/es/packages/components/menu-item/index.mjs +2 -2
  37. package/es/packages/components/menu-item/src/menu-item.mjs +5 -31
  38. package/es/packages/components/menu-item/src/menu-item.mjs.map +1 -1
  39. package/es/packages/components/menu-item/src/menu-item2.mjs +31 -5
  40. package/es/packages/components/menu-item/src/menu-item2.mjs.map +1 -1
  41. package/es/packages/components/page-turner/index.mjs +2 -2
  42. package/es/packages/components/page-turner/src/page-turner.mjs +12 -67
  43. package/es/packages/components/page-turner/src/page-turner.mjs.map +1 -1
  44. package/es/packages/components/page-turner/src/page-turner2.mjs +67 -12
  45. package/es/packages/components/page-turner/src/page-turner2.mjs.map +1 -1
  46. package/es/packages/components/panel/index.mjs +2 -2
  47. package/es/packages/components/panel/src/panel.mjs +82 -5
  48. package/es/packages/components/panel/src/panel.mjs.map +1 -1
  49. package/es/packages/components/panel/src/panel2.mjs +5 -82
  50. package/es/packages/components/panel/src/panel2.mjs.map +1 -1
  51. package/es/packages/components/panel-atm-iv/index.mjs +2 -2
  52. package/es/packages/components/panel-atm-iv/src/panel-atm-iv.mjs +21 -886
  53. package/es/packages/components/panel-atm-iv/src/panel-atm-iv.mjs.map +1 -1
  54. package/es/packages/components/panel-atm-iv/src/panel-atm-iv2.mjs +886 -21
  55. package/es/packages/components/panel-atm-iv/src/panel-atm-iv2.mjs.map +1 -1
  56. package/es/packages/components/panel-max-pain-price/index.mjs +2 -2
  57. package/es/packages/components/panel-max-pain-price/src/panel-max-pain-price.mjs +288 -22
  58. package/es/packages/components/panel-max-pain-price/src/panel-max-pain-price.mjs.map +1 -1
  59. package/es/packages/components/panel-max-pain-price/src/panel-max-pain-price2.mjs +22 -288
  60. package/es/packages/components/panel-max-pain-price/src/panel-max-pain-price2.mjs.map +1 -1
  61. package/es/packages/components/panel-option-open-interest/index.mjs +2 -2
  62. package/es/packages/components/panel-option-open-interest/src/panel-option-open-interest.mjs +378 -22
  63. package/es/packages/components/panel-option-open-interest/src/panel-option-open-interest.mjs.map +1 -1
  64. package/es/packages/components/panel-option-open-interest/src/panel-option-open-interest2.mjs +22 -378
  65. package/es/packages/components/panel-option-open-interest/src/panel-option-open-interest2.mjs.map +1 -1
  66. package/es/packages/components/panel-option-trade-volume/index.mjs +2 -2
  67. package/es/packages/components/panel-option-trade-volume/src/panel-option-trade-volume.mjs +504 -22
  68. package/es/packages/components/panel-option-trade-volume/src/panel-option-trade-volume.mjs.map +1 -1
  69. package/es/packages/components/panel-option-trade-volume/src/panel-option-trade-volume2.mjs +22 -504
  70. package/es/packages/components/panel-option-trade-volume/src/panel-option-trade-volume2.mjs.map +1 -1
  71. package/es/packages/components/panel-rv/index.mjs +2 -2
  72. package/es/packages/components/panel-rv/src/panel-rv.mjs +22 -741
  73. package/es/packages/components/panel-rv/src/panel-rv.mjs.map +1 -1
  74. package/es/packages/components/panel-rv/src/panel-rv2.mjs +741 -22
  75. package/es/packages/components/panel-rv/src/panel-rv2.mjs.map +1 -1
  76. package/es/packages/components/panel-rv-calc/index.mjs +2 -2
  77. package/es/packages/components/panel-rv-calc/src/panel-rv-calc.mjs +8 -507
  78. package/es/packages/components/panel-rv-calc/src/panel-rv-calc.mjs.map +1 -1
  79. package/es/packages/components/panel-rv-calc/src/panel-rv-calc2.mjs +507 -8
  80. package/es/packages/components/panel-rv-calc/src/panel-rv-calc2.mjs.map +1 -1
  81. package/es/packages/components/panel-skew/index.mjs +2 -2
  82. package/es/packages/components/panel-skew/src/panel-skew.mjs +21 -672
  83. package/es/packages/components/panel-skew/src/panel-skew.mjs.map +1 -1
  84. package/es/packages/components/panel-skew/src/panel-skew2.mjs +672 -21
  85. package/es/packages/components/panel-skew/src/panel-skew2.mjs.map +1 -1
  86. package/es/packages/components/panel-vrp/index.mjs +2 -2
  87. package/es/packages/components/panel-vrp/src/panel-vrp.mjs +22 -413
  88. package/es/packages/components/panel-vrp/src/panel-vrp.mjs.map +1 -1
  89. package/es/packages/components/panel-vrp/src/panel-vrp2.mjs +413 -22
  90. package/es/packages/components/panel-vrp/src/panel-vrp2.mjs.map +1 -1
  91. package/es/packages/components/select/index.mjs +2 -2
  92. package/es/packages/components/select/src/option.mjs +1 -1
  93. package/es/packages/components/select/src/select.mjs +10 -41
  94. package/es/packages/components/select/src/select.mjs.map +1 -1
  95. package/es/packages/components/select/src/select2.mjs +41 -10
  96. package/es/packages/components/select/src/select2.mjs.map +1 -1
  97. package/es/packages/components/table/index.mjs +2 -2
  98. package/es/packages/components/table/src/table.mjs +5 -37
  99. package/es/packages/components/table/src/table.mjs.map +1 -1
  100. package/es/packages/components/table/src/table2.mjs +37 -5
  101. package/es/packages/components/table/src/table2.mjs.map +1 -1
  102. package/es/packages/components/tooltip/index.mjs +2 -2
  103. package/es/packages/components/tooltip/src/tooltip.mjs +7 -33
  104. package/es/packages/components/tooltip/src/tooltip.mjs.map +1 -1
  105. package/es/packages/components/tooltip/src/tooltip2.mjs +33 -7
  106. package/es/packages/components/tooltip/src/tooltip2.mjs.map +1 -1
  107. package/es/utils/vue/vnode.d.ts +6 -6
  108. package/lib/components/chart/index.d.ts +28 -28
  109. package/lib/components/chart/src/chart.vue.d.ts +28 -28
  110. package/lib/components/chart-panel/index.d.ts +10 -10
  111. package/lib/components/chart-panel/src/chart-panel.vue.d.ts +10 -10
  112. package/lib/components/demo/index.d.ts +28 -28
  113. package/lib/components/demo/src/demo.vue.d.ts +28 -28
  114. package/lib/hooks/use-floating/index.d.ts +8 -8
  115. package/lib/index.js +15 -15
  116. package/lib/packages/components/button1/index.js +2 -2
  117. package/lib/packages/components/button1/src/button1.js +6 -72
  118. package/lib/packages/components/button1/src/button1.js.map +1 -1
  119. package/lib/packages/components/button1/src/button12.js +72 -6
  120. package/lib/packages/components/button1/src/button12.js.map +1 -1
  121. package/lib/packages/components/chart-panel/index.js +2 -2
  122. package/lib/packages/components/chart-panel/src/chart-panel.js +273 -39
  123. package/lib/packages/components/chart-panel/src/chart-panel.js.map +1 -1
  124. package/lib/packages/components/chart-panel/src/chart-panel2.js +39 -273
  125. package/lib/packages/components/chart-panel/src/chart-panel2.js.map +1 -1
  126. package/lib/packages/components/checkbox-group/index.js +2 -2
  127. package/lib/packages/components/checkbox-group/src/checkbox-group.js +31 -6
  128. package/lib/packages/components/checkbox-group/src/checkbox-group.js.map +1 -1
  129. package/lib/packages/components/checkbox-group/src/checkbox-group2.js +6 -31
  130. package/lib/packages/components/checkbox-group/src/checkbox-group2.js.map +1 -1
  131. package/lib/packages/components/dropdown/index.js +2 -2
  132. package/lib/packages/components/dropdown/src/dropdown.js +34 -6
  133. package/lib/packages/components/dropdown/src/dropdown.js.map +1 -1
  134. package/lib/packages/components/dropdown/src/dropdown2.js +6 -34
  135. package/lib/packages/components/dropdown/src/dropdown2.js.map +1 -1
  136. package/lib/packages/components/dropdown-button/index.js +2 -2
  137. package/lib/packages/components/dropdown-button/src/dropdown-button.js +39 -6
  138. package/lib/packages/components/dropdown-button/src/dropdown-button.js.map +1 -1
  139. package/lib/packages/components/dropdown-button/src/dropdown-button2.js +6 -39
  140. package/lib/packages/components/dropdown-button/src/dropdown-button2.js.map +1 -1
  141. package/lib/packages/components/index.js +15 -15
  142. package/lib/packages/components/menu/index.js +2 -2
  143. package/lib/packages/components/menu/src/menu.js +6 -31
  144. package/lib/packages/components/menu/src/menu.js.map +1 -1
  145. package/lib/packages/components/menu/src/menu2.js +31 -6
  146. package/lib/packages/components/menu/src/menu2.js.map +1 -1
  147. package/lib/packages/components/panel/index.js +2 -2
  148. package/lib/packages/components/panel/src/panel.js +82 -6
  149. package/lib/packages/components/panel/src/panel.js.map +1 -1
  150. package/lib/packages/components/panel/src/panel2.js +6 -82
  151. package/lib/packages/components/panel/src/panel2.js.map +1 -1
  152. package/lib/packages/components/panel-iv-skew/index.js +2 -2
  153. package/lib/packages/components/panel-iv-skew/src/panel-iv-skew.js +23 -398
  154. package/lib/packages/components/panel-iv-skew/src/panel-iv-skew.js.map +1 -1
  155. package/lib/packages/components/panel-iv-skew/src/panel-iv-skew2.js +398 -23
  156. package/lib/packages/components/panel-iv-skew/src/panel-iv-skew2.js.map +1 -1
  157. package/lib/packages/components/panel-option-open-interest/index.js +2 -2
  158. package/lib/packages/components/panel-option-open-interest/src/panel-option-open-interest.js +378 -23
  159. package/lib/packages/components/panel-option-open-interest/src/panel-option-open-interest.js.map +1 -1
  160. package/lib/packages/components/panel-option-open-interest/src/panel-option-open-interest2.js +23 -378
  161. package/lib/packages/components/panel-option-open-interest/src/panel-option-open-interest2.js.map +1 -1
  162. package/lib/packages/components/panel-option-trade-volume/index.js +2 -2
  163. package/lib/packages/components/panel-option-trade-volume/src/panel-option-trade-volume.js +504 -23
  164. package/lib/packages/components/panel-option-trade-volume/src/panel-option-trade-volume.js.map +1 -1
  165. package/lib/packages/components/panel-option-trade-volume/src/panel-option-trade-volume2.js +23 -504
  166. package/lib/packages/components/panel-option-trade-volume/src/panel-option-trade-volume2.js.map +1 -1
  167. package/lib/packages/components/panel-skew/index.js +2 -2
  168. package/lib/packages/components/panel-skew/src/panel-skew.js +672 -22
  169. package/lib/packages/components/panel-skew/src/panel-skew.js.map +1 -1
  170. package/lib/packages/components/panel-skew/src/panel-skew2.js +22 -672
  171. package/lib/packages/components/panel-skew/src/panel-skew2.js.map +1 -1
  172. package/lib/packages/components/panel-volatility-term-structure/index.js +2 -2
  173. package/lib/packages/components/panel-volatility-term-structure/src/panel-volatility-term-structure.js +23 -365
  174. package/lib/packages/components/panel-volatility-term-structure/src/panel-volatility-term-structure.js.map +1 -1
  175. package/lib/packages/components/panel-volatility-term-structure/src/panel-volatility-term-structure2.js +365 -23
  176. package/lib/packages/components/panel-volatility-term-structure/src/panel-volatility-term-structure2.js.map +1 -1
  177. package/lib/packages/components/radio/index.js +2 -2
  178. package/lib/packages/components/radio/src/radio-button.js +1 -1
  179. package/lib/packages/components/radio/src/radio-group.js +1 -1
  180. package/lib/packages/components/radio/src/radio.js +31 -6
  181. package/lib/packages/components/radio/src/radio.js.map +1 -1
  182. package/lib/packages/components/radio/src/radio2.js +6 -31
  183. package/lib/packages/components/radio/src/radio2.js.map +1 -1
  184. package/lib/packages/components/select/index.js +2 -2
  185. package/lib/packages/components/select/src/option.js +1 -1
  186. package/lib/packages/components/select/src/select.js +15 -41
  187. package/lib/packages/components/select/src/select.js.map +1 -1
  188. package/lib/packages/components/select/src/select2.js +41 -15
  189. package/lib/packages/components/select/src/select2.js.map +1 -1
  190. package/lib/packages/components/tooltip/index.js +2 -2
  191. package/lib/packages/components/tooltip/src/tooltip.js +33 -8
  192. package/lib/packages/components/tooltip/src/tooltip.js.map +1 -1
  193. package/lib/packages/components/tooltip/src/tooltip2.js +8 -33
  194. package/lib/packages/components/tooltip/src/tooltip2.js.map +1 -1
  195. package/lib/utils/vue/vnode.d.ts +6 -6
  196. package/package.json +1 -1
  197. package/theme-chalk/base.css +1 -1
  198. package/theme-chalk/g-antd.css +1 -1
  199. package/theme-chalk/index.css +1 -1
  200. package/theme-chalk/src/antd.scss +1 -2
  201. package/web-types.json +1 -1
@@ -1,28 +1,747 @@
1
- import '../../../utils/index.mjs';
2
- import { buildProps } from '../../../utils/vue/props/runtime.mjs';
1
+ import { createTextVNode, defineComponent, computed, reactive, watch, onMounted, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, createVNode, isRef, createSlots, withCtx, createElementVNode, createBlock, createCommentVNode, toDisplayString, Fragment, renderList, normalizeStyle } from 'vue';
2
+ import '../../../hooks/index.mjs';
3
+ import { panelRvProps, panelRvEmits } from './panel-rv.mjs';
4
+ import { showDateRange, formatDateForNumber, numberFormat, timestampFormat, getTooltipDate } from '../../../utils/chartHelp.mjs';
5
+ import { getRv } from '../../../utils/dataLab.mjs';
6
+ import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
7
+ import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
8
+ import { useLocale } from '../../../hooks/use-locale/index.mjs';
9
+ import { useDeviceType } from '../../../hooks/use-device-type/index.mjs';
10
+ import { useTheme } from '../../../hooks/use-theme/index.mjs';
3
11
 
4
- const panelRvEmits = {
5
- "update:currency": (currency) => true,
6
- "update:exchange": (exchange) => true
12
+ const _hoisted_1 = /* @__PURE__ */ createTextVNode(" RV ");
13
+ const _hoisted_2 = ["innerHTML"];
14
+ const _hoisted_3 = { class: "period-range h5-hide" };
15
+ const _hoisted_4 = {
16
+ key: 2,
17
+ class: "echart",
18
+ ref: "echart"
7
19
  };
8
- const panelRvProps = buildProps({
9
- defaultCurrency: {
10
- type: String,
11
- required: false
12
- },
13
- defaultExchange: {
14
- type: String,
15
- required: false
16
- },
17
- currency: {
18
- type: String,
19
- required: false
20
- },
21
- exchange: {
22
- type: String,
23
- required: false
20
+ const _hoisted_5 = { class: "h5-tip-title" };
21
+ const _hoisted_6 = { class: "h5-legend" };
22
+ const __default__ = {
23
+ name: "GPanelRv"
24
+ };
25
+ const _sfc_main = /* @__PURE__ */ defineComponent({
26
+ ...__default__,
27
+ props: panelRvProps,
28
+ emits: panelRvEmits,
29
+ setup(__props, { emit }) {
30
+ const props = __props;
31
+ const ns = useNamespace("panel-rv");
32
+ const { t } = useLocale();
33
+ const { isMobile, isPC } = useDeviceType();
34
+ const { isDark } = useTheme();
35
+ let legendList = [
36
+ {
37
+ value: "1D",
38
+ label: "1 D",
39
+ days: 1,
40
+ color: "#7630F7"
41
+ },
42
+ {
43
+ value: "1W",
44
+ label: "1 W",
45
+ days: 7,
46
+ color: "#23C343"
47
+ },
48
+ {
49
+ value: "1M",
50
+ label: "1 M",
51
+ days: 30,
52
+ color: "#FFD600"
53
+ },
54
+ {
55
+ value: "2M",
56
+ label: "2 M",
57
+ days: 60,
58
+ color: "#FF8D1F"
59
+ },
60
+ {
61
+ value: "3M",
62
+ label: "3 M",
63
+ days: 90,
64
+ color: "#FF3B30"
65
+ },
66
+ {
67
+ value: "6M",
68
+ label: "6 M",
69
+ days: 180,
70
+ color: "#007AFF"
71
+ },
72
+ {
73
+ value: "1Y",
74
+ label: "1 Y",
75
+ days: 365,
76
+ color: "#00C7BE"
77
+ }
78
+ ];
79
+ const periodList = computed(() => {
80
+ let list = [
81
+ {
82
+ value: "ALL",
83
+ label: "All",
84
+ days: 0,
85
+ color: "#00B42A"
86
+ },
87
+ ...legendList
88
+ ];
89
+ if (isMobile.value) {
90
+ list = list.slice(1);
91
+ }
92
+ return list;
93
+ });
94
+ const initShowType = "table";
95
+ const state = reactive({
96
+ loadingFlag: false,
97
+ showType: initShowType,
98
+ isToolTipShow: false,
99
+ toolTipTitle: "",
100
+ exchange: props.exchange || props.defaultExchange || "Deribit",
101
+ currency: props.currency || props.defaultCurrency || "BTC",
102
+ period: "3M",
103
+ periodDateRange: "",
104
+ chartData: [],
105
+ tableData: [],
106
+ legendMap: {}
107
+ });
108
+ const currency = computed({
109
+ get: () => props.currency || state.currency || "BTC",
110
+ set: (newVal) => {
111
+ props.currency ? emit("update:currency", newVal) : state.currency = newVal;
112
+ }
113
+ });
114
+ const exchange = computed({
115
+ get: () => props.exchange || state.exchange || "Deribit",
116
+ set: (newVal) => {
117
+ props.exchange ? emit("update:exchange", newVal) : state.exchange = newVal;
118
+ }
119
+ });
120
+ watch(currency, () => {
121
+ fetchData();
122
+ });
123
+ watch(exchange, () => {
124
+ fetchData();
125
+ });
126
+ const fetchData = () => {
127
+ state.loadingFlag = true;
128
+ getRv({
129
+ currency: currency.value,
130
+ gap: state.showType === "table" ? "3M" : state.period
131
+ }).then((res) => {
132
+ if (res && res.code === 200) {
133
+ state.chartData = res.data || [];
134
+ getTableData();
135
+ getLegendData();
136
+ }
137
+ }).finally(() => {
138
+ state.loadingFlag = false;
139
+ });
140
+ };
141
+ onMounted(() => {
142
+ handleChangePeriod(state.period);
143
+ });
144
+ const handleChangePeriod = (value) => {
145
+ const selectedPeriod = periodList.value.find((v) => v.value === value);
146
+ if (!selectedPeriod)
147
+ return;
148
+ state.periodDateRange = showDateRange(selectedPeriod.days);
149
+ fetchData();
150
+ };
151
+ const handleToggleTableChart = () => {
152
+ state.showType = state.showType === initShowType ? "chart" : "table";
153
+ fetchData();
154
+ };
155
+ const handleToggleCalc = () => {
156
+ state.showType = state.showType === "calc" ? initShowType : "calc";
157
+ };
158
+ const handleTipShow = (isShow) => {
159
+ state.isToolTipShow = isShow;
160
+ !isShow && (state.toolTipTitle = "");
161
+ };
162
+ const getTableData = () => {
163
+ let data = state.chartData || [];
164
+ let day1 = 864e5;
165
+ let data0 = data[data.length - 1];
166
+ let dataDate1 = formatDateForNumber(data0.timestamp - day1);
167
+ let dataDate2 = formatDateForNumber(data0.timestamp - day1 * 2);
168
+ let dataDate7 = formatDateForNumber(data0.timestamp - day1 * 7);
169
+ let dataDate15 = formatDateForNumber(data0.timestamp - day1 * 14);
170
+ let dataDate30 = formatDateForNumber(data0.timestamp - day1 * 30);
171
+ let map = {};
172
+ data.forEach((item) => {
173
+ let date = formatDateForNumber(item.timestamp);
174
+ if (date === dataDate1) {
175
+ map[date] = item;
176
+ } else if (date === dataDate2) {
177
+ map[date] = item;
178
+ } else if (date === dataDate7) {
179
+ map[date] = item;
180
+ } else if (date === dataDate15) {
181
+ map[date] = item;
182
+ } else if (date === dataDate30) {
183
+ map[date] = item;
184
+ }
185
+ });
186
+ let list = Object.values(map).sort(
187
+ (prev, next) => next.timestamp - prev.timestamp
188
+ );
189
+ const data0Data = data0.data;
190
+ let dataMap1 = { expire: "1 day", atm: data0Data[0].hv };
191
+ let dataMap2 = { expire: "1 week", atm: data0Data[1].hv };
192
+ let dataMap3 = { expire: "1 month", atm: data0Data[2].hv };
193
+ let dataMap4 = { expire: "2 month", atm: data0Data[3].hv };
194
+ let dataMap5 = { expire: "3 month", atm: data0Data[4].hv };
195
+ let dataMap6 = { expire: "6 month", atm: data0Data[5].hv };
196
+ let dataMap7 = { expire: "1 year", atm: data0Data[6].hv };
197
+ for (let i = 0; i < list.length; i++) {
198
+ let item = list[i];
199
+ let key;
200
+ switch (i) {
201
+ case 0:
202
+ key = "chg1";
203
+ break;
204
+ case 1:
205
+ key = "chg2";
206
+ break;
207
+ case 2:
208
+ key = "chg7";
209
+ break;
210
+ case 3:
211
+ key = "chg14";
212
+ break;
213
+ case 4:
214
+ key = "chg30";
215
+ break;
216
+ default:
217
+ continue;
218
+ }
219
+ item.data.forEach((item2) => {
220
+ if (item2.day === 1) {
221
+ dataMap1[key] = data0Data[0].hv - item2.hv;
222
+ } else if (item2.day === 7) {
223
+ dataMap2[key] = data0Data[1].hv - item2.hv;
224
+ } else if (item2.day === 30) {
225
+ dataMap3[key] = data0Data[2].hv - item2.hv;
226
+ } else if (item2.day === 60) {
227
+ dataMap4[key] = data0Data[3].hv - item2.hv;
228
+ } else if (item2.day === 90) {
229
+ dataMap5[key] = data0Data[4].hv - item2.hv;
230
+ } else if (item2.day === 180) {
231
+ dataMap6[key] = data0Data[5].hv - item2.hv;
232
+ } else if (item2.day === 365) {
233
+ dataMap7[key] = data0Data[6].hv - item2.hv;
234
+ }
235
+ });
236
+ }
237
+ state.tableData = [
238
+ dataMap1,
239
+ dataMap2,
240
+ dataMap3,
241
+ dataMap4,
242
+ dataMap5,
243
+ dataMap6,
244
+ dataMap7
245
+ ];
246
+ };
247
+ const getLegendValue = (days) => {
248
+ var _a;
249
+ const r = Number((_a = days[days.length - 1]) == null ? void 0 : _a.toFixed(2));
250
+ return r >= 0 ? `+${r}%` : `${r}%`;
251
+ };
252
+ const getLegendData = () => {
253
+ const { days1, days7, days30, days60, days90, days180, days365 } = getEchartData();
254
+ state.legendMap = {
255
+ "1D": getLegendValue(days1),
256
+ "1W": getLegendValue(days7),
257
+ "1M": getLegendValue(days30),
258
+ "2M": getLegendValue(days60),
259
+ "3M": getLegendValue(days90),
260
+ "6M": getLegendValue(days180),
261
+ "1Y": getLegendValue(days365)
262
+ };
263
+ };
264
+ const getEchartData = () => {
265
+ let data = [...state.chartData];
266
+ let date = [];
267
+ let days1 = [];
268
+ let days7 = [];
269
+ let days30 = [];
270
+ let days60 = [];
271
+ let days90 = [];
272
+ let days180 = [];
273
+ let days365 = [];
274
+ data.forEach((item) => {
275
+ let set = /* @__PURE__ */ new Set([
276
+ "days1",
277
+ "days7",
278
+ "days30",
279
+ "days60",
280
+ "days90",
281
+ "days180",
282
+ "days365"
283
+ ]);
284
+ item.data.forEach((item2) => {
285
+ if (item2.day === 1) {
286
+ set.delete("days1");
287
+ days1.push(numberFormat(item2.hv, 2));
288
+ } else if (item2.day === 7) {
289
+ set.delete("days7");
290
+ days7.push(numberFormat(item2.hv, 2));
291
+ } else if (item2.day === 30) {
292
+ set.delete("days30");
293
+ days30.push(numberFormat(item2.hv, 2));
294
+ } else if (item2.day === 60) {
295
+ set.delete("days60");
296
+ days60.push(numberFormat(item2.hv, 2));
297
+ } else if (item2.day === 90) {
298
+ set.delete("days90");
299
+ days90.push(numberFormat(item2.hv, 2));
300
+ } else if (item2.day === 180) {
301
+ set.delete("days180");
302
+ days180.push(numberFormat(item2.hv, 2));
303
+ } else if (item2.day === 365) {
304
+ set.delete("days365");
305
+ days365.push(numberFormat(item2.hv, 2));
306
+ }
307
+ });
308
+ let arr = [...set];
309
+ arr.forEach((item3) => {
310
+ if (item3 === "days1") {
311
+ days1.push("");
312
+ } else if (item3 === "days7") {
313
+ days7.push("");
314
+ } else if (item3 === "days30") {
315
+ days30.push("");
316
+ } else if (item3 === "days60") {
317
+ days60.push("");
318
+ } else if (item3 === "days90") {
319
+ days90.push("");
320
+ } else if (item3 === "days180") {
321
+ days180.push("");
322
+ } else if (item3 === "days365") {
323
+ days365.push("");
324
+ }
325
+ });
326
+ date.push(timestampFormat(item.timestamp, "{y}-{m}-{d}") || "");
327
+ });
328
+ return {
329
+ date,
330
+ days1,
331
+ days7,
332
+ days30,
333
+ days60,
334
+ days90,
335
+ days180,
336
+ days365
337
+ };
338
+ };
339
+ const getEchartOption = (params) => {
340
+ const { date, days1, days7, days30, days60, days90, days180, days365 } = params;
341
+ const option = {
342
+ color: legendList.map((v) => v.color),
343
+ tooltip: {
344
+ trigger: "axis",
345
+ axisPointer: {
346
+ type: "cross",
347
+ label: {
348
+ show: isMobile.value ? true : false,
349
+ backgroundColor: "#DEE2E6",
350
+ color: "#343A40",
351
+ padding: [4, 6, 4, 6],
352
+ margin: 9
353
+ },
354
+ crossStyle: {
355
+ color: "#8B959F"
356
+ },
357
+ lineStyle: {
358
+ color: "#8B959F"
359
+ }
360
+ },
361
+ backgroundColor: isDark.value ? "#E9ECEF" : "#292F3D",
362
+ padding: isMobile.value ? 0 : [6, 8, 5, 6],
363
+ textStyle: {
364
+ color: isDark.value ? "#000000" : "#FFFFFF",
365
+ fontSize: 12,
366
+ lineHeight: 16,
367
+ fontWeight: 400
368
+ },
369
+ formatter: (params2) => {
370
+ let content = "";
371
+ state.toolTipTitle = getTooltipDate(params2[0].axisValueLabel, "en-US");
372
+ content += `<div class="chart-tooltip-box"><div style="margin-bottom:4px;">${state.toolTipTitle}</div> `;
373
+ params2.forEach(
374
+ (param) => {
375
+ content += `
376
+ <div class="chart-tooltip">
377
+ <div>
378
+ <span class="chart-tooltip-line" style="background-color:${param.color};"></span>
379
+ <span>${param.seriesName}</span>
380
+ </div>
381
+ <span>${param.value.toFixed(2)}</span>
382
+ </div>
383
+ `;
384
+ }
385
+ );
386
+ return content + "</div>";
387
+ }
388
+ },
389
+ axisPointer: {
390
+ type: "line",
391
+ label: {
392
+ show: true,
393
+ backgroundColor: "#DEE2E6",
394
+ color: "#343A40",
395
+ fontSize: 10,
396
+ padding: [4, 6, 4, 8]
397
+ }
398
+ },
399
+ legend: {
400
+ show: !isMobile.value,
401
+ left: 0,
402
+ icon: "rect",
403
+ itemWidth: 14,
404
+ itemHeight: 2,
405
+ itemGap: 20,
406
+ textStyle: {
407
+ color: "#596169",
408
+ fontSize: 12
409
+ },
410
+ lineStyle: {
411
+ inactiveColor: isDark.value ? "#2B2F32" : "#DEE2E6"
412
+ },
413
+ inactiveColor: isDark.value ? "#495057" : "#BDC4CB",
414
+ formatter: function(name) {
415
+ try {
416
+ switch (name) {
417
+ case "1 D":
418
+ return name + ` (${days1[days1.length - 1].toFixed(2)}%)`;
419
+ case "1 W":
420
+ return name + ` (${days7[days7.length - 1].toFixed(2)}%)`;
421
+ case "1 M":
422
+ return name + ` (${days30[days30.length - 1].toFixed(2)}%)`;
423
+ case "2 M":
424
+ return name + ` (${days60[days60.length - 1].toFixed(2)}%)`;
425
+ case "3 M":
426
+ return name + ` (${days90[days90.length - 1].toFixed(2)}%)`;
427
+ case "6 M":
428
+ return name + ` (${days180[days180.length - 1].toFixed(2)}%)`;
429
+ case "1 Y":
430
+ return name + ` (${days365[days365.length - 1].toFixed(2)}%)`;
431
+ }
432
+ } catch (e) {
433
+ return name;
434
+ }
435
+ },
436
+ selected: {
437
+ "1 D": false,
438
+ "1 W": false,
439
+ "1 M": true,
440
+ "2 M": false,
441
+ "3 M": true,
442
+ "6 M": true,
443
+ "1 Y": false
444
+ }
445
+ },
446
+ xAxis: {
447
+ type: "category",
448
+ data: date,
449
+ axisTick: {
450
+ show: false
451
+ },
452
+ axisLabel: {
453
+ color: isDark.value ? "#CED4DA" : "#343A40",
454
+ fontWeight: 400,
455
+ fontSize: 10
456
+ },
457
+ axisLine: {
458
+ show: false,
459
+ lineStyle: {
460
+ color: isDark.value ? "#CED4DA" : "#343A40"
461
+ }
462
+ },
463
+ splitLine: {
464
+ show: !isMobile.value && !isDark.value,
465
+ lineStyle: {
466
+ color: "#F1F1F1",
467
+ width: 1,
468
+ type: "solid"
469
+ }
470
+ }
471
+ },
472
+ yAxis: {
473
+ type: "value",
474
+ scale: true,
475
+ axisLabel: {
476
+ show: true,
477
+ color: isDark.value ? "#CED4DA" : "#343A40",
478
+ fontWeight: 400,
479
+ fontSize: 10
480
+ },
481
+ name: "IV(%)",
482
+ nameLocation: "end",
483
+ nameGap: isMobile.value ? -30 : 20,
484
+ nameRotate: isMobile.value ? 90 : 0,
485
+ nameTextStyle: {
486
+ color: isDark.value ? "#8B959F" : "#8B959F",
487
+ fontWeight: 400,
488
+ fontSize: 10
489
+ },
490
+ axisLine: {
491
+ lineStyle: {
492
+ color: isDark.value ? "#CED4DA" : "#343A40"
493
+ }
494
+ },
495
+ splitLine: {
496
+ lineStyle: {
497
+ color: isDark.value ? "#2B2F32" : "#F1F1F1",
498
+ width: 1,
499
+ type: "solid"
500
+ }
501
+ }
502
+ },
503
+ grid: {
504
+ top: isPC.value ? 60 : 20,
505
+ left: "left",
506
+ right: 27,
507
+ bottom: 0,
508
+ containLabel: true
509
+ },
510
+ series: [
511
+ {
512
+ name: "1 D",
513
+ key: 1,
514
+ type: "line",
515
+ symbol: "none",
516
+ data: days1
517
+ },
518
+ {
519
+ name: "1 W",
520
+ key: 7,
521
+ type: "line",
522
+ symbol: "none",
523
+ data: days7
524
+ },
525
+ {
526
+ name: "1 M",
527
+ key: 30,
528
+ type: "line",
529
+ symbol: "none",
530
+ data: days30
531
+ },
532
+ {
533
+ name: "2 M",
534
+ key: 60,
535
+ type: "line",
536
+ symbol: "none",
537
+ data: days60
538
+ },
539
+ {
540
+ name: "3 M",
541
+ key: 90,
542
+ type: "line",
543
+ symbol: "none",
544
+ data: days90
545
+ },
546
+ {
547
+ name: "6 M",
548
+ key: 180,
549
+ type: "line",
550
+ symbol: "none",
551
+ data: days180
552
+ },
553
+ {
554
+ name: "1 Y",
555
+ key: 365,
556
+ type: "line",
557
+ symbol: "none",
558
+ data: days365
559
+ }
560
+ ]
561
+ };
562
+ if (isMobile.value) {
563
+ option.series = option.series.map((v) => ({ ...v, symbol: "circle" }));
564
+ }
565
+ return option;
566
+ };
567
+ const setOption = () => {
568
+ return getEchartOption(getEchartData());
569
+ };
570
+ return (_ctx, _cache) => {
571
+ const _component_g_icon = resolveComponent("g-icon");
572
+ const _component_g_tooltip = resolveComponent("g-tooltip");
573
+ const _component_g_select_option = resolveComponent("g-select-option");
574
+ const _component_g_select = resolveComponent("g-select");
575
+ const _component_g_chart_table = resolveComponent("g-chart-table");
576
+ const _component_g_panel_rv_calc = resolveComponent("g-panel-rv-calc");
577
+ const _component_g_chart = resolveComponent("g-chart");
578
+ const _component_g_chart_panel = resolveComponent("g-chart-panel");
579
+ return openBlock(), createElementBlock(
580
+ "div",
581
+ {
582
+ class: normalizeClass([unref(ns).b()])
583
+ },
584
+ [
585
+ createVNode(_component_g_chart_panel, {
586
+ currency: unref(currency),
587
+ "onUpdate:currency": _cache[3] || (_cache[3] = ($event) => isRef(currency) ? currency.value = $event : null),
588
+ exchange: unref(exchange),
589
+ "onUpdate:exchange": _cache[4] || (_cache[4] = ($event) => isRef(exchange) ? exchange.value = $event : null),
590
+ loading: state.loadingFlag,
591
+ operations: ["calc", "toggle"],
592
+ showType: state.showType,
593
+ onToggle: handleToggleTableChart,
594
+ onCalc: handleToggleCalc,
595
+ onRefresh: fetchData
596
+ }, createSlots({
597
+ title: withCtx(() => [
598
+ createVNode(_component_g_tooltip, { placement: "bottom" }, {
599
+ title: withCtx(() => [
600
+ createElementVNode("div", {
601
+ innerHTML: unref(t)("message.realizedVolatilityTips")
602
+ }, null, 8, _hoisted_2)
603
+ ]),
604
+ default: withCtx(() => [
605
+ _hoisted_1,
606
+ createVNode(_component_g_icon, { type: "info_question_circle" })
607
+ ]),
608
+ _: 1
609
+ })
610
+ ]),
611
+ body: withCtx(() => [
612
+ state.showType === "table" ? (openBlock(), createBlock(_component_g_chart_table, {
613
+ key: 0,
614
+ tableData: state.tableData,
615
+ name: "RV"
616
+ }, null, 8, ["tableData"])) : createCommentVNode("v-if", true),
617
+ state.showType === "calc" ? (openBlock(), createBlock(_component_g_panel_rv_calc, {
618
+ key: 1,
619
+ currency: unref(currency)
620
+ }, null, 8, ["currency"])) : createCommentVNode("v-if", true),
621
+ state.showType === "chart" ? (openBlock(), createElementBlock(
622
+ "div",
623
+ _hoisted_4,
624
+ [
625
+ createElementVNode(
626
+ "div",
627
+ {
628
+ class: normalizeClass({
629
+ "h5-legend-box-hover": state.isToolTipShow,
630
+ "h5-legend-box": true,
631
+ "pc-hide": true
632
+ })
633
+ },
634
+ [
635
+ createElementVNode(
636
+ "h6",
637
+ _hoisted_5,
638
+ toDisplayString(state.toolTipTitle),
639
+ 1
640
+ ),
641
+ createElementVNode("div", _hoisted_6, [
642
+ (openBlock(true), createElementBlock(
643
+ Fragment,
644
+ null,
645
+ renderList(unref(legendList), (legendItem) => {
646
+ var _a, _b, _c, _d;
647
+ return openBlock(), createElementBlock("div", {
648
+ key: legendItem.label
649
+ }, [
650
+ createElementVNode(
651
+ "span",
652
+ {
653
+ style: normalizeStyle({ backgroundColor: legendItem.color }),
654
+ class: "legend-line"
655
+ },
656
+ null,
657
+ 4
658
+ ),
659
+ createElementVNode("div", null, [
660
+ createElementVNode(
661
+ "div",
662
+ null,
663
+ toDisplayString(legendItem.label),
664
+ 1
665
+ ),
666
+ createElementVNode(
667
+ "p",
668
+ {
669
+ class: normalizeClass({
670
+ "positive-text": (_b = (_a = state.legendMap) == null ? void 0 : _a[legendItem.value]) == null ? void 0 : _b.includes("+"),
671
+ "negative-text": (_d = (_c = state.legendMap) == null ? void 0 : _c[legendItem.value]) == null ? void 0 : _d.includes("-")
672
+ })
673
+ },
674
+ toDisplayString(state.legendMap[legendItem.value]),
675
+ 3
676
+ )
677
+ ])
678
+ ]);
679
+ }),
680
+ 128
681
+ ))
682
+ ])
683
+ ],
684
+ 2
685
+ ),
686
+ createVNode(_component_g_chart, {
687
+ class: "skew-chart",
688
+ option: setOption(),
689
+ onShowTip: _cache[1] || (_cache[1] = ($event) => handleTipShow(true)),
690
+ onHideTip: _cache[2] || (_cache[2] = ($event) => handleTipShow(false))
691
+ }, null, 8, ["option"])
692
+ ],
693
+ 512
694
+ )) : createCommentVNode("v-if", true)
695
+ ]),
696
+ _: 2
697
+ }, [
698
+ state.showType === "chart" ? {
699
+ name: "tool",
700
+ fn: withCtx(() => [
701
+ createVNode(_component_g_select, {
702
+ value: state.period,
703
+ "onUpdate:value": _cache[0] || (_cache[0] = ($event) => state.period = $event),
704
+ onChange: handleChangePeriod,
705
+ size: unref(isPC) ? "small" : "medium"
706
+ }, {
707
+ default: withCtx(() => [
708
+ (openBlock(true), createElementBlock(
709
+ Fragment,
710
+ null,
711
+ renderList(unref(periodList), (periodItem) => {
712
+ return openBlock(), createBlock(_component_g_select_option, {
713
+ value: periodItem.value
714
+ }, {
715
+ default: withCtx(() => [
716
+ createTextVNode(
717
+ toDisplayString(periodItem.label),
718
+ 1
719
+ )
720
+ ]),
721
+ _: 2
722
+ }, 1032, ["value"]);
723
+ }),
724
+ 256
725
+ ))
726
+ ]),
727
+ _: 1
728
+ }, 8, ["value", "size"]),
729
+ createElementVNode(
730
+ "span",
731
+ _hoisted_3,
732
+ toDisplayString(state.periodDateRange),
733
+ 1
734
+ )
735
+ ])
736
+ } : void 0
737
+ ]), 1032, ["currency", "exchange", "loading", "showType"])
738
+ ],
739
+ 2
740
+ );
741
+ };
24
742
  }
25
743
  });
744
+ var PanelRv = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/luobowen/Desktop/greeks/greeks-live-ui/packages/components/panel-rv/src/panel-rv.vue"]]);
26
745
 
27
- export { panelRvEmits, panelRvProps };
746
+ export { PanelRv as default };
28
747
  //# sourceMappingURL=panel-rv2.mjs.map