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

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 +404 -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 +812 -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 +402 -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 +810 -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 +20 -7
  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
@@ -0,0 +1,810 @@
1
+ import { isDeleteSelectedRowsRpcRequest, isUndoRowChangeRpcRequest, isEditCellRpcRequest, isRpcSuccess, isCreateSessionTableRpcRequest, uuid, isBeginEditSessionRpcRequest, isAddRowRpcRequest, isEndEditSessionRpcRequest } from '@vuu-ui/vuu-utils';
2
+ import { Table, buildDataColumnMapFromSchema } from '../../Table.js';
3
+ import { SessionTable, isProxySessionTable } from '../../SessionTable.js';
4
+ import { TickingArrayDataSource } from '../../TickingArrayDataSource.js';
5
+ import { RuntimeVisualLink } from '../../RuntimeVisualLink.js';
6
+ import moduleContainer from './ModuleContainer.js';
7
+ import { sessionTableSchema } from '../../session-table-utils.js';
8
+
9
+ var __defProp = Object.defineProperty;
10
+ var __typeError = (msg) => {
11
+ throw TypeError(msg);
12
+ };
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
15
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
16
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
17
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
18
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
19
+ var _name, _sessionTableMessageColumn, _runtimeVisualLinks, _sessionTableMap, _tableServices, _subscriptionMap, _moduleServices, _moduleMenuServices;
20
+ const assertUpdateIsValid = (schema, column, data) => {
21
+ const col = schema.columns.find((col2) => col2.name === column);
22
+ if (col) {
23
+ console.log(`data type ${col.serverDataType} data ${data}`);
24
+ } else {
25
+ throw Error(
26
+ `schema for table ${schema.table.table} does not include column ${column}`
27
+ );
28
+ }
29
+ };
30
+ class VuuModule {
31
+ constructor(name, { sessionTableMessageColumn = "vuuMsg" } = {}) {
32
+ __privateAdd(this, _name);
33
+ __privateAdd(this, _sessionTableMessageColumn);
34
+ __privateAdd(this, _runtimeVisualLinks, /* @__PURE__ */ new Map());
35
+ __privateAdd(this, _sessionTableMap, {});
36
+ __privateAdd(this, _tableServices);
37
+ __privateAdd(this, _subscriptionMap, /* @__PURE__ */ new Map());
38
+ __publicField(this, "handlePostSubscribeActivities", ({
39
+ clientViewportId,
40
+ tableSchema
41
+ }) => {
42
+ const visualLinks = this.getVisualLinks(tableSchema.table.table);
43
+ const { dataSource } = this.getSubscriptionByViewport(clientViewportId);
44
+ requestAnimationFrame(() => {
45
+ dataSource.links = visualLinks;
46
+ });
47
+ if (this.visualLinks && dataSource.tableSchema) {
48
+ const {
49
+ table: { table: sourceTable }
50
+ } = dataSource.tableSchema;
51
+ for (const [table, links] of Object.entries(
52
+ this.visualLinks
53
+ )) {
54
+ if (links) {
55
+ const potentialTargets = links.filter(
56
+ (l) => l.toTable === sourceTable
57
+ );
58
+ if (potentialTargets.length) {
59
+ for (const subscriptions of __privateGet(this, _subscriptionMap).values()) {
60
+ for (const { dataSource: dataSource2 } of subscriptions) {
61
+ if (dataSource2.tableSchema?.table.table === table) {
62
+ dataSource2.links = this.getVisualLinks(table);
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ });
71
+ __publicField(this, "unregisterViewport", (viewportId) => {
72
+ const { dataSource } = this.getSubscriptionByViewport(viewportId);
73
+ const tableName = dataSource.tableSchema?.table.table;
74
+ if (tableName) {
75
+ const subscriptionsForTable = __privateGet(this, _subscriptionMap).get(tableName);
76
+ if (subscriptionsForTable) {
77
+ for (const { viewportId: vp } of subscriptionsForTable) {
78
+ if (vp === viewportId) {
79
+ if (subscriptionsForTable.length === 1) {
80
+ __privateGet(this, _subscriptionMap).delete(tableName);
81
+ } else {
82
+ __privateGet(this, _subscriptionMap).set(
83
+ tableName,
84
+ subscriptionsForTable.filter(
85
+ (s) => s.viewportId !== viewportId
86
+ )
87
+ );
88
+ }
89
+ }
90
+ }
91
+ }
92
+ }
93
+ for (const [tableName2, subscriptions] of __privateGet(this, _subscriptionMap)) {
94
+ if (subscriptions[0].viewportId.toString() === viewportId) {
95
+ __privateGet(this, _subscriptionMap).delete(tableName2);
96
+ }
97
+ }
98
+ if (this.visualLinks && dataSource.tableSchema) {
99
+ const {
100
+ table: { table: sourceTable }
101
+ } = dataSource.tableSchema;
102
+ for (const [table, links] of Object.entries(
103
+ this.visualLinks
104
+ )) {
105
+ if (links) {
106
+ const potentialTargets = links.filter(
107
+ (l) => l.toTable === sourceTable
108
+ );
109
+ if (potentialTargets.length) {
110
+ for (const subscriptions of __privateGet(this, _subscriptionMap).values()) {
111
+ for (const { dataSource: dataSource2 } of subscriptions) {
112
+ if (dataSource2.tableSchema?.table.table === table) {
113
+ dataSource2.links = this.getVisualLinks(table);
114
+ }
115
+ }
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }
121
+ });
122
+ __publicField(this, "getLinks", (subscriptionMap, vuuLinks) => {
123
+ const visualLinks = [];
124
+ for (let i = 0; i < vuuLinks.length; i++) {
125
+ const subscriptions = subscriptionMap.get(vuuLinks[i].toTable);
126
+ if (subscriptions) {
127
+ subscriptions.forEach(({ viewportId, dataSource: { status } }) => {
128
+ if (status !== "suspended") {
129
+ const newLink = {
130
+ parentClientVpId: viewportId,
131
+ parentVpId: viewportId,
132
+ link: vuuLinks[i]
133
+ };
134
+ visualLinks.push(newLink);
135
+ }
136
+ });
137
+ }
138
+ }
139
+ return visualLinks;
140
+ });
141
+ __publicField(this, "visualLinkService", (message) => new Promise((resolve) => {
142
+ if (message.type === "CREATE_VISUAL_LINK") {
143
+ const { childColumnName, childVpId, parentColumnName, parentVpId } = message;
144
+ const childDataSource = this.getSubscribedDataSource(childVpId);
145
+ const parentDataSource = this.getSubscribedDataSource(parentVpId);
146
+ const runtimeVisualLink = new RuntimeVisualLink(
147
+ childDataSource,
148
+ parentDataSource,
149
+ childColumnName,
150
+ parentColumnName
151
+ );
152
+ __privateGet(this, _runtimeVisualLinks).set(childVpId, runtimeVisualLink);
153
+ resolve({
154
+ clientViewportId: childVpId,
155
+ colName: childColumnName,
156
+ parentColName: parentColumnName,
157
+ parentViewportId: parentVpId,
158
+ type: "vuu-link-created"
159
+ });
160
+ } else {
161
+ const runtimeVisualLink = __privateGet(this, _runtimeVisualLinks).get(
162
+ message.childVpId
163
+ );
164
+ if (runtimeVisualLink) {
165
+ runtimeVisualLink.remove();
166
+ __privateGet(this, _runtimeVisualLinks).delete(message.childVpId);
167
+ } else {
168
+ throw Error(
169
+ `visualLinkService no visual link found for viewport #${message.childVpId}`
170
+ );
171
+ }
172
+ resolve();
173
+ }
174
+ }));
175
+ __publicField(this, "getVisualLinks", (tableName) => {
176
+ const linksForTable = this.visualLinks?.[tableName];
177
+ return linksForTable === void 0 ? void 0 : this.getLinks(__privateGet(this, _subscriptionMap), linksForTable);
178
+ });
179
+ __publicField(this, "createDataSource", (tableName, viewport, config) => {
180
+ const columnDescriptors = this.getColumnDescriptors(tableName);
181
+ const table = this.tables[tableName];
182
+ const sessionTable = __privateGet(this, _sessionTableMap)[tableName];
183
+ const vuuModule = this;
184
+ const dataSource = new TickingArrayDataSource({
185
+ ...config,
186
+ columnDescriptors,
187
+ getVisualLinks: this.getVisualLinks,
188
+ keyColumn: this.schemas[tableName] === void 0 ? __privateGet(this, _sessionTableMap)[tableName].schema.key : this.schemas[tableName].key,
189
+ table: table || sessionTable,
190
+ menu: this.menus?.[tableName],
191
+ rpcServices: this.getServices(tableName),
192
+ rpcMenuServices: this.getMenuServices(tableName),
193
+ sessionTables: __privateGet(this, _sessionTableMap),
194
+ viewport,
195
+ visualLinkService: this.visualLinkService,
196
+ vuuModule
197
+ });
198
+ dataSource.on("subscribed", this.handlePostSubscribeActivities);
199
+ dataSource.on("unsubscribed", this.unregisterViewport);
200
+ const existingSubscriptions = __privateGet(this, _subscriptionMap).get(tableName);
201
+ const subscription = {
202
+ viewportId: dataSource.viewport,
203
+ dataSource
204
+ };
205
+ if (existingSubscriptions) {
206
+ existingSubscriptions.push(subscription);
207
+ } else {
208
+ __privateGet(this, _subscriptionMap).set(tableName, [subscription]);
209
+ }
210
+ return dataSource;
211
+ });
212
+ __publicField(this, "deleteRow", async (rpcRequest) => {
213
+ if (rpcRequest.context.type === "VIEWPORT_CONTEXT") {
214
+ const { viewPortId } = rpcRequest.context;
215
+ const { key, mode = "hard" } = rpcRequest.params;
216
+ const sessionTable = this.getSessionTable(viewPortId, false);
217
+ if (sessionTable) {
218
+ if (mode === "soft") {
219
+ sessionTable.update(
220
+ key,
221
+ __privateGet(this, _sessionTableMessageColumn),
222
+ "SOFT_DELETED"
223
+ );
224
+ } else {
225
+ sessionTable.delete(key);
226
+ }
227
+ return { type: "SUCCESS_RESULT", data: void 0 };
228
+ } else {
229
+ const { dataSource } = this.getSubscriptionByViewport(viewPortId);
230
+ if (dataSource.table) {
231
+ const table = this.tables[dataSource.table.table];
232
+ if (table) {
233
+ if (mode === "soft") {
234
+ table.update(
235
+ key,
236
+ __privateGet(this, _sessionTableMessageColumn),
237
+ "SOFT_DELETED"
238
+ );
239
+ } else {
240
+ table.delete(key);
241
+ }
242
+ return { type: "SUCCESS_RESULT", data: void 0 };
243
+ }
244
+ }
245
+ }
246
+ }
247
+ return { type: "ERROR_RESULT", errorMessage: "something went wrong" };
248
+ });
249
+ __publicField(this, "deleteSelectedRows", async (rpcRequest) => {
250
+ if (isDeleteSelectedRowsRpcRequest(rpcRequest)) {
251
+ const { viewPortId } = rpcRequest.context;
252
+ const { mode = "soft" } = rpcRequest.params;
253
+ const sessionTable = this.getSessionTable(viewPortId, false);
254
+ if (sessionTable && isProxySessionTable(sessionTable)) {
255
+ const { dataSource } = this.getSubscriptionByViewport(viewPortId);
256
+ const selectedRowIds = dataSource.getSelectedRowIds();
257
+ const deletedKeys = [];
258
+ if (selectedRowIds.length > 0) {
259
+ for (const key of selectedRowIds) {
260
+ if (mode === "soft") {
261
+ sessionTable.update(
262
+ key,
263
+ __privateGet(this, _sessionTableMessageColumn),
264
+ "SOFT_DELETED"
265
+ );
266
+ } else {
267
+ sessionTable.delete(key);
268
+ }
269
+ deletedKeys.push(key);
270
+ }
271
+ }
272
+ return { type: "SUCCESS_RESULT", data: { deletedKeys } };
273
+ }
274
+ return {
275
+ type: "ERROR_RESULT",
276
+ errorMessage: `deleteSelectedRows: no active session table for viewport ${viewPortId}`
277
+ };
278
+ }
279
+ return {
280
+ type: "ERROR_RESULT",
281
+ errorMessage: "deleteSelectedRows: invalid rpc request"
282
+ };
283
+ });
284
+ __publicField(this, "undoRowChange", async (rpcRequest) => {
285
+ if (isUndoRowChangeRpcRequest(rpcRequest)) {
286
+ const { viewPortId } = rpcRequest.context;
287
+ const { key } = rpcRequest.params;
288
+ const sessionTable = this.getSessionTable(viewPortId, false);
289
+ if (sessionTable && isProxySessionTable(sessionTable)) {
290
+ const { dataSource } = this.getSubscriptionByViewport(viewPortId);
291
+ const sourceTable = this.tables[dataSource.table?.table];
292
+ if (!sourceTable) {
293
+ return {
294
+ type: "ERROR_RESULT",
295
+ errorMessage: `undoRowChange: source table not found for viewport ${viewPortId}`
296
+ };
297
+ }
298
+ const sourceRow = sourceTable.findByKey(key);
299
+ if (!sourceRow) {
300
+ sessionTable.delete(key);
301
+ return { type: "SUCCESS_RESULT", data: { wasInsertedRow: true } };
302
+ }
303
+ const updates = sessionTable.getSessionUpdates();
304
+ const rowUpdates = updates.get(key);
305
+ if (rowUpdates) {
306
+ for (const column of Object.keys(rowUpdates.cellUpdates)) {
307
+ const originalValue = sourceRow[sourceTable.map[column]];
308
+ sessionTable.update(key, column, originalValue);
309
+ }
310
+ updates.delete(key);
311
+ }
312
+ return { type: "SUCCESS_RESULT", data: void 0 };
313
+ }
314
+ return {
315
+ type: "ERROR_RESULT",
316
+ errorMessage: `undoRowChange: no active proxy session table for viewport ${viewPortId}`
317
+ };
318
+ }
319
+ return {
320
+ type: "ERROR_RESULT",
321
+ errorMessage: "undoRowChange: invalid rpc request"
322
+ };
323
+ });
324
+ __publicField(this, "editCell", async (rpcRequest) => {
325
+ if (isEditCellRpcRequest(rpcRequest)) {
326
+ const { viewPortId } = rpcRequest.context;
327
+ const { column, data, key } = rpcRequest.params;
328
+ let targetTable = __privateGet(this, _sessionTableMap)[viewPortId];
329
+ if (!targetTable) {
330
+ const { dataSource } = this.getSubscriptionByViewport(viewPortId);
331
+ if (dataSource.table) {
332
+ targetTable = this.tables[dataSource.table.table];
333
+ }
334
+ }
335
+ if (targetTable) {
336
+ try {
337
+ assertUpdateIsValid(targetTable.schema, column, data);
338
+ targetTable.update(key, column, data);
339
+ return {
340
+ type: "SUCCESS_RESULT",
341
+ data: void 0
342
+ };
343
+ } catch (e) {
344
+ const { message } = e;
345
+ return {
346
+ type: "ERROR_RESULT",
347
+ errorMessage: message
348
+ };
349
+ }
350
+ } else {
351
+ throw Error("[VuuModule] editCell unable to find table for dataSource");
352
+ }
353
+ } else {
354
+ throw Error(`[VuuModule] editCell invalid rpc type`);
355
+ }
356
+ });
357
+ __publicField(this, "beginEditSessionMenuHandler", async ({
358
+ rpcName,
359
+ type,
360
+ vpId
361
+ }) => {
362
+ if (type === "VIEW_PORT_MENUS_SELECT_RPC") {
363
+ console.log(`rpcName ${rpcName}`);
364
+ const result = await this.beginEditSession({
365
+ context: {
366
+ type: "VIEWPORT_CONTEXT",
367
+ viewPortId: vpId
368
+ },
369
+ params: {
370
+ editSessionMode: "selected-rows"
371
+ },
372
+ rpcName,
373
+ type: "RPC_REQUEST"
374
+ });
375
+ if (isRpcSuccess(result)) {
376
+ const { table } = result.data;
377
+ return {
378
+ type: "VIEW_PORT_MENU_RESP",
379
+ rpcName,
380
+ action: {
381
+ renderComponent: "grid",
382
+ type: "OPEN_DIALOG_ACTION",
383
+ table
384
+ },
385
+ vpId
386
+ };
387
+ } else {
388
+ return {
389
+ error: result.errorMessage,
390
+ rpcName,
391
+ type: "VIEW_PORT_MENU_REJ",
392
+ vpId
393
+ };
394
+ }
395
+ } else {
396
+ return {
397
+ error: "no can do",
398
+ rpcName,
399
+ type: "VIEW_PORT_MENU_REJ",
400
+ vpId
401
+ };
402
+ }
403
+ });
404
+ /**
405
+ * Creates a standalone session table.
406
+ * The `copyOption` determines which rows are copied into the session table.
407
+ * Returns the session table reference so the caller can subscribe to it.
408
+ */
409
+ __publicField(this, "createSessionTableService", async (rpcRequest) => {
410
+ if (isCreateSessionTableRpcRequest(rpcRequest)) {
411
+ const { viewPortId } = rpcRequest.context;
412
+ const { copyOption } = rpcRequest.params;
413
+ const subscription = this.getSubscriptionByViewport(viewPortId);
414
+ const { dataSource } = subscription;
415
+ const { table: vuuTable } = dataSource;
416
+ if (vuuTable) {
417
+ const sourceTable = this.tables[vuuTable.table];
418
+ if (sourceTable) {
419
+ const sessionTableName = `session-${uuid()}`;
420
+ try {
421
+ const sessionTable = this.createSessionTable(
422
+ sourceTable,
423
+ sessionTableName,
424
+ copyOption,
425
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
426
+ // @ts-ignore
427
+ dataSource
428
+ );
429
+ __privateGet(this, _sessionTableMap)[sessionTableName] = sessionTable;
430
+ subscription.sessionTableName = sessionTableName;
431
+ return {
432
+ data: {
433
+ table: { module: vuuTable.module, table: sessionTableName }
434
+ },
435
+ type: "SUCCESS_RESULT"
436
+ };
437
+ } catch (e) {
438
+ return {
439
+ type: "ERROR_RESULT",
440
+ errorMessage: e.message
441
+ };
442
+ }
443
+ }
444
+ }
445
+ }
446
+ return {
447
+ type: "ERROR_RESULT",
448
+ errorMessage: "createSessionTable: invalid rpc request"
449
+ };
450
+ });
451
+ __publicField(this, "beginEditSession", async (rpcRequest) => {
452
+ if (isBeginEditSessionRpcRequest(rpcRequest)) {
453
+ const { viewPortId } = rpcRequest.context;
454
+ const { editSessionMode = "inline-all-rows" } = rpcRequest.params;
455
+ const subscription = this.getSubscriptionByViewport(viewPortId);
456
+ const { dataSource } = subscription;
457
+ const { table: vuuTable } = dataSource;
458
+ if (vuuTable) {
459
+ const sourceTable = this.tables[vuuTable.table];
460
+ if (sourceTable) {
461
+ const sessionTableName = `session-${uuid()}`;
462
+ try {
463
+ const sessionTable = this.createSessionTable(
464
+ sourceTable,
465
+ sessionTableName,
466
+ editSessionMode,
467
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
468
+ // @ts-ignore
469
+ dataSource
470
+ );
471
+ __privateGet(this, _sessionTableMap)[sessionTableName] = sessionTable;
472
+ subscription.sessionTableName = sessionTableName;
473
+ return {
474
+ data: {
475
+ renderComponent: "inline-form",
476
+ table: {
477
+ module: vuuTable.module,
478
+ table: sessionTableName
479
+ }
480
+ },
481
+ type: "SUCCESS_RESULT"
482
+ };
483
+ } catch (e) {
484
+ return {
485
+ type: "ERROR_RESULT",
486
+ errorMessage: e.message
487
+ };
488
+ }
489
+ }
490
+ }
491
+ } else {
492
+ throw Error(`[VuuModule] endEditSession invalid rpc type`);
493
+ }
494
+ return {
495
+ type: "ERROR_RESULT",
496
+ errorMessage: "not implemented yet"
497
+ };
498
+ });
499
+ __publicField(this, "addRow", async (rpcRequest) => {
500
+ if (isAddRowRpcRequest(rpcRequest)) {
501
+ const { viewPortId } = rpcRequest.context;
502
+ const subscription = this.getSubscriptionByViewport(viewPortId);
503
+ const sessionTable = subscription.sessionTableName ? __privateGet(this, _sessionTableMap)[subscription.sessionTableName] : void 0;
504
+ if (!sessionTable) {
505
+ return {
506
+ type: "ERROR_RESULT",
507
+ errorMessage: `addRow: no active session table for viewport ${viewPortId}`
508
+ };
509
+ }
510
+ const { data } = rpcRequest.params;
511
+ const columnMap = sessionTable.map;
512
+ const columnCount = Object.keys(columnMap).length;
513
+ const row = new Array(columnCount).fill("");
514
+ for (const [col, idx] of Object.entries(columnMap)) {
515
+ if (data[col] !== void 0) {
516
+ row[idx] = data[col];
517
+ }
518
+ }
519
+ sessionTable.insert(row);
520
+ return { type: "SUCCESS_RESULT", data: void 0 };
521
+ }
522
+ return {
523
+ type: "ERROR_RESULT",
524
+ errorMessage: "addRow: invalid rpc context"
525
+ };
526
+ });
527
+ __publicField(this, "endEditSession", async (rpcRequest) => {
528
+ if (isEndEditSessionRpcRequest(rpcRequest)) {
529
+ const { viewPortId } = rpcRequest.context;
530
+ const subscription = this.getSubscriptionByViewport(viewPortId);
531
+ const sessionTableName = subscription.sessionTableName ?? viewPortId;
532
+ const sessionTable = __privateGet(this, _sessionTableMap)[sessionTableName];
533
+ const { dataSource } = subscription;
534
+ if (dataSource.table) {
535
+ const sourceTable = this.tables[dataSource.table.table];
536
+ if (rpcRequest.params.save === true) {
537
+ let rejectedCount = 0;
538
+ if (isProxySessionTable(sessionTable)) {
539
+ const updates = sessionTable.getSessionUpdates();
540
+ updates.forEach((rowUpdates, key) => {
541
+ const { cellUpdates, lastUpdateTimestamp } = rowUpdates;
542
+ const currentRow = sourceTable.findByKey(key);
543
+ const lastUpdateTimestampOnTable = currentRow[sourceTable.map.vuuUpdatedTimestamp];
544
+ if (lastUpdateTimestamp !== lastUpdateTimestampOnTable) {
545
+ rejectedCount += 1;
546
+ const sessionTableRow = sessionTable.findByKey(key);
547
+ const newRow = sessionTableRow.slice();
548
+ const messages = [];
549
+ Object.entries(cellUpdates).forEach(([column, value]) => {
550
+ messages.push(`${column}:${value}`);
551
+ });
552
+ newRow[sessionTable.map[__privateGet(this, _sessionTableMessageColumn)]] = messages.join(",");
553
+ sessionTable.updateRow(newRow);
554
+ } else {
555
+ const newRow = currentRow.slice();
556
+ Object.entries(cellUpdates).forEach(([column, value]) => {
557
+ newRow[sourceTable.map[column]] = value;
558
+ });
559
+ sourceTable.updateRow(newRow);
560
+ }
561
+ });
562
+ updates.clear();
563
+ } else {
564
+ const vuuMsgIdx = sessionTable.map[__privateGet(this, _sessionTableMessageColumn)];
565
+ const sourceColumns = sourceTable.schema.columns;
566
+ for (let i = 0; i < sessionTable.data.length; i++) {
567
+ const sessionRow = sessionTable.data[i];
568
+ if (sessionRow[vuuMsgIdx]) continue;
569
+ const sourceRow = sourceColumns.map(
570
+ (col) => sessionRow[sessionTable.map[col.name]]
571
+ );
572
+ sourceTable.insert(sourceRow);
573
+ }
574
+ }
575
+ if (rejectedCount > 0) {
576
+ return {
577
+ errorMessage: "stale update",
578
+ type: "ERROR_RESULT"
579
+ };
580
+ } else {
581
+ return {
582
+ type: "SUCCESS_RESULT",
583
+ data: void 0
584
+ };
585
+ }
586
+ } else {
587
+ return {
588
+ type: "SUCCESS_RESULT",
589
+ data: void 0
590
+ };
591
+ }
592
+ } else {
593
+ throw Error("[VuuModule], exitEditMode");
594
+ }
595
+ } else {
596
+ throw Error(`[VuuModule] endEditSession invalid rpc type`);
597
+ }
598
+ });
599
+ // Bulk-edit with input in session table
600
+ __publicField(this, "applyBulkEdits", async (rpcRequest) => {
601
+ if (rpcRequest.context.type === "VIEWPORT_CONTEXT") {
602
+ const { viewPortId } = rpcRequest.context;
603
+ const sessionTable = this.getSessionTable(viewPortId);
604
+ for (let i = 0; i < sessionTable.data.length; i++) {
605
+ const newRow = sessionTable.data[i];
606
+ const { column, value } = rpcRequest.params;
607
+ const keyIndex = sessionTable.map[sessionTable.schema.key];
608
+ sessionTable.update(
609
+ String(newRow[keyIndex]),
610
+ column,
611
+ value
612
+ );
613
+ }
614
+ return {
615
+ type: "SUCCESS_RESULT",
616
+ data: void 0
617
+ };
618
+ } else {
619
+ throw Error(`[VuuModule] applyBulkEdits invalid rpc type`);
620
+ }
621
+ });
622
+ /**
623
+ * These services are available on any table. The client must configure the appropriate
624
+ * menu item(s) on Table(s). The services to implement these RPC calls are built-in to
625
+ * VuuModule
626
+ */
627
+ __privateAdd(this, _moduleServices, [
628
+ {
629
+ rpcName: "addRow",
630
+ service: this.addRow
631
+ },
632
+ {
633
+ rpcName: "VP_BULK_EDIT_COLUMN_CELLS_RPC",
634
+ service: this.applyBulkEdits
635
+ },
636
+ {
637
+ rpcName: "createSessionTable",
638
+ service: this.createSessionTableService
639
+ },
640
+ {
641
+ rpcName: "beginEditSession",
642
+ service: this.beginEditSession
643
+ },
644
+ {
645
+ rpcName: "deleteRow",
646
+ service: this.deleteRow
647
+ },
648
+ {
649
+ rpcName: "deleteSelectedRows",
650
+ service: this.deleteSelectedRows
651
+ },
652
+ {
653
+ rpcName: "endEditSession",
654
+ service: this.endEditSession
655
+ },
656
+ {
657
+ rpcName: "editCell",
658
+ service: this.editCell
659
+ },
660
+ {
661
+ rpcName: "undoRowChange",
662
+ service: this.undoRowChange
663
+ }
664
+ ]);
665
+ /**
666
+ * These services are available on any table. The client must configure the appropriate
667
+ * menu item(s) on Table(s). The services to implement these RPC calls are built-in to
668
+ * VuuModule
669
+ */
670
+ __privateAdd(this, _moduleMenuServices, [
671
+ {
672
+ rpcName: "beginEditSession",
673
+ service: this.beginEditSessionMenuHandler
674
+ }
675
+ ]);
676
+ __privateSet(this, _name, name);
677
+ __privateSet(this, _sessionTableMessageColumn, sessionTableMessageColumn);
678
+ moduleContainer.register(this);
679
+ }
680
+ getTableSchema(tableName) {
681
+ return this.schemas[tableName] ?? __privateGet(this, _sessionTableMap)[tableName]?.schema;
682
+ }
683
+ getTableList() {
684
+ return Object.keys(this.tables);
685
+ }
686
+ get name() {
687
+ return __privateGet(this, _name);
688
+ }
689
+ getSubscriptionByViewport(viewportId) {
690
+ for (const subscriptions of __privateGet(this, _subscriptionMap).values()) {
691
+ for (const subscription of subscriptions) {
692
+ if (subscription.viewportId === viewportId) {
693
+ return subscription;
694
+ }
695
+ }
696
+ }
697
+ throw Error(
698
+ `[VuuModule] getSubscriptionByViewport, no subscription found for ${viewportId}`
699
+ );
700
+ }
701
+ getSubscribedDataSource(vpId) {
702
+ for (const subscriptions of __privateGet(this, _subscriptionMap).values()) {
703
+ for (const { viewportId, dataSource } of subscriptions) {
704
+ if (viewportId === vpId) {
705
+ return dataSource;
706
+ }
707
+ }
708
+ }
709
+ throw Error(`getSubscribedDataSource #${vpId} not in subscriptionMap`);
710
+ }
711
+ getServices(tableName) {
712
+ const tableServices = this.services?.[tableName];
713
+ if (Array.isArray(tableServices)) {
714
+ return __privateGet(this, _moduleServices).concat(tableServices);
715
+ } else {
716
+ return __privateGet(this, _moduleServices);
717
+ }
718
+ }
719
+ getMenuServices(tableName) {
720
+ const tableServices = this.menuServices?.[tableName];
721
+ if (Array.isArray(tableServices)) {
722
+ return __privateGet(this, _moduleMenuServices).concat(tableServices);
723
+ } else {
724
+ return __privateGet(this, _moduleMenuServices);
725
+ }
726
+ }
727
+ get sessionTableMap() {
728
+ return __privateGet(this, _sessionTableMap);
729
+ }
730
+ getSessionTable(sessionTableName, throwIfNotFound = true) {
731
+ const sessionTable = __privateGet(this, _sessionTableMap)[sessionTableName];
732
+ if (sessionTable) {
733
+ return sessionTable;
734
+ } else if (throwIfNotFound) {
735
+ throw Error(
736
+ `getSessionTable: no session table with name ${sessionTableName}`
737
+ );
738
+ }
739
+ }
740
+ getColumnDescriptors(tableName) {
741
+ const schema = this.schemas[tableName] || this.getSessionTable(tableName)?.schema;
742
+ if (schema) {
743
+ return schema.columns;
744
+ } else {
745
+ throw Error(
746
+ ` no schema found for module ${__privateGet(this, _name)} table ${tableName}`
747
+ );
748
+ }
749
+ }
750
+ createSessionTable(sourceTable, sessionTableName, editSessionMode = "inline-all-rows", dataSource) {
751
+ if (editSessionMode === "All" || editSessionMode.endsWith("all-rows")) {
752
+ return this.createSessionTableWithAllRows(sourceTable, sessionTableName);
753
+ } else if (editSessionMode === "Selected" || editSessionMode === "selected-rows") {
754
+ return this.createSessionTableFromSelectedRows(
755
+ sourceTable,
756
+ sessionTableName,
757
+ dataSource
758
+ );
759
+ } else if (editSessionMode === "Empty" || editSessionMode === "empty-session-table") {
760
+ return this.createEmptySessionTable(sourceTable, sessionTableName);
761
+ } else {
762
+ throw Error(
763
+ `[VuuModule] createSessionTable, invalid editSessionMode ${editSessionMode}`
764
+ );
765
+ }
766
+ }
767
+ createSessionTableWithAllRows(sourceTable, sessionTableName) {
768
+ return SessionTable(sourceTable, sessionTableName);
769
+ }
770
+ createEmptySessionTable({ schema }, sessionTableName) {
771
+ const sessionSchema = sessionTableSchema({
772
+ ...schema,
773
+ table: { ...schema.table, table: sessionTableName }
774
+ });
775
+ return new Table(
776
+ sessionSchema,
777
+ [],
778
+ buildDataColumnMapFromSchema(sessionSchema)
779
+ );
780
+ }
781
+ createSessionTableFromSelectedRows({ data, map, schema }, sessionTableName, dataSource) {
782
+ const selectedRowIds = dataSource.getSelectedRowIds();
783
+ const keyIndex = map[schema.key];
784
+ const sessionData = [];
785
+ for (let i = 0; i < selectedRowIds.length; i++) {
786
+ for (let j = 0; j < data.length; j++) {
787
+ if (data[j][keyIndex] === selectedRowIds[i]) {
788
+ sessionData.push(data[j]);
789
+ }
790
+ }
791
+ }
792
+ const sessionSchema = sessionTableSchema(schema);
793
+ return new Table(
794
+ sessionSchema,
795
+ sessionData,
796
+ buildDataColumnMapFromSchema(sessionSchema)
797
+ );
798
+ }
799
+ }
800
+ _name = new WeakMap();
801
+ _sessionTableMessageColumn = new WeakMap();
802
+ _runtimeVisualLinks = new WeakMap();
803
+ _sessionTableMap = new WeakMap();
804
+ _tableServices = new WeakMap();
805
+ _subscriptionMap = new WeakMap();
806
+ _moduleServices = new WeakMap();
807
+ _moduleMenuServices = new WeakMap();
808
+
809
+ export { VuuModule };
810
+ //# sourceMappingURL=VuuModule.js.map