@oanda/labs-crowd-view-widget 1.0.50 → 1.0.52

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 (88) hide show
  1. package/CHANGELOG.md +420 -0
  2. package/dist/main/CrowdViewWidget/components/Chart/Chart.js +60 -21
  3. package/dist/main/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
  4. package/dist/main/CrowdViewWidget/components/Chart/ChartWithData.js +3 -3
  5. package/dist/main/CrowdViewWidget/components/Chart/ChartWithData.js.map +1 -1
  6. package/dist/main/CrowdViewWidget/components/Chart/chartOptions.js +208 -42
  7. package/dist/main/CrowdViewWidget/components/Chart/chartOptions.js.map +1 -1
  8. package/dist/main/CrowdViewWidget/components/Chart/types.js.map +1 -1
  9. package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js +25 -6
  10. package/dist/main/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -1
  11. package/dist/main/CrowdViewWidget/components/Chart/utils/chartUtils.js +12 -10
  12. package/dist/main/CrowdViewWidget/components/Chart/utils/chartUtils.js.map +1 -1
  13. package/dist/main/CrowdViewWidget/components/Chart/utils/getChartStyles.js +27 -0
  14. package/dist/main/CrowdViewWidget/components/Chart/utils/getChartStyles.js.map +1 -0
  15. package/dist/main/CrowdViewWidget/components/Chart/utils/getGridLines.js +123 -0
  16. package/dist/main/CrowdViewWidget/components/Chart/utils/getGridLines.js.map +1 -0
  17. package/dist/main/CrowdViewWidget/components/Chart/utils/index.js +22 -0
  18. package/dist/main/CrowdViewWidget/components/Chart/utils/index.js.map +1 -1
  19. package/dist/main/CrowdViewWidget/components/Chart/utils/processSentiments.js +28 -0
  20. package/dist/main/CrowdViewWidget/components/Chart/utils/processSentiments.js.map +1 -0
  21. package/dist/main/CrowdViewWidget/components/Legend/Legend.js +1 -1
  22. package/dist/main/CrowdViewWidget/components/Legend/Legend.js.map +1 -1
  23. package/dist/main/CrowdViewWidget/constants.js +13 -3
  24. package/dist/main/CrowdViewWidget/constants.js.map +1 -1
  25. package/dist/main/gql/getSentiments.js +11 -0
  26. package/dist/main/gql/getSentiments.js.map +1 -0
  27. package/dist/main/gql/types/gql.js +2 -1
  28. package/dist/main/gql/types/gql.js.map +1 -1
  29. package/dist/main/gql/types/graphql.js +162 -1
  30. package/dist/main/gql/types/graphql.js.map +1 -1
  31. package/dist/module/CrowdViewWidget/components/Chart/Chart.js +63 -24
  32. package/dist/module/CrowdViewWidget/components/Chart/Chart.js.map +1 -1
  33. package/dist/module/CrowdViewWidget/components/Chart/ChartWithData.js +3 -3
  34. package/dist/module/CrowdViewWidget/components/Chart/ChartWithData.js.map +1 -1
  35. package/dist/module/CrowdViewWidget/components/Chart/chartOptions.js +208 -43
  36. package/dist/module/CrowdViewWidget/components/Chart/chartOptions.js.map +1 -1
  37. package/dist/module/CrowdViewWidget/components/Chart/types.js.map +1 -1
  38. package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js +26 -7
  39. package/dist/module/CrowdViewWidget/components/Chart/useCrowdViewData.js.map +1 -1
  40. package/dist/module/CrowdViewWidget/components/Chart/utils/chartUtils.js +12 -10
  41. package/dist/module/CrowdViewWidget/components/Chart/utils/chartUtils.js.map +1 -1
  42. package/dist/module/CrowdViewWidget/components/Chart/utils/getChartStyles.js +20 -0
  43. package/dist/module/CrowdViewWidget/components/Chart/utils/getChartStyles.js.map +1 -0
  44. package/dist/module/CrowdViewWidget/components/Chart/utils/getGridLines.js +116 -0
  45. package/dist/module/CrowdViewWidget/components/Chart/utils/getGridLines.js.map +1 -0
  46. package/dist/module/CrowdViewWidget/components/Chart/utils/index.js +2 -0
  47. package/dist/module/CrowdViewWidget/components/Chart/utils/index.js.map +1 -1
  48. package/dist/module/CrowdViewWidget/components/Chart/utils/processSentiments.js +21 -0
  49. package/dist/module/CrowdViewWidget/components/Chart/utils/processSentiments.js.map +1 -0
  50. package/dist/module/CrowdViewWidget/components/Legend/Legend.js +1 -1
  51. package/dist/module/CrowdViewWidget/components/Legend/Legend.js.map +1 -1
  52. package/dist/module/CrowdViewWidget/constants.js +12 -2
  53. package/dist/module/CrowdViewWidget/constants.js.map +1 -1
  54. package/dist/module/gql/getSentiments.js +6 -0
  55. package/dist/module/gql/getSentiments.js.map +1 -0
  56. package/dist/module/gql/types/gql.js +2 -1
  57. package/dist/module/gql/types/gql.js.map +1 -1
  58. package/dist/module/gql/types/graphql.js +161 -0
  59. package/dist/module/gql/types/graphql.js.map +1 -1
  60. package/dist/types/CrowdViewWidget/components/Chart/types.d.ts +43 -0
  61. package/dist/types/CrowdViewWidget/components/Chart/utils/chartUtils.d.ts +2 -2
  62. package/dist/types/CrowdViewWidget/components/Chart/utils/getChartStyles.d.ts +10 -0
  63. package/dist/types/CrowdViewWidget/components/Chart/utils/getGridLines.d.ts +97 -0
  64. package/dist/types/CrowdViewWidget/components/Chart/utils/index.d.ts +2 -0
  65. package/dist/types/CrowdViewWidget/components/Chart/utils/processSentiments.d.ts +3 -0
  66. package/dist/types/CrowdViewWidget/constants.d.ts +11 -1
  67. package/dist/types/gql/getSentiments.d.ts +2 -0
  68. package/dist/types/gql/types/gql.d.ts +9 -0
  69. package/dist/types/gql/types/graphql.d.ts +36 -0
  70. package/package.json +3 -3
  71. package/src/CrowdViewWidget/components/Chart/Chart.tsx +86 -34
  72. package/src/CrowdViewWidget/components/Chart/ChartWithData.tsx +3 -3
  73. package/src/CrowdViewWidget/components/Chart/chartOptions.ts +242 -72
  74. package/src/CrowdViewWidget/components/Chart/types.ts +55 -0
  75. package/src/CrowdViewWidget/components/Chart/useCrowdViewData.ts +35 -3
  76. package/src/CrowdViewWidget/components/Chart/utils/chartUtils.ts +33 -14
  77. package/src/CrowdViewWidget/components/Chart/utils/getChartStyles.ts +42 -0
  78. package/src/CrowdViewWidget/components/Chart/utils/getGridLines.ts +148 -0
  79. package/src/CrowdViewWidget/components/Chart/utils/index.ts +2 -0
  80. package/src/CrowdViewWidget/components/Chart/utils/processSentiments.ts +42 -0
  81. package/src/CrowdViewWidget/components/Legend/Legend.tsx +1 -1
  82. package/src/CrowdViewWidget/constants.ts +17 -1
  83. package/src/gql/getSentiments.ts +25 -0
  84. package/src/gql/types/gql.ts +8 -0
  85. package/src/gql/types/graphql.ts +161 -0
  86. package/test/components/Chart/utils/chartUtils.test.ts +76 -2
  87. package/test/components/Chart/utils/getChartStyles.test.ts +64 -0
  88. package/test/components/Chart/utils/processSentiments.test.ts +130 -0
