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