@vuu-ui/vuu-data-test 2.1.19-beta.2 → 2.1.19-beta.3

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 (288) hide show
  1. package/cjs/ArrayProxy.js +72 -0
  2. package/cjs/ArrayProxy.js.map +1 -0
  3. package/cjs/RuntimeVisualLink.js +73 -0
  4. package/cjs/RuntimeVisualLink.js.map +1 -0
  5. package/cjs/SessionTable.js +98 -0
  6. package/cjs/SessionTable.js.map +1 -0
  7. package/cjs/Table.js +128 -0
  8. package/cjs/Table.js.map +1 -0
  9. package/cjs/TickingArrayDataSource.js +397 -0
  10. package/cjs/TickingArrayDataSource.js.map +1 -0
  11. package/cjs/UpdateGenerator.js +94 -0
  12. package/cjs/UpdateGenerator.js.map +1 -0
  13. package/cjs/basket/BasketModule.js +282 -0
  14. package/cjs/basket/BasketModule.js.map +1 -0
  15. package/cjs/basket/basket-schemas.js +123 -0
  16. package/cjs/basket/basket-schemas.js.map +1 -0
  17. package/cjs/basket/reference-data/constituents.js +40 -0
  18. package/cjs/basket/reference-data/constituents.js.map +1 -0
  19. package/cjs/basket/reference-data/ftse100.js +105 -0
  20. package/cjs/basket/reference-data/ftse100.js.map +1 -0
  21. package/cjs/basket/reference-data/hsi.js +87 -0
  22. package/cjs/basket/reference-data/hsi.js.map +1 -0
  23. package/cjs/basket/reference-data/nasdaq100.js +108 -0
  24. package/cjs/basket/reference-data/nasdaq100.js.map +1 -0
  25. package/cjs/basket/reference-data/sp500.js +46 -0
  26. package/cjs/basket/reference-data/sp500.js.map +1 -0
  27. package/cjs/core/module/ModuleContainer.js +43 -0
  28. package/cjs/core/module/ModuleContainer.js.map +1 -0
  29. package/cjs/core/module/VuuModule.js +764 -0
  30. package/cjs/core/module/VuuModule.js.map +1 -0
  31. package/cjs/core/table/TableContainer.js +139 -0
  32. package/cjs/core/table/TableContainer.js.map +1 -0
  33. package/cjs/data-utils.js +55 -0
  34. package/cjs/data-utils.js.map +1 -0
  35. package/cjs/default-column-definitions.js +10 -0
  36. package/cjs/default-column-definitions.js.map +1 -0
  37. package/cjs/index.js +46 -0
  38. package/cjs/index.js.map +1 -0
  39. package/cjs/local-datasource-provider/LocalDatasourceProvider.js +70 -0
  40. package/cjs/local-datasource-provider/LocalDatasourceProvider.js.map +1 -0
  41. package/cjs/makeSuggestions.js +26 -0
  42. package/cjs/makeSuggestions.js.map +1 -0
  43. package/cjs/schemas.js +28 -0
  44. package/cjs/schemas.js.map +1 -0
  45. package/cjs/session-table-utils.js +12 -0
  46. package/cjs/session-table-utils.js.map +1 -0
  47. package/cjs/simul/SimulModule.js +187 -0
  48. package/cjs/simul/SimulModule.js.map +1 -0
  49. package/cjs/simul/reference-data/accounts.js +27 -0
  50. package/cjs/simul/reference-data/accounts.js.map +1 -0
  51. package/cjs/simul/reference-data/algos.js +6 -0
  52. package/cjs/simul/reference-data/algos.js.map +1 -0
  53. package/cjs/simul/reference-data/currencies.js +6 -0
  54. package/cjs/simul/reference-data/currencies.js.map +1 -0
  55. package/cjs/simul/reference-data/instruments-extended.js +19 -0
  56. package/cjs/simul/reference-data/instruments-extended.js.map +1 -0
  57. package/cjs/simul/reference-data/instruments.js +87 -0
  58. package/cjs/simul/reference-data/instruments.js.map +1 -0
  59. package/cjs/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js +6 -0
  60. package/cjs/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js.map +1 -0
  61. package/cjs/simul/reference-data/isin-generator/fixtures/alphabet.js +31 -0
  62. package/cjs/simul/reference-data/isin-generator/fixtures/alphabet.js.map +1 -0
  63. package/cjs/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js +9 -0
  64. package/cjs/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js.map +1 -0
  65. package/cjs/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js +17 -0
  66. package/cjs/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js.map +1 -0
  67. package/cjs/simul/reference-data/isin-generator/generate-cusip-check-code.js +24 -0
  68. package/cjs/simul/reference-data/isin-generator/generate-cusip-check-code.js.map +1 -0
  69. package/cjs/simul/reference-data/isin-generator/generate-cusip-without-check-code.js +13 -0
  70. package/cjs/simul/reference-data/isin-generator/generate-cusip-without-check-code.js.map +1 -0
  71. package/cjs/simul/reference-data/isin-generator/generate-cusip.js +13 -0
  72. package/cjs/simul/reference-data/isin-generator/generate-cusip.js.map +1 -0
  73. package/cjs/simul/reference-data/isin-generator/generate-random-alphanumeric.js +8 -0
  74. package/cjs/simul/reference-data/isin-generator/generate-random-alphanumeric.js.map +1 -0
  75. package/cjs/simul/reference-data/isin-generator/generate-random-base-ten-number.js +6 -0
  76. package/cjs/simul/reference-data/isin-generator/generate-random-base-ten-number.js.map +1 -0
  77. package/cjs/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js +14 -0
  78. package/cjs/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js.map +1 -0
  79. package/cjs/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js +14 -0
  80. package/cjs/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js.map +1 -0
  81. package/cjs/simul/reference-data/isin-generator/index.js +295 -0
  82. package/cjs/simul/reference-data/isin-generator/index.js.map +1 -0
  83. package/cjs/simul/reference-data/isin-generator/is-odd.js +6 -0
  84. package/cjs/simul/reference-data/isin-generator/is-odd.js.map +1 -0
  85. package/cjs/simul/reference-data/locations.js +17 -0
  86. package/cjs/simul/reference-data/locations.js.map +1 -0
  87. package/cjs/simul/reference-data/lotsizes.js +28 -0
  88. package/cjs/simul/reference-data/lotsizes.js.map +1 -0
  89. package/cjs/simul/reference-data/orderStatus.js +6 -0
  90. package/cjs/simul/reference-data/orderStatus.js.map +1 -0
  91. package/cjs/simul/reference-data/orders.js +55 -0
  92. package/cjs/simul/reference-data/orders.js.map +1 -0
  93. package/cjs/simul/reference-data/parent-child-orders.js +146 -0
  94. package/cjs/simul/reference-data/parent-child-orders.js.map +1 -0
  95. package/cjs/simul/reference-data/prices.js +91 -0
  96. package/cjs/simul/reference-data/prices.js.map +1 -0
  97. package/cjs/simul/reference-data/sides.js +6 -0
  98. package/cjs/simul/reference-data/sides.js.map +1 -0
  99. package/cjs/simul/simul-schemas.js +148 -0
  100. package/cjs/simul/simul-schemas.js.map +1 -0
  101. package/cjs/test/TestModule.js +190 -0
  102. package/cjs/test/TestModule.js.map +1 -0
  103. package/cjs/vuu-row-generator.js +74 -0
  104. package/cjs/vuu-row-generator.js.map +1 -0
  105. package/esm/ArrayProxy.js +70 -0
  106. package/esm/ArrayProxy.js.map +1 -0
  107. package/esm/RuntimeVisualLink.js +71 -0
  108. package/esm/RuntimeVisualLink.js.map +1 -0
  109. package/esm/SessionTable.js +95 -0
  110. package/esm/SessionTable.js.map +1 -0
  111. package/esm/Table.js +124 -0
  112. package/esm/Table.js.map +1 -0
  113. package/esm/TickingArrayDataSource.js +395 -0
  114. package/esm/TickingArrayDataSource.js.map +1 -0
  115. package/esm/UpdateGenerator.js +92 -0
  116. package/esm/UpdateGenerator.js.map +1 -0
  117. package/esm/basket/BasketModule.js +278 -0
  118. package/esm/basket/BasketModule.js.map +1 -0
  119. package/esm/basket/basket-schemas.js +120 -0
  120. package/esm/basket/basket-schemas.js.map +1 -0
  121. package/esm/basket/reference-data/constituents.js +38 -0
  122. package/esm/basket/reference-data/constituents.js.map +1 -0
  123. package/esm/basket/reference-data/ftse100.js +103 -0
  124. package/esm/basket/reference-data/ftse100.js.map +1 -0
  125. package/esm/basket/reference-data/hsi.js +85 -0
  126. package/esm/basket/reference-data/hsi.js.map +1 -0
  127. package/esm/basket/reference-data/nasdaq100.js +106 -0
  128. package/esm/basket/reference-data/nasdaq100.js.map +1 -0
  129. package/esm/basket/reference-data/sp500.js +44 -0
  130. package/esm/basket/reference-data/sp500.js.map +1 -0
  131. package/esm/core/module/ModuleContainer.js +41 -0
  132. package/esm/core/module/ModuleContainer.js.map +1 -0
  133. package/esm/core/module/VuuModule.js +762 -0
  134. package/esm/core/module/VuuModule.js.map +1 -0
  135. package/esm/core/table/TableContainer.js +137 -0
  136. package/esm/core/table/TableContainer.js.map +1 -0
  137. package/esm/data-utils.js +50 -0
  138. package/esm/data-utils.js.map +1 -0
  139. package/esm/default-column-definitions.js +8 -0
  140. package/esm/default-column-definitions.js.map +1 -0
  141. package/esm/index.js +16 -0
  142. package/esm/index.js.map +1 -0
  143. package/esm/local-datasource-provider/LocalDatasourceProvider.js +68 -0
  144. package/esm/local-datasource-provider/LocalDatasourceProvider.js.map +1 -0
  145. package/esm/makeSuggestions.js +24 -0
  146. package/esm/makeSuggestions.js.map +1 -0
  147. package/esm/schemas.js +24 -0
  148. package/esm/schemas.js.map +1 -0
  149. package/esm/session-table-utils.js +10 -0
  150. package/esm/session-table-utils.js.map +1 -0
  151. package/esm/simul/SimulModule.js +184 -0
  152. package/esm/simul/SimulModule.js.map +1 -0
  153. package/esm/simul/reference-data/accounts.js +25 -0
  154. package/esm/simul/reference-data/accounts.js.map +1 -0
  155. package/esm/simul/reference-data/algos.js +4 -0
  156. package/esm/simul/reference-data/algos.js.map +1 -0
  157. package/esm/simul/reference-data/currencies.js +4 -0
  158. package/esm/simul/reference-data/currencies.js.map +1 -0
  159. package/esm/simul/reference-data/instruments-extended.js +17 -0
  160. package/esm/simul/reference-data/instruments-extended.js.map +1 -0
  161. package/esm/simul/reference-data/instruments.js +82 -0
  162. package/esm/simul/reference-data/instruments.js.map +1 -0
  163. package/esm/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js +4 -0
  164. package/esm/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js.map +1 -0
  165. package/esm/simul/reference-data/isin-generator/fixtures/alphabet.js +29 -0
  166. package/esm/simul/reference-data/isin-generator/fixtures/alphabet.js.map +1 -0
  167. package/esm/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js +7 -0
  168. package/esm/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js.map +1 -0
  169. package/esm/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js +15 -0
  170. package/esm/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js.map +1 -0
  171. package/esm/simul/reference-data/isin-generator/generate-cusip-check-code.js +22 -0
  172. package/esm/simul/reference-data/isin-generator/generate-cusip-check-code.js.map +1 -0
  173. package/esm/simul/reference-data/isin-generator/generate-cusip-without-check-code.js +11 -0
  174. package/esm/simul/reference-data/isin-generator/generate-cusip-without-check-code.js.map +1 -0
  175. package/esm/simul/reference-data/isin-generator/generate-cusip.js +11 -0
  176. package/esm/simul/reference-data/isin-generator/generate-cusip.js.map +1 -0
  177. package/esm/simul/reference-data/isin-generator/generate-random-alphanumeric.js +6 -0
  178. package/esm/simul/reference-data/isin-generator/generate-random-alphanumeric.js.map +1 -0
  179. package/esm/simul/reference-data/isin-generator/generate-random-base-ten-number.js +4 -0
  180. package/esm/simul/reference-data/isin-generator/generate-random-base-ten-number.js.map +1 -0
  181. package/esm/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js +12 -0
  182. package/esm/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js.map +1 -0
  183. package/esm/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js +12 -0
  184. package/esm/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js.map +1 -0
  185. package/esm/simul/reference-data/isin-generator/index.js +293 -0
  186. package/esm/simul/reference-data/isin-generator/index.js.map +1 -0
  187. package/esm/simul/reference-data/isin-generator/is-odd.js +4 -0
  188. package/esm/simul/reference-data/isin-generator/is-odd.js.map +1 -0
  189. package/esm/simul/reference-data/locations.js +14 -0
  190. package/esm/simul/reference-data/locations.js.map +1 -0
  191. package/esm/simul/reference-data/lotsizes.js +26 -0
  192. package/esm/simul/reference-data/lotsizes.js.map +1 -0
  193. package/esm/simul/reference-data/orderStatus.js +4 -0
  194. package/esm/simul/reference-data/orderStatus.js.map +1 -0
  195. package/esm/simul/reference-data/orders.js +52 -0
  196. package/esm/simul/reference-data/orders.js.map +1 -0
  197. package/esm/simul/reference-data/parent-child-orders.js +141 -0
  198. package/esm/simul/reference-data/parent-child-orders.js.map +1 -0
  199. package/esm/simul/reference-data/prices.js +88 -0
  200. package/esm/simul/reference-data/prices.js.map +1 -0
  201. package/esm/simul/reference-data/sides.js +4 -0
  202. package/esm/simul/reference-data/sides.js.map +1 -0
  203. package/esm/simul/simul-schemas.js +145 -0
  204. package/esm/simul/simul-schemas.js.map +1 -0
  205. package/esm/test/TestModule.js +188 -0
  206. package/esm/test/TestModule.js.map +1 -0
  207. package/esm/vuu-row-generator.js +68 -0
  208. package/esm/vuu-row-generator.js.map +1 -0
  209. package/package.json +13 -10
  210. package/types/RuntimeVisualLink.d.ts +2 -2
  211. package/types/Table.d.ts +8 -8
  212. package/types/TickingArrayDataSource.d.ts +25 -6
  213. package/types/basket/BasketModule.d.ts +9 -9
  214. package/types/basket/reference-data/prices.d.ts +1 -1
  215. package/types/core/module/VuuModule.d.ts +13 -6
  216. package/types/core/table/TableContainer.d.ts +1 -1
  217. package/types/data-utils.d.ts +1 -0
  218. package/types/default-column-definitions.d.ts +2 -0
  219. package/types/makeSuggestions.d.ts +2 -1
  220. package/types/schemas.d.ts +1 -1
  221. package/types/simul/reference-data/instruments-extended.d.ts +1 -1
  222. package/types/simul/reference-data/instruments.d.ts +4 -2
  223. package/types/simul/reference-data/orders.d.ts +1 -1
  224. package/types/simul/reference-data/parent-child-orders.d.ts +2 -2
  225. package/types/simul/reference-data/prices.d.ts +4 -2
  226. package/types/test/TestModule.d.ts +3 -2
  227. package/types/test/index.d.ts +0 -1
  228. package/src/ArrayProxy.js +0 -38
  229. package/src/RuntimeVisualLink.js +0 -45
  230. package/src/SessionTable.js +0 -49
  231. package/src/Table.js +0 -96
  232. package/src/TickingArrayDataSource.js +0 -208
  233. package/src/UpdateGenerator.js +0 -72
  234. package/src/basket/BasketModule.js +0 -272
  235. package/src/basket/basket-schemas.js +0 -355
  236. package/src/basket/index.js +0 -2
  237. package/src/basket/reference-data/constituents.js +0 -76
  238. package/src/basket/reference-data/ftse100.js +0 -686
  239. package/src/basket/reference-data/hsi.js +0 -1047
  240. package/src/basket/reference-data/nasdaq100.js +0 -812
  241. package/src/basket/reference-data/prices.js +0 -43
  242. package/src/basket/reference-data/sp500.js +0 -315
  243. package/src/core/module/ModuleContainer.js +0 -21
  244. package/src/core/module/VuuModule.js +0 -476
  245. package/src/core/table/TableContainer.js +0 -97
  246. package/src/data-utils.js +0 -53
  247. package/src/index.js +0 -13
  248. package/src/local-datasource-provider/LocalDatasourceProvider.js +0 -44
  249. package/src/makeSuggestions.js +0 -20
  250. package/src/rowUpdates.js +0 -0
  251. package/src/schemas.js +0 -19
  252. package/src/session-table-utils.js +0 -16
  253. package/src/simul/SimulModule.js +0 -175
  254. package/src/simul/index.js +0 -2
  255. package/src/simul/reference-data/accounts.js +0 -23
  256. package/src/simul/reference-data/algos.js +0 -9
  257. package/src/simul/reference-data/currencies.js +0 -8
  258. package/src/simul/reference-data/index.js +0 -5
  259. package/src/simul/reference-data/instrument-prices.js +0 -48
  260. package/src/simul/reference-data/instruments-extended.js +0 -12
  261. package/src/simul/reference-data/instruments.js +0 -67
  262. package/src/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js +0 -2
  263. package/src/simul/reference-data/isin-generator/fixtures/alphabet.js +0 -27
  264. package/src/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js +0 -7
  265. package/src/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js +0 -13
  266. package/src/simul/reference-data/isin-generator/generate-cusip-check-code.js +0 -17
  267. package/src/simul/reference-data/isin-generator/generate-cusip-without-check-code.js +0 -8
  268. package/src/simul/reference-data/isin-generator/generate-cusip.js +0 -8
  269. package/src/simul/reference-data/isin-generator/generate-random-alphanumeric.js +0 -3
  270. package/src/simul/reference-data/isin-generator/generate-random-base-ten-number.js +0 -2
  271. package/src/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js +0 -7
  272. package/src/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js +0 -7
  273. package/src/simul/reference-data/isin-generator/index.js +0 -280
  274. package/src/simul/reference-data/isin-generator/is-odd.js +0 -2
  275. package/src/simul/reference-data/locations.js +0 -45
  276. package/src/simul/reference-data/lotsizes.js +0 -24
  277. package/src/simul/reference-data/orderStatus.js +0 -6
  278. package/src/simul/reference-data/orders.js +0 -64
  279. package/src/simul/reference-data/parent-child-orders.js +0 -117
  280. package/src/simul/reference-data/priceStrategies.js +0 -8
  281. package/src/simul/reference-data/prices.js +0 -78
  282. package/src/simul/reference-data/sides.js +0 -5
  283. package/src/simul/simul-schemas.js +0 -428
  284. package/src/test/TestModule.js +0 -95
  285. package/src/test/index.js +0 -1
  286. package/src/test/test-schemas.js +0 -74
  287. package/src/vuu-row-generator.js +0 -71
  288. package/types/test/test-schemas.d.ts +0 -3