@@ -1 +1 @@
1
- {"version":3,"file":"chartUtils.js","names":["chroma","BookType","Granularity","TimeSpan","BOOKS_THRESHOLDS","CHART_CONFIG","COLOR_MAP","TIME_THRESHOLDS","getLabelData","_ref","xAxisData","isGreaterThanTwoWeeks","filter","record","index","arr","previousTimestamp","currentDate","Date","previousDate","getDate","getMonth","map","item","name","toLocaleDateString","undefined","month","day","xAxis","y","HEIGHT","silent","emphasis","disabled","label","fontFamily","fontSize","position","align","formatter","isDifferenceGreaterThanTwoWeeks","startDate","endDate","date1","date2","differenceInMs","Math","abs","getTime","TWO_WEEKS_MS","getTimeSpanForGranularity","granularity","granularityTimeSpanMap","M5","TwoDays","M15","FiveDays","H1","TwentyDays","H4","NinetyDays","getGradientColor","value","startColor","targetColor","startThreshold","MIN","endThreshold","MAX","colorScale","scale","domain","mode","hex","getRectColor","sentiment","isDark","colorPalette","dark","light","short","long","getTooltipFormatter","_ref2","_booksParam$value","params","buckets","bucketWidth","selectedPrice","precision","bookType","labelCallback","Array","isArray","length","candleParam","booksParam","time","axisValue","candleData","booksData","bucketsIndex","selectedBuckets","matchedBucket","find","_ref3","price","showCandles","concat","toLocaleString","hour","minute","year","timeZoneName","Order","toFixed","Number","formatXAxisLabel","date","toLocaleTimeString","X_AXIS_DATE_PADDING"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/utils/chartUtils.ts"],"sourcesContent":["import chroma from 'chroma-js';\n\nimport { BookType, Granularity, TimeSpan } from '../../../../gql/types/graphql';\nimport {\n BOOKS_THRESHOLDS,\n CHART_CONFIG,\n COLOR_MAP,\n TIME_THRESHOLDS,\n} from '../../../constants';\nimport type { Bucket, GetLabelsDataProps } from '../types';\n\nexport const getLabelData = ({\n xAxisData,\n isGreaterThanTwoWeeks,\n}: GetLabelsDataProps) =>\n xAxisData\n .filter((record, index, arr) => {\n if (index === 0) {\n return false;\n }\n const previousTimestamp = arr[index - 1];\n const currentDate = new Date(record);\n const previousDate = new Date(previousTimestamp);\n\n return isGreaterThanTwoWeeks\n ? currentDate.getDate() !== previousDate.getDate()\n : currentDate.getMonth() !== previousDate.getMonth();\n })\n .map((item) => ({\n name: new Date(item).toLocaleDateString(undefined, {\n month: isGreaterThanTwoWeeks ? 'short' : 'long',\n day: isGreaterThanTwoWeeks ? 'numeric' : undefined,\n }),\n xAxis: item,\n y: CHART_CONFIG.HEIGHT - 22,\n silent: true,\n emphasis: {\n disabled: true,\n },\n label: {\n fontFamily: 'Sofia W03',\n fontSize: 10,\n position: 'bottom',\n align: 'center',\n formatter: '{b}',\n },\n }));\n\nexport const isDifferenceGreaterThanTwoWeeks = (\n startDate: string,\n endDate: string\n) => {\n const date1 = new Date(startDate);\n const date2 = new Date(endDate);\n\n const differenceInMs = Math.abs(date2.getTime() - date1.getTime());\n\n return differenceInMs < TIME_THRESHOLDS.TWO_WEEKS_MS;\n};\n\nexport const getTimeSpanForGranularity = (\n granularity: Granularity\n): TimeSpan => {\n const granularityTimeSpanMap: Record<Granularity, TimeSpan> = {\n [Granularity.M5]: TimeSpan.TwoDays,\n [Granularity.M15]: TimeSpan.FiveDays,\n [Granularity.H1]: TimeSpan.TwentyDays,\n [Granularity.H4]: TimeSpan.NinetyDays,\n };\n\n return granularityTimeSpanMap[granularity] || TimeSpan.TwoDays;\n};\n\nconst getGradientColor = (\n value: number,\n startColor: string,\n targetColor: string\n): string => {\n const startThreshold = BOOKS_THRESHOLDS.MIN;\n const endThreshold = BOOKS_THRESHOLDS.MAX;\n\n const colorScale = chroma\n .scale([startColor, targetColor])\n .domain([startThreshold, endThreshold])\n .mode('rgb');\n\n return colorScale(value).hex();\n};\n\nexport const getRectColor = (sentiment: number, isDark: boolean) => {\n const colorPalette = isDark ? COLOR_MAP.dark : COLOR_MAP.light;\n\n return sentiment < 0\n ? getGradientColor(\n sentiment * -1,\n colorPalette.short[0],\n colorPalette.short[1]\n )\n : getGradientColor(sentiment, colorPalette.long[0], colorPalette.long[1]);\n};\n\nexport const getTooltipFormatter = ({\n params,\n buckets,\n bucketWidth,\n selectedPrice,\n precision,\n bookType,\n labelCallback,\n}: {\n params: unknown;\n buckets: Bucket[][];\n bucketWidth: number;\n selectedPrice: number;\n precision: number;\n bookType: BookType;\n labelCallback: (key: string) => string;\n}) => {\n const arr = params as unknown as Array<Record<string, unknown>>;\n if (!arr || !Array.isArray(arr) || arr.length === 0) {\n return undefined;\n }\n const candleParam = arr[0] as {\n axisValue: string;\n value: [number, number, number, number, number];\n };\n const booksParam = arr[1] as { value: [string, number, number] };\n const time = new Date(candleParam.axisValue as string);\n\n const candleData = candleParam.value;\n const booksData = booksParam?.value ?? [];\n const bucketsIndex = booksData[2];\n const selectedBuckets = buckets[bucketsIndex];\n\n const matchedBucket = selectedBuckets?.find(\n ({ price }) => selectedPrice >= price && selectedPrice < price + bucketWidth\n );\n const showCandles =\n !!candleData[1] && !!candleData[2] && !!candleData[3] && !!candleData[4];\n\n if (!showCandles && !matchedBucket) {\n return undefined;\n }\n\n return `<p>${time.toLocaleString(undefined, {\n hour: '2-digit',\n minute: '2-digit',\n year: 'numeric',\n day: 'numeric',\n month: 'numeric',\n timeZoneName: 'short',\n })}</p><br />\n${\n showCandles\n ? `<p><b>${labelCallback('candle')}:</b></p>\n<p>${labelCallback('open_price')}: ${candleData[1]} </p>\n<p>${labelCallback('close_price')}: ${candleData[2]} </p>\n<p>${labelCallback('low')}: ${candleData[3]} </p>\n<p>${labelCallback('high')}: ${candleData[4]} </p>\n`\n : ''\n}\n${\n matchedBucket\n ? `<br /><p><b>${labelCallback(bookType === BookType.Order ? 'orders' : 'positions')}:</b></p>\n<p>${labelCallback('price_range')}: ${matchedBucket.price.toFixed(precision - 1)} - ${Number(matchedBucket.price + bucketWidth).toFixed(precision - 1)} </p>\n<p>${\n matchedBucket.sentiment < 0\n ? labelCallback(\n bookType === BookType.Order\n ? 'sell_overbalance'\n : 'short_overbalance'\n )\n : labelCallback(\n bookType === BookType.Order\n ? 'buy_overbalance'\n : 'long_overbalance'\n )\n }: ${Math.abs(matchedBucket.sentiment)}% </p>`\n : ''\n}`;\n};\n\nexport const formatXAxisLabel = (\n value: unknown,\n isGreaterThanTwoWeeks: boolean\n) => {\n const date = new Date(value as string);\n return isGreaterThanTwoWeeks\n ? `${date.toLocaleTimeString(undefined, {\n hour: '2-digit',\n minute: '2-digit',\n })}`\n : `${CHART_CONFIG.X_AXIS_DATE_PADDING}${date.toLocaleDateString(undefined, {\n day: 'numeric',\n })}${CHART_CONFIG.X_AXIS_DATE_PADDING}`;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"chartUtils.js","names":["chroma","BookType","Granularity","TimeSpan","BOOKS_THRESHOLDS","CHART_CONFIG","COLOR_MAP","TIME_THRESHOLDS","getLabelData","_ref","xAxisData","isGreaterThanTwoWeeks","filter","record","index","arr","previousTimestamp","currentDate","Date","previousDate","getDate","getMonth","map","item","name","toLocaleDateString","undefined","month","day","xAxis","y","MAIN_HEIGHT","X_LABEL_SIZE","silent","emphasis","disabled","label","fontFamily","fontSize","position","align","formatter","isDifferenceGreaterThanTwoWeeks","startDate","endDate","date1","date2","differenceInMs","Math","abs","getTime","TWO_WEEKS_MS","getTimeSpanForGranularity","granularity","granularityTimeSpanMap","M5","TwoDays","M15","FiveDays","H1","TwentyDays","H4","NinetyDays","getGradientColor","value","startColor","targetColor","startThreshold","MIN","endThreshold","MAX","colorScale","scale","domain","mode","hex","getRectColor","sentiment","isDark","colorPalette","dark","light","short","long","getTooltipFormatter","_ref2","params","buckets","bucketWidth","selectedPrice","precision","bookType","labelCallback","Array","isArray","length","candleParam","find","series","seriesId","booksParam","sentimentParam","time","axisValue","candleData","bucketsIndex","selectedBuckets","matchedBucket","_ref3","price","showCandles","showSentiment","concat","toLocaleString","hour","minute","year","timeZoneName","Order","toFixed","Number","formatXAxisLabel","date","toLocaleTimeString","X_AXIS_DATE_PADDING"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/utils/chartUtils.ts"],"sourcesContent":["import chroma from 'chroma-js';\n\nimport { BookType, Granularity, TimeSpan } from '../../../../gql/types/graphql';\nimport {\n BOOKS_THRESHOLDS,\n CHART_CONFIG,\n COLOR_MAP,\n TIME_THRESHOLDS,\n} from '../../../constants';\nimport type { Bucket, GetLabelsDataProps, TooltipParam } from '../types';\n\nexport const getLabelData = ({\n xAxisData,\n isGreaterThanTwoWeeks,\n}: GetLabelsDataProps) =>\n xAxisData\n .filter((record, index, arr) => {\n if (index === 0) {\n return false;\n }\n const previousTimestamp = arr[index - 1];\n const currentDate = new Date(record);\n const previousDate = new Date(previousTimestamp);\n\n return isGreaterThanTwoWeeks\n ? currentDate.getDate() !== previousDate.getDate()\n : currentDate.getMonth() !== previousDate.getMonth();\n })\n .map((item) => ({\n name: new Date(item).toLocaleDateString(undefined, {\n month: isGreaterThanTwoWeeks ? 'short' : 'long',\n day: isGreaterThanTwoWeeks ? 'numeric' : undefined,\n }),\n xAxis: item,\n y: CHART_CONFIG.MAIN_HEIGHT + CHART_CONFIG.X_LABEL_SIZE - 22,\n silent: true,\n emphasis: {\n disabled: true,\n },\n label: {\n fontFamily: 'Sofia W03',\n fontSize: 10,\n position: 'bottom',\n align: 'center',\n formatter: '{b}',\n },\n }));\n\nexport const isDifferenceGreaterThanTwoWeeks = (\n startDate: string,\n endDate: string\n) => {\n const date1 = new Date(startDate);\n const date2 = new Date(endDate);\n\n const differenceInMs = Math.abs(date2.getTime() - date1.getTime());\n\n return differenceInMs < TIME_THRESHOLDS.TWO_WEEKS_MS;\n};\n\nexport const getTimeSpanForGranularity = (\n granularity: Granularity\n): TimeSpan => {\n const granularityTimeSpanMap: Record<Granularity, TimeSpan> = {\n [Granularity.M5]: TimeSpan.TwoDays,\n [Granularity.M15]: TimeSpan.FiveDays,\n [Granularity.H1]: TimeSpan.TwentyDays,\n [Granularity.H4]: TimeSpan.NinetyDays,\n };\n\n return granularityTimeSpanMap[granularity] || TimeSpan.TwoDays;\n};\n\nconst getGradientColor = (\n value: number,\n startColor: string,\n targetColor: string\n): string => {\n const startThreshold = BOOKS_THRESHOLDS.MIN;\n const endThreshold = BOOKS_THRESHOLDS.MAX;\n\n const colorScale = chroma\n .scale([startColor, targetColor])\n .domain([startThreshold, endThreshold])\n .mode('rgb');\n\n return colorScale(value).hex();\n};\n\nexport const getRectColor = (sentiment: number, isDark: boolean) => {\n const colorPalette = isDark ? COLOR_MAP.dark : COLOR_MAP.light;\n\n return sentiment < 0\n ? getGradientColor(\n sentiment * -1,\n colorPalette.short[0],\n colorPalette.short[1]\n )\n : getGradientColor(sentiment, colorPalette.long[0], colorPalette.long[1]);\n};\n\nexport const getTooltipFormatter = ({\n params,\n buckets,\n bucketWidth,\n selectedPrice,\n precision,\n bookType,\n labelCallback,\n}: {\n params: TooltipParam[];\n buckets: Bucket[][];\n bucketWidth: number;\n selectedPrice: number;\n precision: number;\n bookType: BookType;\n labelCallback: (key: string) => string;\n}) => {\n if (!params || !Array.isArray(params) || params.length === 0) {\n return undefined;\n }\n const candleParam = params.find(\n (series): series is Extract<TooltipParam, { seriesId: 'candlestick' }> =>\n series.seriesId === 'candlestick'\n );\n const booksParam = params.find(\n (series): series is Extract<TooltipParam, { seriesId: 'heatmap' }> =>\n series.seriesId === 'heatmap'\n );\n const sentimentParam = params.find(\n (series): series is Extract<TooltipParam, { seriesId: 'sentiment' }> =>\n series.seriesId === 'sentiment'\n );\n\n if (!candleParam) {\n return undefined;\n }\n const time = new Date(candleParam.axisValue as string);\n\n const candleData = candleParam.value;\n const bucketsIndex = booksParam?.value[2];\n const selectedBuckets =\n bucketsIndex !== undefined ? buckets[bucketsIndex] : undefined;\n\n const matchedBucket = selectedBuckets?.find(\n ({ price }) => selectedPrice >= price && selectedPrice < price + bucketWidth\n );\n const showCandles =\n !!candleData[1] && !!candleData[2] && !!candleData[3] && !!candleData[4];\n\n if (!showCandles && !matchedBucket) {\n return undefined;\n }\n\n const showSentiment =\n !!sentimentParam?.value[1] && !!sentimentParam?.value[2];\n\n return `<p>${time.toLocaleString(undefined, {\n hour: '2-digit',\n minute: '2-digit',\n year: 'numeric',\n day: 'numeric',\n month: 'numeric',\n timeZoneName: 'short',\n })}</p><br />\n${\n showCandles\n ? `<p><b>${labelCallback('candle')}:</b></p>\n<p>${labelCallback('open_price')}: ${candleData[1]} </p>\n<p>${labelCallback('close_price')}: ${candleData[2]} </p>\n<p>${labelCallback('low')}: ${candleData[3]} </p>\n<p>${labelCallback('high')}: ${candleData[4]} </p>\n`\n : ''\n}\n${\n matchedBucket\n ? `<br /><p><b>${labelCallback(bookType === BookType.Order ? 'orders' : 'positions')}:</b></p>\n<p>${labelCallback('price_range')}: ${matchedBucket.price.toFixed(precision - 1)} - ${Number(matchedBucket.price + bucketWidth).toFixed(precision - 1)} </p>\n<p>${\n matchedBucket.sentiment < 0\n ? labelCallback(\n bookType === BookType.Order\n ? 'sell_overbalance'\n : 'short_overbalance'\n )\n : labelCallback(\n bookType === BookType.Order\n ? 'buy_overbalance'\n : 'long_overbalance'\n )\n }: ${Math.abs(matchedBucket.sentiment)}% </p>`\n : ''\n}${\n showSentiment && sentimentParam\n ? `<br /><p><b>${labelCallback('sentiment')}:</b></p>\n<p>${labelCallback('long')}: ${sentimentParam.value[2].toFixed(2)}% </p>\n<p>${labelCallback('short')}: ${sentimentParam.value[1].toFixed(2)}% </p>`\n : ''\n }`;\n};\n\nexport const formatXAxisLabel = (\n value: unknown,\n isGreaterThanTwoWeeks: boolean\n) => {\n const date = new Date(value as string);\n return isGreaterThanTwoWeeks\n ? `${date.toLocaleTimeString(undefined, {\n hour: '2-digit',\n minute: '2-digit',\n })}`\n : `${CHART_CONFIG.X_AXIS_DATE_PADDING}${date.toLocaleDateString(undefined, {\n day: 'numeric',\n })}${CHART_CONFIG.X_AXIS_DATE_PADDING}`;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ import { colorPalette } from '@oanda/labs-widget-common';
2
+ export const getChartStyles = isDark => {
3
+ const sentimentLongColor = isDark ? colorPalette.darkBlue90 : colorPalette.lightBlue90;
4
+ const sentimentShortColor = isDark ? colorPalette.darkYellow90 : colorPalette.lightYellow90;
5
+ const candleLongColor = isDark ? colorPalette.bottleGreenDark : colorPalette.bottleGreenLight;
6
+ const candleShortColor = isDark ? colorPalette.orange : colorPalette.raspberryLight;
7
+ const sentimentAreaOpacity = isDark ? 0.5 : 0.2;
8
+ const tooltipLinesColor = isDark ? colorPalette.orange : colorPalette.bottleGreenLight;
9
+ const sentimentLabelColor = isDark ? colorPalette.white : colorPalette.black;
10
+ return {
11
+ sentimentLongColor,
12
+ sentimentShortColor,
13
+ candleLongColor,
14
+ candleShortColor,
15
+ sentimentAreaOpacity,
16
+ tooltipLinesColor,
17
+ sentimentLabelColor
18
+ };
19
+ };
20
+ //# sourceMappingURL=getChartStyles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getChartStyles.js","names":["colorPalette","getChartStyles","isDark","sentimentLongColor","darkBlue90","lightBlue90","sentimentShortColor","darkYellow90","lightYellow90","candleLongColor","bottleGreenDark","bottleGreenLight","candleShortColor","orange","raspberryLight","sentimentAreaOpacity","tooltipLinesColor","sentimentLabelColor","white","black"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/utils/getChartStyles.ts"],"sourcesContent":["import { colorPalette } from '@oanda/labs-widget-common';\n\nexport interface ChartStyles {\n sentimentLongColor: string;\n sentimentShortColor: string;\n candleLongColor: string;\n candleShortColor: string;\n sentimentAreaOpacity: number;\n tooltipLinesColor: string;\n sentimentLabelColor: string;\n}\n\nexport const getChartStyles = (isDark: boolean): ChartStyles => {\n const sentimentLongColor = isDark\n ? colorPalette.darkBlue90\n : colorPalette.lightBlue90;\n const sentimentShortColor = isDark\n ? colorPalette.darkYellow90\n : colorPalette.lightYellow90;\n\n const candleLongColor = isDark\n ? colorPalette.bottleGreenDark\n : colorPalette.bottleGreenLight;\n const candleShortColor = isDark\n ? colorPalette.orange\n : colorPalette.raspberryLight;\n const sentimentAreaOpacity = isDark ? 0.5 : 0.2;\n const tooltipLinesColor = isDark\n ? colorPalette.orange\n : colorPalette.bottleGreenLight;\n const sentimentLabelColor = isDark ? colorPalette.white : colorPalette.black;\n\n return {\n sentimentLongColor,\n sentimentShortColor,\n candleLongColor,\n candleShortColor,\n sentimentAreaOpacity,\n tooltipLinesColor,\n sentimentLabelColor,\n };\n};\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,2BAA2B;AAYxD,OAAO,MAAMC,cAAc,GAAIC,MAAe,IAAkB;EAC9D,MAAMC,kBAAkB,GAAGD,MAAM,GAC7BF,YAAY,CAACI,UAAU,GACvBJ,YAAY,CAACK,WAAW;EAC5B,MAAMC,mBAAmB,GAAGJ,MAAM,GAC9BF,YAAY,CAACO,YAAY,GACzBP,YAAY,CAACQ,aAAa;EAE9B,MAAMC,eAAe,GAAGP,MAAM,GAC1BF,YAAY,CAACU,eAAe,GAC5BV,YAAY,CAACW,gBAAgB;EACjC,MAAMC,gBAAgB,GAAGV,MAAM,GAC3BF,YAAY,CAACa,MAAM,GACnBb,YAAY,CAACc,cAAc;EAC/B,MAAMC,oBAAoB,GAAGb,MAAM,GAAG,GAAG,GAAG,GAAG;EAC/C,MAAMc,iBAAiB,GAAGd,MAAM,GAC5BF,YAAY,CAACa,MAAM,GACnBb,YAAY,CAACW,gBAAgB;EACjC,MAAMM,mBAAmB,GAAGf,MAAM,GAAGF,YAAY,CAACkB,KAAK,GAAGlB,YAAY,CAACmB,KAAK;EAE5E,OAAO;IACLhB,kBAAkB;IAClBG,mBAAmB;IACnBG,eAAe;IACfG,gBAAgB;IAChBG,oBAAoB;IACpBC,iBAAiB;IACjBC;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -0,0 +1,116 @@
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
+ import { getLineCommons } from '@oanda/labs-widget-common';
7
+ import { CHART_CONFIG } from '../../../constants';
8
+ export const getGridLines = _ref => {
9
+ let {
10
+ isDark,
11
+ isDesktop
12
+ } = _ref;
13
+ const {
14
+ WIDTH,
15
+ MAIN_HEIGHT,
16
+ MARGIN_BETWEEN,
17
+ SENTIMENT_HEIGHT,
18
+ X_LABEL_SIZE,
19
+ Y_LABEL_SIZE_DESKTOP,
20
+ Y_LABEL_SIZE_MOBILE
21
+ } = CHART_CONFIG;
22
+ return [_objectSpread(_objectSpread({}, getLineCommons(isDark)), {}, {
23
+ top: -2,
24
+ shape: {
25
+ x1: 0,
26
+ y1: 0,
27
+ x2: WIDTH,
28
+ y2: 0
29
+ }
30
+ }), _objectSpread(_objectSpread({}, getLineCommons(isDark)), {}, {
31
+ right: -2,
32
+ shape: {
33
+ x1: 0,
34
+ y1: 0,
35
+ x2: 0,
36
+ y2: MAIN_HEIGHT + X_LABEL_SIZE + 2
37
+ }
38
+ }), _objectSpread(_objectSpread({}, getLineCommons(isDark)), {}, {
39
+ top: MAIN_HEIGHT - 2,
40
+ shape: {
41
+ x1: 0,
42
+ y1: 0,
43
+ x2: WIDTH,
44
+ y2: 0
45
+ }
46
+ }), _objectSpread(_objectSpread({}, getLineCommons(isDark)), {}, {
47
+ left: -2,
48
+ shape: {
49
+ x1: 0,
50
+ y1: 0,
51
+ x2: 0,
52
+ y2: MAIN_HEIGHT + X_LABEL_SIZE + 2
53
+ }
54
+ }), _objectSpread(_objectSpread({}, getLineCommons(isDark)), {}, {
55
+ right: (isDesktop ? Y_LABEL_SIZE_DESKTOP : Y_LABEL_SIZE_MOBILE) - 2,
56
+ top: -2,
57
+ shape: {
58
+ x1: 0,
59
+ y1: 0,
60
+ x2: 0,
61
+ y2: MAIN_HEIGHT
62
+ }
63
+ }), _objectSpread(_objectSpread({}, getLineCommons(isDark)), {}, {
64
+ top: MAIN_HEIGHT + X_LABEL_SIZE,
65
+ shape: {
66
+ x1: 0,
67
+ y1: 0,
68
+ x2: WIDTH,
69
+ y2: 0
70
+ }
71
+ }), _objectSpread(_objectSpread({}, getLineCommons(isDark)), {}, {
72
+ top: MAIN_HEIGHT + X_LABEL_SIZE + MARGIN_BETWEEN - 2,
73
+ shape: {
74
+ x1: 0,
75
+ y1: 0,
76
+ x2: WIDTH,
77
+ y2: 0
78
+ }
79
+ }), _objectSpread(_objectSpread({}, getLineCommons(isDark)), {}, {
80
+ top: MAIN_HEIGHT + X_LABEL_SIZE + MARGIN_BETWEEN - 2,
81
+ right: -2,
82
+ shape: {
83
+ x1: 0,
84
+ y1: 0,
85
+ x2: 0,
86
+ y2: SENTIMENT_HEIGHT
87
+ }
88
+ }), _objectSpread(_objectSpread({}, getLineCommons(isDark)), {}, {
89
+ top: MAIN_HEIGHT + X_LABEL_SIZE + MARGIN_BETWEEN + SENTIMENT_HEIGHT - 3,
90
+ shape: {
91
+ x1: 0,
92
+ y1: 0,
93
+ x2: WIDTH,
94
+ y2: 0
95
+ }
96
+ }), _objectSpread(_objectSpread({}, getLineCommons(isDark)), {}, {
97
+ top: MAIN_HEIGHT + X_LABEL_SIZE + MARGIN_BETWEEN - 2,
98
+ left: -2,
99
+ shape: {
100
+ x1: 0,
101
+ y1: 0,
102
+ x2: 0,
103
+ y2: SENTIMENT_HEIGHT
104
+ }
105
+ }), _objectSpread(_objectSpread({}, getLineCommons(isDark)), {}, {
106
+ right: (isDesktop ? Y_LABEL_SIZE_DESKTOP : Y_LABEL_SIZE_MOBILE) - 3,
107
+ top: MAIN_HEIGHT + X_LABEL_SIZE + MARGIN_BETWEEN - 2,
108
+ shape: {
109
+ x1: 0,
110
+ y1: 0,
111
+ x2: 0,
112
+ y2: SENTIMENT_HEIGHT
113
+ }
114
+ })];
115
+ };
116
+ //# sourceMappingURL=getGridLines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGridLines.js","names":["getLineCommons","CHART_CONFIG","getGridLines","_ref","isDark","isDesktop","WIDTH","MAIN_HEIGHT","MARGIN_BETWEEN","SENTIMENT_HEIGHT","X_LABEL_SIZE","Y_LABEL_SIZE_DESKTOP","Y_LABEL_SIZE_MOBILE","_objectSpread","top","shape","x1","y1","x2","y2","right","left"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/utils/getGridLines.ts"],"sourcesContent":["import { getLineCommons } from '@oanda/labs-widget-common';\n\nimport { CHART_CONFIG } from '../../../constants';\n\nexport const getGridLines = ({\n isDark,\n isDesktop,\n}: {\n isDark: boolean;\n isDesktop: boolean;\n}) => {\n const {\n WIDTH,\n MAIN_HEIGHT,\n MARGIN_BETWEEN,\n SENTIMENT_HEIGHT,\n X_LABEL_SIZE,\n Y_LABEL_SIZE_DESKTOP,\n Y_LABEL_SIZE_MOBILE,\n } = CHART_CONFIG;\n return [\n // Main Top\n {\n ...getLineCommons(isDark),\n top: -2,\n shape: {\n x1: 0,\n y1: 0,\n x2: WIDTH,\n y2: 0,\n },\n },\n // Main Right\n {\n ...getLineCommons(isDark),\n right: -2,\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: MAIN_HEIGHT + X_LABEL_SIZE + 2,\n },\n },\n // Main Bottom\n {\n ...getLineCommons(isDark),\n top: MAIN_HEIGHT - 2,\n shape: {\n x1: 0,\n y1: 0,\n x2: WIDTH,\n y2: 0,\n },\n },\n // Main Left\n {\n ...getLineCommons(isDark),\n left: -2,\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: MAIN_HEIGHT + X_LABEL_SIZE + 2,\n },\n },\n // Main Y Label\n {\n ...getLineCommons(isDark),\n right: (isDesktop ? Y_LABEL_SIZE_DESKTOP : Y_LABEL_SIZE_MOBILE) - 2,\n top: -2,\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: MAIN_HEIGHT,\n },\n },\n // Main X Label\n {\n ...getLineCommons(isDark),\n top: MAIN_HEIGHT + X_LABEL_SIZE,\n shape: {\n x1: 0,\n y1: 0,\n x2: WIDTH,\n y2: 0,\n },\n },\n // Sentiment Top\n {\n ...getLineCommons(isDark),\n top: MAIN_HEIGHT + X_LABEL_SIZE + MARGIN_BETWEEN - 2,\n shape: {\n x1: 0,\n y1: 0,\n x2: WIDTH,\n y2: 0,\n },\n },\n // Sentiment Right\n {\n ...getLineCommons(isDark),\n top: MAIN_HEIGHT + X_LABEL_SIZE + MARGIN_BETWEEN - 2,\n right: -2,\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: SENTIMENT_HEIGHT,\n },\n },\n // Sentiment Bottom\n {\n ...getLineCommons(isDark),\n top: MAIN_HEIGHT + X_LABEL_SIZE + MARGIN_BETWEEN + SENTIMENT_HEIGHT - 3,\n shape: {\n x1: 0,\n y1: 0,\n x2: WIDTH,\n y2: 0,\n },\n },\n // Sentiment Left\n {\n ...getLineCommons(isDark),\n top: MAIN_HEIGHT + X_LABEL_SIZE + MARGIN_BETWEEN - 2,\n left: -2,\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: SENTIMENT_HEIGHT,\n },\n },\n // Sentiment Y Label\n {\n ...getLineCommons(isDark),\n right: (isDesktop ? Y_LABEL_SIZE_DESKTOP : Y_LABEL_SIZE_MOBILE) - 3,\n top: MAIN_HEIGHT + X_LABEL_SIZE + MARGIN_BETWEEN - 2,\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: SENTIMENT_HEIGHT,\n },\n },\n ];\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,10 @@
1
1
  export * from './aggregateBuckets';
2
2
  export * from './chartUtils';
3
+ export * from './getChartStyles';
3
4
  export * from './getTargetBucketWidth';
4
5
  export * from './processBuckets';
5
6
  export * from './processOrderPositionBooks';
6
7
  export * from './processPriceCandles';
8
+ export * from './processSentiments';
7
9
  export * from './validateData';
8
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/utils/index.ts"],"sourcesContent":["export * from './aggregateBuckets';\nexport * from './chartUtils';\nexport * from './getTargetBucketWidth';\nexport * from './processBuckets';\nexport * from './processOrderPositionBooks';\nexport * from './processPriceCandles';\nexport * from './validateData';\n"],"mappings":"AAAA,cAAc,oBAAoB;AAClC,cAAc,cAAc;AAC5B,cAAc,wBAAwB;AACtC,cAAc,kBAAkB;AAChC,cAAc,6BAA6B;AAC3C,cAAc,uBAAuB;AACrC,cAAc,gBAAgB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/utils/index.ts"],"sourcesContent":["export * from './aggregateBuckets';\nexport * from './chartUtils';\nexport * from './getChartStyles';\nexport * from './getTargetBucketWidth';\nexport * from './processBuckets';\nexport * from './processOrderPositionBooks';\nexport * from './processPriceCandles';\nexport * from './processSentiments';\nexport * from './validateData';\n"],"mappings":"AAAA,cAAc,oBAAoB;AAClC,cAAc,cAAc;AAC5B,cAAc,kBAAkB;AAChC,cAAc,wBAAwB;AACtC,cAAc,kBAAkB;AAChC,cAAc,6BAA6B;AAC3C,cAAc,uBAAuB;AACrC,cAAc,qBAAqB;AACnC,cAAc,gBAAgB","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ export const processSentiments = (sentimentsData, xAxisData) => {
2
+ var _sentimentsData$senti;
3
+ if (!(sentimentsData !== null && sentimentsData !== void 0 && (_sentimentsData$senti = sentimentsData.sentiments) !== null && _sentimentsData$senti !== void 0 && (_sentimentsData$senti = _sentimentsData$senti.sentiments) !== null && _sentimentsData$senti !== void 0 && _sentimentsData$senti.length)) {
4
+ return [];
5
+ }
6
+ const sentimentMap = new Map(sentimentsData.sentiments.sentiments.filter(item => {
7
+ var _item$sentiment, _item$sentiment2;
8
+ return (item === null || item === void 0 ? void 0 : item.time) != null && ((_item$sentiment = item.sentiment) === null || _item$sentiment === void 0 ? void 0 : _item$sentiment.shortPercent) != null && ((_item$sentiment2 = item.sentiment) === null || _item$sentiment2 === void 0 ? void 0 : _item$sentiment2.longPercent) != null;
9
+ }).map(item => [item.time, {
10
+ shortPercent: item.sentiment.shortPercent,
11
+ longPercent: item.sentiment.longPercent
12
+ }]));
13
+ return xAxisData.map(time => {
14
+ const sentiment = sentimentMap.get(time);
15
+ if (!sentiment) {
16
+ return undefined;
17
+ }
18
+ return [time, sentiment.shortPercent, sentiment.longPercent];
19
+ }).filter(item => item !== undefined);
20
+ };
21
+ //# sourceMappingURL=processSentiments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processSentiments.js","names":["processSentiments","sentimentsData","xAxisData","_sentimentsData$senti","sentiments","length","sentimentMap","Map","filter","item","_item$sentiment","_item$sentiment2","time","sentiment","shortPercent","longPercent","map","get","undefined"],"sources":["../../../../../../src/CrowdViewWidget/components/Chart/utils/processSentiments.ts"],"sourcesContent":["import type { GetSentimentsQuery } from '../../../../gql/types/graphql';\nimport type { ProcessedSentiment } from '../types';\n\nexport const processSentiments = (\n sentimentsData: GetSentimentsQuery | undefined,\n xAxisData: string[]\n): ProcessedSentiment[] => {\n if (!sentimentsData?.sentiments?.sentiments?.length) {\n return [];\n }\n\n const sentimentMap = new Map(\n sentimentsData.sentiments.sentiments\n .filter(\n (item): item is NonNullable<typeof item> =>\n item?.time != null &&\n item.sentiment?.shortPercent != null &&\n item.sentiment?.longPercent != null\n )\n .map((item) => [\n item.time,\n {\n shortPercent: item.sentiment.shortPercent,\n longPercent: item.sentiment.longPercent,\n },\n ])\n );\n\n return xAxisData\n .map((time) => {\n const sentiment = sentimentMap.get(time);\n if (!sentiment) {\n return undefined;\n }\n return [\n time,\n sentiment.shortPercent,\n sentiment.longPercent,\n ] as ProcessedSentiment;\n })\n .filter((item): item is ProcessedSentiment => item !== undefined);\n};\n"],"mappings":"AAGA,OAAO,MAAMA,iBAAiB,GAAGA,CAC/BC,cAA8C,EAC9CC,SAAmB,KACM;EAAA,IAAAC,qBAAA;EACzB,IAAI,EAACF,cAAc,aAAdA,cAAc,gBAAAE,qBAAA,GAAdF,cAAc,CAAEG,UAAU,cAAAD,qBAAA,gBAAAA,qBAAA,GAA1BA,qBAAA,CAA4BC,UAAU,cAAAD,qBAAA,eAAtCA,qBAAA,CAAwCE,MAAM,GAAE;IACnD,OAAO,EAAE;EACX;EAEA,MAAMC,YAAY,GAAG,IAAIC,GAAG,CAC1BN,cAAc,CAACG,UAAU,CAACA,UAAU,CACjCI,MAAM,CACJC,IAAI;IAAA,IAAAC,eAAA,EAAAC,gBAAA;IAAA,OACH,CAAAF,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEG,IAAI,KAAI,IAAI,IAClB,EAAAF,eAAA,GAAAD,IAAI,CAACI,SAAS,cAAAH,eAAA,uBAAdA,eAAA,CAAgBI,YAAY,KAAI,IAAI,IACpC,EAAAH,gBAAA,GAAAF,IAAI,CAACI,SAAS,cAAAF,gBAAA,uBAAdA,gBAAA,CAAgBI,WAAW,KAAI,IAAI;EAAA,CACvC,CAAC,CACAC,GAAG,CAAEP,IAAI,IAAK,CACbA,IAAI,CAACG,IAAI,EACT;IACEE,YAAY,EAAEL,IAAI,CAACI,SAAS,CAACC,YAAY;IACzCC,WAAW,EAAEN,IAAI,CAACI,SAAS,CAACE;EAC9B,CAAC,CACF,CACL,CAAC;EAED,OAAOb,SAAS,CACbc,GAAG,CAAEJ,IAAI,IAAK;IACb,MAAMC,SAAS,GAAGP,YAAY,CAACW,GAAG,CAACL,IAAI,CAAC;IACxC,IAAI,CAACC,SAAS,EAAE;MACd,OAAOK,SAAS;IAClB;IACA,OAAO,CACLN,IAAI,EACJC,SAAS,CAACC,YAAY,EACtBD,SAAS,CAACE,WAAW,CACtB;EACH,CAAC,CAAC,CACDP,MAAM,CAAEC,IAAI,IAAiCA,IAAI,KAAKS,SAAS,CAAC;AACrE,CAAC","ignoreList":[]}
@@ -14,7 +14,7 @@ export const Legend = _ref => {
14
14
  lang
15
15
  } = useLocale();
16
16
  return React.createElement("div", {
17
- className: "lw-mx-auto lw-flex lw-w-full lw-flex-col lw-items-center lw-space-y-4 lw-pb-6 lw-pt-0 sm:lw-max-w-md lg:lw-max-w-xl"
17
+ className: "lw-mx-auto lw-mt-4 lw-flex lw-w-full lw-flex-col lw-items-center lw-space-y-4 lw-pb-6 lw-pt-0 sm:lw-max-w-md lg:lw-max-w-xl"
18
18
  }, React.createElement(LegendBar, {
19
19
  isDark: isDark,
20
20
  label: lang(bookType === BookType.Order ? 'buy' : 'long'),
@@ -1 +1 @@
1
- {"version":3,"file":"Legend.js","names":["useLocale","React","BookType","BOOKS_THRESHOLDS","LegendBar","Legend","_ref","longValues","MIN","MAX","shortValues","bookType","isDark","lang","createElement","className","label","Order","type","values"],"sources":["../../../../../src/CrowdViewWidget/components/Legend/Legend.tsx"],"sourcesContent":["import { useLocale } from '@oanda/mono-i18n';\nimport React from 'react';\n\nimport { BookType } from '../../../gql/types/graphql';\nimport { BOOKS_THRESHOLDS } from '../../constants';\nimport { LegendBar } from './LegendBar';\n\ninterface LegendProps {\n longValues?: [number, number];\n shortValues?: [number, number];\n bookType: BookType;\n isDark: boolean;\n}\n\nexport const Legend = ({\n longValues = [BOOKS_THRESHOLDS.MIN, BOOKS_THRESHOLDS.MAX],\n shortValues = [BOOKS_THRESHOLDS.MIN, BOOKS_THRESHOLDS.MAX],\n bookType,\n isDark,\n}: LegendProps) => {\n const { lang } = useLocale();\n\n return (\n <div className=\"lw-mx-auto lw-flex lw-w-full lw-flex-col lw-items-center lw-space-y-4 lw-pb-6 lw-pt-0 sm:lw-max-w-md lg:lw-max-w-xl\">\n <LegendBar\n isDark={isDark}\n label={lang(bookType === BookType.Order ? 'buy' : 'long')}\n type=\"long\"\n values={longValues}\n />\n <LegendBar\n isDark={isDark}\n label={lang(bookType === BookType.Order ? 'sell' : 'short')}\n type=\"short\"\n values={shortValues}\n />\n </div>\n );\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,kBAAkB;AAC5C,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,QAAQ,QAAQ,4BAA4B;AACrD,SAASC,gBAAgB,QAAQ,iBAAiB;AAClD,SAASC,SAAS,QAAQ,aAAa;AASvC,OAAO,MAAMC,MAAM,GAAGC,IAAA,IAKH;EAAA,IALI;IACrBC,UAAU,GAAG,CAACJ,gBAAgB,CAACK,GAAG,EAAEL,gBAAgB,CAACM,GAAG,CAAC;IACzDC,WAAW,GAAG,CAACP,gBAAgB,CAACK,GAAG,EAAEL,gBAAgB,CAACM,GAAG,CAAC;IAC1DE,QAAQ;IACRC;EACW,CAAC,GAAAN,IAAA;EACZ,MAAM;IAAEO;EAAK,CAAC,GAAGb,SAAS,CAAC,CAAC;EAE5B,OACEC,KAAA,CAAAa,aAAA;IAAKC,SAAS,EAAC;EAAqH,GAClId,KAAA,CAAAa,aAAA,CAACV,SAAS;IACRQ,MAAM,EAAEA,MAAO;IACfI,KAAK,EAAEH,IAAI,CAACF,QAAQ,KAAKT,QAAQ,CAACe,KAAK,GAAG,KAAK,GAAG,MAAM,CAAE;IAC1DC,IAAI,EAAC,MAAM;IACXC,MAAM,EAAEZ;EAAW,CACpB,CAAC,EACFN,KAAA,CAAAa,aAAA,CAACV,SAAS;IACRQ,MAAM,EAAEA,MAAO;IACfI,KAAK,EAAEH,IAAI,CAACF,QAAQ,KAAKT,QAAQ,CAACe,KAAK,GAAG,MAAM,GAAG,OAAO,CAAE;IAC5DC,IAAI,EAAC,OAAO;IACZC,MAAM,EAAET;EAAY,CACrB,CACE,CAAC;AAEV,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Legend.js","names":["useLocale","React","BookType","BOOKS_THRESHOLDS","LegendBar","Legend","_ref","longValues","MIN","MAX","shortValues","bookType","isDark","lang","createElement","className","label","Order","type","values"],"sources":["../../../../../src/CrowdViewWidget/components/Legend/Legend.tsx"],"sourcesContent":["import { useLocale } from '@oanda/mono-i18n';\nimport React from 'react';\n\nimport { BookType } from '../../../gql/types/graphql';\nimport { BOOKS_THRESHOLDS } from '../../constants';\nimport { LegendBar } from './LegendBar';\n\ninterface LegendProps {\n longValues?: [number, number];\n shortValues?: [number, number];\n bookType: BookType;\n isDark: boolean;\n}\n\nexport const Legend = ({\n longValues = [BOOKS_THRESHOLDS.MIN, BOOKS_THRESHOLDS.MAX],\n shortValues = [BOOKS_THRESHOLDS.MIN, BOOKS_THRESHOLDS.MAX],\n bookType,\n isDark,\n}: LegendProps) => {\n const { lang } = useLocale();\n\n return (\n <div className=\"lw-mx-auto lw-mt-4 lw-flex lw-w-full lw-flex-col lw-items-center lw-space-y-4 lw-pb-6 lw-pt-0 sm:lw-max-w-md lg:lw-max-w-xl\">\n <LegendBar\n isDark={isDark}\n label={lang(bookType === BookType.Order ? 'buy' : 'long')}\n type=\"long\"\n values={longValues}\n />\n <LegendBar\n isDark={isDark}\n label={lang(bookType === BookType.Order ? 'sell' : 'short')}\n type=\"short\"\n values={shortValues}\n />\n </div>\n );\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,kBAAkB;AAC5C,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,QAAQ,QAAQ,4BAA4B;AACrD,SAASC,gBAAgB,QAAQ,iBAAiB;AAClD,SAASC,SAAS,QAAQ,aAAa;AASvC,OAAO,MAAMC,MAAM,GAAGC,IAAA,IAKH;EAAA,IALI;IACrBC,UAAU,GAAG,CAACJ,gBAAgB,CAACK,GAAG,EAAEL,gBAAgB,CAACM,GAAG,CAAC;IACzDC,WAAW,GAAG,CAACP,gBAAgB,CAACK,GAAG,EAAEL,gBAAgB,CAACM,GAAG,CAAC;IAC1DE,QAAQ;IACRC;EACW,CAAC,GAAAN,IAAA;EACZ,MAAM;IAAEO;EAAK,CAAC,GAAGb,SAAS,CAAC,CAAC;EAE5B,OACEC,KAAA,CAAAa,aAAA;IAAKC,SAAS,EAAC;EAA6H,GAC1Id,KAAA,CAAAa,aAAA,CAACV,SAAS;IACRQ,MAAM,EAAEA,MAAO;IACfI,KAAK,EAAEH,IAAI,CAACF,QAAQ,KAAKT,QAAQ,CAACe,KAAK,GAAG,KAAK,GAAG,MAAM,CAAE;IAC1DC,IAAI,EAAC,MAAM;IACXC,MAAM,EAAEZ;EAAW,CACpB,CAAC,EACFN,KAAA,CAAAa,aAAA,CAACV,SAAS;IACRQ,MAAM,EAAEA,MAAO;IACfI,KAAK,EAAEH,IAAI,CAACF,QAAQ,KAAKT,QAAQ,CAACe,KAAK,GAAG,MAAM,GAAG,OAAO,CAAE;IAC5DC,IAAI,EAAC,OAAO;IACZC,MAAM,EAAET;EAAY,CACrB,CACE,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -12,14 +12,24 @@ export const TIME_THRESHOLDS = {
12
12
  TWO_WEEKS_MS: 14 * 24 * 60 * 60 * 1000
13
13
  };
14
14
  export const CHART_CONFIG = {
15
- HEIGHT: 425,
15
+ MAIN_HEIGHT: 400,
16
+ MARGIN_BETWEEN: 50,
17
+ SENTIMENT_HEIGHT: 120,
16
18
  WIDTH: 9999,
17
19
  X_LABEL_SIZE: 40,
18
20
  Y_LABEL_SIZE_DESKTOP: 60,
19
21
  Y_LABEL_SIZE_MOBILE: 40,
20
22
  INITIAL_START_ZOOM: 80,
21
23
  INITIAL_END_ZOOM: 100,
22
- X_AXIS_DATE_PADDING: ' '
24
+ X_AXIS_DATE_PADDING: ' ',
25
+ SENTIMENT_MIN: 0,
26
+ SENTIMENT_MAX: 100,
27
+ SENTIMENT_INTERVAL: 25,
28
+ SENTIMENT_TEXT_OFFSET: 16
29
+ };
30
+ export const CHART_CONFIG_CALCULATED = {
31
+ FULL_HEIGHT: CHART_CONFIG.MAIN_HEIGHT + CHART_CONFIG.MARGIN_BETWEEN + CHART_CONFIG.SENTIMENT_HEIGHT + CHART_CONFIG.X_LABEL_SIZE,
32
+ SENTIMENT_TEXT_POSITION: CHART_CONFIG.SENTIMENT_HEIGHT + CHART_CONFIG.SENTIMENT_TEXT_OFFSET
23
33
  };
24
34
  export const COLOR_MAP = {
25
35
  dark: {
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["colorPalette","InstrumentId","BOOKS_THRESHOLDS","MIN","MAX","BUCKET_CONFIG","MULTIPLIER","PRICE_PADDING_MULTIPLIER","TIME_THRESHOLDS","TWO_WEEKS_MS","CHART_CONFIG","HEIGHT","WIDTH","X_LABEL_SIZE","Y_LABEL_SIZE_DESKTOP","Y_LABEL_SIZE_MOBILE","INITIAL_START_ZOOM","INITIAL_END_ZOOM","X_AXIS_DATE_PADDING","COLOR_MAP","dark","long","darkBlue10","darkBlue90","short","darkYellow10","darkYellow90","light","lightBlue10","lightBlue90","lightYellow10","lightYellow90","INSTRUMENTS_CONFIG","EUR_AUD","mt5name","v20name","precision","defaultBucketWidth","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","XAU_USD","XAG_USD"],"sources":["../../../src/CrowdViewWidget/constants.ts"],"sourcesContent":["import { colorPalette } from '@oanda/labs-widget-common';\n\nimport { InstrumentId } from './types';\n\nexport const BOOKS_THRESHOLDS = {\n MIN: 0.15,\n MAX: 0.55,\n} as const;\n\nexport const BUCKET_CONFIG = {\n MULTIPLIER: 4,\n PRICE_PADDING_MULTIPLIER: 2,\n} as const;\n\nexport const TIME_THRESHOLDS = {\n TWO_WEEKS_MS: 14 * 24 * 60 * 60 * 1000,\n} as const;\n\nexport const CHART_CONFIG = {\n HEIGHT: 425,\n WIDTH: 9999,\n X_LABEL_SIZE: 40,\n Y_LABEL_SIZE_DESKTOP: 60,\n Y_LABEL_SIZE_MOBILE: 40,\n INITIAL_START_ZOOM: 80,\n INITIAL_END_ZOOM: 100,\n X_AXIS_DATE_PADDING: ' ',\n} as const;\n\nexport const COLOR_MAP = {\n dark: {\n long: [colorPalette.darkBlue10, colorPalette.darkBlue90],\n short: [colorPalette.darkYellow10, colorPalette.darkYellow90],\n },\n light: {\n long: [colorPalette.lightBlue10, colorPalette.lightBlue90],\n short: [colorPalette.lightYellow10, colorPalette.lightYellow90],\n },\n} as const;\n\nexport const INSTRUMENTS_CONFIG: Record<\n InstrumentId,\n {\n precision: number;\n defaultBucketWidth: number;\n v20name: string;\n mt5name: string;\n }\n> = {\n [InstrumentId.EUR_AUD]: {\n mt5name: 'EURAUD',\n v20name: 'EUR_AUD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.EUR_GBP]: {\n mt5name: 'EURGBP',\n v20name: 'EUR_GBP',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.EUR_JPY]: {\n mt5name: 'EURJPY',\n v20name: 'EUR_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.EUR_USD]: {\n mt5name: 'EURUSD',\n v20name: 'EUR_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.EUR_CHF]: {\n mt5name: 'EURCHF',\n v20name: 'EUR_CHF',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.USD_CHF]: {\n mt5name: 'USDCHF',\n v20name: 'USD_CHF',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.USD_JPY]: {\n mt5name: 'USDJPY',\n v20name: 'USD_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.USD_CAD]: {\n mt5name: 'USDCAD',\n v20name: 'USD_CAD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.GBP_USD]: {\n mt5name: 'GBPUSD',\n v20name: 'GBP_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.GBP_JPY]: {\n mt5name: 'GBPJPY',\n v20name: 'GBP_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.GBP_CHF]: {\n mt5name: 'GBPCHF',\n v20name: 'GBP_CHF',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.AUD_JPY]: {\n mt5name: 'AUDJPY',\n v20name: 'AUD_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.AUD_USD]: {\n mt5name: 'AUDUSD',\n v20name: 'AUD_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.NZD_USD]: {\n mt5name: 'NZDUSD',\n v20name: 'NZD_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.XAU_USD]: {\n mt5name: 'XAUUSD',\n v20name: 'XAU_USD',\n precision: 3,\n defaultBucketWidth: 0.5,\n },\n [InstrumentId.XAG_USD]: {\n mt5name: 'XAGUSD',\n v20name: 'XAG_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"constants.js","names":["colorPalette","InstrumentId","BOOKS_THRESHOLDS","MIN","MAX","BUCKET_CONFIG","MULTIPLIER","PRICE_PADDING_MULTIPLIER","TIME_THRESHOLDS","TWO_WEEKS_MS","CHART_CONFIG","MAIN_HEIGHT","MARGIN_BETWEEN","SENTIMENT_HEIGHT","WIDTH","X_LABEL_SIZE","Y_LABEL_SIZE_DESKTOP","Y_LABEL_SIZE_MOBILE","INITIAL_START_ZOOM","INITIAL_END_ZOOM","X_AXIS_DATE_PADDING","SENTIMENT_MIN","SENTIMENT_MAX","SENTIMENT_INTERVAL","SENTIMENT_TEXT_OFFSET","CHART_CONFIG_CALCULATED","FULL_HEIGHT","SENTIMENT_TEXT_POSITION","COLOR_MAP","dark","long","darkBlue10","darkBlue90","short","darkYellow10","darkYellow90","light","lightBlue10","lightBlue90","lightYellow10","lightYellow90","INSTRUMENTS_CONFIG","EUR_AUD","mt5name","v20name","precision","defaultBucketWidth","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","XAU_USD","XAG_USD"],"sources":["../../../src/CrowdViewWidget/constants.ts"],"sourcesContent":["import { colorPalette } from '@oanda/labs-widget-common';\n\nimport { InstrumentId } from './types';\n\nexport const BOOKS_THRESHOLDS = {\n MIN: 0.15,\n MAX: 0.55,\n} as const;\n\nexport const BUCKET_CONFIG = {\n MULTIPLIER: 4,\n PRICE_PADDING_MULTIPLIER: 2,\n} as const;\n\nexport const TIME_THRESHOLDS = {\n TWO_WEEKS_MS: 14 * 24 * 60 * 60 * 1000,\n} as const;\n\nexport const CHART_CONFIG = {\n MAIN_HEIGHT: 400,\n MARGIN_BETWEEN: 50,\n SENTIMENT_HEIGHT: 120,\n WIDTH: 9999,\n X_LABEL_SIZE: 40,\n Y_LABEL_SIZE_DESKTOP: 60,\n Y_LABEL_SIZE_MOBILE: 40,\n INITIAL_START_ZOOM: 80,\n INITIAL_END_ZOOM: 100,\n X_AXIS_DATE_PADDING: ' ',\n SENTIMENT_MIN: 0,\n SENTIMENT_MAX: 100,\n SENTIMENT_INTERVAL: 25,\n SENTIMENT_TEXT_OFFSET: 16,\n} as const;\n\nexport const CHART_CONFIG_CALCULATED = {\n FULL_HEIGHT:\n CHART_CONFIG.MAIN_HEIGHT +\n CHART_CONFIG.MARGIN_BETWEEN +\n CHART_CONFIG.SENTIMENT_HEIGHT +\n CHART_CONFIG.X_LABEL_SIZE,\n SENTIMENT_TEXT_POSITION:\n CHART_CONFIG.SENTIMENT_HEIGHT + CHART_CONFIG.SENTIMENT_TEXT_OFFSET,\n};\n\nexport const COLOR_MAP = {\n dark: {\n long: [colorPalette.darkBlue10, colorPalette.darkBlue90],\n short: [colorPalette.darkYellow10, colorPalette.darkYellow90],\n },\n light: {\n long: [colorPalette.lightBlue10, colorPalette.lightBlue90],\n short: [colorPalette.lightYellow10, colorPalette.lightYellow90],\n },\n} as const;\n\nexport const INSTRUMENTS_CONFIG: Record<\n InstrumentId,\n {\n precision: number;\n defaultBucketWidth: number;\n v20name: string;\n mt5name: string;\n }\n> = {\n [InstrumentId.EUR_AUD]: {\n mt5name: 'EURAUD',\n v20name: 'EUR_AUD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.EUR_GBP]: {\n mt5name: 'EURGBP',\n v20name: 'EUR_GBP',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.EUR_JPY]: {\n mt5name: 'EURJPY',\n v20name: 'EUR_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.EUR_USD]: {\n mt5name: 'EURUSD',\n v20name: 'EUR_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.EUR_CHF]: {\n mt5name: 'EURCHF',\n v20name: 'EUR_CHF',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.USD_CHF]: {\n mt5name: 'USDCHF',\n v20name: 'USD_CHF',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.USD_JPY]: {\n mt5name: 'USDJPY',\n v20name: 'USD_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.USD_CAD]: {\n mt5name: 'USDCAD',\n v20name: 'USD_CAD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.GBP_USD]: {\n mt5name: 'GBPUSD',\n v20name: 'GBP_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.GBP_JPY]: {\n mt5name: 'GBPJPY',\n v20name: 'GBP_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.GBP_CHF]: {\n mt5name: 'GBPCHF',\n v20name: 'GBP_CHF',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.AUD_JPY]: {\n mt5name: 'AUDJPY',\n v20name: 'AUD_JPY',\n precision: 3,\n defaultBucketWidth: 0.05,\n },\n [InstrumentId.AUD_USD]: {\n mt5name: 'AUDUSD',\n v20name: 'AUD_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.NZD_USD]: {\n mt5name: 'NZDUSD',\n v20name: 'NZD_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n [InstrumentId.XAU_USD]: {\n mt5name: 'XAUUSD',\n v20name: 'XAU_USD',\n precision: 3,\n defaultBucketWidth: 0.5,\n },\n [InstrumentId.XAG_USD]: {\n mt5name: 'XAGUSD',\n v20name: 'XAG_USD',\n precision: 5,\n defaultBucketWidth: 0.0005,\n },\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ var _templateObject;
2
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
3
+ import { gql } from '@apollo/client';
4
+ const getSentiments = gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query GetSentiments(\n $instrument: String!\n $granularity: Granularity!\n $timeSpan: TimeSpan!\n ) {\n sentiments(\n instrument: $instrument\n granularity: $granularity\n timeSpan: $timeSpan\n ) {\n sentiments {\n sentiment {\n longPercent\n shortPercent\n }\n time\n }\n }\n }\n"])));
5
+ export { getSentiments };
6
+ //# sourceMappingURL=getSentiments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSentiments.js","names":["gql","getSentiments","_templateObject","_taggedTemplateLiteral"],"sources":["../../../src/gql/getSentiments.ts"],"sourcesContent":["import { gql } from '@apollo/client';\n\nconst getSentiments = gql`\n query GetSentiments(\n $instrument: String!\n $granularity: Granularity!\n $timeSpan: TimeSpan!\n ) {\n sentiments(\n instrument: $instrument\n granularity: $granularity\n timeSpan: $timeSpan\n ) {\n sentiments {\n sentiment {\n longPercent\n shortPercent\n }\n time\n }\n }\n }\n`;\n\nexport { getSentiments };\n"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,gBAAgB;AAEpC,MAAMC,aAAa,GAAGD,GAAG,CAAAE,eAAA,KAAAA,eAAA,GAAAC,sBAAA,wXAoBxB;AAED,SAASF,aAAa","ignoreList":[]}
@@ -1,7 +1,8 @@
1
1
  import * as types from './graphql';
2
2
  const documents = {
3
3
  '\n query GetOrderPositionBooks(\n $instrument: String!\n $bookType: BookType!\n $timeSpan: TimeSpan!\n $granularity: Granularity!\n $maxBookPrice: Float\n $minBookPrice: Float\n ) {\n orderPositionBooks(\n instrument: $instrument\n bookType: $bookType\n timeSpan: $timeSpan\n granularity: $granularity\n maxBookPrice: $maxBookPrice\n minBookPrice: $minBookPrice\n ) {\n bucketWidth\n price\n time\n buckets {\n price\n sentiment\n }\n }\n }\n': types.GetOrderPositionBooksDocument,
4
- '\n query GetPriceCandles(\n $dataSource: DataSource!\n $division: Division!\n $instrument: String!\n $granularity: Granularity!\n $timeSpan: TimeSpan!\n ) {\n priceCandles(\n dataSource: $dataSource\n division: $division\n instrument: $instrument\n granularity: $granularity\n timeSpan: $timeSpan\n ) {\n candle {\n point\n high\n low\n open\n close\n }\n }\n }\n': types.GetPriceCandlesDocument
4
+ '\n query GetPriceCandles(\n $dataSource: DataSource!\n $division: Division!\n $instrument: String!\n $granularity: Granularity!\n $timeSpan: TimeSpan!\n ) {\n priceCandles(\n dataSource: $dataSource\n division: $division\n instrument: $instrument\n granularity: $granularity\n timeSpan: $timeSpan\n ) {\n candle {\n point\n high\n low\n open\n close\n }\n }\n }\n': types.GetPriceCandlesDocument,
5
+ '\n query GetSentiments(\n $instrument: String!\n $granularity: Granularity!\n $timeSpan: TimeSpan!\n ) {\n sentiments(\n instrument: $instrument\n granularity: $granularity\n timeSpan: $timeSpan\n ) {\n sentiments {\n sentiment {\n longPercent\n shortPercent\n }\n time\n }\n }\n }\n': types.GetSentimentsDocument
5
6
  };
6
7
  export function graphql(source) {
7
8
  var _source;
@@ -1 +1 @@
1
- {"version":3,"file":"gql.js","names":["types","documents","GetOrderPositionBooksDocument","GetPriceCandlesDocument","graphql","source","_source"],"sources":["../../../../src/gql/types/gql.ts"],"sourcesContent":["/* eslint-disable */\nimport * as types from './graphql';\nimport { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';\n\n/**\n * Map of all GraphQL operations in the project.\n *\n * This map has several performance disadvantages:\n * 1. It is not tree-shakeable, so it will include all operations in the project.\n * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.\n * 3. It does not support dead code elimination, so it will add unused operations.\n *\n * Therefore it is highly recommended to use the babel or swc plugin for production.\n */\nconst documents = {\n '\\n query GetOrderPositionBooks(\\n $instrument: String!\\n $bookType: BookType!\\n $timeSpan: TimeSpan!\\n $granularity: Granularity!\\n $maxBookPrice: Float\\n $minBookPrice: Float\\n ) {\\n orderPositionBooks(\\n instrument: $instrument\\n bookType: $bookType\\n timeSpan: $timeSpan\\n granularity: $granularity\\n maxBookPrice: $maxBookPrice\\n minBookPrice: $minBookPrice\\n ) {\\n bucketWidth\\n price\\n time\\n buckets {\\n price\\n sentiment\\n }\\n }\\n }\\n':\n types.GetOrderPositionBooksDocument,\n '\\n query GetPriceCandles(\\n $dataSource: DataSource!\\n $division: Division!\\n $instrument: String!\\n $granularity: Granularity!\\n $timeSpan: TimeSpan!\\n ) {\\n priceCandles(\\n dataSource: $dataSource\\n division: $division\\n instrument: $instrument\\n granularity: $granularity\\n timeSpan: $timeSpan\\n ) {\\n candle {\\n point\\n high\\n low\\n open\\n close\\n }\\n }\\n }\\n':\n types.GetPriceCandlesDocument,\n};\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n *\n *\n * @example\n * ```ts\n * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`);\n * ```\n *\n * The query argument is unknown!\n * Please regenerate the types.\n */\nexport function graphql(source: string): unknown;\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: '\\n query GetOrderPositionBooks(\\n $instrument: String!\\n $bookType: BookType!\\n $timeSpan: TimeSpan!\\n $granularity: Granularity!\\n $maxBookPrice: Float\\n $minBookPrice: Float\\n ) {\\n orderPositionBooks(\\n instrument: $instrument\\n bookType: $bookType\\n timeSpan: $timeSpan\\n granularity: $granularity\\n maxBookPrice: $maxBookPrice\\n minBookPrice: $minBookPrice\\n ) {\\n bucketWidth\\n price\\n time\\n buckets {\\n price\\n sentiment\\n }\\n }\\n }\\n'\n): (typeof documents)['\\n query GetOrderPositionBooks(\\n $instrument: String!\\n $bookType: BookType!\\n $timeSpan: TimeSpan!\\n $granularity: Granularity!\\n $maxBookPrice: Float\\n $minBookPrice: Float\\n ) {\\n orderPositionBooks(\\n instrument: $instrument\\n bookType: $bookType\\n timeSpan: $timeSpan\\n granularity: $granularity\\n maxBookPrice: $maxBookPrice\\n minBookPrice: $minBookPrice\\n ) {\\n bucketWidth\\n price\\n time\\n buckets {\\n price\\n sentiment\\n }\\n }\\n }\\n'];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: '\\n query GetPriceCandles(\\n $dataSource: DataSource!\\n $division: Division!\\n $instrument: String!\\n $granularity: Granularity!\\n $timeSpan: TimeSpan!\\n ) {\\n priceCandles(\\n dataSource: $dataSource\\n division: $division\\n instrument: $instrument\\n granularity: $granularity\\n timeSpan: $timeSpan\\n ) {\\n candle {\\n point\\n high\\n low\\n open\\n close\\n }\\n }\\n }\\n'\n): (typeof documents)['\\n query GetPriceCandles(\\n $dataSource: DataSource!\\n $division: Division!\\n $instrument: String!\\n $granularity: Granularity!\\n $timeSpan: TimeSpan!\\n ) {\\n priceCandles(\\n dataSource: $dataSource\\n division: $division\\n instrument: $instrument\\n granularity: $granularity\\n timeSpan: $timeSpan\\n ) {\\n candle {\\n point\\n high\\n low\\n open\\n close\\n }\\n }\\n }\\n'];\n\nexport function graphql(source: string) {\n return (documents as any)[source] ?? {};\n}\n\nexport type DocumentType<TDocumentNode extends DocumentNode<any, any>> =\n TDocumentNode extends DocumentNode<infer TType, any> ? TType : never;\n"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,WAAW;AAalC,MAAMC,SAAS,GAAG;EAChB,+hBAA+hB,EAC7hBD,KAAK,CAACE,6BAA6B;EACrC,8cAA8c,EAC5cF,KAAK,CAACG;AACV,CAAC;AA6BD,OAAO,SAASC,OAAOA,CAACC,MAAc,EAAE;EAAA,IAAAC,OAAA;EACtC,QAAAA,OAAA,GAAQL,SAAS,CAASI,MAAM,CAAC,cAAAC,OAAA,cAAAA,OAAA,GAAI,CAAC,CAAC;AACzC","ignoreList":[]}
1
+ {"version":3,"file":"gql.js","names":["types","documents","GetOrderPositionBooksDocument","GetPriceCandlesDocument","GetSentimentsDocument","graphql","source","_source"],"sources":["../../../../src/gql/types/gql.ts"],"sourcesContent":["/* eslint-disable */\nimport * as types from './graphql';\nimport { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';\n\n/**\n * Map of all GraphQL operations in the project.\n *\n * This map has several performance disadvantages:\n * 1. It is not tree-shakeable, so it will include all operations in the project.\n * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.\n * 3. It does not support dead code elimination, so it will add unused operations.\n *\n * Therefore it is highly recommended to use the babel or swc plugin for production.\n */\nconst documents = {\n '\\n query GetOrderPositionBooks(\\n $instrument: String!\\n $bookType: BookType!\\n $timeSpan: TimeSpan!\\n $granularity: Granularity!\\n $maxBookPrice: Float\\n $minBookPrice: Float\\n ) {\\n orderPositionBooks(\\n instrument: $instrument\\n bookType: $bookType\\n timeSpan: $timeSpan\\n granularity: $granularity\\n maxBookPrice: $maxBookPrice\\n minBookPrice: $minBookPrice\\n ) {\\n bucketWidth\\n price\\n time\\n buckets {\\n price\\n sentiment\\n }\\n }\\n }\\n':\n types.GetOrderPositionBooksDocument,\n '\\n query GetPriceCandles(\\n $dataSource: DataSource!\\n $division: Division!\\n $instrument: String!\\n $granularity: Granularity!\\n $timeSpan: TimeSpan!\\n ) {\\n priceCandles(\\n dataSource: $dataSource\\n division: $division\\n instrument: $instrument\\n granularity: $granularity\\n timeSpan: $timeSpan\\n ) {\\n candle {\\n point\\n high\\n low\\n open\\n close\\n }\\n }\\n }\\n':\n types.GetPriceCandlesDocument,\n '\\n query GetSentiments(\\n $instrument: String!\\n $granularity: Granularity!\\n $timeSpan: TimeSpan!\\n ) {\\n sentiments(\\n instrument: $instrument\\n granularity: $granularity\\n timeSpan: $timeSpan\\n ) {\\n sentiments {\\n sentiment {\\n longPercent\\n shortPercent\\n }\\n time\\n }\\n }\\n }\\n':\n types.GetSentimentsDocument,\n};\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n *\n *\n * @example\n * ```ts\n * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`);\n * ```\n *\n * The query argument is unknown!\n * Please regenerate the types.\n */\nexport function graphql(source: string): unknown;\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: '\\n query GetOrderPositionBooks(\\n $instrument: String!\\n $bookType: BookType!\\n $timeSpan: TimeSpan!\\n $granularity: Granularity!\\n $maxBookPrice: Float\\n $minBookPrice: Float\\n ) {\\n orderPositionBooks(\\n instrument: $instrument\\n bookType: $bookType\\n timeSpan: $timeSpan\\n granularity: $granularity\\n maxBookPrice: $maxBookPrice\\n minBookPrice: $minBookPrice\\n ) {\\n bucketWidth\\n price\\n time\\n buckets {\\n price\\n sentiment\\n }\\n }\\n }\\n'\n): (typeof documents)['\\n query GetOrderPositionBooks(\\n $instrument: String!\\n $bookType: BookType!\\n $timeSpan: TimeSpan!\\n $granularity: Granularity!\\n $maxBookPrice: Float\\n $minBookPrice: Float\\n ) {\\n orderPositionBooks(\\n instrument: $instrument\\n bookType: $bookType\\n timeSpan: $timeSpan\\n granularity: $granularity\\n maxBookPrice: $maxBookPrice\\n minBookPrice: $minBookPrice\\n ) {\\n bucketWidth\\n price\\n time\\n buckets {\\n price\\n sentiment\\n }\\n }\\n }\\n'];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: '\\n query GetPriceCandles(\\n $dataSource: DataSource!\\n $division: Division!\\n $instrument: String!\\n $granularity: Granularity!\\n $timeSpan: TimeSpan!\\n ) {\\n priceCandles(\\n dataSource: $dataSource\\n division: $division\\n instrument: $instrument\\n granularity: $granularity\\n timeSpan: $timeSpan\\n ) {\\n candle {\\n point\\n high\\n low\\n open\\n close\\n }\\n }\\n }\\n'\n): (typeof documents)['\\n query GetPriceCandles(\\n $dataSource: DataSource!\\n $division: Division!\\n $instrument: String!\\n $granularity: Granularity!\\n $timeSpan: TimeSpan!\\n ) {\\n priceCandles(\\n dataSource: $dataSource\\n division: $division\\n instrument: $instrument\\n granularity: $granularity\\n timeSpan: $timeSpan\\n ) {\\n candle {\\n point\\n high\\n low\\n open\\n close\\n }\\n }\\n }\\n'];\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: '\\n query GetSentiments(\\n $instrument: String!\\n $granularity: Granularity!\\n $timeSpan: TimeSpan!\\n ) {\\n sentiments(\\n instrument: $instrument\\n granularity: $granularity\\n timeSpan: $timeSpan\\n ) {\\n sentiments {\\n sentiment {\\n longPercent\\n shortPercent\\n }\\n time\\n }\\n }\\n }\\n'\n): (typeof documents)['\\n query GetSentiments(\\n $instrument: String!\\n $granularity: Granularity!\\n $timeSpan: TimeSpan!\\n ) {\\n sentiments(\\n instrument: $instrument\\n granularity: $granularity\\n timeSpan: $timeSpan\\n ) {\\n sentiments {\\n sentiment {\\n longPercent\\n shortPercent\\n }\\n time\\n }\\n }\\n }\\n'];\n\nexport function graphql(source: string) {\n return (documents as any)[source] ?? {};\n}\n\nexport type DocumentType<TDocumentNode extends DocumentNode<any, any>> =\n TDocumentNode extends DocumentNode<infer TType, any> ? TType : never;\n"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,WAAW;AAalC,MAAMC,SAAS,GAAG;EAChB,+hBAA+hB,EAC7hBD,KAAK,CAACE,6BAA6B;EACrC,8cAA8c,EAC5cF,KAAK,CAACG,uBAAuB;EAC/B,kXAAkX,EAChXH,KAAK,CAACI;AACV,CAAC;AAmCD,OAAO,SAASC,OAAOA,CAACC,MAAc,EAAE;EAAA,IAAAC,OAAA;EACtC,QAAAA,OAAA,GAAQN,SAAS,CAASK,MAAM,CAAC,cAAAC,OAAA,cAAAA,OAAA,GAAI,CAAC,CAAC;AACzC","ignoreList":[]}
@@ -623,4 +623,165 @@ export const GetPriceCandlesDocument = {
623
623
  }
624
624
  }]
625
625
  };
626
+ export const GetSentimentsDocument = {
627
+ kind: 'Document',
628
+ definitions: [{
629
+ kind: 'OperationDefinition',
630
+ operation: 'query',
631
+ name: {
632
+ kind: 'Name',
633
+ value: 'GetSentiments'
634
+ },
635
+ variableDefinitions: [{
636
+ kind: 'VariableDefinition',
637
+ variable: {
638
+ kind: 'Variable',
639
+ name: {
640
+ kind: 'Name',
641
+ value: 'instrument'
642
+ }
643
+ },
644
+ type: {
645
+ kind: 'NonNullType',
646
+ type: {
647
+ kind: 'NamedType',
648
+ name: {
649
+ kind: 'Name',
650
+ value: 'String'
651
+ }
652
+ }
653
+ }
654
+ }, {
655
+ kind: 'VariableDefinition',
656
+ variable: {
657
+ kind: 'Variable',
658
+ name: {
659
+ kind: 'Name',
660
+ value: 'granularity'
661
+ }
662
+ },
663
+ type: {
664
+ kind: 'NonNullType',
665
+ type: {
666
+ kind: 'NamedType',
667
+ name: {
668
+ kind: 'Name',
669
+ value: 'Granularity'
670
+ }
671
+ }
672
+ }
673
+ }, {
674
+ kind: 'VariableDefinition',
675
+ variable: {
676
+ kind: 'Variable',
677
+ name: {
678
+ kind: 'Name',
679
+ value: 'timeSpan'
680
+ }
681
+ },
682
+ type: {
683
+ kind: 'NonNullType',
684
+ type: {
685
+ kind: 'NamedType',
686
+ name: {
687
+ kind: 'Name',
688
+ value: 'TimeSpan'
689
+ }
690
+ }
691
+ }
692
+ }],
693
+ selectionSet: {
694
+ kind: 'SelectionSet',
695
+ selections: [{
696
+ kind: 'Field',
697
+ name: {
698
+ kind: 'Name',
699
+ value: 'sentiments'
700
+ },
701
+ arguments: [{
702
+ kind: 'Argument',
703
+ name: {
704
+ kind: 'Name',
705
+ value: 'instrument'
706
+ },
707
+ value: {
708
+ kind: 'Variable',
709
+ name: {
710
+ kind: 'Name',
711
+ value: 'instrument'
712
+ }
713
+ }
714
+ }, {
715
+ kind: 'Argument',
716
+ name: {
717
+ kind: 'Name',
718
+ value: 'granularity'
719
+ },
720
+ value: {
721
+ kind: 'Variable',
722
+ name: {
723
+ kind: 'Name',
724
+ value: 'granularity'
725
+ }
726
+ }
727
+ }, {
728
+ kind: 'Argument',
729
+ name: {
730
+ kind: 'Name',
731
+ value: 'timeSpan'
732
+ },
733
+ value: {
734
+ kind: 'Variable',
735
+ name: {
736
+ kind: 'Name',
737
+ value: 'timeSpan'
738
+ }
739
+ }
740
+ }],
741
+ selectionSet: {
742
+ kind: 'SelectionSet',
743
+ selections: [{
744
+ kind: 'Field',
745
+ name: {
746
+ kind: 'Name',
747
+ value: 'sentiments'
748
+ },
749
+ selectionSet: {
750
+ kind: 'SelectionSet',
751
+ selections: [{
752
+ kind: 'Field',
753
+ name: {
754
+ kind: 'Name',
755
+ value: 'sentiment'
756
+ },
757
+ selectionSet: {
758
+ kind: 'SelectionSet',
759
+ selections: [{
760
+ kind: 'Field',
761
+ name: {
762
+ kind: 'Name',
763
+ value: 'longPercent'
764
+ }
765
+ }, {
766
+ kind: 'Field',
767
+ name: {
768
+ kind: 'Name',
769
+ value: 'shortPercent'
770
+ }
771
+ }]
772
+ }
773
+ }, {
774
+ kind: 'Field',
775
+ name: {
776
+ kind: 'Name',
777
+ value: 'time'
778
+ }
779
+ }]
780
+ }
781
+ }]
782
+ }
783
+ }]
784
+ }
785
+ }]
786
+ };
626
787
  //# sourceMappingURL=graphql.js.map