@vuu-ui/vuu-data-test 0.13.28 → 0.13.30
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.
- package/cjs/TickingArrayDataSource.js +66 -34
- package/cjs/TickingArrayDataSource.js.map +1 -1
- package/cjs/basket/BasketModule.js +32 -37
- package/cjs/basket/BasketModule.js.map +1 -1
- package/cjs/core/module/VuuModule.js +110 -46
- package/cjs/core/module/VuuModule.js.map +1 -1
- package/cjs/index.js +0 -2
- package/cjs/index.js.map +1 -1
- package/cjs/simul/SimulModule.js +29 -38
- package/cjs/simul/SimulModule.js.map +1 -1
- package/cjs/test/TestModule.js +6 -0
- package/cjs/test/TestModule.js.map +1 -1
- package/esm/TickingArrayDataSource.js +67 -35
- package/esm/TickingArrayDataSource.js.map +1 -1
- package/esm/basket/BasketModule.js +32 -37
- package/esm/basket/BasketModule.js.map +1 -1
- package/esm/core/module/VuuModule.js +112 -46
- package/esm/core/module/VuuModule.js.map +1 -1
- package/esm/index.js +1 -1
- package/esm/simul/SimulModule.js +29 -38
- package/esm/simul/SimulModule.js.map +1 -1
- package/esm/test/TestModule.js +6 -0
- package/esm/test/TestModule.js.map +1 -1
- package/package.json +6 -6
- package/types/TickingArrayDataSource.d.ts +9 -9
- package/types/basket/BasketModule.d.ts +3 -1
- package/types/core/module/VuuModule.d.ts +24 -10
- package/types/simul/SimulModule.d.ts +7 -5
- package/types/test/TestModule.d.ts +3 -1
|
@@ -11,14 +11,15 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
|
|
|
11
11
|
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
|
|
12
12
|
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);
|
|
13
13
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
14
|
-
var _menuRpcServices, _pendingVisualLink, _rpcServices, _sessionTables, _table, _selectionLinkSubscribers, _visualLinkService, _getVisualLinks;
|
|
14
|
+
var _menuRpcServices, _pendingVisualLink, _rpcEditServices, _rpcMenuServices, _rpcServices, _sessionTables, _table, _selectionLinkSubscribers, _visualLinkService, _getVisualLinks;
|
|
15
15
|
const { KEY } = vuuUtils.metadataKeys;
|
|
16
16
|
class TickingArrayDataSource extends vuuDataLocal.ArrayDataSource {
|
|
17
17
|
constructor({
|
|
18
18
|
data,
|
|
19
19
|
getVisualLinks,
|
|
20
|
-
menuRpcServices,
|
|
21
20
|
rpcServices,
|
|
21
|
+
rpcEditServices,
|
|
22
|
+
rpcMenuServices,
|
|
22
23
|
sessionTables,
|
|
23
24
|
table,
|
|
24
25
|
menu,
|
|
@@ -35,6 +36,8 @@ class TickingArrayDataSource extends vuuDataLocal.ArrayDataSource {
|
|
|
35
36
|
});
|
|
36
37
|
__privateAdd(this, _menuRpcServices);
|
|
37
38
|
__privateAdd(this, _pendingVisualLink);
|
|
39
|
+
__privateAdd(this, _rpcEditServices);
|
|
40
|
+
__privateAdd(this, _rpcMenuServices);
|
|
38
41
|
__privateAdd(this, _rpcServices);
|
|
39
42
|
// A reference to session tables hosted within client side module
|
|
40
43
|
__privateAdd(this, _sessionTables);
|
|
@@ -43,7 +46,8 @@ class TickingArrayDataSource extends vuuDataLocal.ArrayDataSource {
|
|
|
43
46
|
__privateAdd(this, _visualLinkService);
|
|
44
47
|
__privateAdd(this, _getVisualLinks);
|
|
45
48
|
this._menu = menu;
|
|
46
|
-
__privateSet(this,
|
|
49
|
+
__privateSet(this, _rpcEditServices, rpcEditServices);
|
|
50
|
+
__privateSet(this, _rpcMenuServices, rpcMenuServices);
|
|
47
51
|
__privateSet(this, _pendingVisualLink, visualLink);
|
|
48
52
|
__privateSet(this, _rpcServices, rpcServices);
|
|
49
53
|
__privateSet(this, _sessionTables, sessionTables);
|
|
@@ -102,61 +106,87 @@ class TickingArrayDataSource extends vuuDataLocal.ArrayDataSource {
|
|
|
102
106
|
[]
|
|
103
107
|
);
|
|
104
108
|
}
|
|
105
|
-
applyEdit(rowKey, columnName, value) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
109
|
+
async applyEdit(rowKey, columnName, value) {
|
|
110
|
+
await this.editRpcCall({
|
|
111
|
+
rowKey,
|
|
112
|
+
type: "VP_EDIT_CELL_RPC",
|
|
113
|
+
field: columnName,
|
|
114
|
+
value
|
|
115
|
+
});
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
async rpcRequest(rpcRequest) {
|
|
119
|
+
if (vuuUtils.isTypeaheadRequest(rpcRequest)) {
|
|
120
|
+
const {
|
|
121
|
+
params: { column, starts }
|
|
122
|
+
} = rpcRequest;
|
|
123
|
+
return {
|
|
124
|
+
type: "SUCCESS_RESULT",
|
|
125
|
+
data: this.getTypeaheadSuggestions(column, starts)
|
|
126
|
+
};
|
|
127
|
+
} else {
|
|
121
128
|
const rpcService = __privateGet(this, _rpcServices)?.find(
|
|
122
129
|
(service) => service.rpcName === rpcRequest.rpcName
|
|
123
130
|
);
|
|
124
|
-
if (rpcService
|
|
131
|
+
if (rpcService) {
|
|
125
132
|
switch (rpcRequest.rpcName) {
|
|
126
133
|
case "VP_BULK_EDIT_COLUMN_CELLS_RPC": {
|
|
127
134
|
return rpcService.service({
|
|
128
135
|
...rpcRequest,
|
|
129
|
-
|
|
136
|
+
context: {
|
|
137
|
+
type: "VIEWPORT_CONTEXT",
|
|
138
|
+
viewPortId: this.viewport
|
|
139
|
+
}
|
|
130
140
|
});
|
|
131
141
|
}
|
|
132
142
|
}
|
|
133
143
|
return rpcService.service({
|
|
134
144
|
...rpcRequest,
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
vpId: this.viewport
|
|
145
|
+
context: {
|
|
146
|
+
type: "VIEWPORT_CONTEXT",
|
|
147
|
+
viewPortId: this.viewport
|
|
148
|
+
}
|
|
140
149
|
});
|
|
150
|
+
} else {
|
|
151
|
+
throw Error(
|
|
152
|
+
`[TickingArrayDataSource] no service to handle RPC request ${rpcRequest.rpcName}`
|
|
153
|
+
);
|
|
141
154
|
}
|
|
142
155
|
}
|
|
143
|
-
|
|
156
|
+
}
|
|
157
|
+
async editRpcCall(rpcRequest) {
|
|
158
|
+
const rpcService = __privateGet(this, _rpcEditServices)?.find(
|
|
159
|
+
(service) => service.type === rpcRequest.type
|
|
160
|
+
);
|
|
161
|
+
if (rpcService) {
|
|
162
|
+
return rpcService.service({
|
|
163
|
+
...rpcRequest,
|
|
164
|
+
vpId: this.viewport
|
|
165
|
+
});
|
|
166
|
+
} else {
|
|
167
|
+
throw Error(
|
|
168
|
+
`[TickingArrayDataSource] editRpcCall no service for ${rpcRequest.type}`
|
|
169
|
+
);
|
|
170
|
+
}
|
|
144
171
|
}
|
|
145
172
|
async menuRpcCall(rpcRequest) {
|
|
146
|
-
const rpcService = __privateGet(this,
|
|
173
|
+
const rpcService = __privateGet(this, _rpcMenuServices)?.find(
|
|
147
174
|
(service) => service.rpcName === rpcRequest.rpcName
|
|
148
175
|
);
|
|
149
|
-
if (
|
|
150
|
-
return rpcService
|
|
176
|
+
if (rpcService) {
|
|
177
|
+
return rpcService.service({
|
|
151
178
|
...rpcRequest,
|
|
152
|
-
|
|
179
|
+
vpId: this.viewport,
|
|
180
|
+
localDataParameters: {
|
|
153
181
|
selectedRowIds: this.getSelectedRowIds(),
|
|
154
182
|
table: this.tableSchema.table
|
|
155
|
-
}
|
|
156
|
-
vpId: this.viewport
|
|
183
|
+
}
|
|
157
184
|
});
|
|
185
|
+
} else {
|
|
186
|
+
throw Error(
|
|
187
|
+
`[TickingArrayDataSource] menuRpcCall no service for ${rpcRequest.rpcName}`
|
|
188
|
+
);
|
|
158
189
|
}
|
|
159
|
-
return super.menuRpcCall(rpcRequest);
|
|
160
190
|
}
|
|
161
191
|
getTypeaheadSuggestions(column, pattern) {
|
|
162
192
|
if (__privateGet(this, _table)) {
|
|
@@ -214,6 +244,8 @@ class TickingArrayDataSource extends vuuDataLocal.ArrayDataSource {
|
|
|
214
244
|
}
|
|
215
245
|
_menuRpcServices = new WeakMap();
|
|
216
246
|
_pendingVisualLink = new WeakMap();
|
|
247
|
+
_rpcEditServices = new WeakMap();
|
|
248
|
+
_rpcMenuServices = new WeakMap();
|
|
217
249
|
_rpcServices = new WeakMap();
|
|
218
250
|
_sessionTables = new WeakMap();
|
|
219
251
|
_table = new WeakMap();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TickingArrayDataSource.js","sources":["../../../packages/vuu-data-test/src/TickingArrayDataSource.ts"],"sourcesContent":["import {\n ArrayDataSource,\n ArrayDataSourceConstructorProps,\n} from \"@vuu-ui/vuu-data-local\";\nimport type {\n DataSourceVisualLinkCreatedMessage,\n SelectionItem,\n DataSourceSubscribeCallback,\n DataSourceSubscribeProps,\n} from \"@vuu-ui/vuu-data-types\";\nimport type {\n VuuRpcMenuRequest,\n LinkDescriptorWithLabel,\n RpcNamedParams,\n VuuMenu,\n VuuRowDataItemType,\n VuuRpcResponse,\n VuuRpcMenuResponse,\n VuuRpcRequest,\n VuuCreateVisualLink,\n VuuRemoveVisualLink,\n RpcResultSuccess,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport {\n isRpcServiceRequest,\n isTypeaheadRequest,\n isViewportRpcRequest,\n isVuuMenuRpcRequest,\n metadataKeys,\n Range,\n} from \"@vuu-ui/vuu-utils\";\nimport { makeSuggestions } from \"./makeSuggestions\";\nimport { Table } from \"./Table\";\nimport { RpcService, SessionTableMap } from \"./core/module/VuuModule\";\n\nconst { KEY } = metadataKeys;\n\nexport type VisualLinkHandler = (\n message: VuuCreateVisualLink | VuuRemoveVisualLink,\n) => Promise<DataSourceVisualLinkCreatedMessage | void>;\n\nexport interface TickingArrayDataSourceConstructorProps\n extends Omit<ArrayDataSourceConstructorProps, \"data\"> {\n data?: Array<VuuRowDataItemType[]>;\n getVisualLinks?: (tableName: string) => LinkDescriptorWithLabel[] | undefined;\n menu?: VuuMenu;\n menuRpcServices?: RpcService[];\n rpcServices?: RpcService[];\n sessionTables?: SessionTableMap;\n table?: Table;\n visualLinkService?: VisualLinkHandler;\n}\n\ntype LinkSubscription = {\n sourceColumnName?: string;\n columnName: string;\n linkType: \"subscribe-link-filter\" | \"subscribe-link-select\";\n};\n\nexport class TickingArrayDataSource extends ArrayDataSource {\n #menuRpcServices: RpcService[] | undefined;\n #pendingVisualLink?: LinkDescriptorWithLabel;\n #rpcServices: RpcService[] | undefined;\n // A reference to session tables hosted within client side module\n #sessionTables: SessionTableMap | undefined;\n #table?: Table;\n #selectionLinkSubscribers: Map<string, LinkSubscription> | undefined;\n #visualLinkService?: VisualLinkHandler;\n #getVisualLinks?: (\n tableName: string,\n ) => LinkDescriptorWithLabel[] | undefined;\n\n constructor({\n data,\n getVisualLinks,\n menuRpcServices,\n rpcServices,\n sessionTables,\n table,\n menu,\n visualLink,\n visualLinkService,\n ...arrayDataSourceProps\n }: TickingArrayDataSourceConstructorProps) {\n if (data === undefined && table === undefined) {\n throw Error(\"TickingArrayDataSource must be constructed with data\");\n }\n super({\n ...arrayDataSourceProps,\n data: data ?? table?.data ?? [],\n });\n this._menu = menu;\n\n this.#menuRpcServices = menuRpcServices;\n this.#pendingVisualLink = visualLink;\n this.#rpcServices = rpcServices;\n this.#sessionTables = sessionTables;\n this.#table = table;\n this.#visualLinkService = visualLinkService;\n this.#getVisualLinks = getVisualLinks;\n\n if (table) {\n this.tableSchema = table.schema;\n table.on(\"insert\", this.insert);\n table.on(\"update\", this.updateRow);\n }\n }\n\n async subscribe(\n subscribeProps: DataSourceSubscribeProps,\n callback: DataSourceSubscribeCallback,\n ) {\n const subscription = super.subscribe(subscribeProps, callback);\n // if (subscribeProps.range) {\n // this.#updateGenerator?.setRange(subscribeProps.range);\n // }\n if (this.#pendingVisualLink) {\n this.visualLink = this.#pendingVisualLink;\n this.#pendingVisualLink = undefined;\n }\n\n return subscription;\n }\n\n unsubscribe() {\n super.unsubscribe();\n this.#table = undefined;\n }\n\n set range(range: Range) {\n super.range = range;\n // this.#updateGenerator?.setRange(range);\n }\n get range() {\n return super.range;\n }\n\n set links(links: LinkDescriptorWithLabel[] | undefined) {\n super.links = links;\n }\n\n get links() {\n return this.#getVisualLinks?.(this.table.table);\n }\n\n private getSelectedRowIds() {\n return this.selectedRows.reduce<string[]>(\n (rowIds: string[], selection: SelectionItem) => {\n if (Array.isArray(selection)) {\n for (let i = selection[0]; i <= selection[1]; i++) {\n const row = this.data[i];\n if (row) {\n rowIds.push(row[KEY]);\n }\n }\n } else {\n const row = this.data[selection];\n if (row) {\n rowIds.push(row[KEY]);\n }\n }\n return rowIds;\n },\n [],\n );\n }\n\n applyEdit(\n rowKey: string,\n columnName: string,\n value: VuuRowDataItemType,\n ): Promise<true> {\n this.#table?.update(rowKey, columnName, value);\n return Promise.resolve(true);\n }\n\n async rpcCall<T extends VuuRpcResponse = VuuRpcResponse>(\n rpcRequest: Omit<VuuRpcRequest, \"vpId\">,\n ): Promise<T> {\n if (isRpcServiceRequest(rpcRequest)) {\n if (isTypeaheadRequest(rpcRequest)) {\n const {\n params: { column, starts },\n } = rpcRequest;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return {\n type: \"SUCCESS_RESULT\",\n data: this.getTypeaheadSuggestions(column, starts),\n } as RpcResultSuccess;\n }\n } else if (isViewportRpcRequest(rpcRequest)) {\n const rpcService = this.#rpcServices?.find(\n (service) => service.rpcName === rpcRequest.rpcName,\n );\n if (rpcService && isViewportRpcRequest(rpcRequest)) {\n switch (rpcRequest.rpcName) {\n case \"VP_BULK_EDIT_COLUMN_CELLS_RPC\": {\n return rpcService.service({\n ...rpcRequest,\n vpId: this.viewport,\n }) as Promise<T>;\n }\n }\n return rpcService.service({\n ...rpcRequest,\n namedParams: {\n selectedRowIds: this.getSelectedRowIds(),\n table: this.tableSchema.table,\n },\n vpId: this.viewport,\n }) as Promise<T>;\n }\n }\n throw Error(`no implementation for RPC service ${rpcRequest.type}`);\n }\n\n async menuRpcCall(\n rpcRequest: Omit<VuuRpcRequest, \"vpId\"> & {\n namedParams?: RpcNamedParams;\n },\n ): Promise<VuuRpcResponse> {\n const rpcService = this.#rpcServices?.find(\n (service) =>\n service.rpcName === (rpcRequest as VuuRpcMenuRequest).rpcName,\n );\n\n if (isVuuMenuRpcRequest(rpcRequest)) {\n return rpcService?.service({\n ...rpcRequest,\n namedParams: {\n selectedRowIds: this.getSelectedRowIds(),\n table: this.tableSchema.table,\n },\n vpId: this.viewport,\n }) as Promise<VuuRpcMenuResponse>;\n }\n\n return super.menuRpcCall(rpcRequest);\n }\n\n getTypeaheadSuggestions(column: string, pattern?: string): Promise<string[]> {\n if (this.#table) {\n const columnIndex = this.columnMap[column];\n return makeSuggestions(this.currentData, columnIndex, pattern);\n } else {\n throw Error(\n \"cannot call getTypeaheadSuggestions on TickingDataSource if table has not been provided\",\n );\n }\n }\n\n get visualLink() {\n return this._config.visualLink;\n }\n\n set visualLink(visualLink: LinkDescriptorWithLabel | undefined) {\n this._config = {\n ...this._config,\n visualLink,\n };\n\n if (visualLink) {\n const {\n parentClientVpId,\n link: { fromColumn, toColumn },\n } = visualLink;\n\n if (this.viewport) {\n this.#visualLinkService?.({\n childVpId: this.viewport,\n childColumnName: fromColumn,\n type: \"CREATE_VISUAL_LINK\",\n parentVpId: parentClientVpId,\n parentColumnName: toColumn,\n }).then((response) => {\n this.emit(\n \"visual-link-created\",\n response as DataSourceVisualLinkCreatedMessage,\n );\n });\n }\n } else {\n this.#visualLinkService?.({\n childVpId: this.viewport,\n type: \"REMOVE_VISUAL_LINK\",\n }).then((/* response */) => {\n this.emit(\"visual-link-removed\");\n });\n }\n }\n\n freeze() {\n super.freeze();\n }\n\n unfreeze() {\n super.unfreeze();\n }\n}\n"],"names":["metadataKeys","ArrayDataSource","isRpcServiceRequest","isTypeaheadRequest","isViewportRpcRequest","isVuuMenuRpcRequest","makeSuggestions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TickingArrayDataSource.js","sources":["../../../packages/vuu-data-test/src/TickingArrayDataSource.ts"],"sourcesContent":["import {\n ArrayDataSource,\n ArrayDataSourceConstructorProps,\n} from \"@vuu-ui/vuu-data-local\";\nimport type {\n DataSourceSubscribeCallback,\n DataSourceSubscribeProps,\n DataSourceVisualLinkCreatedMessage,\n SelectionItem,\n} from \"@vuu-ui/vuu-data-types\";\nimport type {\n LinkDescriptorWithLabel,\n RpcResultError,\n RpcResultSuccess,\n VuuCreateVisualLink,\n VuuMenu,\n VuuRemoveVisualLink,\n VuuRowDataItemType,\n VuuRpcEditCellRequest,\n VuuRpcEditRequest,\n VuuRpcEditResponse,\n VuuRpcMenuRequest,\n VuuRpcMenuResponse,\n VuuRpcServiceRequest,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { isTypeaheadRequest, metadataKeys, Range } from \"@vuu-ui/vuu-utils\";\nimport {\n RpcEditService,\n RpcMenuService,\n RpcService,\n SessionTableMap,\n} from \"./core/module/VuuModule\";\nimport { makeSuggestions } from \"./makeSuggestions\";\nimport { Table } from \"./Table\";\n\nconst { KEY } = metadataKeys;\n\nexport type VisualLinkHandler = (\n message: VuuCreateVisualLink | VuuRemoveVisualLink,\n) => Promise<DataSourceVisualLinkCreatedMessage | void>;\n\nexport interface TickingArrayDataSourceConstructorProps\n extends Omit<ArrayDataSourceConstructorProps, \"data\"> {\n data?: Array<VuuRowDataItemType[]>;\n getVisualLinks?: (tableName: string) => LinkDescriptorWithLabel[] | undefined;\n menu?: VuuMenu;\n rpcEditServices?: RpcEditService[];\n rpcMenuServices?: RpcMenuService[];\n rpcServices?: RpcService[];\n sessionTables?: SessionTableMap;\n table?: Table;\n visualLinkService?: VisualLinkHandler;\n}\n\ntype LinkSubscription = {\n sourceColumnName?: string;\n columnName: string;\n linkType: \"subscribe-link-filter\" | \"subscribe-link-select\";\n};\n\nexport class TickingArrayDataSource extends ArrayDataSource {\n #menuRpcServices: RpcService[] | undefined;\n #pendingVisualLink?: LinkDescriptorWithLabel;\n #rpcEditServices: RpcEditService[] | undefined;\n #rpcMenuServices: RpcMenuService[] | undefined;\n #rpcServices: RpcService[] | undefined;\n // A reference to session tables hosted within client side module\n #sessionTables: SessionTableMap | undefined;\n #table?: Table;\n #selectionLinkSubscribers: Map<string, LinkSubscription> | undefined;\n #visualLinkService?: VisualLinkHandler;\n #getVisualLinks?: (\n tableName: string,\n ) => LinkDescriptorWithLabel[] | undefined;\n\n constructor({\n data,\n getVisualLinks,\n rpcServices,\n rpcEditServices,\n rpcMenuServices,\n sessionTables,\n table,\n menu,\n visualLink,\n visualLinkService,\n ...arrayDataSourceProps\n }: TickingArrayDataSourceConstructorProps) {\n if (data === undefined && table === undefined) {\n throw Error(\"TickingArrayDataSource must be constructed with data\");\n }\n super({\n ...arrayDataSourceProps,\n data: data ?? table?.data ?? [],\n });\n this._menu = menu;\n\n this.#rpcEditServices = rpcEditServices;\n this.#rpcMenuServices = rpcMenuServices;\n this.#pendingVisualLink = visualLink;\n this.#rpcServices = rpcServices;\n this.#sessionTables = sessionTables;\n this.#table = table;\n this.#visualLinkService = visualLinkService;\n this.#getVisualLinks = getVisualLinks;\n\n if (table) {\n this.tableSchema = table.schema;\n table.on(\"insert\", this.insert);\n table.on(\"update\", this.updateRow);\n }\n }\n\n async subscribe(\n subscribeProps: DataSourceSubscribeProps,\n callback: DataSourceSubscribeCallback,\n ) {\n const subscription = super.subscribe(subscribeProps, callback);\n // if (subscribeProps.range) {\n // this.#updateGenerator?.setRange(subscribeProps.range);\n // }\n if (this.#pendingVisualLink) {\n this.visualLink = this.#pendingVisualLink;\n this.#pendingVisualLink = undefined;\n }\n\n return subscription;\n }\n\n unsubscribe() {\n super.unsubscribe();\n this.#table = undefined;\n }\n\n set range(range: Range) {\n super.range = range;\n // this.#updateGenerator?.setRange(range);\n }\n get range() {\n return super.range;\n }\n\n set links(links: LinkDescriptorWithLabel[] | undefined) {\n super.links = links;\n }\n\n get links() {\n return this.#getVisualLinks?.(this.table.table);\n }\n\n private getSelectedRowIds() {\n return this.selectedRows.reduce<string[]>(\n (rowIds: string[], selection: SelectionItem) => {\n if (Array.isArray(selection)) {\n for (let i = selection[0]; i <= selection[1]; i++) {\n const row = this.data[i];\n if (row) {\n rowIds.push(row[KEY]);\n }\n }\n } else {\n const row = this.data[selection];\n if (row) {\n rowIds.push(row[KEY]);\n }\n }\n return rowIds;\n },\n [],\n );\n }\n\n async applyEdit(\n rowKey: string,\n columnName: string,\n value: VuuRowDataItemType,\n ): Promise<true> {\n await this.editRpcCall({\n rowKey,\n type: \"VP_EDIT_CELL_RPC\",\n field: columnName,\n value,\n } as VuuRpcEditCellRequest);\n return true;\n }\n\n async rpcRequest(\n rpcRequest: Omit<VuuRpcServiceRequest, \"context\">,\n ): Promise<RpcResultSuccess | RpcResultError> {\n if (isTypeaheadRequest(rpcRequest)) {\n const {\n params: { column, starts },\n } = rpcRequest;\n return {\n type: \"SUCCESS_RESULT\",\n data: this.getTypeaheadSuggestions(column, starts),\n } as RpcResultSuccess;\n } else {\n const rpcService = this.#rpcServices?.find(\n (service) => service.rpcName === rpcRequest.rpcName,\n );\n if (rpcService) {\n switch (rpcRequest.rpcName) {\n case \"VP_BULK_EDIT_COLUMN_CELLS_RPC\": {\n return rpcService.service({\n ...rpcRequest,\n context: {\n type: \"VIEWPORT_CONTEXT\",\n viewPortId: this.viewport,\n },\n });\n }\n }\n return rpcService.service({\n ...rpcRequest,\n context: {\n type: \"VIEWPORT_CONTEXT\",\n viewPortId: this.viewport,\n },\n });\n } else {\n throw Error(\n `[TickingArrayDataSource] no service to handle RPC request ${rpcRequest.rpcName}`,\n );\n }\n }\n }\n\n async editRpcCall(\n rpcRequest: Omit<VuuRpcEditRequest, \"vpId\">,\n ): Promise<VuuRpcEditResponse> {\n const rpcService = this.#rpcEditServices?.find(\n (service) => service.type === rpcRequest.type,\n );\n\n if (rpcService) {\n return rpcService.service({\n ...rpcRequest,\n vpId: this.viewport,\n } as VuuRpcEditRequest);\n } else {\n throw Error(\n `[TickingArrayDataSource] editRpcCall no service for ${rpcRequest.type}`,\n );\n }\n }\n\n async menuRpcCall(\n rpcRequest: Omit<VuuRpcMenuRequest, \"vpId\">,\n ): Promise<VuuRpcMenuResponse> {\n const rpcService = this.#rpcMenuServices?.find(\n (service) => service.rpcName === rpcRequest.rpcName,\n );\n\n if (rpcService) {\n return rpcService.service({\n ...rpcRequest,\n vpId: this.viewport,\n localDataParameters: {\n selectedRowIds: this.getSelectedRowIds(),\n table: this.tableSchema.table,\n },\n } as VuuRpcMenuRequest);\n } else {\n throw Error(\n `[TickingArrayDataSource] menuRpcCall no service for ${rpcRequest.rpcName}`,\n );\n }\n }\n\n getTypeaheadSuggestions(column: string, pattern?: string): Promise<string[]> {\n if (this.#table) {\n const columnIndex = this.columnMap[column];\n return makeSuggestions(this.currentData, columnIndex, pattern);\n } else {\n throw Error(\n \"cannot call getTypeaheadSuggestions on TickingDataSource if table has not been provided\",\n );\n }\n }\n\n get visualLink() {\n return this._config.visualLink;\n }\n\n set visualLink(visualLink: LinkDescriptorWithLabel | undefined) {\n this._config = {\n ...this._config,\n visualLink,\n };\n\n if (visualLink) {\n const {\n parentClientVpId,\n link: { fromColumn, toColumn },\n } = visualLink;\n\n if (this.viewport) {\n this.#visualLinkService?.({\n childVpId: this.viewport,\n childColumnName: fromColumn,\n type: \"CREATE_VISUAL_LINK\",\n parentVpId: parentClientVpId,\n parentColumnName: toColumn,\n }).then((response) => {\n this.emit(\n \"visual-link-created\",\n response as DataSourceVisualLinkCreatedMessage,\n );\n });\n }\n } else {\n this.#visualLinkService?.({\n childVpId: this.viewport,\n type: \"REMOVE_VISUAL_LINK\",\n }).then((/* response */) => {\n this.emit(\"visual-link-removed\");\n });\n }\n }\n\n freeze() {\n super.freeze();\n }\n\n unfreeze() {\n super.unfreeze();\n }\n}\n"],"names":["metadataKeys","ArrayDataSource","isTypeaheadRequest","makeSuggestions"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
4
3
|
var VuuModule = require('../core/module/VuuModule.js');
|
|
5
4
|
var TableContainer = require('../core/table/TableContainer.js');
|
|
6
5
|
var basketSchemas = require('./basket-schemas.js');
|
|
@@ -30,17 +29,6 @@ const createBasketTradingRow = (basketId, basketName, side = "BUY", status = "OF
|
|
|
30
29
|
125e4,
|
|
31
30
|
100
|
|
32
31
|
];
|
|
33
|
-
const viewportRpcResponse = (params, vpId, action) => ({
|
|
34
|
-
type: "VIEW_PORT_RPC_RESPONSE",
|
|
35
|
-
action: {
|
|
36
|
-
type: "VP_RPC_SUCCESS",
|
|
37
|
-
...action
|
|
38
|
-
},
|
|
39
|
-
method: "???",
|
|
40
|
-
namedParams: {},
|
|
41
|
-
params,
|
|
42
|
-
vpId
|
|
43
|
-
});
|
|
44
32
|
const undefinedTables = {
|
|
45
33
|
algoType: void 0,
|
|
46
34
|
basket: void 0,
|
|
@@ -127,48 +115,47 @@ class BasketModule extends VuuModule.VuuModule {
|
|
|
127
115
|
)
|
|
128
116
|
});
|
|
129
117
|
__publicField(this, "createNewBasket", async (rpcRequest) => {
|
|
130
|
-
if (
|
|
131
|
-
const {
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
118
|
+
if (rpcRequest.context.type === "VIEWPORT_CONTEXT") {
|
|
119
|
+
const { sourceBasketId, tradeBasketName } = rpcRequest.params;
|
|
120
|
+
const key = this.createTradingBasket(sourceBasketId, tradeBasketName);
|
|
121
|
+
return {
|
|
122
|
+
type: "SUCCESS_RESULT",
|
|
123
|
+
data: key
|
|
124
|
+
};
|
|
136
125
|
} else {
|
|
137
|
-
throw Error(
|
|
126
|
+
throw Error("[BasketModule] createNewBasket invalid request type");
|
|
138
127
|
}
|
|
139
128
|
});
|
|
140
129
|
__publicField(this, "sendToMarket", async (rpcRequest) => {
|
|
141
|
-
if (
|
|
142
|
-
const {
|
|
143
|
-
const params = rpcRequest.params;
|
|
144
|
-
const [basketInstanceId] = params;
|
|
130
|
+
if (rpcRequest.context.type === "VIEWPORT_CONTEXT") {
|
|
131
|
+
const { basketInstanceId } = rpcRequest.params;
|
|
145
132
|
this.tables.basketTrading.update(basketInstanceId, "status", "ON_MARKET");
|
|
146
|
-
return
|
|
133
|
+
return {
|
|
134
|
+
type: "SUCCESS_RESULT",
|
|
135
|
+
data: void 0
|
|
136
|
+
};
|
|
147
137
|
} else {
|
|
148
|
-
throw Error(
|
|
138
|
+
throw Error("[BasketModule] createNewBasket invalid request type");
|
|
149
139
|
}
|
|
150
140
|
});
|
|
151
141
|
__publicField(this, "takeOffMarket", async (rpcRequest) => {
|
|
152
|
-
if (
|
|
153
|
-
const {
|
|
154
|
-
const params = rpcRequest.params;
|
|
155
|
-
const [basketInstanceId] = params;
|
|
142
|
+
if (rpcRequest.context.type === "VIEWPORT_CONTEXT") {
|
|
143
|
+
const { basketInstanceId } = rpcRequest.params;
|
|
156
144
|
this.tables.basketTrading.update(
|
|
157
145
|
basketInstanceId,
|
|
158
146
|
"status",
|
|
159
147
|
"OFF-MARKET"
|
|
160
148
|
);
|
|
161
|
-
return
|
|
149
|
+
return {
|
|
150
|
+
type: "SUCCESS_RESULT",
|
|
151
|
+
data: void 0
|
|
152
|
+
};
|
|
162
153
|
} else {
|
|
163
|
-
throw Error(
|
|
154
|
+
throw Error("[BasketModule] createNewBasket invalid request type");
|
|
164
155
|
}
|
|
165
156
|
});
|
|
166
|
-
__publicField(this, "addConstituent", async (
|
|
167
|
-
|
|
168
|
-
throw Error(`addConstituent not implemented`);
|
|
169
|
-
} else {
|
|
170
|
-
throw Error(`addConstituent invalid rpcRequest`);
|
|
171
|
-
}
|
|
157
|
+
__publicField(this, "addConstituent", async () => {
|
|
158
|
+
throw Error(`addConstituent not implemented`);
|
|
172
159
|
});
|
|
173
160
|
}
|
|
174
161
|
get menus() {
|
|
@@ -217,6 +204,14 @@ class BasketModule extends VuuModule.VuuModule {
|
|
|
217
204
|
]
|
|
218
205
|
};
|
|
219
206
|
}
|
|
207
|
+
get editServices() {
|
|
208
|
+
return void 0;
|
|
209
|
+
}
|
|
210
|
+
get menuServices() {
|
|
211
|
+
return {
|
|
212
|
+
...undefinedTables
|
|
213
|
+
};
|
|
214
|
+
}
|
|
220
215
|
get tables() {
|
|
221
216
|
return __privateGet(this, _tables);
|
|
222
217
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasketModule.js","sources":["../../../../packages/vuu-data-test/src/basket/BasketModule.ts"],"sourcesContent":["import {\n VuuMenu,\n VuuRowDataItemType,\n VuuRpcViewportAction,\n VuuRpcViewportResponse,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { ColumnMap, isViewportRpcRequest } from \"@vuu-ui/vuu-utils\";\nimport { ServiceHandler, VuuModule } from \"../core/module/VuuModule\";\nimport tableContainer from \"../core/table/TableContainer\";\nimport { BasketsTableName, schemas } from \"./basket-schemas\";\nimport basketConstituentData from \"./reference-data/constituents\";\nimport { type Table } from \"../Table\";\n\nconst { createTable } = tableContainer;\n\nlet basketIncrement = 1;\n\n// export as convenience for showcase examples\nexport const createBasketTradingRow = (\n basketId: string,\n basketName: string,\n side = \"BUY\",\n status = \"OFF MARKET\",\n) => [\n basketId,\n basketName,\n 0,\n 1.25,\n `steve-${basketIncrement++}`,\n side,\n status,\n 1_000_000,\n 1_250_000,\n 100,\n];\n\nconst viewportRpcResponse = (\n params: string[],\n vpId: string,\n action?: Partial<VuuRpcViewportAction>,\n): VuuRpcViewportResponse => ({\n type: \"VIEW_PORT_RPC_RESPONSE\",\n action: {\n type: \"VP_RPC_SUCCESS\",\n ...action,\n },\n method: \"???\",\n namedParams: {},\n params,\n vpId,\n});\n\nconst undefinedTables = {\n algoType: undefined,\n basket: undefined,\n basketTrading: undefined,\n basketTradingConstituent: undefined,\n basketConstituent: undefined,\n basketTradingConstituentJoin: undefined,\n priceStrategyType: undefined,\n};\n\n// This is a 'local' columnMap\nconst buildDataColumnMap = (tableName: BasketsTableName) =>\n Object.values(schemas[tableName].columns).reduce<ColumnMap>(\n (map, col, index) => {\n map[col.name] = index;\n return map;\n },\n {},\n );\n\nconst tableMaps: Record<BasketsTableName, ColumnMap> = {\n algoType: buildDataColumnMap(\"algoType\"),\n basket: buildDataColumnMap(\"basket\"),\n basketTrading: buildDataColumnMap(\"basketTrading\"),\n basketTradingConstituent: buildDataColumnMap(\"basketTradingConstituent\"),\n basketConstituent: buildDataColumnMap(\"basketConstituent\"),\n basketTradingConstituentJoin: buildDataColumnMap(\n \"basketTradingConstituentJoin\",\n ),\n priceStrategyType: buildDataColumnMap(\"priceStrategyType\"),\n};\n\nconst basketTradingConstituent = tableContainer.createTable(\n schemas.basketTradingConstituent,\n [],\n tableMaps.basketTradingConstituent,\n);\n\n/**\n * This is an example of how we might extend the built-in VuuModule to\n * implement a module-specific service in such a way that it can invoke\n * methods on the VuuModule.\n */\nexport class BasketModule extends VuuModule<BasketsTableName> {\n #tables: Record<BasketsTableName, Table> = {\n algoType: createTable(\n schemas.algoType,\n [\n [\"Sniper\", 0],\n [\"Dark Liquidity\", 1],\n [\"VWAP\", 2],\n [\"POV\", 3],\n [\"Dynamic Close\", 4],\n ],\n tableMaps.algoType,\n ),\n basket: createTable(\n schemas.basket,\n [\n [\".NASDAQ100\", \".NASDAQ100\", 0, 0],\n [\".HSI\", \".HSI\", 0, 0],\n [\".FTSE100\", \".FTSE100\", 0, 0],\n [\".SP500\", \".SP500\", 0, 0],\n ],\n tableMaps.basket,\n ),\n basketConstituent: createTable(\n schemas.basketConstituent,\n basketConstituentData,\n tableMaps.basketConstituent,\n ),\n basketTrading: createTable(\n schemas.basketTrading,\n [],\n tableMaps.basketTrading,\n ),\n basketTradingConstituent,\n basketTradingConstituentJoin: tableContainer.createJoinTable(\n { module: \"BASKET\", table: \"basketTradingConstituentJoin\" },\n { module: \"BASKET\", table: \"basketTradingConstituent\" },\n { module: \"SIMUL\", table: \"prices\" },\n \"ric\",\n ),\n priceStrategyType: createTable(\n schemas.priceStrategyType,\n [\n [\"Peg to Near Touch\", 0],\n [\"Far Touch\", 1],\n [\"Limit\", 2],\n [\"Algo\", 3],\n ],\n tableMaps.priceStrategyType,\n ),\n };\n\n constructor() {\n super(\"BASKET\");\n }\n\n get menus(): Record<BasketsTableName, VuuMenu | undefined> {\n return {\n ...undefinedTables,\n basket: {\n name: \"ROOT\",\n menus: [\n {\n context: \"selected-rows\",\n filter: \"\",\n name: \"Add Basket\",\n rpcName: \"CREATE_NEW_BASKET\",\n },\n ],\n },\n };\n }\n\n get schemas() {\n return schemas;\n }\n\n get services() {\n return {\n ...undefinedTables,\n basket: [\n {\n rpcName: \"createBasket\",\n service: this.createNewBasket,\n },\n ],\n basketTrading: [\n {\n rpcName: \"sendToMarket\",\n service: this.sendToMarket,\n },\n {\n rpcName: \"takeOffMarket\",\n service: this.takeOffMarket,\n },\n ],\n basketTradingConstituentJoin: [\n {\n rpcName: \"addConstituent\",\n service: this.addConstituent,\n },\n ],\n };\n }\n\n get tables() {\n return this.#tables;\n }\n\n get visualLinks() {\n return {\n ...undefinedTables,\n basketConstituent: [\n { fromColumn: \"basketId\", toColumn: \"id\", toTable: \"basket\" },\n ],\n };\n }\n\n private createTradingBasket(basketId: string, basketName: string) {\n const basketTradingRow = createBasketTradingRow(basketId, basketName);\n\n this.tables.basketTrading.insert(basketTradingRow);\n\n const { basketId: key } = buildDataColumnMap(\"basketConstituent\");\n const constituents = this.tables.basketConstituent.data.filter(\n (c) => c[key] === basketId,\n );\n\n const { instanceId } = tableMaps.basketTrading;\n\n constituents.forEach(\n ([, , description, , ric, , , quantity, weighting]) => {\n const algo = \"\";\n const algoParams = \"\";\n const limitPrice = 95;\n const notionalLocal = 0;\n const notionalUsd = 0;\n const pctFilled = 0;\n const priceSpread = 0;\n const priceStrategyId = \"\";\n const side = \"BUY\";\n const venue = \"venue\";\n\n const basketInstanceId = basketTradingRow[instanceId];\n const basketTradingConstituentRow: VuuRowDataItemType[] = [\n algo,\n algoParams,\n basketId,\n description,\n basketInstanceId,\n `${basketInstanceId}-${ric}`,\n limitPrice,\n notionalLocal,\n notionalUsd,\n pctFilled,\n priceSpread,\n priceStrategyId,\n quantity,\n ric,\n side,\n venue,\n weighting,\n ];\n basketTradingConstituent.insert(basketTradingConstituentRow);\n },\n );\n\n // return the key\n return basketTradingRow[instanceId] as string;\n }\n\n private createNewBasket: ServiceHandler = async (rpcRequest) => {\n if (isViewportRpcRequest(rpcRequest)) {\n const { vpId } = rpcRequest;\n const params = rpcRequest.params as string[];\n const [basketId, basketName] = params;\n const key = this.createTradingBasket(basketId, basketName);\n return viewportRpcResponse(params, vpId, { key });\n } else {\n throw Error(`createNewBasket invalid rpcRequest`);\n }\n };\n\n private sendToMarket: ServiceHandler = async (rpcRequest) => {\n if (isViewportRpcRequest(rpcRequest)) {\n const { vpId } = rpcRequest;\n const params = rpcRequest.params as string[];\n const [basketInstanceId] = params;\n this.tables.basketTrading.update(basketInstanceId, \"status\", \"ON_MARKET\");\n return viewportRpcResponse(params, vpId);\n } else {\n throw Error(`sendToMarket invalid rpcRequest`);\n }\n };\n private takeOffMarket: ServiceHandler = async (rpcRequest) => {\n if (isViewportRpcRequest(rpcRequest)) {\n const { vpId } = rpcRequest;\n const params = rpcRequest.params as string[];\n const [basketInstanceId] = params;\n this.tables.basketTrading.update(\n basketInstanceId,\n \"status\",\n \"OFF-MARKET\",\n );\n return viewportRpcResponse(params, vpId);\n } else {\n throw Error(`takeOffMarket invalid rpcRequest`);\n }\n };\n\n private addConstituent: ServiceHandler = async (rpcRequest) => {\n if (isViewportRpcRequest(rpcRequest)) {\n throw Error(`addConstituent not implemented`);\n } else {\n throw Error(`addConstituent invalid rpcRequest`);\n }\n };\n}\n\nexport const basketModule = new BasketModule();\n"],"names":["tableContainer","schemas","VuuModule","basketConstituentData","isViewportRpcRequest"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BasketModule.js","sources":["../../../../packages/vuu-data-test/src/basket/BasketModule.ts"],"sourcesContent":["import { VuuMenu, VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { ColumnMap } from \"@vuu-ui/vuu-utils\";\nimport {\n RpcMenuService,\n ServiceHandler,\n VuuModule,\n} from \"../core/module/VuuModule\";\nimport tableContainer from \"../core/table/TableContainer\";\nimport { BasketsTableName, schemas } from \"./basket-schemas\";\nimport basketConstituentData from \"./reference-data/constituents\";\nimport { type Table } from \"../Table\";\n\nconst { createTable } = tableContainer;\n\nlet basketIncrement = 1;\n\n// export as convenience for showcase examples\nexport const createBasketTradingRow = (\n basketId: string,\n basketName: string,\n side = \"BUY\",\n status = \"OFF MARKET\",\n) => [\n basketId,\n basketName,\n 0,\n 1.25,\n `steve-${basketIncrement++}`,\n side,\n status,\n 1_000_000,\n 1_250_000,\n 100,\n];\n\nconst undefinedTables = {\n algoType: undefined,\n basket: undefined,\n basketTrading: undefined,\n basketTradingConstituent: undefined,\n basketConstituent: undefined,\n basketTradingConstituentJoin: undefined,\n priceStrategyType: undefined,\n};\n\n// This is a 'local' columnMap\nconst buildDataColumnMap = (tableName: BasketsTableName) =>\n Object.values(schemas[tableName].columns).reduce<ColumnMap>(\n (map, col, index) => {\n map[col.name] = index;\n return map;\n },\n {},\n );\n\nconst tableMaps: Record<BasketsTableName, ColumnMap> = {\n algoType: buildDataColumnMap(\"algoType\"),\n basket: buildDataColumnMap(\"basket\"),\n basketTrading: buildDataColumnMap(\"basketTrading\"),\n basketTradingConstituent: buildDataColumnMap(\"basketTradingConstituent\"),\n basketConstituent: buildDataColumnMap(\"basketConstituent\"),\n basketTradingConstituentJoin: buildDataColumnMap(\n \"basketTradingConstituentJoin\",\n ),\n priceStrategyType: buildDataColumnMap(\"priceStrategyType\"),\n};\n\nconst basketTradingConstituent = tableContainer.createTable(\n schemas.basketTradingConstituent,\n [],\n tableMaps.basketTradingConstituent,\n);\n\n/**\n * This is an example of how we might extend the built-in VuuModule to\n * implement a module-specific service in such a way that it can invoke\n * methods on the VuuModule.\n */\nexport class BasketModule extends VuuModule<BasketsTableName> {\n #tables: Record<BasketsTableName, Table> = {\n algoType: createTable(\n schemas.algoType,\n [\n [\"Sniper\", 0],\n [\"Dark Liquidity\", 1],\n [\"VWAP\", 2],\n [\"POV\", 3],\n [\"Dynamic Close\", 4],\n ],\n tableMaps.algoType,\n ),\n basket: createTable(\n schemas.basket,\n [\n [\".NASDAQ100\", \".NASDAQ100\", 0, 0],\n [\".HSI\", \".HSI\", 0, 0],\n [\".FTSE100\", \".FTSE100\", 0, 0],\n [\".SP500\", \".SP500\", 0, 0],\n ],\n tableMaps.basket,\n ),\n basketConstituent: createTable(\n schemas.basketConstituent,\n basketConstituentData,\n tableMaps.basketConstituent,\n ),\n basketTrading: createTable(\n schemas.basketTrading,\n [],\n tableMaps.basketTrading,\n ),\n basketTradingConstituent,\n basketTradingConstituentJoin: tableContainer.createJoinTable(\n { module: \"BASKET\", table: \"basketTradingConstituentJoin\" },\n { module: \"BASKET\", table: \"basketTradingConstituent\" },\n { module: \"SIMUL\", table: \"prices\" },\n \"ric\",\n ),\n priceStrategyType: createTable(\n schemas.priceStrategyType,\n [\n [\"Peg to Near Touch\", 0],\n [\"Far Touch\", 1],\n [\"Limit\", 2],\n [\"Algo\", 3],\n ],\n tableMaps.priceStrategyType,\n ),\n };\n\n constructor() {\n super(\"BASKET\");\n }\n\n get menus(): Record<BasketsTableName, VuuMenu | undefined> {\n return {\n ...undefinedTables,\n basket: {\n name: \"ROOT\",\n menus: [\n {\n context: \"selected-rows\",\n filter: \"\",\n name: \"Add Basket\",\n rpcName: \"CREATE_NEW_BASKET\",\n },\n ],\n },\n };\n }\n\n get schemas() {\n return schemas;\n }\n\n get services() {\n return {\n ...undefinedTables,\n basket: [\n {\n rpcName: \"createBasket\",\n service: this.createNewBasket,\n },\n ],\n basketTrading: [\n {\n rpcName: \"sendToMarket\",\n service: this.sendToMarket,\n },\n {\n rpcName: \"takeOffMarket\",\n service: this.takeOffMarket,\n },\n ],\n basketTradingConstituentJoin: [\n {\n rpcName: \"addConstituent\",\n service: this.addConstituent,\n },\n ],\n };\n }\n\n get editServices() {\n return undefined;\n }\n\n get menuServices():\n | Record<BasketsTableName, RpcMenuService[] | undefined>\n | undefined {\n return {\n ...undefinedTables,\n };\n }\n\n get tables() {\n return this.#tables;\n }\n\n get visualLinks() {\n return {\n ...undefinedTables,\n basketConstituent: [\n { fromColumn: \"basketId\", toColumn: \"id\", toTable: \"basket\" },\n ],\n };\n }\n\n private createTradingBasket(basketId: string, basketName: string) {\n const basketTradingRow = createBasketTradingRow(basketId, basketName);\n\n this.tables.basketTrading.insert(basketTradingRow);\n\n const { basketId: key } = buildDataColumnMap(\"basketConstituent\");\n const constituents = this.tables.basketConstituent.data.filter(\n (c) => c[key] === basketId,\n );\n\n const { instanceId } = tableMaps.basketTrading;\n\n constituents.forEach(\n ([, , description, , ric, , , quantity, weighting]) => {\n const algo = \"\";\n const algoParams = \"\";\n const limitPrice = 95;\n const notionalLocal = 0;\n const notionalUsd = 0;\n const pctFilled = 0;\n const priceSpread = 0;\n const priceStrategyId = \"\";\n const side = \"BUY\";\n const venue = \"venue\";\n\n const basketInstanceId = basketTradingRow[instanceId];\n const basketTradingConstituentRow: VuuRowDataItemType[] = [\n algo,\n algoParams,\n basketId,\n description,\n basketInstanceId,\n `${basketInstanceId}-${ric}`,\n limitPrice,\n notionalLocal,\n notionalUsd,\n pctFilled,\n priceSpread,\n priceStrategyId,\n quantity,\n ric,\n side,\n venue,\n weighting,\n ];\n basketTradingConstituent.insert(basketTradingConstituentRow);\n },\n );\n\n // return the key\n return basketTradingRow[instanceId] as string;\n }\n\n private createNewBasket: ServiceHandler = async (rpcRequest) => {\n if (rpcRequest.context.type === \"VIEWPORT_CONTEXT\") {\n const { sourceBasketId, tradeBasketName } = rpcRequest.params;\n const key = this.createTradingBasket(sourceBasketId, tradeBasketName);\n return {\n type: \"SUCCESS_RESULT\",\n data: key,\n };\n } else {\n throw Error(\"[BasketModule] createNewBasket invalid request type\");\n }\n };\n\n private sendToMarket: ServiceHandler = async (rpcRequest) => {\n if (rpcRequest.context.type === \"VIEWPORT_CONTEXT\") {\n const { basketInstanceId } = rpcRequest.params;\n this.tables.basketTrading.update(basketInstanceId, \"status\", \"ON_MARKET\");\n return {\n type: \"SUCCESS_RESULT\",\n data: undefined,\n };\n } else {\n throw Error(\"[BasketModule] createNewBasket invalid request type\");\n }\n };\n private takeOffMarket: ServiceHandler = async (rpcRequest) => {\n if (rpcRequest.context.type === \"VIEWPORT_CONTEXT\") {\n const { basketInstanceId } = rpcRequest.params;\n this.tables.basketTrading.update(\n basketInstanceId,\n \"status\",\n \"OFF-MARKET\",\n );\n return {\n type: \"SUCCESS_RESULT\",\n data: undefined,\n };\n } else {\n throw Error(\"[BasketModule] createNewBasket invalid request type\");\n }\n };\n\n private addConstituent: ServiceHandler = async () => {\n throw Error(`addConstituent not implemented`);\n };\n}\n\nexport const basketModule = new BasketModule();\n"],"names":["tableContainer","schemas","VuuModule","basketConstituentData"],"mappings":"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"}
|