@oanda/labs-crowd-view-widget 1.0.45 → 1.0.47

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 (142) hide show
  1. package/CHANGELOG.md +380 -0
  2. package/dist/main/CrowdViewWidget/Main.js +9 -5
  3. package/dist/main/CrowdViewWidget/Main.js.map +1 -1
  4. package/dist/main/CrowdViewWidget/components/Chart/Chart.js +3 -2
  5. package/dist/main/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
  6. package/dist/main/CrowdViewWidget/components/Chart/ChartWithData.js +5 -14
  7. package/dist/main/CrowdViewWidget/components/Chart/ChartWithData.js.map +1 -1
  8. package/dist/main/CrowdViewWidget/components/Chart/chartOptions.js +20 -8
  9. package/dist/main/CrowdViewWidget/components/Chart/chartOptions.js.map +1 -1
  10. package/dist/main/CrowdViewWidget/components/Chart/index.js +4 -4
  11. package/dist/main/CrowdViewWidget/components/Chart/index.js.map +1 -1
  12. package/dist/main/CrowdViewWidget/components/Chart/types.js.map +1 -1
  13. package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js +17 -101
  14. package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -1
  15. package/dist/main/CrowdViewWidget/components/Chart/utils/aggregateBuckets.js +37 -0
  16. package/dist/main/CrowdViewWidget/components/Chart/utils/aggregateBuckets.js.map +1 -0
  17. package/dist/main/CrowdViewWidget/components/Chart/utils/chartUtils.js +19 -4
  18. package/dist/main/CrowdViewWidget/components/Chart/utils/chartUtils.js.map +1 -1
  19. package/dist/main/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.js +14 -0
  20. package/dist/main/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.js.map +1 -0
  21. package/dist/main/CrowdViewWidget/components/Chart/utils/index.js +83 -0
  22. package/dist/main/CrowdViewWidget/components/Chart/utils/index.js.map +1 -0
  23. package/dist/main/CrowdViewWidget/components/Chart/utils/processBuckets.js +29 -0
  24. package/dist/main/CrowdViewWidget/components/Chart/utils/processBuckets.js.map +1 -0
  25. package/dist/main/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.js +23 -0
  26. package/dist/main/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.js.map +1 -0
  27. package/dist/main/CrowdViewWidget/components/Chart/utils/processPriceCandles.js +43 -0
  28. package/dist/main/CrowdViewWidget/components/Chart/utils/processPriceCandles.js.map +1 -0
  29. package/dist/main/CrowdViewWidget/components/Chart/utils/validateData.js +23 -0
  30. package/dist/main/CrowdViewWidget/components/Chart/utils/validateData.js.map +1 -0
  31. package/dist/main/CrowdViewWidget/components/Legend/Legend.js +6 -4
  32. package/dist/main/CrowdViewWidget/components/Legend/Legend.js.map +1 -1
  33. package/dist/main/CrowdViewWidget/components/Legend/LegendBar.js +5 -3
  34. package/dist/main/CrowdViewWidget/components/Legend/LegendBar.js.map +1 -1
  35. package/dist/main/CrowdViewWidget/constants.js +105 -5
  36. package/dist/main/CrowdViewWidget/constants.js.map +1 -1
  37. package/dist/main/CrowdViewWidget/selectConfig.js +18 -60
  38. package/dist/main/CrowdViewWidget/selectConfig.js.map +1 -1
  39. package/dist/main/CrowdViewWidget/types.js +20 -0
  40. package/dist/main/CrowdViewWidget/types.js.map +1 -1
  41. package/dist/main/translations/sources/en.json +21 -16
  42. package/dist/module/CrowdViewWidget/Main.js +9 -5
  43. package/dist/module/CrowdViewWidget/Main.js.map +1 -1
  44. package/dist/module/CrowdViewWidget/components/Chart/Chart.js +3 -2
  45. package/dist/module/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
  46. package/dist/module/CrowdViewWidget/components/Chart/ChartWithData.js +5 -14
  47. package/dist/module/CrowdViewWidget/components/Chart/ChartWithData.js.map +1 -1
  48. package/dist/module/CrowdViewWidget/components/Chart/chartOptions.js +20 -8
  49. package/dist/module/CrowdViewWidget/components/Chart/chartOptions.js.map +1 -1
  50. package/dist/module/CrowdViewWidget/components/Chart/index.js +1 -1
  51. package/dist/module/CrowdViewWidget/components/Chart/index.js.map +1 -1
  52. package/dist/module/CrowdViewWidget/components/Chart/types.js.map +1 -1
  53. package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js +13 -97
  54. package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -1
  55. package/dist/module/CrowdViewWidget/components/Chart/utils/aggregateBuckets.js +29 -0
  56. package/dist/module/CrowdViewWidget/components/Chart/utils/aggregateBuckets.js.map +1 -0
  57. package/dist/module/CrowdViewWidget/components/Chart/utils/chartUtils.js +20 -5
  58. package/dist/module/CrowdViewWidget/components/Chart/utils/chartUtils.js.map +1 -1
  59. package/dist/module/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.js +7 -0
  60. package/dist/module/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.js.map +1 -0
  61. package/dist/module/CrowdViewWidget/components/Chart/utils/index.js +8 -0
  62. package/dist/module/CrowdViewWidget/components/Chart/utils/index.js.map +1 -0
  63. package/dist/module/CrowdViewWidget/components/Chart/utils/processBuckets.js +22 -0
  64. package/dist/module/CrowdViewWidget/components/Chart/utils/processBuckets.js.map +1 -0
  65. package/dist/module/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.js +16 -0
  66. package/dist/module/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.js.map +1 -0
  67. package/dist/module/CrowdViewWidget/components/Chart/utils/processPriceCandles.js +36 -0
  68. package/dist/module/CrowdViewWidget/components/Chart/utils/processPriceCandles.js.map +1 -0
  69. package/dist/module/CrowdViewWidget/components/Chart/utils/validateData.js +16 -0
  70. package/dist/module/CrowdViewWidget/components/Chart/utils/validateData.js.map +1 -0
  71. package/dist/module/CrowdViewWidget/components/Legend/Legend.js +6 -4
  72. package/dist/module/CrowdViewWidget/components/Legend/Legend.js.map +1 -1
  73. package/dist/module/CrowdViewWidget/components/Legend/LegendBar.js +5 -3
  74. package/dist/module/CrowdViewWidget/components/Legend/LegendBar.js.map +1 -1
  75. package/dist/module/CrowdViewWidget/constants.js +104 -4
  76. package/dist/module/CrowdViewWidget/constants.js.map +1 -1
  77. package/dist/module/CrowdViewWidget/selectConfig.js +3 -45
  78. package/dist/module/CrowdViewWidget/selectConfig.js.map +1 -1
  79. package/dist/module/CrowdViewWidget/types.js +19 -1
  80. package/dist/module/CrowdViewWidget/types.js.map +1 -1
  81. package/dist/module/translations/sources/en.json +21 -16
  82. package/dist/types/CrowdViewWidget/components/Chart/Chart.d.ts +1 -1
  83. package/dist/types/CrowdViewWidget/components/Chart/index.d.ts +1 -1
  84. package/dist/types/CrowdViewWidget/components/Chart/types.d.ts +13 -8
  85. package/dist/types/CrowdViewWidget/components/Chart/utils/aggregateBuckets.d.ts +2 -0
  86. package/dist/types/CrowdViewWidget/components/Chart/utils/chartUtils.d.ts +11 -6
  87. package/dist/types/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.d.ts +3 -0
  88. package/dist/types/CrowdViewWidget/components/Chart/utils/index.d.ts +7 -0
  89. package/dist/types/CrowdViewWidget/components/Chart/utils/processBuckets.d.ts +3 -0
  90. package/dist/types/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.d.ts +8 -0
  91. package/dist/types/CrowdViewWidget/components/Chart/utils/processPriceCandles.d.ts +27 -0
  92. package/dist/types/CrowdViewWidget/components/Chart/utils/validateData.d.ts +2 -0
  93. package/dist/types/CrowdViewWidget/components/Legend/Legend.d.ts +3 -1
  94. package/dist/types/CrowdViewWidget/constants.d.ts +12 -4
  95. package/dist/types/CrowdViewWidget/selectConfig.d.ts +2 -2
  96. package/dist/types/CrowdViewWidget/types.d.ts +18 -1
  97. package/dist/types/CrowdViewWidget/utils/instrumentUtils.d.ts +1 -4
  98. package/package.json +4 -3
  99. package/src/CrowdViewWidget/Main.tsx +46 -40
  100. package/src/CrowdViewWidget/components/Chart/Chart.tsx +2 -2
  101. package/src/CrowdViewWidget/components/Chart/ChartWithData.tsx +4 -26
  102. package/src/CrowdViewWidget/components/Chart/chartOptions.ts +41 -27
  103. package/src/CrowdViewWidget/components/Chart/index.ts +1 -1
  104. package/src/CrowdViewWidget/components/Chart/types.ts +14 -4
  105. package/src/CrowdViewWidget/components/Chart/useCrowdViewData.ts +30 -154
  106. package/src/CrowdViewWidget/components/Chart/utils/aggregateBuckets.ts +44 -0
  107. package/src/CrowdViewWidget/components/Chart/utils/chartUtils.ts +41 -12
  108. package/src/CrowdViewWidget/components/Chart/utils/getTargetBucketWidth.ts +13 -0
  109. package/src/CrowdViewWidget/components/Chart/utils/index.ts +7 -0
  110. package/src/CrowdViewWidget/components/Chart/utils/processBuckets.ts +43 -0
  111. package/src/CrowdViewWidget/components/Chart/utils/processOrderPositionBooks.ts +30 -0
  112. package/src/CrowdViewWidget/components/Chart/utils/processPriceCandles.ts +53 -0
  113. package/src/CrowdViewWidget/components/Chart/utils/validateData.ts +27 -0
  114. package/src/CrowdViewWidget/components/Legend/Legend.tsx +14 -3
  115. package/src/CrowdViewWidget/components/Legend/LegendBar.tsx +5 -2
  116. package/src/CrowdViewWidget/constants.ts +114 -4
  117. package/src/CrowdViewWidget/selectConfig.ts +5 -60
  118. package/src/CrowdViewWidget/types.ts +18 -1
  119. package/src/translations/sources/en.json +21 -16
  120. package/test/Main.test.tsx +1 -1
  121. package/test/components/Chart/utils/chartUtils.test.ts +13 -27
  122. package/test/components/Legend.test.tsx +8 -3
  123. package/test/components/LegendBar.test.tsx +3 -2
  124. package/test/utils/aggregateBuckets.test.ts +82 -0
  125. package/test/utils/getTargetBucketWidth.test.ts +37 -0
  126. package/test/utils/instrumentUtils.test.ts +13 -7
  127. package/test/utils/processBuckets.test.ts +153 -0
  128. package/test/utils/processOrderPositionBooks.test.ts +127 -0
  129. package/test/utils/processPriceCandles.test.ts +245 -0
  130. package/test/utils/validateData.test.ts +201 -0
  131. package/dist/main/CrowdViewWidget/types/index.js +0 -17
  132. package/dist/main/CrowdViewWidget/types/index.js.map +0 -1
  133. package/dist/main/CrowdViewWidget/types/instruments.js +0 -45
  134. package/dist/main/CrowdViewWidget/types/instruments.js.map +0 -1
  135. package/dist/module/CrowdViewWidget/types/index.js +0 -2
  136. package/dist/module/CrowdViewWidget/types/index.js.map +0 -1
  137. package/dist/module/CrowdViewWidget/types/instruments.js +0 -39
  138. package/dist/module/CrowdViewWidget/types/instruments.js.map +0 -1
  139. package/dist/types/CrowdViewWidget/types/index.d.ts +0 -1
  140. package/dist/types/CrowdViewWidget/types/instruments.d.ts +0 -36
  141. package/src/CrowdViewWidget/types/index.ts +0 -1
  142. package/src/CrowdViewWidget/types/instruments.ts +0 -37