@@ -1,208 +0,0 @@
1
- import { ArrayDataSource } from "@vuu-ui/vuu-data-local";
2
- import { isInlineEditingSession, isRpcSuccess, isTypeaheadRequest } from "@vuu-ui/vuu-utils";
3
- import { makeSuggestions } from "./makeSuggestions.js";
4
- class TickingArrayDataSource extends ArrayDataSource {
5
- #menuRpcServices;
6
- #pendingVisualLink;
7
- #rpcMenuServices;
8
- #rpcServices;
9
- #sessionTables;
10
- #sessionDataSource = void 0;
11
- #table;
12
- #selectionLinkSubscribers;
13
- #visualLinkService;
14
- #getVisualLinks;
15
- #vuuModule;
16
- constructor({ data, getVisualLinks, rpcServices, rpcMenuServices, sessionTables, table, menu, visualLink, visualLinkService, vuuModule, ...arrayDataSourceProps }){
17
- if (void 0 === data && void 0 === table) throw Error("TickingArrayDataSource must be constructed with data");
18
- super({
19
- ...arrayDataSourceProps,
20
- data: data ?? table?.data ?? [],
21
- dataMap: table?.map
22
- });
23
- this._menu = menu;
24
- this.#rpcMenuServices = rpcMenuServices;
25
- this.#pendingVisualLink = visualLink;
26
- this.#rpcServices = rpcServices;
27
- this.#sessionTables = sessionTables;
28
- this.#table = table;
29
- this.#visualLinkService = visualLinkService;
30
- this.#getVisualLinks = getVisualLinks;
31
- this.#vuuModule = vuuModule;
32
- if (table) {
33
- this.tableSchema = table.schema;
34
- table.on("insert", this.insert);
35
- table.on("update", this.updateRowWithSessionCheck);
36
- table.on("delete", this.deleteRow);
37
- }
38
- }
39
- updateRowWithSessionCheck = (row, columnName, sessionId)=>{
40
- if (sessionId && sessionId === this.viewport) this.updateRow(row, columnName);
41
- else if (sessionId) console.warn("THIS IS NEVER EXPECTED TO HAPPEN");
42
- else this.#sessionDataSource || this.updateRow(row, columnName);
43
- };
44
- async subscribe(subscribeProps, callback) {
45
- const subscription = super.subscribe(subscribeProps, callback);
46
- if (this.#pendingVisualLink) {
47
- this.visualLink = this.#pendingVisualLink;
48
- this.#pendingVisualLink = void 0;
49
- }
50
- return subscription;
51
- }
52
- unsubscribe() {
53
- super.unsubscribe();
54
- this.#table = void 0;
55
- }
56
- set range(range) {
57
- super.range = range;
58
- }
59
- get range() {
60
- return super.range;
61
- }
62
- set links(links) {
63
- super.links = links;
64
- }
65
- get links() {
66
- return this.#getVisualLinks?.(this.table.table);
67
- }
68
- getSelectedRowIds() {
69
- return Array.from(this.selectedRows);
70
- }
71
- handleSessionMessage = (msg)=>{
72
- if ("subscribed" === msg.type) ;
73
- else if ("viewport-update" === msg.type) {
74
- if (void 0 !== msg.size && msg.size !== this.size) this.emit("resize", msg.size);
75
- this.clientCallback?.(msg);
76
- }
77
- };
78
- createSessionDataSource(sessionTable) {
79
- if (this.#vuuModule) return this.#vuuModule?.createDataSource(sessionTable.table, sessionTable.table);
80
- throw Error("[TickingArrayDataSource] unable to createSessionDataSource, not constructed with VuuModule");
81
- }
82
- async beginEditSession(editSessionMode = "inline-all-rows") {
83
- const rpcResponse = await this?.rpcRequest?.({
84
- type: "RPC_REQUEST",
85
- rpcName: "beginEditSession",
86
- params: {
87
- editSessionMode
88
- }
89
- });
90
- if (isRpcSuccess(rpcResponse)) {
91
- const { table: sessionTable } = rpcResponse.data;
92
- if (!isInlineEditingSession(editSessionMode)) return this.#vuuModule?.createDataSource(sessionTable.table, sessionTable.table, this.config);
93
- this.#sessionDataSource = this.#vuuModule?.createDataSource(sessionTable.table, sessionTable.table, this.config);
94
- this.#sessionDataSource?.subscribe({
95
- range: this.range
96
- }, this.handleSessionMessage);
97
- } else throw Error(`[VuuDataSource] beginEditSession ${rpcResponse.errorMessage}`);
98
- }
99
- async editCell(key, column, data) {
100
- console.log(`[VuuDataSource] editCell ${this.#sessionDataSource?.viewport} rowKey ${key}, column ${column}, value ${data}`);
101
- const rpcHost = this.#sessionDataSource ?? this;
102
- return rpcHost.rpcRequest?.({
103
- type: "RPC_REQUEST",
104
- rpcName: "editCell",
105
- params: {
106
- column,
107
- data,
108
- key
109
- }
110
- });
111
- }
112
- async endEditSession(saveChanges = false) {
113
- const type = "RPC_REQUEST";
114
- const rpcName = "endEditSession";
115
- const sessionDataSource = this.#sessionDataSource;
116
- const rpcHost = sessionDataSource ?? this;
117
- if (sessionDataSource) this.#sessionDataSource = void 0;
118
- const rpcResponse = await rpcHost.rpcRequest?.(saveChanges ? {
119
- type,
120
- rpcName,
121
- params: {
122
- save: true
123
- }
124
- } : {
125
- type,
126
- rpcName,
127
- params: {}
128
- });
129
- if (isRpcSuccess(rpcResponse)) {
130
- sessionDataSource?.unsubscribe();
131
- this.sendRowsToClient(true);
132
- } else if (rpcResponse?.errorMessage === "stale update") {
133
- sessionDataSource?.unsubscribe();
134
- this.sendRowsToClient(true);
135
- } else throw Error("unknown error");
136
- }
137
- async rpcRequest(rpcRequest) {
138
- if (isTypeaheadRequest(rpcRequest)) {
139
- const { params: { column, starts } } = rpcRequest;
140
- const data = await this.getTypeaheadSuggestions(column, starts);
141
- return {
142
- type: "SUCCESS_RESULT",
143
- data
144
- };
145
- }
146
- {
147
- const rpcService = this.#rpcServices?.find((service)=>service.rpcName === rpcRequest.rpcName);
148
- if (rpcService) return rpcService.service({
149
- ...rpcRequest,
150
- context: {
151
- type: "VIEWPORT_CONTEXT",
152
- viewPortId: this.viewport
153
- }
154
- });
155
- throw Error(`[TickingArrayDataSource] no service to handle RPC request ${rpcRequest.rpcName}`);
156
- }
157
- }
158
- async menuRpcCall(rpcRequest) {
159
- const rpcService = this.#rpcMenuServices?.find((service)=>service.rpcName === rpcRequest.rpcName);
160
- if (rpcService) return rpcService.service({
161
- ...rpcRequest,
162
- vpId: this.viewport
163
- });
164
- throw Error(`[TickingArrayDataSource] menuRpcCall no service for ${rpcRequest.rpcName}`);
165
- }
166
- getTypeaheadSuggestions(column, pattern) {
167
- if (this.#table) {
168
- const columnIndex = this.columnMap[column];
169
- if (void 0 !== columnIndex) return makeSuggestions(this.currentData, columnIndex, pattern);
170
- console.warn(`[TickingArrayDataSource] getTypeaheadSuggestions. No column ${column}`);
171
- return Promise.resolve([]);
172
- }
173
- throw Error("cannot call getTypeaheadSuggestions on TickingDataSource if table has not been provided");
174
- }
175
- get visualLink() {
176
- return this._config.visualLink;
177
- }
178
- set visualLink(visualLink) {
179
- this._config = {
180
- ...this._config,
181
- visualLink
182
- };
183
- if (visualLink) {
184
- const { parentClientVpId, link: { fromColumn, toColumn } } = visualLink;
185
- if (this.viewport) this.#visualLinkService?.({
186
- childVpId: this.viewport,
187
- childColumnName: fromColumn,
188
- type: "CREATE_VISUAL_LINK",
189
- parentVpId: parentClientVpId,
190
- parentColumnName: toColumn
191
- }).then((response)=>{
192
- this.emit("visual-link-created", response);
193
- });
194
- } else this.#visualLinkService?.({
195
- childVpId: this.viewport,
196
- type: "REMOVE_VISUAL_LINK"
197
- }).then(()=>{
198
- this.emit("visual-link-removed");
199
- });
200
- }
201
- freeze() {
202
- super.freeze();
203
- }
204
- unfreeze() {
205
- super.unfreeze();
206
- }
207
- }
208
- export { TickingArrayDataSource };
@@ -1,72 +0,0 @@
1
- import { generateNextBidAsk, nextRandomDouble, random } from "./data-utils.js";
2
- const getNewValue = (value)=>{
3
- const multiplier = random(0, 100) / 1000;
4
- const direction = random(0, 10) >= 5 ? 1 : -1;
5
- return value + value * multiplier * direction;
6
- };
7
- class BaseUpdateGenerator {
8
- table;
9
- range;
10
- updating = false;
11
- timer;
12
- tickingColumns;
13
- constructor(tickingColumns){
14
- this.tickingColumns = tickingColumns;
15
- }
16
- setRange(range) {
17
- this.range = range;
18
- if (!this.updating && this.table) this.startUpdating();
19
- }
20
- setTable(table) {
21
- this.table = table;
22
- }
23
- startUpdating() {
24
- this.updating = true;
25
- this.update();
26
- }
27
- stopUpdating() {
28
- this.updating = false;
29
- if (this.timer) {
30
- window.clearTimeout(this.timer);
31
- this.timer = void 0;
32
- }
33
- }
34
- update = ()=>{
35
- if (this.range && this.table) {
36
- const data = this.table?.data;
37
- const { bid, ask, last, ...rest } = this.tickingColumns;
38
- if (data && data?.length > 0) {
39
- const maxRange = Math.min(this.range.to, data.length);
40
- for(let rowIndex = this.range.from; rowIndex < maxRange; rowIndex++){
41
- let updateCount = 0;
42
- const shallUpdateRow = random(0, 10) < 2;
43
- if (shallUpdateRow) {
44
- const rowUpdates = this.table.data[rowIndex];
45
- const row = data[rowIndex];
46
- if (void 0 !== bid && void 0 !== ask) {
47
- const { [bid]: currentBid, [ask]: currentAsk } = row;
48
- const [newBid, newAsk] = generateNextBidAsk(currentBid, currentAsk, 10, 5, nextRandomDouble);
49
- rowUpdates[ask] = newAsk;
50
- rowUpdates[bid] = newBid;
51
- if (void 0 !== last) {
52
- const newLast = Math.round((currentAsk + (newAsk - currentAsk) / 2) * 100) / 100.0;
53
- rowUpdates[last] = newLast;
54
- }
55
- }
56
- for (const colIdx of Object.values(rest)){
57
- const shallUpdateColumn = random(0, 10) < 5;
58
- if (shallUpdateColumn) {
59
- updateCount += 1;
60
- const newValue = getNewValue(row[colIdx]);
61
- if (this.table) rowUpdates[colIdx] = newValue;
62
- }
63
- }
64
- if (this.table && updateCount > 0) this.table.updateRow(rowUpdates);
65
- }
66
- }
67
- }
68
- }
69
- if (this.updating) this.timer = window.setTimeout(this.update, 500);
70
- };
71
- }
72
- export { BaseUpdateGenerator };
@@ -1,272 +0,0 @@
1
- import { VuuModule } from "../core/module/VuuModule.js";
2
- import TableContainer from "../core/table/TableContainer.js";
3
- import { schemas } from "./basket-schemas.js";
4
- import reference_data_constituents from "./reference-data/constituents.js";
5
- const { createTable: createTable } = TableContainer;
6
- let basketIncrement = 1;
7
- const createBasketTradingRow = (basketId, basketName, side = "BUY", status = "OFF MARKET")=>[
8
- basketId,
9
- basketName,
10
- 0,
11
- 1.25,
12
- `steve-${basketIncrement++}`,
13
- side,
14
- status,
15
- 1000000,
16
- 1250000,
17
- 100
18
- ];
19
- const undefinedTables = {
20
- algoType: void 0,
21
- basket: void 0,
22
- basketTrading: void 0,
23
- basketTradingConstituent: void 0,
24
- basketConstituent: void 0,
25
- basketTradingConstituentJoin: void 0,
26
- priceStrategyType: void 0
27
- };
28
- const buildDataColumnMap = (tableName)=>Object.values(schemas[tableName].columns).reduce((map, col, index)=>{
29
- map[col.name] = index;
30
- return map;
31
- }, {});
32
- const tableMaps = {
33
- algoType: buildDataColumnMap("algoType"),
34
- basket: buildDataColumnMap("basket"),
35
- basketTrading: buildDataColumnMap("basketTrading"),
36
- basketTradingConstituent: buildDataColumnMap("basketTradingConstituent"),
37
- basketConstituent: buildDataColumnMap("basketConstituent"),
38
- basketTradingConstituentJoin: buildDataColumnMap("basketTradingConstituentJoin"),
39
- priceStrategyType: buildDataColumnMap("priceStrategyType")
40
- };
41
- const basketTradingConstituent = TableContainer.createTable(schemas.basketTradingConstituent, [], tableMaps.basketTradingConstituent);
42
- class BasketModule extends VuuModule {
43
- #tables = {
44
- algoType: createTable(schemas.algoType, [
45
- [
46
- "Sniper",
47
- 0
48
- ],
49
- [
50
- "Dark Liquidity",
51
- 1
52
- ],
53
- [
54
- "VWAP",
55
- 2
56
- ],
57
- [
58
- "POV",
59
- 3
60
- ],
61
- [
62
- "Dynamic Close",
63
- 4
64
- ]
65
- ], tableMaps.algoType),
66
- basket: createTable(schemas.basket, [
67
- [
68
- ".NASDAQ100",
69
- ".NASDAQ100",
70
- 0,
71
- 0
72
- ],
73
- [
74
- ".HSI",
75
- ".HSI",
76
- 0,
77
- 0
78
- ],
79
- [
80
- ".FTSE100",
81
- ".FTSE100",
82
- 0,
83
- 0
84
- ],
85
- [
86
- ".SP500",
87
- ".SP500",
88
- 0,
89
- 0
90
- ]
91
- ], tableMaps.basket),
92
- basketConstituent: createTable(schemas.basketConstituent, reference_data_constituents, tableMaps.basketConstituent),
93
- basketTrading: createTable(schemas.basketTrading, [], tableMaps.basketTrading),
94
- basketTradingConstituent: basketTradingConstituent,
95
- basketTradingConstituentJoin: TableContainer.createJoinTable({
96
- module: "BASKET",
97
- table: "basketTradingConstituentJoin"
98
- }, {
99
- module: "BASKET",
100
- table: "basketTradingConstituent"
101
- }, {
102
- module: "SIMUL",
103
- table: "prices"
104
- }, "ric"),
105
- priceStrategyType: createTable(schemas.priceStrategyType, [
106
- [
107
- "Peg to Near Touch",
108
- 0
109
- ],
110
- [
111
- "Far Touch",
112
- 1
113
- ],
114
- [
115
- "Limit",
116
- 2
117
- ],
118
- [
119
- "Algo",
120
- 3
121
- ]
122
- ], tableMaps.priceStrategyType)
123
- };
124
- constructor(){
125
- super("BASKET");
126
- }
127
- get menus() {
128
- return {
129
- ...undefinedTables,
130
- basket: {
131
- name: "ROOT",
132
- menus: [
133
- {
134
- context: "selected-rows",
135
- filter: "",
136
- name: "Add Basket",
137
- rpcName: "CREATE_NEW_BASKET"
138
- }
139
- ]
140
- }
141
- };
142
- }
143
- get schemas() {
144
- return schemas;
145
- }
146
- get services() {
147
- return {
148
- ...undefinedTables,
149
- basket: [
150
- {
151
- rpcName: "createBasket",
152
- service: this.createNewBasket
153
- }
154
- ],
155
- basketTrading: [
156
- {
157
- rpcName: "sendToMarket",
158
- service: this.sendToMarket
159
- },
160
- {
161
- rpcName: "takeOffMarket",
162
- service: this.takeOffMarket
163
- }
164
- ],
165
- basketTradingConstituentJoin: [
166
- {
167
- rpcName: "addConstituent",
168
- service: this.addConstituent
169
- }
170
- ]
171
- };
172
- }
173
- get menuServices() {
174
- return {
175
- ...undefinedTables
176
- };
177
- }
178
- get tables() {
179
- return this.#tables;
180
- }
181
- get visualLinks() {
182
- return {
183
- ...undefinedTables,
184
- basketConstituent: [
185
- {
186
- fromColumn: "basketId",
187
- toColumn: "id",
188
- toTable: "basket"
189
- }
190
- ]
191
- };
192
- }
193
- createTradingBasket(basketId, basketName) {
194
- const basketTradingRow = createBasketTradingRow(basketId, basketName);
195
- this.tables.basketTrading.insert(basketTradingRow);
196
- const { basketId: key } = buildDataColumnMap("basketConstituent");
197
- const constituents = this.tables.basketConstituent.data.filter((c)=>c[key] === basketId);
198
- const { instanceId } = tableMaps.basketTrading;
199
- constituents.forEach(([, , description, , ric, , , quantity, weighting])=>{
200
- const algo = "";
201
- const algoParams = "";
202
- const limitPrice = 95;
203
- const notionalLocal = 0;
204
- const notionalUsd = 0;
205
- const pctFilled = 0;
206
- const priceSpread = 0;
207
- const priceStrategyId = "";
208
- const side = "BUY";
209
- const venue = "venue";
210
- const basketInstanceId = basketTradingRow[instanceId];
211
- const basketTradingConstituentRow = [
212
- algo,
213
- algoParams,
214
- basketId,
215
- description,
216
- basketInstanceId,
217
- `${basketInstanceId}-${ric}`,
218
- limitPrice,
219
- notionalLocal,
220
- notionalUsd,
221
- pctFilled,
222
- priceSpread,
223
- priceStrategyId,
224
- quantity,
225
- ric,
226
- side,
227
- venue,
228
- weighting
229
- ];
230
- basketTradingConstituent.insert(basketTradingConstituentRow);
231
- });
232
- return basketTradingRow[instanceId];
233
- }
234
- createNewBasket = async (rpcRequest)=>{
235
- if ("VIEWPORT_CONTEXT" === rpcRequest.context.type) {
236
- const { sourceBasketId, tradeBasketName } = rpcRequest.params;
237
- const key = this.createTradingBasket(sourceBasketId, tradeBasketName);
238
- return {
239
- type: "SUCCESS_RESULT",
240
- data: key
241
- };
242
- }
243
- throw Error("[BasketModule] createNewBasket invalid request type");
244
- };
245
- sendToMarket = async (rpcRequest)=>{
246
- if ("VIEWPORT_CONTEXT" === rpcRequest.context.type) {
247
- const { basketInstanceId } = rpcRequest.params;
248
- this.tables.basketTrading.update(basketInstanceId, "status", "ON_MARKET");
249
- return {
250
- type: "SUCCESS_RESULT",
251
- data: void 0
252
- };
253
- }
254
- throw Error("[BasketModule] createNewBasket invalid request type");
255
- };
256
- takeOffMarket = async (rpcRequest)=>{
257
- if ("VIEWPORT_CONTEXT" === rpcRequest.context.type) {
258
- const { basketInstanceId } = rpcRequest.params;
259
- this.tables.basketTrading.update(basketInstanceId, "status", "OFF-MARKET");
260
- return {
261
- type: "SUCCESS_RESULT",
262
- data: void 0
263
- };
264
- }
265
- throw Error("[BasketModule] createNewBasket invalid request type");
266
- };
267
- addConstituent = async ()=>{
268
- throw Error("addConstituent not implemented");
269
- };
270
- }
271
- const basketModule = new BasketModule();
272
- export { BasketModule, basketModule, createBasketTradingRow };