@vuu-ui/vuu-data-test 2.1.19-beta.2 → 2.1.19-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/ArrayProxy.js +72 -0
- package/cjs/ArrayProxy.js.map +1 -0
- package/cjs/RuntimeVisualLink.js +73 -0
- package/cjs/RuntimeVisualLink.js.map +1 -0
- package/cjs/SessionTable.js +98 -0
- package/cjs/SessionTable.js.map +1 -0
- package/cjs/Table.js +128 -0
- package/cjs/Table.js.map +1 -0
- package/cjs/TickingArrayDataSource.js +397 -0
- package/cjs/TickingArrayDataSource.js.map +1 -0
- package/cjs/UpdateGenerator.js +94 -0
- package/cjs/UpdateGenerator.js.map +1 -0
- package/cjs/basket/BasketModule.js +282 -0
- package/cjs/basket/BasketModule.js.map +1 -0
- package/cjs/basket/basket-schemas.js +123 -0
- package/cjs/basket/basket-schemas.js.map +1 -0
- package/cjs/basket/reference-data/constituents.js +40 -0
- package/cjs/basket/reference-data/constituents.js.map +1 -0
- package/cjs/basket/reference-data/ftse100.js +105 -0
- package/cjs/basket/reference-data/ftse100.js.map +1 -0
- package/cjs/basket/reference-data/hsi.js +87 -0
- package/cjs/basket/reference-data/hsi.js.map +1 -0
- package/cjs/basket/reference-data/nasdaq100.js +108 -0
- package/cjs/basket/reference-data/nasdaq100.js.map +1 -0
- package/cjs/basket/reference-data/sp500.js +46 -0
- package/cjs/basket/reference-data/sp500.js.map +1 -0
- package/cjs/core/module/ModuleContainer.js +43 -0
- package/cjs/core/module/ModuleContainer.js.map +1 -0
- package/cjs/core/module/VuuModule.js +764 -0
- package/cjs/core/module/VuuModule.js.map +1 -0
- package/cjs/core/table/TableContainer.js +139 -0
- package/cjs/core/table/TableContainer.js.map +1 -0
- package/cjs/data-utils.js +55 -0
- package/cjs/data-utils.js.map +1 -0
- package/cjs/default-column-definitions.js +10 -0
- package/cjs/default-column-definitions.js.map +1 -0
- package/cjs/index.js +46 -0
- package/cjs/index.js.map +1 -0
- package/cjs/local-datasource-provider/LocalDatasourceProvider.js +70 -0
- package/cjs/local-datasource-provider/LocalDatasourceProvider.js.map +1 -0
- package/cjs/makeSuggestions.js +26 -0
- package/cjs/makeSuggestions.js.map +1 -0
- package/cjs/schemas.js +28 -0
- package/cjs/schemas.js.map +1 -0
- package/cjs/session-table-utils.js +12 -0
- package/cjs/session-table-utils.js.map +1 -0
- package/cjs/simul/SimulModule.js +187 -0
- package/cjs/simul/SimulModule.js.map +1 -0
- package/cjs/simul/reference-data/accounts.js +27 -0
- package/cjs/simul/reference-data/accounts.js.map +1 -0
- package/cjs/simul/reference-data/algos.js +6 -0
- package/cjs/simul/reference-data/algos.js.map +1 -0
- package/cjs/simul/reference-data/currencies.js +6 -0
- package/cjs/simul/reference-data/currencies.js.map +1 -0
- package/cjs/simul/reference-data/instruments-extended.js +19 -0
- package/cjs/simul/reference-data/instruments-extended.js.map +1 -0
- package/cjs/simul/reference-data/instruments.js +87 -0
- package/cjs/simul/reference-data/instruments.js.map +1 -0
- package/cjs/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js +6 -0
- package/cjs/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js.map +1 -0
- package/cjs/simul/reference-data/isin-generator/fixtures/alphabet.js +31 -0
- package/cjs/simul/reference-data/isin-generator/fixtures/alphabet.js.map +1 -0
- package/cjs/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js +9 -0
- package/cjs/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js.map +1 -0
- package/cjs/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js +17 -0
- package/cjs/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js.map +1 -0
- package/cjs/simul/reference-data/isin-generator/generate-cusip-check-code.js +24 -0
- package/cjs/simul/reference-data/isin-generator/generate-cusip-check-code.js.map +1 -0
- package/cjs/simul/reference-data/isin-generator/generate-cusip-without-check-code.js +13 -0
- package/cjs/simul/reference-data/isin-generator/generate-cusip-without-check-code.js.map +1 -0
- package/cjs/simul/reference-data/isin-generator/generate-cusip.js +13 -0
- package/cjs/simul/reference-data/isin-generator/generate-cusip.js.map +1 -0
- package/cjs/simul/reference-data/isin-generator/generate-random-alphanumeric.js +8 -0
- package/cjs/simul/reference-data/isin-generator/generate-random-alphanumeric.js.map +1 -0
- package/cjs/simul/reference-data/isin-generator/generate-random-base-ten-number.js +6 -0
- package/cjs/simul/reference-data/isin-generator/generate-random-base-ten-number.js.map +1 -0
- package/cjs/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js +14 -0
- package/cjs/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js.map +1 -0
- package/cjs/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js +14 -0
- package/cjs/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js.map +1 -0
- package/cjs/simul/reference-data/isin-generator/index.js +295 -0
- package/cjs/simul/reference-data/isin-generator/index.js.map +1 -0
- package/cjs/simul/reference-data/isin-generator/is-odd.js +6 -0
- package/cjs/simul/reference-data/isin-generator/is-odd.js.map +1 -0
- package/cjs/simul/reference-data/locations.js +17 -0
- package/cjs/simul/reference-data/locations.js.map +1 -0
- package/cjs/simul/reference-data/lotsizes.js +28 -0
- package/cjs/simul/reference-data/lotsizes.js.map +1 -0
- package/cjs/simul/reference-data/orderStatus.js +6 -0
- package/cjs/simul/reference-data/orderStatus.js.map +1 -0
- package/cjs/simul/reference-data/orders.js +55 -0
- package/cjs/simul/reference-data/orders.js.map +1 -0
- package/cjs/simul/reference-data/parent-child-orders.js +146 -0
- package/cjs/simul/reference-data/parent-child-orders.js.map +1 -0
- package/cjs/simul/reference-data/prices.js +91 -0
- package/cjs/simul/reference-data/prices.js.map +1 -0
- package/cjs/simul/reference-data/sides.js +6 -0
- package/cjs/simul/reference-data/sides.js.map +1 -0
- package/cjs/simul/simul-schemas.js +148 -0
- package/cjs/simul/simul-schemas.js.map +1 -0
- package/cjs/test/TestModule.js +190 -0
- package/cjs/test/TestModule.js.map +1 -0
- package/cjs/vuu-row-generator.js +74 -0
- package/cjs/vuu-row-generator.js.map +1 -0
- package/esm/ArrayProxy.js +70 -0
- package/esm/ArrayProxy.js.map +1 -0
- package/esm/RuntimeVisualLink.js +71 -0
- package/esm/RuntimeVisualLink.js.map +1 -0
- package/esm/SessionTable.js +95 -0
- package/esm/SessionTable.js.map +1 -0
- package/esm/Table.js +124 -0
- package/esm/Table.js.map +1 -0
- package/esm/TickingArrayDataSource.js +395 -0
- package/esm/TickingArrayDataSource.js.map +1 -0
- package/esm/UpdateGenerator.js +92 -0
- package/esm/UpdateGenerator.js.map +1 -0
- package/esm/basket/BasketModule.js +278 -0
- package/esm/basket/BasketModule.js.map +1 -0
- package/esm/basket/basket-schemas.js +120 -0
- package/esm/basket/basket-schemas.js.map +1 -0
- package/esm/basket/reference-data/constituents.js +38 -0
- package/esm/basket/reference-data/constituents.js.map +1 -0
- package/esm/basket/reference-data/ftse100.js +103 -0
- package/esm/basket/reference-data/ftse100.js.map +1 -0
- package/esm/basket/reference-data/hsi.js +85 -0
- package/esm/basket/reference-data/hsi.js.map +1 -0
- package/esm/basket/reference-data/nasdaq100.js +106 -0
- package/esm/basket/reference-data/nasdaq100.js.map +1 -0
- package/esm/basket/reference-data/sp500.js +44 -0
- package/esm/basket/reference-data/sp500.js.map +1 -0
- package/esm/core/module/ModuleContainer.js +41 -0
- package/esm/core/module/ModuleContainer.js.map +1 -0
- package/esm/core/module/VuuModule.js +762 -0
- package/esm/core/module/VuuModule.js.map +1 -0
- package/esm/core/table/TableContainer.js +137 -0
- package/esm/core/table/TableContainer.js.map +1 -0
- package/esm/data-utils.js +50 -0
- package/esm/data-utils.js.map +1 -0
- package/esm/default-column-definitions.js +8 -0
- package/esm/default-column-definitions.js.map +1 -0
- package/esm/index.js +16 -0
- package/esm/index.js.map +1 -0
- package/esm/local-datasource-provider/LocalDatasourceProvider.js +68 -0
- package/esm/local-datasource-provider/LocalDatasourceProvider.js.map +1 -0
- package/esm/makeSuggestions.js +24 -0
- package/esm/makeSuggestions.js.map +1 -0
- package/esm/schemas.js +24 -0
- package/esm/schemas.js.map +1 -0
- package/esm/session-table-utils.js +10 -0
- package/esm/session-table-utils.js.map +1 -0
- package/esm/simul/SimulModule.js +184 -0
- package/esm/simul/SimulModule.js.map +1 -0
- package/esm/simul/reference-data/accounts.js +25 -0
- package/esm/simul/reference-data/accounts.js.map +1 -0
- package/esm/simul/reference-data/algos.js +4 -0
- package/esm/simul/reference-data/algos.js.map +1 -0
- package/esm/simul/reference-data/currencies.js +4 -0
- package/esm/simul/reference-data/currencies.js.map +1 -0
- package/esm/simul/reference-data/instruments-extended.js +17 -0
- package/esm/simul/reference-data/instruments-extended.js.map +1 -0
- package/esm/simul/reference-data/instruments.js +82 -0
- package/esm/simul/reference-data/instruments.js.map +1 -0
- package/esm/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js +4 -0
- package/esm/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js.map +1 -0
- package/esm/simul/reference-data/isin-generator/fixtures/alphabet.js +29 -0
- package/esm/simul/reference-data/isin-generator/fixtures/alphabet.js.map +1 -0
- package/esm/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js +7 -0
- package/esm/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js.map +1 -0
- package/esm/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js +15 -0
- package/esm/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js.map +1 -0
- package/esm/simul/reference-data/isin-generator/generate-cusip-check-code.js +22 -0
- package/esm/simul/reference-data/isin-generator/generate-cusip-check-code.js.map +1 -0
- package/esm/simul/reference-data/isin-generator/generate-cusip-without-check-code.js +11 -0
- package/esm/simul/reference-data/isin-generator/generate-cusip-without-check-code.js.map +1 -0
- package/esm/simul/reference-data/isin-generator/generate-cusip.js +11 -0
- package/esm/simul/reference-data/isin-generator/generate-cusip.js.map +1 -0
- package/esm/simul/reference-data/isin-generator/generate-random-alphanumeric.js +6 -0
- package/esm/simul/reference-data/isin-generator/generate-random-alphanumeric.js.map +1 -0
- package/esm/simul/reference-data/isin-generator/generate-random-base-ten-number.js +4 -0
- package/esm/simul/reference-data/isin-generator/generate-random-base-ten-number.js.map +1 -0
- package/esm/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js +12 -0
- package/esm/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js.map +1 -0
- package/esm/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js +12 -0
- package/esm/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js.map +1 -0
- package/esm/simul/reference-data/isin-generator/index.js +293 -0
- package/esm/simul/reference-data/isin-generator/index.js.map +1 -0
- package/esm/simul/reference-data/isin-generator/is-odd.js +4 -0
- package/esm/simul/reference-data/isin-generator/is-odd.js.map +1 -0
- package/esm/simul/reference-data/locations.js +14 -0
- package/esm/simul/reference-data/locations.js.map +1 -0
- package/esm/simul/reference-data/lotsizes.js +26 -0
- package/esm/simul/reference-data/lotsizes.js.map +1 -0
- package/esm/simul/reference-data/orderStatus.js +4 -0
- package/esm/simul/reference-data/orderStatus.js.map +1 -0
- package/esm/simul/reference-data/orders.js +52 -0
- package/esm/simul/reference-data/orders.js.map +1 -0
- package/esm/simul/reference-data/parent-child-orders.js +141 -0
- package/esm/simul/reference-data/parent-child-orders.js.map +1 -0
- package/esm/simul/reference-data/prices.js +88 -0
- package/esm/simul/reference-data/prices.js.map +1 -0
- package/esm/simul/reference-data/sides.js +4 -0
- package/esm/simul/reference-data/sides.js.map +1 -0
- package/esm/simul/simul-schemas.js +145 -0
- package/esm/simul/simul-schemas.js.map +1 -0
- package/esm/test/TestModule.js +188 -0
- package/esm/test/TestModule.js.map +1 -0
- package/esm/vuu-row-generator.js +68 -0
- package/esm/vuu-row-generator.js.map +1 -0
- package/package.json +13 -10
- package/types/RuntimeVisualLink.d.ts +2 -2
- package/types/Table.d.ts +8 -8
- package/types/TickingArrayDataSource.d.ts +25 -6
- package/types/basket/BasketModule.d.ts +9 -9
- package/types/basket/reference-data/prices.d.ts +1 -1
- package/types/core/module/VuuModule.d.ts +13 -6
- package/types/core/table/TableContainer.d.ts +1 -1
- package/types/data-utils.d.ts +1 -0
- package/types/default-column-definitions.d.ts +2 -0
- package/types/makeSuggestions.d.ts +2 -1
- package/types/schemas.d.ts +1 -1
- package/types/simul/reference-data/instruments-extended.d.ts +1 -1
- package/types/simul/reference-data/instruments.d.ts +4 -2
- package/types/simul/reference-data/orders.d.ts +1 -1
- package/types/simul/reference-data/parent-child-orders.d.ts +2 -2
- package/types/simul/reference-data/prices.d.ts +4 -2
- package/types/test/TestModule.d.ts +3 -2
- package/types/test/index.d.ts +0 -1
- package/src/ArrayProxy.js +0 -38
- package/src/RuntimeVisualLink.js +0 -45
- package/src/SessionTable.js +0 -49
- package/src/Table.js +0 -96
- package/src/TickingArrayDataSource.js +0 -208
- package/src/UpdateGenerator.js +0 -72
- package/src/basket/BasketModule.js +0 -272
- package/src/basket/basket-schemas.js +0 -355
- package/src/basket/index.js +0 -2
- package/src/basket/reference-data/constituents.js +0 -76
- package/src/basket/reference-data/ftse100.js +0 -686
- package/src/basket/reference-data/hsi.js +0 -1047
- package/src/basket/reference-data/nasdaq100.js +0 -812
- package/src/basket/reference-data/prices.js +0 -43
- package/src/basket/reference-data/sp500.js +0 -315
- package/src/core/module/ModuleContainer.js +0 -21
- package/src/core/module/VuuModule.js +0 -476
- package/src/core/table/TableContainer.js +0 -97
- package/src/data-utils.js +0 -53
- package/src/index.js +0 -13
- package/src/local-datasource-provider/LocalDatasourceProvider.js +0 -44
- package/src/makeSuggestions.js +0 -20
- package/src/rowUpdates.js +0 -0
- package/src/schemas.js +0 -19
- package/src/session-table-utils.js +0 -16
- package/src/simul/SimulModule.js +0 -175
- package/src/simul/index.js +0 -2
- package/src/simul/reference-data/accounts.js +0 -23
- package/src/simul/reference-data/algos.js +0 -9
- package/src/simul/reference-data/currencies.js +0 -8
- package/src/simul/reference-data/index.js +0 -5
- package/src/simul/reference-data/instrument-prices.js +0 -48
- package/src/simul/reference-data/instruments-extended.js +0 -12
- package/src/simul/reference-data/instruments.js +0 -67
- package/src/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js +0 -2
- package/src/simul/reference-data/isin-generator/fixtures/alphabet.js +0 -27
- package/src/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js +0 -7
- package/src/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js +0 -13
- package/src/simul/reference-data/isin-generator/generate-cusip-check-code.js +0 -17
- package/src/simul/reference-data/isin-generator/generate-cusip-without-check-code.js +0 -8
- package/src/simul/reference-data/isin-generator/generate-cusip.js +0 -8
- package/src/simul/reference-data/isin-generator/generate-random-alphanumeric.js +0 -3
- package/src/simul/reference-data/isin-generator/generate-random-base-ten-number.js +0 -2
- package/src/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js +0 -7
- package/src/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js +0 -7
- package/src/simul/reference-data/isin-generator/index.js +0 -280
- package/src/simul/reference-data/isin-generator/is-odd.js +0 -2
- package/src/simul/reference-data/locations.js +0 -45
- package/src/simul/reference-data/lotsizes.js +0 -24
- package/src/simul/reference-data/orderStatus.js +0 -6
- package/src/simul/reference-data/orders.js +0 -64
- package/src/simul/reference-data/parent-child-orders.js +0 -117
- package/src/simul/reference-data/priceStrategies.js +0 -8
- package/src/simul/reference-data/prices.js +0 -78
- package/src/simul/reference-data/sides.js +0 -5
- package/src/simul/simul-schemas.js +0 -428
- package/src/test/TestModule.js +0 -95
- package/src/test/index.js +0 -1
- package/src/test/test-schemas.js +0 -74
- package/src/vuu-row-generator.js +0 -71
- package/types/test/test-schemas.d.ts +0 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DataSourceBase, DataSourceRowWithBigint, RowSelectionEventHandler } from "@vuu-ui/vuu-data-types";
|
|
2
2
|
export declare class RuntimeVisualLink {
|
|
3
3
|
#private;
|
|
4
|
-
constructor(childDataSource:
|
|
4
|
+
constructor(childDataSource: DataSourceBase<DataSourceRowWithBigint>, parentDataSource: DataSourceBase<DataSourceRowWithBigint>, childColumnName: string, parentColumnName: string);
|
|
5
5
|
destroy(): void;
|
|
6
6
|
remove(): void;
|
|
7
7
|
handleParentSelectEvent: RowSelectionEventHandler;
|
package/types/Table.d.ts
CHANGED
|
@@ -4,22 +4,22 @@ import { ColumnMap, EventEmitter } from "@vuu-ui/vuu-utils";
|
|
|
4
4
|
import { UpdateGenerator } from "./rowUpdates";
|
|
5
5
|
export type TableEvents = {
|
|
6
6
|
delete: (key: string) => void;
|
|
7
|
-
insert: (row: VuuRowDataItemType
|
|
8
|
-
update: (row: VuuRowDataItemType
|
|
7
|
+
insert: (row: Array<bigint | VuuRowDataItemType>) => void;
|
|
8
|
+
update: (row: Array<bigint | VuuRowDataItemType>, columnName?: string, sessionId?: string) => void;
|
|
9
9
|
};
|
|
10
10
|
export declare class Table extends EventEmitter<TableEvents> {
|
|
11
11
|
#private;
|
|
12
|
-
constructor(schema: TableSchema, data: VuuRowDataItemType
|
|
12
|
+
constructor(schema: TableSchema, data: Array<Array<VuuRowDataItemType | bigint>>, dataMap: ColumnMap, updateGenerator?: UpdateGenerator);
|
|
13
13
|
private buildIndex;
|
|
14
|
-
get data(): VuuRowDataItemType[][];
|
|
14
|
+
get data(): (bigint | VuuRowDataItemType)[][];
|
|
15
15
|
get map(): ColumnMap;
|
|
16
16
|
get schema(): TableSchema;
|
|
17
17
|
get name(): string;
|
|
18
18
|
delete(key: string, emitEvent?: boolean): void;
|
|
19
|
-
insert(row: VuuRowDataItemType
|
|
20
|
-
findByKey(key: string): VuuRowDataItemType[];
|
|
21
|
-
update(key: string, columnName: string, value: VuuRowDataItemType): void;
|
|
22
|
-
updateRow(row: VuuRowDataItemType
|
|
19
|
+
insert(row: Array<bigint | VuuRowDataItemType>, emitEvent?: boolean): void;
|
|
20
|
+
findByKey(key: string): (bigint | VuuRowDataItemType)[];
|
|
21
|
+
update(key: string, columnName: string, value: bigint | VuuRowDataItemType): void;
|
|
22
|
+
updateRow(row: Array<bigint | VuuRowDataItemType>): void;
|
|
23
23
|
}
|
|
24
24
|
export declare function buildDataColumnMapFromSchema(schema: Readonly<TableSchema>): ColumnMap;
|
|
25
25
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ArrayDataSource, ArrayDataSourceConstructorProps } from "@vuu-ui/vuu-data-local";
|
|
2
|
-
import type {
|
|
3
|
-
import type { LinkDescriptorWithLabel, RpcResultError, RpcResultSuccess, VuuCreateVisualLink, VuuMenu, VuuRemoveVisualLink, VuuRowDataItemType, VuuRpcMenuRequest, VuuRpcMenuResponse, VuuRpcServiceRequest, VuuTable } from "@vuu-ui/vuu-protocol-types";
|
|
2
|
+
import type { DataSourceBase, DataSourceCallbackMessage, DataSourceRowWithBigint, DataSourceSubscribeCallback, DataSourceSubscribeProps, DataSourceVisualLinkCreatedMessage, DeleteRowMode, EditSessionMode } from "@vuu-ui/vuu-data-types";
|
|
3
|
+
import type { LinkDescriptorWithLabel, RpcResultError, RpcResultSuccess, SelectRequest, VuuCreateVisualLink, VuuMenu, VuuRemoveVisualLink, VuuRowDataItemType, VuuRpcMenuRequest, VuuRpcMenuResponse, VuuRpcServiceRequest, VuuTable } from "@vuu-ui/vuu-protocol-types";
|
|
4
4
|
import { Range } from "@vuu-ui/vuu-utils";
|
|
5
5
|
import { IVuuModule, RpcMenuService, RpcService, SessionTableMap } from "./core/module/VuuModule";
|
|
6
6
|
import { Table } from "./Table";
|
|
@@ -19,7 +19,7 @@ export interface TickingArrayDataSourceConstructorProps extends Omit<ArrayDataSo
|
|
|
19
19
|
export declare class TickingArrayDataSource extends ArrayDataSource {
|
|
20
20
|
#private;
|
|
21
21
|
constructor({ data, getVisualLinks, rpcServices, rpcMenuServices, sessionTables, table, menu, visualLink, visualLinkService, vuuModule, ...arrayDataSourceProps }: TickingArrayDataSourceConstructorProps);
|
|
22
|
-
updateRowWithSessionCheck: (row: VuuRowDataItemType
|
|
22
|
+
updateRowWithSessionCheck: (row: Array<bigint | VuuRowDataItemType>, columnName?: string, sessionId?: string) => void;
|
|
23
23
|
subscribe(subscribeProps: DataSourceSubscribeProps, callback: DataSourceSubscribeCallback): Promise<void>;
|
|
24
24
|
unsubscribe(): void;
|
|
25
25
|
set range(range: Range);
|
|
@@ -27,10 +27,29 @@ export declare class TickingArrayDataSource extends ArrayDataSource {
|
|
|
27
27
|
set links(links: LinkDescriptorWithLabel[] | undefined);
|
|
28
28
|
get links(): LinkDescriptorWithLabel[] | undefined;
|
|
29
29
|
getSelectedRowIds(): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Suppress row flushes from the source datasource while a session is active.
|
|
32
|
+
*
|
|
33
|
+
* `updateRowWithSessionCheck` already blocks individual row updates arriving
|
|
34
|
+
* via the table's "update" event. However, `sendRowsToClient` can also be
|
|
35
|
+
* reached through other paths that bypass that handler:
|
|
36
|
+
* - `setRange` (user scrolls the viewport)
|
|
37
|
+
* - config changes (filter / sort / group-by)
|
|
38
|
+
* - row inserts into the backing table
|
|
39
|
+
*
|
|
40
|
+
* Without this guard those paths would push source-table rows to the
|
|
41
|
+
* client and overwrite the edited session view.
|
|
42
|
+
*/
|
|
43
|
+
sendRowsToClient(forceFullRefresh?: boolean, row?: DataSourceRowWithBigint): void;
|
|
44
|
+
select(selectRequest: Omit<SelectRequest, "vpId">): void;
|
|
30
45
|
handleSessionMessage: (msg: DataSourceCallbackMessage) => void;
|
|
31
|
-
createSessionDataSource(sessionTable: VuuTable):
|
|
32
|
-
beginEditSession(editSessionMode?: EditSessionMode): Promise<
|
|
33
|
-
editCell(key: string, column: string, data: VuuRowDataItemType): Promise<
|
|
46
|
+
createSessionDataSource(sessionTable: VuuTable): DataSourceBase<DataSourceRowWithBigint>;
|
|
47
|
+
beginEditSession(editSessionMode?: EditSessionMode): Promise<DataSourceBase<DataSourceRowWithBigint> | undefined>;
|
|
48
|
+
editCell(key: string, column: string, data: VuuRowDataItemType): Promise<RpcResultSuccess | RpcResultError | undefined>;
|
|
49
|
+
addRow: (rowData?: Record<string, VuuRowDataItemType>) => Promise<true | string>;
|
|
50
|
+
deleteRow: (key: string, mode?: DeleteRowMode) => Promise<true | string>;
|
|
51
|
+
deleteSelectedRows: (mode?: DeleteRowMode) => Promise<RpcResultSuccess | RpcResultError>;
|
|
52
|
+
undoRowChange: (key: string) => Promise<RpcResultSuccess | RpcResultError>;
|
|
34
53
|
endEditSession(saveChanges?: boolean): Promise<void>;
|
|
35
54
|
rpcRequest(rpcRequest: Omit<VuuRpcServiceRequest, "context">): Promise<RpcResultSuccess | RpcResultError>;
|
|
36
55
|
menuRpcCall(rpcRequest: Omit<VuuRpcMenuRequest, "vpId">): Promise<VuuRpcMenuResponse>;
|
|
@@ -14,10 +14,6 @@ export declare class BasketModule extends VuuModule<BasketsTableName> {
|
|
|
14
14
|
get menus(): Record<BasketsTableName, VuuMenu | undefined>;
|
|
15
15
|
get schemas(): Readonly<Record<BasketsTableName, Readonly<import("@vuu-ui/vuu-data-types").TableSchema>>>;
|
|
16
16
|
get services(): {
|
|
17
|
-
algoType: undefined;
|
|
18
|
-
basketTradingConstituent: undefined;
|
|
19
|
-
basketConstituent: undefined;
|
|
20
|
-
priceStrategyType: undefined;
|
|
21
17
|
basket: {
|
|
22
18
|
rpcName: string;
|
|
23
19
|
service: ServiceHandler;
|
|
@@ -30,21 +26,25 @@ export declare class BasketModule extends VuuModule<BasketsTableName> {
|
|
|
30
26
|
rpcName: string;
|
|
31
27
|
service: ServiceHandler;
|
|
32
28
|
}[];
|
|
29
|
+
algoType: undefined;
|
|
30
|
+
basketTradingConstituent: undefined;
|
|
31
|
+
basketConstituent: undefined;
|
|
32
|
+
priceStrategyType: undefined;
|
|
33
33
|
};
|
|
34
34
|
get menuServices(): Record<BasketsTableName, RpcMenuService[] | undefined> | undefined;
|
|
35
35
|
get tables(): Record<BasketsTableName, Table>;
|
|
36
36
|
get visualLinks(): {
|
|
37
|
+
basketConstituent: {
|
|
38
|
+
fromColumn: string;
|
|
39
|
+
toColumn: string;
|
|
40
|
+
toTable: string;
|
|
41
|
+
}[];
|
|
37
42
|
algoType: undefined;
|
|
38
43
|
basket: undefined;
|
|
39
44
|
basketTrading: undefined;
|
|
40
45
|
basketTradingConstituent: undefined;
|
|
41
46
|
basketTradingConstituentJoin: undefined;
|
|
42
47
|
priceStrategyType: undefined;
|
|
43
|
-
basketConstituent: {
|
|
44
|
-
fromColumn: string;
|
|
45
|
-
toColumn: string;
|
|
46
|
-
toTable: string;
|
|
47
|
-
}[];
|
|
48
48
|
};
|
|
49
49
|
private createTradingBasket;
|
|
50
50
|
private createNewBasket;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DataSourceBase, DataSourceConfig, DataSourceRowWithBigint, DataSourceSubscribedMessage, DataSourceVisualLinkCreatedMessage, EditSessionMode, TableSchema } from "@vuu-ui/vuu-data-types";
|
|
2
2
|
import { VuuMenu, VuuLink, LinkDescriptorWithLabel, VuuRpcMenuResponse, VuuCreateVisualLink, VuuRemoveVisualLink, VuuRpcServiceRequest, RpcResultSuccess, RpcResultError, VuuRpcMenuRequest } from "@vuu-ui/vuu-protocol-types";
|
|
3
3
|
import { Table } from "../../Table";
|
|
4
4
|
import { SessionTable } from "../../SessionTable";
|
|
5
5
|
import { TickingArrayDataSource } from "../../TickingArrayDataSource";
|
|
6
6
|
export interface IVuuModule<T extends string = string> {
|
|
7
|
-
createDataSource: (tableName: T, viewport?: string, config?: DataSourceConfig) =>
|
|
7
|
+
createDataSource: (tableName: T, viewport?: string, config?: DataSourceConfig) => DataSourceBase<DataSourceRowWithBigint>;
|
|
8
8
|
}
|
|
9
9
|
export type SessionTableMap = Record<string, SessionTable | Table>;
|
|
10
10
|
export type ServiceHandler = (rpcRequest: VuuRpcServiceRequest) => Promise<RpcResultSuccess | RpcResultError>;
|
|
@@ -17,14 +17,19 @@ export type RpcMenuService = {
|
|
|
17
17
|
rpcName: string;
|
|
18
18
|
service: MenuServiceHandler;
|
|
19
19
|
};
|
|
20
|
+
export type VuuModuleOptions = {
|
|
21
|
+
/** Column written by session services (deleteRow, endEditSession) to report row-level status.
|
|
22
|
+
* Defaults to `"vuuMsg"` which matches the column added by `sessionTableSchema`. */
|
|
23
|
+
sessionTableMessageColumn?: string;
|
|
24
|
+
};
|
|
20
25
|
type Subscription = {
|
|
21
26
|
viewportId: string;
|
|
22
|
-
dataSource:
|
|
27
|
+
dataSource: DataSourceBase<DataSourceRowWithBigint>;
|
|
23
28
|
sessionTableName?: string;
|
|
24
29
|
};
|
|
25
30
|
export declare abstract class VuuModule<T extends string = string> implements IVuuModule<T> {
|
|
26
31
|
#private;
|
|
27
|
-
constructor(name: string);
|
|
32
|
+
constructor(name: string, { sessionTableMessageColumn }?: VuuModuleOptions);
|
|
28
33
|
protected abstract menus?: Record<T, VuuMenu | undefined> | undefined;
|
|
29
34
|
protected abstract schemas: Record<T, Readonly<TableSchema>>;
|
|
30
35
|
protected abstract tables: Record<T, Table>;
|
|
@@ -37,11 +42,11 @@ export declare abstract class VuuModule<T extends string = string> implements IV
|
|
|
37
42
|
protected unregisterViewport: (viewportId: string) => void;
|
|
38
43
|
get name(): string;
|
|
39
44
|
getSubscriptionByViewport(viewportId: string): Subscription;
|
|
40
|
-
getSubscribedDataSource(vpId: string):
|
|
45
|
+
getSubscribedDataSource(vpId: string): DataSourceBase<DataSourceRowWithBigint>;
|
|
41
46
|
getLinks: (subscriptionMap: Map<string, Subscription[]>, vuuLinks: VuuLink[]) => LinkDescriptorWithLabel[];
|
|
42
47
|
visualLinkService: (message: VuuCreateVisualLink | VuuRemoveVisualLink) => Promise<DataSourceVisualLinkCreatedMessage | void>;
|
|
43
48
|
getVisualLinks: (tableName: string) => LinkDescriptorWithLabel[] | undefined;
|
|
44
|
-
createDataSource: (tableName: T, viewport?: string, config?: DataSourceConfig) =>
|
|
49
|
+
createDataSource: (tableName: T, viewport?: string, config?: DataSourceConfig) => DataSourceBase<DataSourceRowWithBigint>;
|
|
45
50
|
getServices(tableName: T): RpcService[];
|
|
46
51
|
getMenuServices(tableName: T): RpcMenuService[];
|
|
47
52
|
protected get sessionTableMap(): SessionTableMap;
|
|
@@ -49,6 +54,8 @@ export declare abstract class VuuModule<T extends string = string> implements IV
|
|
|
49
54
|
protected getSessionTable(sessionTableName: string, throwIfNotFound: true): SessionTable;
|
|
50
55
|
protected getSessionTable(sessionTableName: string, throwIfNotFound: false): SessionTable | undefined;
|
|
51
56
|
protected deleteRow: ServiceHandler;
|
|
57
|
+
private deleteSelectedRows;
|
|
58
|
+
private undoRowChange;
|
|
52
59
|
private getColumnDescriptors;
|
|
53
60
|
private editCell;
|
|
54
61
|
private beginEditSessionMenuHandler;
|
|
@@ -7,7 +7,7 @@ declare class TableContainer {
|
|
|
7
7
|
#private;
|
|
8
8
|
private constructor();
|
|
9
9
|
static get instance(): TableContainer;
|
|
10
|
-
createTable: (schema: TableSchema, data: VuuRowDataItemType
|
|
10
|
+
createTable: (schema: TableSchema, data: Array<Array<VuuRowDataItemType | bigint>>, dataMap: ColumnMap, updateGenerator?: UpdateGenerator) => Table;
|
|
11
11
|
createJoinTable(joinTable: VuuTable, { table: t1 }: VuuTable, { table: t2 }: VuuTable, joinColumn: string): Table;
|
|
12
12
|
addTable(table: Table): void;
|
|
13
13
|
getTable<T = Table>(tableName: string): NonNullable<T>;
|
package/types/data-utils.d.ts
CHANGED
|
@@ -4,3 +4,4 @@ export type PriceGenerator = (min: number, max: number) => number;
|
|
|
4
4
|
export declare const nextRandomDouble: PriceGenerator;
|
|
5
5
|
export declare const initBidAsk: (priceMaxDelta: number, nextRandomDouble: PriceGenerator) => number[];
|
|
6
6
|
export declare const generateNextBidAsk: (bid: number, ask: number, spreadMultipler: number, priceMaxDelta: number, nextRandomDouble: PriceGenerator) => number[];
|
|
7
|
+
export declare const withNanoMs: (ts: number, nanos?: number) => bigint;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { DataSourceRow } from "@vuu-ui/vuu-data-types";
|
|
2
|
-
|
|
2
|
+
import { VuuRowDataItemType } from "@vuu-ui/vuu-protocol-types";
|
|
3
|
+
export declare const makeSuggestions: (data: DataSourceRow<bigint | VuuRowDataItemType>[], columnIndex: number, pattern?: string) => Promise<string[]>;
|
package/types/schemas.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TableSchema } from "@vuu-ui/vuu-data-types";
|
|
2
2
|
import { type BasketsTableName } from "./basket/basket-schemas";
|
|
3
3
|
import { type SimulTableName } from "./simul/simul-schemas";
|
|
4
|
-
import {
|
|
4
|
+
import { TestTableName } from "./test/TestModule";
|
|
5
5
|
export type VuuTableName = BasketsTableName | SimulTableName | TestTableName;
|
|
6
6
|
export declare const schemas: Record<VuuTableName, TableSchema>;
|
|
7
7
|
export declare const getAllSchemas: () => Record<VuuTableName, TableSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const instrumentsExtendedTable: import("
|
|
1
|
+
export declare const instrumentsExtendedTable: import("../../Table").Table;
|
|
@@ -14,7 +14,8 @@ export type InstrumentsDataRow = [
|
|
|
14
14
|
number,
|
|
15
15
|
ric,
|
|
16
16
|
date,
|
|
17
|
-
date
|
|
17
|
+
date,
|
|
18
|
+
string
|
|
18
19
|
];
|
|
19
20
|
export declare const InstrumentColumnMap: {
|
|
20
21
|
readonly bbg: 0;
|
|
@@ -26,8 +27,9 @@ export declare const InstrumentColumnMap: {
|
|
|
26
27
|
readonly ric: 6;
|
|
27
28
|
readonly vuuCreatedTimestamp: 7;
|
|
28
29
|
readonly vuuUpdatedTimestamp: 8;
|
|
30
|
+
readonly vuuMsg: 9;
|
|
29
31
|
};
|
|
30
32
|
declare const instrumentsData: InstrumentsDataRow[];
|
|
31
33
|
export declare const getRic: (defaultRic: string) => string;
|
|
32
|
-
export declare const instrumentsTable: import("
|
|
34
|
+
export declare const instrumentsTable: import("../../Table").Table;
|
|
33
35
|
export { instrumentsData };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const parentOrdersTable: import("
|
|
2
|
-
export declare const childOrdersTable: import("
|
|
1
|
+
export declare const parentOrdersTable: import("../../Table").Table;
|
|
2
|
+
export declare const childOrdersTable: import("../../Table").Table;
|
|
3
3
|
export declare function startGeneratingNewOrders(): void;
|
|
4
4
|
export declare function stopGeneratingNewOrders(): void;
|
|
@@ -10,6 +10,7 @@ type ric = string;
|
|
|
10
10
|
type scenario = "close";
|
|
11
11
|
type lastUpdate = number;
|
|
12
12
|
type created = number;
|
|
13
|
+
type vuuMsg = string;
|
|
13
14
|
export type PricesDataRow = [
|
|
14
15
|
ask,
|
|
15
16
|
askSize,
|
|
@@ -22,11 +23,12 @@ export type PricesDataRow = [
|
|
|
22
23
|
ric,
|
|
23
24
|
scenario,
|
|
24
25
|
lastUpdate,
|
|
25
|
-
created
|
|
26
|
+
created,
|
|
27
|
+
vuuMsg
|
|
26
28
|
];
|
|
27
29
|
declare const bid: number, bidSize: number, ask: number, askSize: number;
|
|
28
30
|
declare const lastUpdate: number;
|
|
29
31
|
declare const created: number;
|
|
30
32
|
declare const pricesData: Array<PricesDataRow>;
|
|
31
|
-
export declare const pricesTable: import("
|
|
33
|
+
export declare const pricesTable: import("../../Table").Table;
|
|
32
34
|
export { pricesData };
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { RpcMenuService, VuuModule } from "../core/module/VuuModule";
|
|
2
2
|
import { Table } from "../Table";
|
|
3
|
-
import {
|
|
3
|
+
import { TableSchema } from "@vuu-ui/vuu-data-types";
|
|
4
|
+
export type TestTableName = "TestDates" | "TwoHundredColumns" | "LinkParent" | "LinkChild" | "ChartTable";
|
|
4
5
|
declare class TestModule extends VuuModule<TestTableName> {
|
|
5
6
|
#private;
|
|
6
7
|
constructor();
|
|
7
8
|
get menus(): undefined;
|
|
8
9
|
get services(): undefined;
|
|
9
10
|
get menuServices(): Record<TestTableName, RpcMenuService[] | undefined> | undefined;
|
|
10
|
-
get schemas():
|
|
11
|
+
get schemas(): Record<TestTableName, TableSchema>;
|
|
11
12
|
get tables(): Record<TestTableName, Table>;
|
|
12
13
|
get visualLinks(): undefined;
|
|
13
14
|
}
|
package/types/test/index.d.ts
CHANGED
package/src/ArrayProxy.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
class ArrayProxy {
|
|
2
|
-
#getItem;
|
|
3
|
-
length = 0;
|
|
4
|
-
constructor(size, getRow){
|
|
5
|
-
this.#getItem = getRow;
|
|
6
|
-
this.length = size;
|
|
7
|
-
const handler = {
|
|
8
|
-
get: (target, prop)=>{
|
|
9
|
-
if ("length" === prop) return target.length;
|
|
10
|
-
if ("slice" === prop) return target.slice;
|
|
11
|
-
if ("map" === prop) return target.map;
|
|
12
|
-
if ("toString" === prop) return "[ArrayProxy]";
|
|
13
|
-
if ("string" == typeof prop) {
|
|
14
|
-
const index = parseInt(prop, 10);
|
|
15
|
-
if (!isNaN(index)) if (index < this.length) return target.#getItem(index);
|
|
16
|
-
else return;
|
|
17
|
-
}
|
|
18
|
-
throw Error(`unsupported property ${String(prop)} on ArrayProxy`);
|
|
19
|
-
},
|
|
20
|
-
set: (target, prop, newVal)=>{
|
|
21
|
-
if ("length" === prop) {
|
|
22
|
-
target.length = newVal;
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
throw Error("ArrayProxy is immutable except for length");
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
return new Proxy(this, handler);
|
|
29
|
-
}
|
|
30
|
-
map = (func)=>new ArrayProxy(this.length, (i)=>func(this.#getItem(i), i));
|
|
31
|
-
slice = (from, to)=>{
|
|
32
|
-
const out = [];
|
|
33
|
-
const end = Math.min(this.length, to);
|
|
34
|
-
for(let i = from; i < end; i++)out.push(this.#getItem(i));
|
|
35
|
-
return out;
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
export { ArrayProxy };
|
package/src/RuntimeVisualLink.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { buildColumnMap } from "@vuu-ui/vuu-utils";
|
|
2
|
-
class RuntimeVisualLink {
|
|
3
|
-
#childColumnName;
|
|
4
|
-
#childDataSource;
|
|
5
|
-
#parentColumnName;
|
|
6
|
-
#parentDataSource;
|
|
7
|
-
constructor(childDataSource, parentDataSource, childColumnName, parentColumnName){
|
|
8
|
-
this.#childColumnName = childColumnName;
|
|
9
|
-
this.#childDataSource = childDataSource;
|
|
10
|
-
this.#parentColumnName = parentColumnName;
|
|
11
|
-
this.#parentDataSource = parentDataSource;
|
|
12
|
-
parentDataSource.on("row-selection", this.handleParentSelectEvent);
|
|
13
|
-
}
|
|
14
|
-
destroy() {}
|
|
15
|
-
remove() {
|
|
16
|
-
this.#parentDataSource?.removeListener("row-selection", this.handleParentSelectEvent);
|
|
17
|
-
this.#childDataSource.baseFilter = {
|
|
18
|
-
filter: ""
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
handleParentSelectEvent = ()=>{
|
|
22
|
-
if (this.#childDataSource) {
|
|
23
|
-
const selectedValues = this.pickUniqueSelectedValues();
|
|
24
|
-
if (0 === selectedValues.length) this.#childDataSource.baseFilter = void 0;
|
|
25
|
-
else if (1 === selectedValues.length) this.#childDataSource.baseFilter = {
|
|
26
|
-
filter: `${this.#childColumnName} = "${selectedValues[0]}"`
|
|
27
|
-
};
|
|
28
|
-
else this.#childDataSource.baseFilter = {
|
|
29
|
-
filter: `${this.#childColumnName} in ["${selectedValues.join('","')}"]`
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
pickUniqueSelectedValues() {
|
|
34
|
-
const dataSource = this.#parentDataSource;
|
|
35
|
-
const map = buildColumnMap(dataSource.columns);
|
|
36
|
-
const colIndex = map[this.#parentColumnName];
|
|
37
|
-
const set = new Set();
|
|
38
|
-
for (const key of dataSource.getSelectedRowIds()){
|
|
39
|
-
const row = dataSource.getRowByKey(key);
|
|
40
|
-
if (row) set.add(row[colIndex]);
|
|
41
|
-
}
|
|
42
|
-
return Array.from(set);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
export { RuntimeVisualLink };
|
package/src/SessionTable.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from "@vuu-ui/vuu-utils";
|
|
2
|
-
const isProxy = Symbol("proxy-session-table");
|
|
3
|
-
const isProxySessionTable = (table)=>table[isProxy];
|
|
4
|
-
const SessionTable = (table, sessionId)=>{
|
|
5
|
-
const updates = new Map();
|
|
6
|
-
const eventEmitter = new EventEmitter();
|
|
7
|
-
const getSessionUpdates = ()=>updates;
|
|
8
|
-
const addEventListener = (event, handler)=>{
|
|
9
|
-
eventEmitter.on(event, handler);
|
|
10
|
-
};
|
|
11
|
-
const update = (key, columnName, value)=>{
|
|
12
|
-
const row = table.findByKey(key);
|
|
13
|
-
if (row) {
|
|
14
|
-
const tsIndex = table.map.vuuUpdatedTimestamp;
|
|
15
|
-
let updatesForRow = updates.get(key);
|
|
16
|
-
if (void 0 === updatesForRow) {
|
|
17
|
-
updatesForRow = {
|
|
18
|
-
lastUpdateTimestamp: row[tsIndex],
|
|
19
|
-
cellUpdates: {}
|
|
20
|
-
};
|
|
21
|
-
updates.set(key, updatesForRow);
|
|
22
|
-
}
|
|
23
|
-
updatesForRow.cellUpdates[columnName] = value;
|
|
24
|
-
const newRow = row.slice();
|
|
25
|
-
for (const [columnName, value] of Object.entries(updatesForRow.cellUpdates)){
|
|
26
|
-
const colIndex = table.map[columnName];
|
|
27
|
-
newRow[colIndex] = value;
|
|
28
|
-
}
|
|
29
|
-
eventEmitter.emit("update", newRow, columnName, sessionId);
|
|
30
|
-
} else console.warn(`SessionTable update row ${key} not found`);
|
|
31
|
-
};
|
|
32
|
-
return new Proxy(table, {
|
|
33
|
-
get (_obj, prop) {
|
|
34
|
-
if ("symbol" == typeof prop) {
|
|
35
|
-
if (prop === isProxy) return true;
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
if ("getSessionUpdates" === prop) return getSessionUpdates;
|
|
39
|
-
if ("on" === prop || "addEventListener" === prop) return addEventListener;
|
|
40
|
-
if ("update" === prop) return update;
|
|
41
|
-
if ("isProxy" === prop) return true;
|
|
42
|
-
return table[prop];
|
|
43
|
-
},
|
|
44
|
-
set () {
|
|
45
|
-
throw new TypeError("SessionTable is readonly");
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
export { SessionTable, isProxySessionTable };
|
package/src/Table.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from "@vuu-ui/vuu-utils";
|
|
2
|
-
class Table extends EventEmitter {
|
|
3
|
-
#data;
|
|
4
|
-
#dataMap;
|
|
5
|
-
#indexOfKey;
|
|
6
|
-
#index = new Map();
|
|
7
|
-
#schema;
|
|
8
|
-
constructor(schema, data, dataMap, updateGenerator){
|
|
9
|
-
super();
|
|
10
|
-
this.#data = data;
|
|
11
|
-
this.#dataMap = dataMap;
|
|
12
|
-
this.#schema = schema;
|
|
13
|
-
this.#indexOfKey = dataMap[schema.key];
|
|
14
|
-
this.buildIndex();
|
|
15
|
-
updateGenerator?.setTable(this);
|
|
16
|
-
updateGenerator?.setRange({
|
|
17
|
-
from: 0,
|
|
18
|
-
to: 100
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
buildIndex() {
|
|
22
|
-
for(let i = 0; i < this.#data.length; i++){
|
|
23
|
-
const key = this.#data[i][this.#indexOfKey];
|
|
24
|
-
this.#index.set(key, i);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
get data() {
|
|
28
|
-
return this.#data;
|
|
29
|
-
}
|
|
30
|
-
get map() {
|
|
31
|
-
return this.#dataMap;
|
|
32
|
-
}
|
|
33
|
-
get schema() {
|
|
34
|
-
return this.#schema;
|
|
35
|
-
}
|
|
36
|
-
get name() {
|
|
37
|
-
return this.#schema.table.table;
|
|
38
|
-
}
|
|
39
|
-
delete(key, emitEvent = true) {
|
|
40
|
-
const index = this.#index.get(key) ?? -1;
|
|
41
|
-
if (-1 !== index) {
|
|
42
|
-
this.#index.delete(key);
|
|
43
|
-
this.#data.splice(index, 1);
|
|
44
|
-
for(let i = index; i < this.#data.length; i++)this.#index.set(this.#data[i][this.#indexOfKey], i);
|
|
45
|
-
if (emitEvent) this.emit("delete", key);
|
|
46
|
-
} else throw Error(`[Table] delete key ${key} not found`);
|
|
47
|
-
}
|
|
48
|
-
insert(row, emitEvent = true) {
|
|
49
|
-
const index = this.#data.length;
|
|
50
|
-
this.#data.push(row);
|
|
51
|
-
const key = row[this.#indexOfKey];
|
|
52
|
-
this.#index.set(key, index);
|
|
53
|
-
if (emitEvent) this.emit("insert", row);
|
|
54
|
-
}
|
|
55
|
-
findByKey(key) {
|
|
56
|
-
const index = this.#index.get(key) ?? -1;
|
|
57
|
-
return this.#data[index];
|
|
58
|
-
}
|
|
59
|
-
update(key, columnName, value) {
|
|
60
|
-
const rowIndex = this.#data.findIndex((row)=>row[this.#indexOfKey] === key);
|
|
61
|
-
const colIndex = this.#dataMap[columnName];
|
|
62
|
-
if (-1 !== rowIndex) {
|
|
63
|
-
const row = this.#data[rowIndex];
|
|
64
|
-
const newRow = row.slice();
|
|
65
|
-
newRow[colIndex] = value;
|
|
66
|
-
const tsIndex = this.#dataMap.vuuUpdatedTimestamp;
|
|
67
|
-
if ("number" == typeof tsIndex) {
|
|
68
|
-
const lastUpdated = Date.now();
|
|
69
|
-
newRow[tsIndex] = lastUpdated;
|
|
70
|
-
}
|
|
71
|
-
this.#data[rowIndex] = newRow;
|
|
72
|
-
this.emit("update", newRow, columnName);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
updateRow(row) {
|
|
76
|
-
const key = row[this.#indexOfKey];
|
|
77
|
-
const rowIndex = this.#data.findIndex((row)=>row[this.#indexOfKey] === key);
|
|
78
|
-
if (-1 !== rowIndex) {
|
|
79
|
-
const tsIndex = this.#dataMap.vuuUpdatedTimestamp;
|
|
80
|
-
const lastUpdated = Date.now();
|
|
81
|
-
row[tsIndex] = lastUpdated;
|
|
82
|
-
this.#data[rowIndex] = row;
|
|
83
|
-
this.emit("update", row);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
function buildDataColumnMapFromSchema(schema) {
|
|
88
|
-
return Object.values(schema.columns).reduce((map, col, index)=>({
|
|
89
|
-
...map,
|
|
90
|
-
[col.name]: index
|
|
91
|
-
}), {});
|
|
92
|
-
}
|
|
93
|
-
function buildDataColumnMap(schemas, tableName) {
|
|
94
|
-
return buildDataColumnMapFromSchema(schemas[tableName]);
|
|
95
|
-
}
|
|
96
|
-
export { Table, buildDataColumnMap, buildDataColumnMapFromSchema };
|