@@ -1 +1 @@
1
- {"version":3,"file":"selectConfig.js","names":["_graphql","require","_instruments","navigationConfig","exports","id","BookType","Order","label","Position","instrumentSelectConfigOC","InstrumentIdOC","EUR_AUD","EUR_GBP","EUR_JPY","EUR_USD","EUR_CHF","USD_CHF","USD_JPY","USD_CAD","GBP_USD","GBP_JPY","GBP_CHF","AUD_JPY","AUD_USD","NZD_USD","instrumentSelectConfig","InstrumentId","XAU_USD","XAG_USD","granularitySelectConfig","Granularity","M5","M15","H1","H4"],"sources":["../../../src/CrowdViewWidget/selectConfig.ts"],"sourcesContent":["import { BookType, Granularity } from '../gql/types/graphql';\nimport { InstrumentId, InstrumentIdOC } from './types/instruments';\n\nconst navigationConfig = [\n {\n id: BookType.Order,\n label: 'order_book',\n },\n {\n id: BookType.Position,\n label: 'position_book',\n },\n];\n\nconst instrumentSelectConfigOC = [\n {\n id: InstrumentIdOC.EUR_AUD,\n label: 'EUR/AUD',\n },\n {\n id: InstrumentIdOC.EUR_GBP,\n label: 'EUR/GBP',\n },\n {\n id: InstrumentIdOC.EUR_JPY,\n label: 'EUR/JPY',\n },\n {\n id: InstrumentIdOC.EUR_USD,\n label: 'EUR/USD',\n },\n {\n id: InstrumentIdOC.EUR_CHF,\n label: 'EUR/CHF',\n },\n {\n id: InstrumentIdOC.USD_CHF,\n label: 'USD/CHF',\n },\n {\n id: InstrumentIdOC.USD_JPY,\n label: 'USD/JPY',\n },\n {\n id: InstrumentIdOC.USD_CAD,\n label: 'USD/CAD',\n },\n {\n id: InstrumentIdOC.GBP_USD,\n label: 'GBP/USD',\n },\n {\n id: InstrumentIdOC.GBP_JPY,\n label: 'GBP/JPY',\n },\n {\n id: InstrumentIdOC.GBP_CHF,\n label: 'GBP/CHF',\n },\n {\n id: InstrumentIdOC.AUD_JPY,\n label: 'AUD/JPY',\n },\n {\n id: InstrumentIdOC.AUD_USD,\n label: 'AUD/USD',\n },\n {\n id: InstrumentIdOC.NZD_USD,\n label: 'NZD/USD',\n },\n];\n\nconst instrumentSelectConfig = [\n {\n id: InstrumentId.EUR_AUD,\n label: 'EUR/AUD',\n },\n {\n id: InstrumentId.EUR_GBP,\n label: 'EUR/GBP',\n },\n {\n id: InstrumentId.EUR_JPY,\n label: 'EUR/JPY',\n },\n {\n id: InstrumentId.EUR_USD,\n label: 'EUR/USD',\n },\n {\n id: InstrumentId.EUR_CHF,\n label: 'EUR/CHF',\n },\n {\n id: InstrumentId.USD_CHF,\n label: 'USD/CHF',\n },\n {\n id: InstrumentId.USD_JPY,\n label: 'USD/JPY',\n },\n {\n id: InstrumentId.USD_CAD,\n label: 'USD/CAD',\n },\n {\n id: InstrumentId.GBP_USD,\n label: 'GBP/USD',\n },\n {\n id: InstrumentId.GBP_JPY,\n label: 'GBP/JPY',\n },\n {\n id: InstrumentId.GBP_CHF,\n label: 'GBP/CHF',\n },\n {\n id: InstrumentId.AUD_JPY,\n label: 'AUD/JPY',\n },\n {\n id: InstrumentId.AUD_USD,\n label: 'AUD/USD',\n },\n {\n id: InstrumentId.NZD_USD,\n label: 'NZD/USD',\n },\n {\n id: InstrumentId.XAU_USD,\n label: 'XAU/USD',\n },\n {\n id: InstrumentId.XAG_USD,\n label: 'XAG/USD',\n },\n];\n\nconst granularitySelectConfig = [\n {\n id: Granularity.M5,\n label: '5_minutes',\n },\n {\n id: Granularity.M15,\n label: '15_minutes',\n },\n {\n id: Granularity.H1,\n label: '1_hour',\n },\n {\n id: Granularity.H4,\n label: '4_hours',\n },\n];\n\nexport {\n granularitySelectConfig,\n instrumentSelectConfig,\n instrumentSelectConfigOC,\n navigationConfig,\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"selectConfig.js","names":["_graphql","require","_types","navigationConfig","exports","id","BookType","Order","label","Position","instrumentSelectConfigOC","InstrumentId","EUR_AUD","EUR_GBP","EUR_JPY","EUR_USD","EUR_CHF","USD_CHF","USD_JPY","USD_CAD","GBP_USD","GBP_JPY","GBP_CHF","AUD_JPY","AUD_USD","NZD_USD","instrumentSelectConfig","XAU_USD","XAG_USD","granularitySelectConfig","Granularity","M5","M15","H1","H4"],"sources":["../../../src/CrowdViewWidget/selectConfig.ts"],"sourcesContent":["import { BookType, Granularity } from '../gql/types/graphql';\nimport { InstrumentId } from './types';\n\nconst navigationConfig = [\n {\n id: BookType.Order,\n label: 'order_book',\n },\n {\n id: BookType.Position,\n label: 'position_book',\n },\n];\n\nconst instrumentSelectConfigOC = [\n {\n id: InstrumentId.EUR_AUD,\n label: 'EUR/AUD',\n },\n {\n id: InstrumentId.EUR_GBP,\n label: 'EUR/GBP',\n },\n {\n id: InstrumentId.EUR_JPY,\n label: 'EUR/JPY',\n },\n {\n id: InstrumentId.EUR_USD,\n label: 'EUR/USD',\n },\n {\n id: InstrumentId.EUR_CHF,\n label: 'EUR/CHF',\n },\n {\n id: InstrumentId.USD_CHF,\n label: 'USD/CHF',\n },\n {\n id: InstrumentId.USD_JPY,\n label: 'USD/JPY',\n },\n {\n id: InstrumentId.USD_CAD,\n label: 'USD/CAD',\n },\n {\n id: InstrumentId.GBP_USD,\n label: 'GBP/USD',\n },\n {\n id: InstrumentId.GBP_JPY,\n label: 'GBP/JPY',\n },\n {\n id: InstrumentId.GBP_CHF,\n label: 'GBP/CHF',\n },\n {\n id: InstrumentId.AUD_JPY,\n label: 'AUD/JPY',\n },\n {\n id: InstrumentId.AUD_USD,\n label: 'AUD/USD',\n },\n {\n id: InstrumentId.NZD_USD,\n label: 'NZD/USD',\n },\n];\n\nconst instrumentSelectConfig = [\n ...instrumentSelectConfigOC,\n {\n id: InstrumentId.XAU_USD,\n label: 'XAU/USD',\n },\n {\n id: InstrumentId.XAG_USD,\n label: 'XAG/USD',\n },\n];\n\nconst granularitySelectConfig = [\n {\n id: Granularity.M5,\n label: '5_minutes',\n },\n {\n id: Granularity.M15,\n label: '15_minutes',\n },\n {\n id: Granularity.H1,\n label: '1_hour',\n },\n {\n id: Granularity.H4,\n label: '4_hours',\n },\n];\n\nexport {\n granularitySelectConfig,\n instrumentSelectConfig,\n instrumentSelectConfigOC,\n navigationConfig,\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,MAAME,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAG,CACvB;EACEE,EAAE,EAAEC,iBAAQ,CAACC,KAAK;EAClBC,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEC,iBAAQ,CAACG,QAAQ;EACrBD,KAAK,EAAE;AACT,CAAC,CACF;AAED,MAAME,wBAAwB,GAAAN,OAAA,CAAAM,wBAAA,GAAG,CAC/B;EACEL,EAAE,EAAEM,mBAAY,CAACC,OAAO;EACxBJ,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACE,OAAO;EACxBL,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACG,OAAO;EACxBN,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACI,OAAO;EACxBP,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACK,OAAO;EACxBR,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACM,OAAO;EACxBT,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACO,OAAO;EACxBV,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACQ,OAAO;EACxBX,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACS,OAAO;EACxBZ,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACU,OAAO;EACxBb,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACW,OAAO;EACxBd,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACY,OAAO;EACxBf,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACa,OAAO;EACxBhB,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACc,OAAO;EACxBjB,KAAK,EAAE;AACT,CAAC,CACF;AAED,MAAMkB,sBAAsB,GAAAtB,OAAA,CAAAsB,sBAAA,GAAG,CAC7B,GAAGhB,wBAAwB,EAC3B;EACEL,EAAE,EAAEM,mBAAY,CAACgB,OAAO;EACxBnB,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEM,mBAAY,CAACiB,OAAO;EACxBpB,KAAK,EAAE;AACT,CAAC,CACF;AAED,MAAMqB,uBAAuB,GAAAzB,OAAA,CAAAyB,uBAAA,GAAG,CAC9B;EACExB,EAAE,EAAEyB,oBAAW,CAACC,EAAE;EAClBvB,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEyB,oBAAW,CAACE,GAAG;EACnBxB,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEyB,oBAAW,CAACG,EAAE;EAClBzB,KAAK,EAAE;AACT,CAAC,EACD;EACEH,EAAE,EAAEyB,oBAAW,CAACI,EAAE;EAClB1B,KAAK,EAAE;AACT,CAAC,CACF","ignoreList":[]}
@@ -3,4 +3,24 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.InstrumentId = void 0;
7
+ let InstrumentId = exports.InstrumentId = function (InstrumentId) {
8
+ InstrumentId["EUR_AUD"] = "EURAUD";
9
+ InstrumentId["EUR_GBP"] = "EURGBP";
10
+ InstrumentId["EUR_JPY"] = "EURJPY";
11
+ InstrumentId["EUR_USD"] = "EURUSD";
12
+ InstrumentId["EUR_CHF"] = "EURCHF";
13
+ InstrumentId["USD_CHF"] = "USDCHF";
14
+ InstrumentId["USD_JPY"] = "USDJPY";
15
+ InstrumentId["USD_CAD"] = "USDCAD";
16
+ InstrumentId["GBP_USD"] = "GBPUSD";
17
+ InstrumentId["GBP_JPY"] = "GBPJPY";
18
+ InstrumentId["GBP_CHF"] = "GBPCHF";
19
+ InstrumentId["AUD_JPY"] = "AUDJPY";
20
+ InstrumentId["AUD_USD"] = "AUDUSD";
21
+ InstrumentId["NZD_USD"] = "NZDUSD";
22
+ InstrumentId["XAU_USD"] = "XAUUSD";
23
+ InstrumentId["XAG_USD"] = "XAGUSD";
24
+ return InstrumentId;
25
+ }({});
6
26
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/CrowdViewWidget/types.ts"],"sourcesContent":["import type { WidgetConfig } from '@oanda/labs-widget-common';\n\nimport type { Division } from '../gql/types/graphql';\nimport type { InstrumentId } from './types/instruments';\n\nexport interface CrowdViewConfig extends WidgetConfig {\n division: Division;\n}\n\nexport interface MainProps {\n instrument?: InstrumentId;\n division: Division;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":["InstrumentId","exports"],"sources":["../../../src/CrowdViewWidget/types.ts"],"sourcesContent":["import type { WidgetConfig } from '@oanda/labs-widget-common';\n\nimport type { Division } from '../gql/types/graphql';\n\nexport enum InstrumentId {\n EUR_AUD = 'EURAUD',\n EUR_GBP = 'EURGBP',\n EUR_JPY = 'EURJPY',\n EUR_USD = 'EURUSD',\n EUR_CHF = 'EURCHF',\n USD_CHF = 'USDCHF',\n USD_JPY = 'USDJPY',\n USD_CAD = 'USDCAD',\n GBP_USD = 'GBPUSD',\n GBP_JPY = 'GBPJPY',\n GBP_CHF = 'GBPCHF',\n AUD_JPY = 'AUDJPY',\n AUD_USD = 'AUDUSD',\n NZD_USD = 'NZDUSD',\n XAU_USD = 'XAUUSD',\n XAG_USD = 'XAGUSD',\n}\nexport interface CrowdViewConfig extends WidgetConfig {\n division: Division;\n}\n\nexport interface MainProps {\n instrument?: InstrumentId;\n division: Division;\n}\n"],"mappings":";;;;;;IAIYA,YAAY,GAAAC,OAAA,CAAAD,YAAA,aAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA","ignoreList":[]}
@@ -1,26 +1,31 @@
1
1
  {
2
- "data_unavailable": "Data unavailable",
3
- "no_matching_results": "No matching results",
4
- "pagination_entries_range": "{{firstItemOnPage}}-{{lastItemOnPage}} of {{itemCount}} entries",
5
- "order_book": "Order book",
6
- "position_book": "Position book",
7
- "long": "Long",
8
- "short": "Short",
9
- "instrument": "Instrument",
10
- "granularity": "Granularity",
11
- "search": "Search",
12
- "5_minutes": "5 minutes",
13
- "15_minutes": "15 minutes",
14
2
  "1_hour": "1 hour",
3
+ "15_minutes": "15 minutes",
15
4
  "4_hours": "4 hours",
5
+ "5_minutes": "5 minutes",
6
+ "buy_overbalance": "Buy overbalance",
7
+ "buy": "Buy",
16
8
  "candle": "Candle",
17
- "open_price": "Open price",
18
9
  "close_price": "Close price",
19
- "low": "Low",
10
+ "data_unavailable": "Data unavailable",
11
+ "granularity": "Granularity",
20
12
  "high": "High",
13
+ "instrument": "Instrument",
14
+ "long_overbalance": "Long overbalance",
15
+ "long": "Long",
16
+ "low": "Low",
17
+ "no_matching_results": "No matching results",
18
+ "open_price": "Open price",
19
+ "order_book": "Order book",
21
20
  "orders": "Orders",
21
+ "pagination_entries_range": "{{firstItemOnPage}}-{{lastItemOnPage}} of {{itemCount}} entries",
22
+ "position_book": "Position book",
23
+ "positions": "Positions",
22
24
  "price_range": "Price range",
25
+ "search": "Search",
26
+ "sell_overbalance": "Sell overbalance",
27
+ "sell": "Sell",
23
28
  "sentiment": "Sentiment",
24
- "buy_advantage": "Buy advantage",
25
- "sell_advantage": "Sell advantage"
29
+ "short_overbalance": "Short overbalance",
30
+ "short": "Short"
26
31
  }
@@ -34,17 +34,19 @@ const Main = _ref => {
34
34
  return React.createElement(React.Fragment, null, size && React.createElement("div", {
35
35
  className: "lw-text-sm lw-tracking-normal",
36
36
  "data-testid": "crowd-view-widget"
37
- }, React.createElement(Tabs, {
37
+ }, React.createElement("div", null, React.createElement(Tabs, {
38
38
  mobileFullWidth: true,
39
39
  activeTab: bookType,
40
40
  handleClick: e => setBookType(e.currentTarget.value),
41
41
  items: navigationConfig,
42
42
  labelCallback: lang
43
43
  }), React.createElement("div", {
44
- className: "lw-mb-6 lw-mt-12 lw-flex"
44
+ className: cn('lw-mb-6 lw-mt-12', {
45
+ 'lw-flex': isDesktop
46
+ })
45
47
  }, React.createElement("div", {
46
48
  className: cn('lw-mr-2', {
47
- 'lw-w-full': !isDesktop,
49
+ 'lw-w-full lw-mb-2': !isDesktop,
48
50
  'lw-w-[280px]': isDesktop
49
51
  })
50
52
  }, React.createElement(Select, {
@@ -64,12 +66,14 @@ const Main = _ref => {
64
66
  selectLabel: lang('granularity'),
65
67
  selectedOption: granularity,
66
68
  setSelectedOption: val => setGranularity(val)
67
- }))), React.createElement(ChartWithData, {
69
+ })))), React.createElement(ChartWithData, {
68
70
  bookType: bookType,
69
71
  division: division,
70
72
  granularity: granularity.id,
71
73
  instrument: instrument.id
72
- }), React.createElement(Legend, null)));
74
+ }), React.createElement(Legend, {
75
+ bookType: bookType
76
+ })));
73
77
  };
