@vuu-ui/vuu-data-test 3.0.0-beta.3 → 3.1.0-beta.1

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