74
78
  export { Main };
75
79
  //# sourceMappingURL=Main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Main.js","names":["cn","Select","Size","Tabs","useLayoutProvider","useLocale","React","useEffect","useMemo","useState","BookType","ChartWithData","Legend","granularitySelectConfig","navigationConfig","getInstrumentConfigForDivision","Main","_ref","division","lang","size","isDesktop","DESKTOP","bookType","setBookType","Order","granularitySelectConfigWithLang","map","opt","_objectSpread","label","instrumentSelectConfigWithDivision","instrument","setInstrument","granularity","setGranularity","createElement","Fragment","className","mobileFullWidth","activeTab","handleClick","e","currentTarget","value","items","labelCallback","options","searchPlaceholder","selectLabel","selectedOption","setSelectedOption","val","id"],"sources":["../../../src/CrowdViewWidget/Main.tsx"],"sourcesContent":["import {\n cn,\n Select,\n Size,\n Tabs,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport type { Granularity } from '../gql/types/graphql';\nimport { BookType } from '../gql/types/graphql';\nimport { ChartWithData, Legend } from './components';\nimport { granularitySelectConfig, navigationConfig } from './selectConfig';\nimport type { MainProps } from './types';\nimport type { InstrumentId } from './types/instruments';\nimport { getInstrumentConfigForDivision } from './utils/instrumentUtils';\n\nconst Main = ({ division }: MainProps) => {\n const { lang } = useLocale();\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n\n const [bookType, setBookType] = useState(BookType.Order);\n\n const granularitySelectConfigWithLang = useMemo(\n () =>\n granularitySelectConfig.map((opt) => ({\n ...opt,\n label: lang(opt.label),\n })),\n [lang]\n );\n\n const instrumentSelectConfigWithDivision =\n getInstrumentConfigForDivision(division);\n const [instrument, setInstrument] = useState(\n instrumentSelectConfigWithDivision[0]\n );\n\n const [granularity, setGranularity] = useState(\n granularitySelectConfigWithLang[0]\n );\n\n useEffect(() => {\n setGranularity(granularitySelectConfigWithLang[0]);\n }, [granularitySelectConfigWithLang]);\n\n return (\n <>\n {size && (\n <div\n className=\"lw-text-sm lw-tracking-normal\"\n data-testid=\"crowd-view-widget\"\n >\n <Tabs\n mobileFullWidth\n activeTab={bookType}\n handleClick={(e) => setBookType(e.currentTarget.value as BookType)}\n items={navigationConfig}\n labelCallback={lang}\n />\n <div className=\"lw-mb-6 lw-mt-12 lw-flex\">\n <div\n className={cn('lw-mr-2', {\n 'lw-w-full': !isDesktop,\n 'lw-w-[280px]': isDesktop,\n })}\n >\n <Select\n options={instrumentSelectConfigWithDivision}\n searchPlaceholder={lang('search')}\n selectLabel={lang('instrument')}\n selectedOption={instrument}\n setSelectedOption={(val) =>\n setInstrument(val as { id: InstrumentId; label: string })\n }\n />\n </div>\n <div\n className={cn({\n 'lw-w-full': !isDesktop,\n 'lw-w-[280px]': isDesktop,\n })}\n >\n <Select\n options={granularitySelectConfigWithLang}\n searchPlaceholder={lang('search')}\n selectLabel={lang('granularity')}\n selectedOption={granularity}\n setSelectedOption={(val) =>\n setGranularity(val as { id: Granularity; label: string })\n }\n />\n </div>\n </div>\n\n <ChartWithData\n bookType={bookType}\n division={division}\n granularity={granularity.id}\n instrument={instrument.id}\n />\n\n <Legend />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Main.js","names":["cn","Select","Size","Tabs","useLayoutProvider","useLocale","React","useEffect","useMemo","useState","BookType","ChartWithData","Legend","granularitySelectConfig","navigationConfig","getInstrumentConfigForDivision","Main","_ref","division","lang","size","isDesktop","DESKTOP","bookType","setBookType","Order","granularitySelectConfigWithLang","map","opt","_objectSpread","label","instrumentSelectConfigWithDivision","instrument","setInstrument","granularity","setGranularity","createElement","Fragment","className","mobileFullWidth","activeTab","handleClick","e","currentTarget","value","items","labelCallback","options","searchPlaceholder","selectLabel","selectedOption","setSelectedOption","val","id"],"sources":["../../../src/CrowdViewWidget/Main.tsx"],"sourcesContent":["import {\n cn,\n Select,\n Size,\n Tabs,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport type { Granularity } from '../gql/types/graphql';\nimport { BookType } from '../gql/types/graphql';\nimport { ChartWithData, Legend } from './components';\nimport { granularitySelectConfig, navigationConfig } from './selectConfig';\nimport type { InstrumentId, MainProps } from './types';\nimport { getInstrumentConfigForDivision } from './utils/instrumentUtils';\n\nconst Main = ({ division }: MainProps) => {\n const { lang } = useLocale();\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n\n const [bookType, setBookType] = useState(BookType.Order);\n\n const granularitySelectConfigWithLang = useMemo(\n () =>\n granularitySelectConfig.map((opt) => ({\n ...opt,\n label: lang(opt.label),\n })),\n [lang]\n );\n\n const instrumentSelectConfigWithDivision =\n getInstrumentConfigForDivision(division);\n const [instrument, setInstrument] = useState(\n instrumentSelectConfigWithDivision[0]\n );\n\n const [granularity, setGranularity] = useState(\n granularitySelectConfigWithLang[0]\n );\n\n useEffect(() => {\n setGranularity(granularitySelectConfigWithLang[0]);\n }, [granularitySelectConfigWithLang]);\n\n return (\n <>\n {size && (\n <div\n className=\"lw-text-sm lw-tracking-normal\"\n data-testid=\"crowd-view-widget\"\n >\n <div>\n <Tabs\n mobileFullWidth\n activeTab={bookType}\n handleClick={(e) =>\n setBookType(e.currentTarget.value as BookType)\n }\n items={navigationConfig}\n labelCallback={lang}\n />\n <div\n className={cn('lw-mb-6 lw-mt-12', {\n 'lw-flex': isDesktop,\n })}\n >\n <div\n className={cn('lw-mr-2', {\n 'lw-w-full lw-mb-2': !isDesktop,\n 'lw-w-[280px]': isDesktop,\n })}\n >\n <Select\n options={instrumentSelectConfigWithDivision}\n searchPlaceholder={lang('search')}\n selectLabel={lang('instrument')}\n selectedOption={instrument}\n setSelectedOption={(val) =>\n setInstrument(val as { id: InstrumentId; label: string })\n }\n />\n </div>\n <div\n className={cn({\n 'lw-w-full': !isDesktop,\n 'lw-w-[280px]': isDesktop,\n })}\n >\n <Select\n options={granularitySelectConfigWithLang}\n searchPlaceholder={lang('search')}\n selectLabel={lang('granularity')}\n selectedOption={granularity}\n setSelectedOption={(val) =>\n setGranularity(val as { id: Granularity; label: string })\n }\n />\n </div>\n </div>\n </div>\n <ChartWithData\n bookType={bookType}\n division={division}\n granularity={granularity.id}\n instrument={instrument.id}\n />\n\n <Legend bookType={bookType} />\n </div>\n )}\n </>\n );\n};\n\nexport { Main };\n"],"mappings":"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","ignoreList":[]}
@@ -13,7 +13,8 @@ echarts.registerTheme('dark_theme', getChartTheme(Theme.Dark));
13
13
  echarts.registerTheme('light_theme', getChartTheme(Theme.Light));
14
14
  const Chart = _ref => {
15
15
  let {
16
- data
16
+ data,
17
+ isDesktop
17
18
  } = _ref;
18
19
  const {
19
20
  isDark
@@ -26,7 +27,7 @@ const Chart = _ref => {
26
27
  echarts: echarts,
27
28
  isDark: isDark,
28
29
  lazyUpdate: true,
29
- option: getOption(data, isDark, lang),
30
+ option: getOption(data, isDark, isDesktop, lang),
30
31
  opts: {
31
32
  renderer: 'canvas'
32
33
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.js","names":["BaseChart","getChartTheme","Theme","useLayoutProvider","useLocale","BarChart","CandlestickChart","CustomChart","ScatterChart","DataZoomInsideComponent","GraphicComponent","GridSimpleComponent","MarkPointComponent","TooltipComponent","echarts","CanvasRenderer","React","CHART_CONFIG","getOption","formatXAxisLabel","getLabelData","isDifferenceGreaterThanTwoWeeks","use","registerTheme","Dark","Light","Chart","_ref","data","isDark","lang","createElement","chartHeight","HEIGHT","lazyUpdate","option","opts","renderer","onEvents","datazoom","_params","instance","dataZoom","startValue","endValue","isGreaterThanTwoWeeks","xAxisData","labelsData","setOption","xAxis","axisLabel","formatter","value","series","id","markPoint"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/Chart.tsx"],"sourcesContent":["import {\n BaseChart,\n getChartTheme,\n Theme,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport type { EChartsType } from 'echarts';\nimport {\n BarChart,\n CandlestickChart,\n CustomChart,\n ScatterChart,\n} from 'echarts/charts';\nimport {\n DataZoomInsideComponent,\n GraphicComponent,\n GridSimpleComponent,\n MarkPointComponent,\n TooltipComponent,\n} from 'echarts/components';\nimport * as echarts from 'echarts/core';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport React from 'react';\n\nimport { CHART_CONFIG } from '../../constants';\nimport { getOption } from './chartOptions';\nimport type { ChartProps } from './types';\nimport {\n formatXAxisLabel,\n getLabelData,\n isDifferenceGreaterThanTwoWeeks,\n} from './utils/chartUtils';\n\necharts.use([\n GridSimpleComponent,\n GraphicComponent,\n BarChart,\n CanvasRenderer,\n DataZoomInsideComponent,\n CustomChart,\n TooltipComponent,\n CandlestickChart,\n MarkPointComponent,\n ScatterChart,\n]);\n\necharts.registerTheme('dark_theme', getChartTheme(Theme.Dark));\necharts.registerTheme('light_theme', getChartTheme(Theme.Light));\n\nconst Chart = ({ data }: ChartProps) => {\n const { isDark } = useLayoutProvider();\n const { lang } = useLocale();\n\n return (\n <BaseChart\n chartHeight={CHART_CONFIG.HEIGHT}\n echarts={echarts}\n isDark={isDark}\n lazyUpdate={true}\n option={getOption(data, isDark, lang)}\n opts={{ renderer: 'canvas' }}\n onEvents={{\n datazoom: (_params: unknown, instance: EChartsType) => {\n const { dataZoom } = instance.getOption();\n\n const { startValue, endValue } = (\n dataZoom as { startValue: number; endValue: number }[]\n )[0];\n\n const isGreaterThanTwoWeeks = isDifferenceGreaterThanTwoWeeks(\n data.xAxisData[startValue],\n data.xAxisData[endValue]\n );\n\n const labelsData = getLabelData({\n xAxisData: data.xAxisData,\n isGreaterThanTwoWeeks,\n });\n\n instance.setOption({\n xAxis: {\n axisLabel: {\n formatter: (value: string) =>\n formatXAxisLabel(value, isGreaterThanTwoWeeks),\n },\n },\n series: [\n {\n id: 'candlestick',\n markPoint: {\n data: labelsData,\n },\n },\n ],\n });\n },\n }}\n />\n );\n};\n\nexport { Chart };\n"],"mappings":"AAAA,SACEA,SAAS,EACTC,aAAa,EACbC,KAAK,EACLC,iBAAiB,QACZ,2BAA2B;AAClC,SAASC,SAAS,QAAQ,kBAAkB;AAE5C,SACEC,QAAQ,EACRC,gBAAgB,EAChBC,WAAW,EACXC,YAAY,QACP,gBAAgB;AACvB,SACEC,uBAAuB,EACvBC,gBAAgB,EAChBC,mBAAmB,EACnBC,kBAAkB,EAClBC,gBAAgB,QACX,oBAAoB;AAC3B,OAAO,KAAKC,OAAO,MAAM,cAAc;AACvC,SAASC,cAAc,QAAQ,mBAAmB;AAClD,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,SAAS,QAAQ,gBAAgB;AAE1C,SACEC,gBAAgB,EAChBC,YAAY,EACZC,+BAA+B,QAC1B,oBAAoB;AAE3BP,OAAO,CAACQ,GAAG,CAAC,CACVX,mBAAmB,EACnBD,gBAAgB,EAChBL,QAAQ,EACRU,cAAc,EACdN,uBAAuB,EACvBF,WAAW,EACXM,gBAAgB,EAChBP,gBAAgB,EAChBM,kBAAkB,EAClBJ,YAAY,CACb,CAAC;AAEFM,OAAO,CAACS,aAAa,CAAC,YAAY,EAAEtB,aAAa,CAACC,KAAK,CAACsB,IAAI,CAAC,CAAC;AAC9DV,OAAO,CAACS,aAAa,CAAC,aAAa,EAAEtB,aAAa,CAACC,KAAK,CAACuB,KAAK,CAAC,CAAC;AAEhE,MAAMC,KAAK,GAAGC,IAAA,IAA0B;EAAA,IAAzB;IAAEC;EAAiB,CAAC,GAAAD,IAAA;EACjC,MAAM;IAAEE;EAAO,CAAC,GAAG1B,iBAAiB,CAAC,CAAC;EACtC,MAAM;IAAE2B;EAAK,CAAC,GAAG1B,SAAS,CAAC,CAAC;EAE5B,OACEY,KAAA,CAAAe,aAAA,CAAC/B,SAAS;IACRgC,WAAW,EAAEf,YAAY,CAACgB,MAAO;IACjCnB,OAAO,EAAEA,OAAQ;IACjBe,MAAM,EAAEA,MAAO;IACfK,UAAU,EAAE,IAAK;IACjBC,MAAM,EAAEjB,SAAS,CAACU,IAAI,EAAEC,MAAM,EAAEC,IAAI,CAAE;IACtCM,IAAI,EAAE;MAAEC,QAAQ,EAAE;IAAS,CAAE;IAC7BC,QAAQ,EAAE;MACRC,QAAQ,EAAEA,CAACC,OAAgB,EAAEC,QAAqB,KAAK;QACrD,MAAM;UAAEC;QAAS,CAAC,GAAGD,QAAQ,CAACvB,SAAS,CAAC,CAAC;QAEzC,MAAM;UAAEyB,UAAU;UAAEC;QAAS,CAAC,GAC5BF,QAAQ,CACR,CAAC,CAAC;QAEJ,MAAMG,qBAAqB,GAAGxB,+BAA+B,CAC3DO,IAAI,CAACkB,SAAS,CAACH,UAAU,CAAC,EAC1Bf,IAAI,CAACkB,SAAS,CAACF,QAAQ,CACzB,CAAC;QAED,MAAMG,UAAU,GAAG3B,YAAY,CAAC;UAC9B0B,SAAS,EAAElB,IAAI,CAACkB,SAAS;UACzBD;QACF,CAAC,CAAC;QAEFJ,QAAQ,CAACO,SAAS,CAAC;UACjBC,KAAK,EAAE;YACLC,SAAS,EAAE;cACTC,SAAS,EAAGC,KAAa,IACvBjC,gBAAgB,CAACiC,KAAK,EAAEP,qBAAqB;YACjD;UACF,CAAC;UACDQ,MAAM,EAAE,CACN;YACEC,EAAE,EAAE,aAAa;YACjBC,SAAS,EAAE;cACT3B,IAAI,EAAEmB;YACR;UACF,CAAC;QAEL,CAAC,CAAC;MACJ;IACF;EAAE,CACH,CAAC;AAEN,CAAC;AAED,SAASrB,KAAK","ignoreList":[]}
1
+ {"version":3,"file":"Chart.js","names":["BaseChart","getChartTheme","Theme","useLayoutProvider","useLocale","BarChart","CandlestickChart","CustomChart","ScatterChart","DataZoomInsideComponent","GraphicComponent","GridSimpleComponent","MarkPointComponent","TooltipComponent","echarts","CanvasRenderer","React","CHART_CONFIG","getOption","formatXAxisLabel","getLabelData","isDifferenceGreaterThanTwoWeeks","use","registerTheme","Dark","Light","Chart","_ref","data","isDesktop","isDark","lang","createElement","chartHeight","HEIGHT","lazyUpdate","option","opts","renderer","onEvents","datazoom","_params","instance","dataZoom","startValue","endValue","isGreaterThanTwoWeeks","xAxisData","labelsData","setOption","xAxis","axisLabel","formatter","value","series","id","markPoint"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/Chart.tsx"],"sourcesContent":["import {\n BaseChart,\n getChartTheme,\n Theme,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport { useLocale } from '@oanda/mono-i18n';\nimport type { EChartsType } from 'echarts';\nimport {\n BarChart,\n CandlestickChart,\n CustomChart,\n ScatterChart,\n} from 'echarts/charts';\nimport {\n DataZoomInsideComponent,\n GraphicComponent,\n GridSimpleComponent,\n MarkPointComponent,\n TooltipComponent,\n} from 'echarts/components';\nimport * as echarts from 'echarts/core';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport React from 'react';\n\nimport { CHART_CONFIG } from '../../constants';\nimport { getOption } from './chartOptions';\nimport type { ChartProps } from './types';\nimport {\n formatXAxisLabel,\n getLabelData,\n isDifferenceGreaterThanTwoWeeks,\n} from './utils/chartUtils';\n\necharts.use([\n GridSimpleComponent,\n GraphicComponent,\n BarChart,\n CanvasRenderer,\n DataZoomInsideComponent,\n CustomChart,\n TooltipComponent,\n CandlestickChart,\n MarkPointComponent,\n ScatterChart,\n]);\n\necharts.registerTheme('dark_theme', getChartTheme(Theme.Dark));\necharts.registerTheme('light_theme', getChartTheme(Theme.Light));\n\nconst Chart = ({ data, isDesktop }: ChartProps) => {\n const { isDark } = useLayoutProvider();\n const { lang } = useLocale();\n\n return (\n <BaseChart\n chartHeight={CHART_CONFIG.HEIGHT}\n echarts={echarts}\n isDark={isDark}\n lazyUpdate={true}\n option={getOption(data, isDark, isDesktop, lang)}\n opts={{ renderer: 'canvas' }}\n onEvents={{\n datazoom: (_params: unknown, instance: EChartsType) => {\n const { dataZoom } = instance.getOption();\n\n const { startValue, endValue } = (\n dataZoom as { startValue: number; endValue: number }[]\n )[0];\n\n const isGreaterThanTwoWeeks = isDifferenceGreaterThanTwoWeeks(\n data.xAxisData[startValue],\n data.xAxisData[endValue]\n );\n\n const labelsData = getLabelData({\n xAxisData: data.xAxisData,\n isGreaterThanTwoWeeks,\n });\n\n instance.setOption({\n xAxis: {\n axisLabel: {\n formatter: (value: string) =>\n formatXAxisLabel(value, isGreaterThanTwoWeeks),\n },\n },\n series: [\n {\n id: 'candlestick',\n markPoint: {\n data: labelsData,\n },\n },\n ],\n });\n },\n }}\n />\n );\n};\n\nexport { Chart };\n"],"mappings":"AAAA,SACEA,SAAS,EACTC,aAAa,EACbC,KAAK,EACLC,iBAAiB,QACZ,2BAA2B;AAClC,SAASC,SAAS,QAAQ,kBAAkB;AAE5C,SACEC,QAAQ,EACRC,gBAAgB,EAChBC,WAAW,EACXC,YAAY,QACP,gBAAgB;AACvB,SACEC,uBAAuB,EACvBC,gBAAgB,EAChBC,mBAAmB,EACnBC,kBAAkB,EAClBC,gBAAgB,QACX,oBAAoB;AAC3B,OAAO,KAAKC,OAAO,MAAM,cAAc;AACvC,SAASC,cAAc,QAAQ,mBAAmB;AAClD,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,SAAS,QAAQ,gBAAgB;AAE1C,SACEC,gBAAgB,EAChBC,YAAY,EACZC,+BAA+B,QAC1B,oBAAoB;AAE3BP,OAAO,CAACQ,GAAG,CAAC,CACVX,mBAAmB,EACnBD,gBAAgB,EAChBL,QAAQ,EACRU,cAAc,EACdN,uBAAuB,EACvBF,WAAW,EACXM,gBAAgB,EAChBP,gBAAgB,EAChBM,kBAAkB,EAClBJ,YAAY,CACb,CAAC;AAEFM,OAAO,CAACS,aAAa,CAAC,YAAY,EAAEtB,aAAa,CAACC,KAAK,CAACsB,IAAI,CAAC,CAAC;AAC9DV,OAAO,CAACS,aAAa,CAAC,aAAa,EAAEtB,aAAa,CAACC,KAAK,CAACuB,KAAK,CAAC,CAAC;AAEhE,MAAMC,KAAK,GAAGC,IAAA,IAAqC;EAAA,IAApC;IAAEC,IAAI;IAAEC;EAAsB,CAAC,GAAAF,IAAA;EAC5C,MAAM;IAAEG;EAAO,CAAC,GAAG3B,iBAAiB,CAAC,CAAC;EACtC,MAAM;IAAE4B;EAAK,CAAC,GAAG3B,SAAS,CAAC,CAAC;EAE5B,OACEY,KAAA,CAAAgB,aAAA,CAAChC,SAAS;IACRiC,WAAW,EAAEhB,YAAY,CAACiB,MAAO;IACjCpB,OAAO,EAAEA,OAAQ;IACjBgB,MAAM,EAAEA,MAAO;IACfK,UAAU,EAAE,IAAK;IACjBC,MAAM,EAAElB,SAAS,CAACU,IAAI,EAAEE,MAAM,EAAED,SAAS,EAAEE,IAAI,CAAE;IACjDM,IAAI,EAAE;MAAEC,QAAQ,EAAE;IAAS,CAAE;IAC7BC,QAAQ,EAAE;MACRC,QAAQ,EAAEA,CAACC,OAAgB,EAAEC,QAAqB,KAAK;QACrD,MAAM;UAAEC;QAAS,CAAC,GAAGD,QAAQ,CAACxB,SAAS,CAAC,CAAC;QAEzC,MAAM;UAAE0B,UAAU;UAAEC;QAAS,CAAC,GAC5BF,QAAQ,CACR,CAAC,CAAC;QAEJ,MAAMG,qBAAqB,GAAGzB,+BAA+B,CAC3DO,IAAI,CAACmB,SAAS,CAACH,UAAU,CAAC,EAC1BhB,IAAI,CAACmB,SAAS,CAACF,QAAQ,CACzB,CAAC;QAED,MAAMG,UAAU,GAAG5B,YAAY,CAAC;UAC9B2B,SAAS,EAAEnB,IAAI,CAACmB,SAAS;UACzBD;QACF,CAAC,CAAC;QAEFJ,QAAQ,CAACO,SAAS,CAAC;UACjBC,KAAK,EAAE;YACLC,SAAS,EAAE;cACTC,SAAS,EAAGC,KAAa,IACvBlC,gBAAgB,CAACkC,KAAK,EAAEP,qBAAqB;YACjD;UACF,CAAC;UACDQ,MAAM,EAAE,CACN;YACEC,EAAE,EAAE,aAAa;YACjBC,SAAS,EAAE;cACT5B,IAAI,EAAEoB;YACR;UACF,CAAC;QAEL,CAAC,CAAC;MACJ;IACF;EAAE,CACH,CAAC;AAEN,CAAC;AAED,SAAStB,KAAK","ignoreList":[]}
@@ -1,5 +1,4 @@
1
1
  import { ChartError, Size, Spinner, SpinnerSize, useLayoutProvider } from '@oanda/labs-widget-common';
2
- import classnames from 'classnames';
3
2
  import React from 'react';
4
3
  import { Chart } from './Chart';
5
4
  import { useCrowdViewData } from './useCrowdViewData';
@@ -25,26 +24,18 @@ const ChartWithData = _ref => {
25
24
  granularity
26
25
  });
27
26
  return React.createElement(React.Fragment, null, React.createElement("div", {
28
- className: classnames('lw-relative lw-w-full', {
29
- 'lw-h-[450px]': isDesktop,
30
- 'lw-h-[390px]': !isDesktop
31
- })
27
+ className: "lw-relative lw-h-[450px] lw-w-full"
32
28
  }, error && React.createElement("div", {
33
- className: classnames('lw-absolute lw-left-0 lw-top-0 lw-flex lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary', {
34
- 'lw-h-full': isDesktop,
35
- 'lw-h-[calc(100%-40px)]': !isDesktop
36
- })
29
+ className: "lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-[calc(100%-30px)] lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary"
37
30
  }, React.createElement(ChartError, null)), loading && React.createElement("div", {
38
- className: classnames('lw-absolute lw-left-0 lw-top-0 lw-flex lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary', {
39
- 'lw-h-full': isDesktop,
40
- 'lw-h-[calc(100%-40px)]': !isDesktop
41
- })
31
+ className: "lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-[calc(100%-30px)] lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary"
42
32
  }, React.createElement(Spinner, {
43
33
  size: SpinnerSize.lg
44
34
  })), !loading && !error && !!data && React.createElement("div", {
45
35
  className: "lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full"
46
36
  }, React.createElement(Chart, {
47
- data: data
37
+ data: data,
38
+ isDesktop: isDesktop
48
39
  }))));
49
40
  };
50
41
  export { ChartWithData };
@@ -1 +1 @@
1
- {"version":3,"file":"ChartWithData.js","names":["ChartError","Size","Spinner","SpinnerSize","useLayoutProvider","classnames","React","Chart","useCrowdViewData","ChartWithData","_ref","instrument","bookType","division","granularity","size","isDesktop","DESKTOP","data","loading","error","createElement","Fragment","className","lg"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/ChartWithData.tsx"],"sourcesContent":["import {\n ChartError,\n Size,\n Spinner,\n SpinnerSize,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { Chart } from './Chart';\nimport type { ChartWithDataProps } from './types';\nimport { useCrowdViewData } from './useCrowdViewData';\n\nconst ChartWithData = ({\n instrument,\n bookType,\n division,\n granularity,\n}: ChartWithDataProps) => {\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n\n const { data, loading, error } = useCrowdViewData({\n instrument,\n bookType,\n division,\n granularity,\n });\n\n return (\n <>\n <div\n className={classnames('lw-relative lw-w-full', {\n 'lw-h-[450px]': isDesktop,\n 'lw-h-[390px]': !isDesktop,\n })}\n >\n {error && (\n <div\n className={classnames(\n 'lw-absolute lw-left-0 lw-top-0 lw-flex lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary',\n {\n 'lw-h-full': isDesktop,\n 'lw-h-[calc(100%-40px)]': !isDesktop,\n }\n )}\n >\n <ChartError />\n </div>\n )}\n {loading && (\n <div\n className={classnames(\n 'lw-absolute lw-left-0 lw-top-0 lw-flex lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary',\n {\n 'lw-h-full': isDesktop,\n 'lw-h-[calc(100%-40px)]': !isDesktop,\n }\n )}\n >\n <Spinner size={SpinnerSize.lg} />\n </div>\n )}\n {!loading && !error && !!data && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full\">\n <Chart data={data} />\n </div>\n )}\n </div>\n </>\n );\n};\n\nexport { ChartWithData };\n"],"mappings":"AAAA,SACEA,UAAU,EACVC,IAAI,EACJC,OAAO,EACPC,WAAW,EACXC,iBAAiB,QACZ,2BAA2B;AAClC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,MAAMC,aAAa,GAAGC,IAAA,IAKI;EAAA,IALH;IACrBC,UAAU;IACVC,QAAQ;IACRC,QAAQ;IACRC;EACkB,CAAC,GAAAJ,IAAA;EACnB,MAAM;IAAEK;EAAK,CAAC,GAAGX,iBAAiB,CAAC,CAAC;EACpC,MAAMY,SAAS,GAAGD,IAAI,KAAKd,IAAI,CAACgB,OAAO;EAEvC,MAAM;IAAEC,IAAI;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGZ,gBAAgB,CAAC;IAChDG,UAAU;IACVC,QAAQ;IACRC,QAAQ;IACRC;EACF,CAAC,CAAC;EAEF,OACER,KAAA,CAAAe,aAAA,CAAAf,KAAA,CAAAgB,QAAA,QACEhB,KAAA,CAAAe,aAAA;IACEE,SAAS,EAAElB,UAAU,CAAC,uBAAuB,EAAE;MAC7C,cAAc,EAAEW,SAAS;MACzB,cAAc,EAAE,CAACA;IACnB,CAAC;EAAE,GAEFI,KAAK,IACJd,KAAA,CAAAe,aAAA;IACEE,SAAS,EAAElB,UAAU,CACnB,uIAAuI,EACvI;MACE,WAAW,EAAEW,SAAS;MACtB,wBAAwB,EAAE,CAACA;IAC7B,CACF;EAAE,GAEFV,KAAA,CAAAe,aAAA,CAACrB,UAAU,MAAE,CACV,CACN,EACAmB,OAAO,IACNb,KAAA,CAAAe,aAAA;IACEE,SAAS,EAAElB,UAAU,CACnB,uIAAuI,EACvI;MACE,WAAW,EAAEW,SAAS;MACtB,wBAAwB,EAAE,CAACA;IAC7B,CACF;EAAE,GAEFV,KAAA,CAAAe,aAAA,CAACnB,OAAO;IAACa,IAAI,EAAEZ,WAAW,CAACqB;EAAG,CAAE,CAC7B,CACN,EACA,CAACL,OAAO,IAAI,CAACC,KAAK,IAAI,CAAC,CAACF,IAAI,IAC3BZ,KAAA,CAAAe,aAAA;IAAKE,SAAS,EAAC;EAA4D,GACzEjB,KAAA,CAAAe,aAAA,CAACd,KAAK;IAACW,IAAI,EAAEA;EAAK,CAAE,CACjB,CAEJ,CACL,CAAC;AAEP,CAAC;AAED,SAAST,aAAa","ignoreList":[]}
1
+ {"version":3,"file":"ChartWithData.js","names":["ChartError","Size","Spinner","SpinnerSize","useLayoutProvider","React","Chart","useCrowdViewData","ChartWithData","_ref","instrument","bookType","division","granularity","size","isDesktop","DESKTOP","data","loading","error","createElement","Fragment","className","lg"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/ChartWithData.tsx"],"sourcesContent":["import {\n ChartError,\n Size,\n Spinner,\n SpinnerSize,\n useLayoutProvider,\n} from '@oanda/labs-widget-common';\nimport React from 'react';\n\nimport { Chart } from './Chart';\nimport type { ChartWithDataProps } from './types';\nimport { useCrowdViewData } from './useCrowdViewData';\n\nconst ChartWithData = ({\n instrument,\n bookType,\n division,\n granularity,\n}: ChartWithDataProps) => {\n const { size } = useLayoutProvider();\n const isDesktop = size === Size.DESKTOP;\n\n const { data, loading, error } = useCrowdViewData({\n instrument,\n bookType,\n division,\n granularity,\n });\n\n return (\n <>\n <div className=\"lw-relative lw-h-[450px] lw-w-full\">\n {error && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-[calc(100%-30px)] lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary\">\n <ChartError />\n </div>\n )}\n {loading && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-[calc(100%-30px)] lw-w-full lw-items-center lw-justify-center lw-border lw-border-solid lw-border-border-primary\">\n <Spinner size={SpinnerSize.lg} />\n </div>\n )}\n {!loading && !error && !!data && (\n <div className=\"lw-absolute lw-left-0 lw-top-0 lw-flex lw-h-full lw-w-full\">\n <Chart data={data} isDesktop={isDesktop} />\n </div>\n )}\n </div>\n </>\n );\n};\n\nexport { ChartWithData };\n"],"mappings":"AAAA,SACEA,UAAU,EACVC,IAAI,EACJC,OAAO,EACPC,WAAW,EACXC,iBAAiB,QACZ,2BAA2B;AAClC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,MAAMC,aAAa,GAAGC,IAAA,IAKI;EAAA,IALH;IACrBC,UAAU;IACVC,QAAQ;IACRC,QAAQ;IACRC;EACkB,CAAC,GAAAJ,IAAA;EACnB,MAAM;IAAEK;EAAK,CAAC,GAAGV,iBAAiB,CAAC,CAAC;EACpC,MAAMW,SAAS,GAAGD,IAAI,KAAKb,IAAI,CAACe,OAAO;EAEvC,MAAM;IAAEC,IAAI;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGZ,gBAAgB,CAAC;IAChDG,UAAU;IACVC,QAAQ;IACRC,QAAQ;IACRC;EACF,CAAC,CAAC;EAEF,OACER,KAAA,CAAAe,aAAA,CAAAf,KAAA,CAAAgB,QAAA,QACEhB,KAAA,CAAAe,aAAA;IAAKE,SAAS,EAAC;EAAoC,GAChDH,KAAK,IACJd,KAAA,CAAAe,aAAA;IAAKE,SAAS,EAAC;EAA8J,GAC3KjB,KAAA,CAAAe,aAAA,CAACpB,UAAU,MAAE,CACV,CACN,EACAkB,OAAO,IACNb,KAAA,CAAAe,aAAA;IAAKE,SAAS,EAAC;EAA8J,GAC3KjB,KAAA,CAAAe,aAAA,CAAClB,OAAO;IAACY,IAAI,EAAEX,WAAW,CAACoB;EAAG,CAAE,CAC7B,CACN,EACA,CAACL,OAAO,IAAI,CAACC,KAAK,IAAI,CAAC,CAACF,IAAI,IAC3BZ,KAAA,CAAAe,aAAA;IAAKE,SAAS,EAAC;EAA4D,GACzEjB,KAAA,CAAAe,aAAA,CAACd,KAAK;IAACW,IAAI,EAAEA,IAAK;IAACF,SAAS,EAAEA;EAAU,CAAE,CACvC,CAEJ,CACL,CAAC;AAEP,CAAC;AAED,SAASP,aAAa","ignoreList":[]}
@@ -6,13 +6,15 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
6
6
  import { colorPalette, getGridLines, getLineCommons } from '@oanda/labs-widget-common';
7
7
  import { CHART_CONFIG } from '../../constants';
8
8
  import { formatXAxisLabel, getLabelData, getRectColor, getTooltipFormatter, isDifferenceGreaterThanTwoWeeks } from './utils/chartUtils';
9
- export const getOption = (_ref, isDark, labelCallback) => {
9
+ export const getOption = (_ref, isDark, isDesktop, labelCallback) => {
10
10
  let {
11
11
  xAxisData,
12
12
  candlesSeriesData,
13
13
  orderPositionBooks,
14
14
  bucketWidth,
15
- buckets
15
+ buckets,
16
+ precision,
17
+ bookType
16
18
  } = _ref;
17
19
  let selectedPrice;
18
20
  const visibleXAxisData = xAxisData.slice(xAxisData.length * CHART_CONFIG.INITIAL_START_ZOOM / 100, xAxisData.length * CHART_CONFIG.INITIAL_END_ZOOM / 100);
@@ -26,7 +28,7 @@ export const getOption = (_ref, isDark, labelCallback) => {
26
28
  chartWidth: CHART_CONFIG.WIDTH,
27
29
  chartHeight: CHART_CONFIG.HEIGHT,
28
30
  xLabelsSize: CHART_CONFIG.X_LABEL_SIZE,
29
- yLabelSize: CHART_CONFIG.Y_LABEL_SIZE_DESKTOP,
31
+ yLabelSize: isDesktop ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP : CHART_CONFIG.Y_LABEL_SIZE_MOBILE,
30
32
  bottomLeftBox: false
31
33
  });
32
34
  return {
@@ -46,7 +48,7 @@ export const getOption = (_ref, isDark, labelCallback) => {
46
48
  formatter: params => {
47
49
  if (params.axisDimension === 'y') {
48
50
  selectedPrice = Number(params.value);
49
- return Number(params.value).toFixed(5);
51
+ return Number(params.value).toFixed(precision);
50
52
  }
51
53
  if (params.axisDimension === 'x') {
52
54
  const date = new Date(params.value);
@@ -62,7 +64,15 @@ export const getOption = (_ref, isDark, labelCallback) => {
62
64
  }
63
65
  },
64
66
  confine: true,
65
- formatter: params => getTooltipFormatter(params, buckets, bucketWidth, selectedPrice, labelCallback)
67
+ formatter: params => getTooltipFormatter({
68
+ params,
69
+ buckets,
70
+ bucketWidth,
71
+ selectedPrice,
72
+ labelCallback,
73
+ precision,
74
+ bookType
75
+ })
66
76
  },
67
77
  xAxis: {
68
78
  type: 'category',
@@ -90,7 +100,9 @@ export const getOption = (_ref, isDark, labelCallback) => {
90
100
  },
91
101
  axisLabel: {
92
102
  showMaxLabel: false,
93
- showMinLabel: false
103
+ showMinLabel: false,
104
+ margin: isDesktop ? 4 : 2,
105
+ formatter: value => value.toFixed(precision - 1)
94
106
  }
95
107
  },
96
108
  series: [{
@@ -128,7 +140,7 @@ export const getOption = (_ref, isDark, labelCallback) => {
128
140
  shape: {
129
141
  x: start[0] - rectWidth / 2,
130
142
  y: start[1] - rectHeight,
131
- width: rectWidth,
143
+ width: rectWidth + 1,
132
144
  height: rectHeight
133
145
  },
134
146
  style: {
@@ -151,7 +163,7 @@ export const getOption = (_ref, isDark, labelCallback) => {
151
163
  name: 'main-grid',
152
164
  top: '0px',
153
165
  left: '0px',
154
- right: "".concat(CHART_CONFIG.Y_LABEL_SIZE_DESKTOP, "px"),
166
+ right: "".concat(isDesktop ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP : CHART_CONFIG.Y_LABEL_SIZE_MOBILE, "px"),
155
167
  bottom: "".concat(CHART_CONFIG.X_LABEL_SIZE, "px")
156
168
  }],
157
169
  graphic: [...gridLines, _objectSpread(_objectSpread({}, getLineCommons(isDark)), {}, {
@@ -1 +1 @@
1
- {"version":3,"file":"chartOptions.js","names":["colorPalette","getGridLines","getLineCommons","CHART_CONFIG","formatXAxisLabel","getLabelData","getRectColor","getTooltipFormatter","isDifferenceGreaterThanTwoWeeks","getOption","_ref","isDark","labelCallback","xAxisData","candlesSeriesData","orderPositionBooks","bucketWidth","buckets","selectedPrice","visibleXAxisData","slice","length","INITIAL_START_ZOOM","INITIAL_END_ZOOM","isGreaterThanTwoWeeks","labelsData","gridLines","chartWidth","WIDTH","chartHeight","HEIGHT","xLabelsSize","X_LABEL_SIZE","yLabelSize","Y_LABEL_SIZE_DESKTOP","bottomLeftBox","animation","dataZoom","type","xAxisIndex","start","end","tooltip","trigger","axisPointer","axis","label","formatter","params","axisDimension","Number","value","toFixed","date","Date","toLocaleString","undefined","hour","minute","day","month","confine","xAxis","data","splitNumber","axisTick","show","axisLabel","padding","margin","yAxis","position","min","val","max","axisLine","showMaxLabel","showMinLabel","series","id","itemStyle","color","raspberryLight","color0","bottleGreenLight","markPoint","symbol","symbolSize","name","silent","clip","renderItem","_params","api","xVal","bucketIndex","metaValues","rectWidth","rectHeight","size","items","map","_ref2","price","sentiment","coord","shape","x","y","width","height","style","fill","emphasisDisabled","children","grid","top","left","right","concat","bottom","graphic","_objectSpread","x1","y1","x2","y2"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/chartOptions.ts"],"sourcesContent":["import {\n colorPalette,\n getGridLines,\n getLineCommons,\n} from '@oanda/labs-widget-common';\n\nimport { CHART_CONFIG } from '../../constants';\nimport type { GetOptionType } from './types';\nimport {\n formatXAxisLabel,\n getLabelData,\n getRectColor,\n getTooltipFormatter,\n isDifferenceGreaterThanTwoWeeks,\n} from './utils/chartUtils';\n\n// @ts-expect-error\nexport const getOption: GetOptionType = (\n { xAxisData, candlesSeriesData, orderPositionBooks, bucketWidth, buckets },\n isDark,\n labelCallback\n) => {\n let selectedPrice: number;\n const visibleXAxisData = xAxisData.slice(\n (xAxisData.length * CHART_CONFIG.INITIAL_START_ZOOM) / 100,\n (xAxisData.length * CHART_CONFIG.INITIAL_END_ZOOM) / 100\n );\n\n const isGreaterThanTwoWeeks = isDifferenceGreaterThanTwoWeeks(\n visibleXAxisData[0],\n visibleXAxisData[visibleXAxisData.length - 1]\n );\n\n const labelsData = getLabelData({\n xAxisData,\n isGreaterThanTwoWeeks,\n });\n\n const gridLines = getGridLines({\n isDark,\n chartWidth: CHART_CONFIG.WIDTH,\n chartHeight: CHART_CONFIG.HEIGHT,\n xLabelsSize: CHART_CONFIG.X_LABEL_SIZE,\n yLabelSize: CHART_CONFIG.Y_LABEL_SIZE_DESKTOP,\n bottomLeftBox: false,\n });\n\n return {\n animation: false,\n dataZoom: [\n {\n type: 'inside',\n xAxisIndex: 0,\n start: CHART_CONFIG.INITIAL_START_ZOOM,\n end: CHART_CONFIG.INITIAL_END_ZOOM,\n },\n ],\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n axis: 'x',\n label: {\n formatter: (params) => {\n if (params.axisDimension === 'y') {\n selectedPrice = Number(params.value);\n return Number(params.value).toFixed(5);\n }\n\n if (params.axisDimension === 'x') {\n const date = new Date(params.value as string);\n return date.toLocaleString(undefined, {\n hour: '2-digit',\n minute: '2-digit',\n day: 'numeric',\n month: 'short',\n });\n }\n\n return null;\n },\n },\n },\n confine: true,\n formatter: (params) =>\n getTooltipFormatter(\n params,\n buckets,\n bucketWidth,\n selectedPrice,\n labelCallback\n ),\n },\n xAxis: {\n type: 'category',\n data: xAxisData,\n splitNumber: 1,\n axisTick: {\n show: false,\n },\n axisLabel: {\n padding: [8, 16, 8, 16],\n margin: 0,\n formatter: (value) => formatXAxisLabel(value, isGreaterThanTwoWeeks),\n },\n },\n yAxis: {\n type: 'value',\n position: 'right',\n min: (val) => val.min - bucketWidth * 2,\n max: (val) => val.max + bucketWidth * 2,\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: {\n showMaxLabel: false,\n showMinLabel: false,\n },\n },\n series: [\n {\n type: 'candlestick',\n id: 'candlestick',\n data: candlesSeriesData,\n itemStyle: {\n color: colorPalette.raspberryLight,\n color0: colorPalette.bottleGreenLight,\n },\n markPoint: {\n symbol: 'circle',\n symbolSize: 0,\n data: labelsData,\n },\n },\n {\n type: 'custom',\n name: 'heatmap',\n id: 'heatmap',\n silent: true,\n clip: true,\n renderItem: (_params, api) => {\n const xVal = api.value(0);\n const bucketIndex = api.value(2) as number;\n const metaValues = buckets[bucketIndex];\n\n const [rectWidth, rectHeight] = api.size!([\n 0,\n bucketWidth,\n ]) as number[];\n\n const items = metaValues.map(\n ({ price, sentiment }: { price: number; sentiment: number }) => {\n const start = api.coord([xVal, price]);\n\n return {\n type: 'rect',\n shape: {\n x: start[0] - rectWidth / 2,\n y: start[1] - rectHeight,\n width: rectWidth,\n height: rectHeight,\n },\n style: {\n fill: getRectColor(sentiment),\n },\n silent: true,\n emphasisDisabled: true,\n };\n }\n );\n\n return {\n type: 'group',\n children: items,\n silent: true,\n emphasisDisabled: true,\n };\n },\n data: orderPositionBooks,\n },\n ],\n grid: [\n {\n name: 'main-grid',\n top: '0px',\n left: '0px',\n right: `${CHART_CONFIG.Y_LABEL_SIZE_DESKTOP}px`,\n bottom: `${CHART_CONFIG.X_LABEL_SIZE}px`,\n },\n ],\n graphic: [\n ...gridLines,\n {\n ...getLineCommons(isDark as boolean),\n top: 0,\n right: 0,\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n },\n },\n ],\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"chartOptions.js","names":["colorPalette","getGridLines","getLineCommons","CHART_CONFIG","formatXAxisLabel","getLabelData","getRectColor","getTooltipFormatter","isDifferenceGreaterThanTwoWeeks","getOption","_ref","isDark","isDesktop","labelCallback","xAxisData","candlesSeriesData","orderPositionBooks","bucketWidth","buckets","precision","bookType","selectedPrice","visibleXAxisData","slice","length","INITIAL_START_ZOOM","INITIAL_END_ZOOM","isGreaterThanTwoWeeks","labelsData","gridLines","chartWidth","WIDTH","chartHeight","HEIGHT","xLabelsSize","X_LABEL_SIZE","yLabelSize","Y_LABEL_SIZE_DESKTOP","Y_LABEL_SIZE_MOBILE","bottomLeftBox","animation","dataZoom","type","xAxisIndex","start","end","tooltip","trigger","axisPointer","axis","label","formatter","params","axisDimension","Number","value","toFixed","date","Date","toLocaleString","undefined","hour","minute","day","month","confine","xAxis","data","splitNumber","axisTick","show","axisLabel","padding","margin","yAxis","position","min","val","max","axisLine","showMaxLabel","showMinLabel","series","id","itemStyle","color","raspberryLight","color0","bottleGreenLight","markPoint","symbol","symbolSize","name","silent","clip","renderItem","_params","api","xVal","bucketIndex","metaValues","rectWidth","rectHeight","size","items","map","_ref2","price","sentiment","coord","shape","x","y","width","height","style","fill","emphasisDisabled","children","grid","top","left","right","concat","bottom","graphic","_objectSpread","x1","y1","x2","y2"],"sources":["../../../../../src/CrowdViewWidget/components/Chart/chartOptions.ts"],"sourcesContent":["import {\n colorPalette,\n getGridLines,\n getLineCommons,\n} from '@oanda/labs-widget-common';\n\nimport { CHART_CONFIG } from '../../constants';\nimport type { Bucket, GetOptionType } from './types';\nimport {\n formatXAxisLabel,\n getLabelData,\n getRectColor,\n getTooltipFormatter,\n isDifferenceGreaterThanTwoWeeks,\n} from './utils/chartUtils';\n\n// @ts-expect-error\nexport const getOption: GetOptionType = (\n {\n xAxisData,\n candlesSeriesData,\n orderPositionBooks,\n bucketWidth,\n buckets,\n precision,\n bookType,\n },\n isDark,\n isDesktop,\n labelCallback\n) => {\n let selectedPrice: number;\n const visibleXAxisData = xAxisData.slice(\n (xAxisData.length * CHART_CONFIG.INITIAL_START_ZOOM) / 100,\n (xAxisData.length * CHART_CONFIG.INITIAL_END_ZOOM) / 100\n );\n\n const isGreaterThanTwoWeeks = isDifferenceGreaterThanTwoWeeks(\n visibleXAxisData[0],\n visibleXAxisData[visibleXAxisData.length - 1]\n );\n\n const labelsData = getLabelData({\n xAxisData,\n isGreaterThanTwoWeeks,\n });\n\n const gridLines = getGridLines({\n isDark,\n chartWidth: CHART_CONFIG.WIDTH,\n chartHeight: CHART_CONFIG.HEIGHT,\n xLabelsSize: CHART_CONFIG.X_LABEL_SIZE,\n yLabelSize: isDesktop\n ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP\n : CHART_CONFIG.Y_LABEL_SIZE_MOBILE,\n bottomLeftBox: false,\n });\n\n return {\n animation: false,\n dataZoom: [\n {\n type: 'inside',\n xAxisIndex: 0,\n start: CHART_CONFIG.INITIAL_START_ZOOM,\n end: CHART_CONFIG.INITIAL_END_ZOOM,\n },\n ],\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'cross',\n axis: 'x',\n label: {\n formatter: (params) => {\n if (params.axisDimension === 'y') {\n selectedPrice = Number(params.value);\n return Number(params.value).toFixed(precision);\n }\n\n if (params.axisDimension === 'x') {\n const date = new Date(params.value as string);\n return date.toLocaleString(undefined, {\n hour: '2-digit',\n minute: '2-digit',\n day: 'numeric',\n month: 'short',\n });\n }\n\n return null;\n },\n },\n },\n confine: true,\n formatter: (params) =>\n getTooltipFormatter({\n params,\n buckets,\n bucketWidth,\n selectedPrice,\n labelCallback,\n precision,\n bookType,\n }),\n },\n xAxis: {\n type: 'category',\n data: xAxisData,\n splitNumber: 1,\n axisTick: {\n show: false,\n },\n axisLabel: {\n padding: [8, 16, 8, 16],\n margin: 0,\n formatter: (value) => formatXAxisLabel(value, isGreaterThanTwoWeeks),\n },\n },\n yAxis: {\n type: 'value',\n position: 'right',\n min: (val) => val.min - bucketWidth * 2,\n max: (val) => val.max + bucketWidth * 2,\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: {\n showMaxLabel: false,\n showMinLabel: false,\n margin: isDesktop ? 4 : 2,\n formatter: (value: number) => value.toFixed(precision - 1),\n },\n },\n series: [\n {\n type: 'candlestick',\n id: 'candlestick',\n data: candlesSeriesData,\n itemStyle: {\n color: colorPalette.raspberryLight,\n color0: colorPalette.bottleGreenLight,\n },\n\n markPoint: {\n symbol: 'circle',\n symbolSize: 0,\n data: labelsData,\n },\n },\n {\n type: 'custom',\n name: 'heatmap',\n id: 'heatmap',\n silent: true,\n clip: true,\n renderItem: (_params, api) => {\n const xVal = api.value(0);\n const bucketIndex = api.value(2) as number;\n const metaValues = buckets[bucketIndex];\n\n const [rectWidth, rectHeight] = api.size!([\n 0,\n bucketWidth,\n ]) as number[];\n\n const items = metaValues.map(({ price, sentiment }: Bucket) => {\n const start = api.coord([xVal, price]);\n\n return {\n type: 'rect',\n shape: {\n x: start[0] - rectWidth / 2,\n y: start[1] - rectHeight,\n width: rectWidth + 1,\n height: rectHeight,\n },\n style: {\n fill: getRectColor(sentiment),\n },\n silent: true,\n emphasisDisabled: true,\n };\n });\n\n return {\n type: 'group',\n children: items,\n silent: true,\n emphasisDisabled: true,\n };\n },\n data: orderPositionBooks,\n },\n ],\n grid: [\n {\n name: 'main-grid',\n top: '0px',\n left: '0px',\n right: `${isDesktop ? CHART_CONFIG.Y_LABEL_SIZE_DESKTOP : CHART_CONFIG.Y_LABEL_SIZE_MOBILE}px`,\n bottom: `${CHART_CONFIG.X_LABEL_SIZE}px`,\n },\n ],\n graphic: [\n ...gridLines,\n {\n ...getLineCommons(isDark as boolean),\n top: 0,\n right: 0,\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n },\n },\n ],\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -3,5 +3,5 @@ export * from './chartOptions';
3
3
  export * from './ChartWithData';
4
4
  export * from './types';
5
5
  export * from './useCrowdViewData';
6
- export * from './utils/chartUtils';
6
+ export * from './utils';
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/CrowdViewWidget/components/Chart/index.ts"],"sourcesContent":["export * from './Chart';\nexport * from './chartOptions';\nexport * from './ChartWithData';\nexport * from './types';\nexport * from './useCrowdViewData';\nexport * from './utils/chartUtils';\n"],"mappings":"AAAA,cAAc,SAAS;AACvB,cAAc,gBAAgB;AAC9B,cAAc,iBAAiB;AAC/B,cAAc,SAAS;AACvB,cAAc,oBAAoB;AAClC,cAAc,oBAAoB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/CrowdViewWidget/components/Chart/index.ts"],"sourcesContent":["export * from './Chart';\nexport * from './chartOptions';\nexport * from './ChartWithData';\nexport * from './types';\nexport * from './useCrowdViewData';\nexport * from './utils';\n"],"mappings":"AAAA,cAAc,SAAS;AACvB,cAAc,gBAAgB;AAC9B,cAAc,iBAAiB;AAC/B,cAAc,SAAS;AACvB,cAAc,oBAAoB;AAClC,cAAc,SAAS","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/CrowdViewWidget/components/Chart/types.ts"],"sourcesContent":["import type { EChartsOption } from 'echarts';\n\nimport type {\n BookType,\n Division,\n Granularity,\n} from '../../../gql/types/graphql';\n\nexport interface UseCrowdViewDataProps {\n instrument: string;\n bookType: BookType;\n division: Division;\n granularity: Granularity;\n}\n\ninterface CrowdViewData {\n xAxisData: string[];\n // [open, close, low, high]\n candlesSeriesData: [number, number, number, number][];\n // [time, price, index]\n orderPositionBooks: ([string, number, number] | null)[];\n bucketWidth: number;\n buckets: { price: number; sentiment: number }[][];\n}\n\nexport interface UseCrowdViewDataReturn {\n data: CrowdViewData | null;\n loading: boolean;\n error: boolean;\n}\n\nexport type GetOptionType = (\n props: CrowdViewData,\n isDark: boolean,\n labelCallback: (key: string, params?: Record<string, unknown>) => string\n) => EChartsOption;\n\nexport interface ChartProps {\n data: CrowdViewData;\n}\n\nexport interface ChartWithDataProps {\n bookType: BookType;\n division: Division;\n instrument: string;\n granularity: Granularity;\n}\n\nexport interface GetLabelsDataProps {\n xAxisData: string[];\n isGreaterThanTwoWeeks: boolean;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/CrowdViewWidget/components/Chart/types.ts"],"sourcesContent":["import type { EChartsOption } from 'echarts';\n\nimport type {\n BookType,\n Division,\n Granularity,\n} from '../../../gql/types/graphql';\nimport type { InstrumentId } from '../../types';\n\nexport interface Bucket {\n price: number;\n sentiment: number;\n}\n\nexport interface UseCrowdViewDataProps {\n instrument: InstrumentId;\n bookType: BookType;\n division: Division;\n granularity: Granularity;\n}\n\ninterface CrowdViewData {\n xAxisData: string[];\n // [open, close, low, high]\n candlesSeriesData: [number, number, number, number][];\n // [time, price, index]\n orderPositionBooks: [string, number | null, number][];\n bucketWidth: number;\n buckets: Bucket[][];\n precision: number;\n bookType: BookType;\n}\n\nexport interface UseCrowdViewDataReturn {\n data: CrowdViewData | null;\n loading: boolean;\n error: boolean;\n}\n\nexport type GetOptionType = (\n props: CrowdViewData,\n isDark: boolean,\n isDesktop: boolean,\n labelCallback: (key: string, params?: Record<string, unknown>) => string\n) => EChartsOption;\n\nexport interface ChartProps {\n data: CrowdViewData;\n isDesktop: boolean;\n}\n\nexport interface ChartWithDataProps {\n bookType: BookType;\n division: Division;\n instrument: InstrumentId;\n granularity: Granularity;\n}\n\nexport interface GetLabelsDataProps {\n xAxisData: string[];\n isGreaterThanTwoWeeks: boolean;\n}\n"],"mappings":"","ignoreList":[]}