@vuu-ui/vuu-data-test 0.8.60 → 0.8.61

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.
@@ -1,13 +1,25 @@
1
- import { makeSuggestions } from '../makeSuggestions.js';
1
+ import { uuid } from '@vuu-ui/vuu-utils';
2
2
  import { Table, buildDataColumnMap, joinTables } from '../Table.js';
3
3
  import { TickingArrayDataSource } from '../TickingArrayDataSource.js';
4
+ import { makeSuggestions } from '../makeSuggestions.js';
5
+ import { createSessionTableFromSelectedRows } from '../session-table-utils.js';
4
6
  import { instrumentsTable } from './reference-data/instruments.js';
5
7
  import { instrumentsExtendedTable } from './reference-data/instruments-extended.js';
6
8
  import { ordersTable } from './reference-data/orders.js';
7
9
  import { pricesTable } from './reference-data/prices.js';
8
10
  import { schemas } from './simul-schemas.js';
9
11
 
10
- const sessionTables = {};
12
+ const sessionTableMap = {};
13
+ const getSessionTable = () => {
14
+ if (Object.keys(sessionTableMap).length === 1) {
15
+ const [sessionTable] = Object.values(sessionTableMap);
16
+ return sessionTable;
17
+ } else {
18
+ throw Error(
19
+ "getSessionTable: should never be more than one session table in map"
20
+ );
21
+ }
22
+ };
11
23
  const tables = {
12
24
  childOrders: new Table(
13
25
  schemas.childOrders,
@@ -31,7 +43,7 @@ const tables = {
31
43
  prices: pricesTable
32
44
  };
33
45
  const getColumnDescriptors = (tableName) => {
34
- const schema = schemas[tableName] || sessionTables["session-table-1"].schema;
46
+ const schema = schemas[tableName] || getSessionTable()?.schema;
35
47
  if (schema) {
36
48
  return schema.columns;
37
49
  } else {
@@ -59,7 +71,7 @@ const menus = {
59
71
  context: "selected-rows",
60
72
  filter: "",
61
73
  name: "Edit Rows",
62
- rpcName: "BULK_EDIT"
74
+ rpcName: "VP_BULK_EDIT_BEGIN_RPC"
63
75
  }
64
76
  ]
65
77
  },
@@ -69,58 +81,43 @@ const menus = {
69
81
  parentOrders: void 0,
70
82
  prices: void 0
71
83
  };
72
- async function addInstrumentsToOrder() {
73
- const sessionTableId = "session-table-1";
74
- sessionTables[sessionTableId] = new Table(
75
- schemas.instruments,
76
- [],
77
- buildDataColumnMap(schemas, "instruments")
78
- );
79
- return {
80
- action: {
81
- renderComponent: "grid",
82
- table: {
83
- module: "SIMUL",
84
- table: "session-table-1"
85
- },
86
- type: "OPEN_DIALOG_ACTION"
87
- }
88
- };
89
- }
90
84
  const keyIndex = 6;
91
- async function editRow(rpcRequest) {
92
- const sessionTableId = "session-table-1";
93
- const sessionData = [];
94
- const selectedRowIds = rpcRequest.selectedRowIds;
95
- for (let i = 0; i < selectedRowIds.length; i++) {
96
- for (let j = 0; j < instrumentsTable.data.length; j++) {
97
- if (instrumentsTable.data[j][keyIndex] === selectedRowIds[i]) {
98
- sessionData.push(instrumentsTable.data[j]);
99
- }
100
- }
101
- }
102
- sessionTables[sessionTableId] = new Table(
103
- schemas.instruments,
104
- sessionData,
105
- buildDataColumnMap(schemas, "instruments")
106
- );
107
- return {
108
- action: {
109
- renderComponent: "grid",
110
- table: {
111
- module: "SIMUL",
112
- table: "session-table-1"
85
+ async function openBulkEdits(rpcRequest) {
86
+ const { selectedRowIds, table } = rpcRequest;
87
+ const dataTable = tables[table.table];
88
+ if (dataTable) {
89
+ const sessionTable = createSessionTableFromSelectedRows(
90
+ instrumentsTable,
91
+ selectedRowIds
92
+ );
93
+ const sessionTableName = `instruments-${uuid()}`;
94
+ sessionTableMap[sessionTableName] = sessionTable;
95
+ return {
96
+ action: {
97
+ renderComponent: "grid",
98
+ table: {
99
+ module: "SIMUL",
100
+ table: sessionTableName
101
+ },
102
+ tableSchema: dataTable.schema,
103
+ type: "OPEN_DIALOG_ACTION"
113
104
  },
114
- type: "OPEN_DIALOG_ACTION"
115
- },
116
- requestId: "request_id",
117
- rpcName: "BULK_EDIT"
118
- };
105
+ requestId: "request_id",
106
+ rpcName: "VP_BULK_EDIT_BEGIN_RPC"
107
+ };
108
+ } else {
109
+ return {
110
+ requestId: "request_id",
111
+ rpcName: "VP_BULK_EDIT_REJECT"
112
+ };
113
+ }
119
114
  }
120
- async function applyBulkEdits() {
121
- for (let i = 0; i < sessionTables["session-table-1"].data.length; i++) {
122
- const newRow = sessionTables["session-table-1"].data[i];
123
- instrumentsTable.updateRow(newRow);
115
+ async function applyBulkEdits(rpcRequest) {
116
+ const sessionTable = getSessionTable();
117
+ for (let i = 0; i < sessionTable.data.length; i++) {
118
+ const newRow = sessionTable.data[i];
119
+ const { column, value } = rpcRequest.namedParams;
120
+ sessionTable.update(String(newRow[keyIndex]), column, value);
124
121
  }
125
122
  return {
126
123
  action: {
@@ -132,17 +129,14 @@ async function applyBulkEdits() {
132
129
  type: "OPEN_DIALOG_ACTION"
133
130
  },
134
131
  requestId: "request_id",
135
- rpcName: "APPLY_BULK_EDITS"
132
+ rpcName: "VP_BULK_EDIT_COLUMN_CELLS_RPC"
136
133
  };
137
134
  }
138
- async function applyEditMultiple(rpcRequest) {
139
- for (let i = 0; i < sessionTables["session-table-1"].data.length; i++) {
140
- const newRow = sessionTables["session-table-1"].data[i];
141
- instrumentsTable.update(
142
- String(newRow[keyIndex]),
143
- rpcRequest.multiEditCol,
144
- rpcRequest.multiEditVal
145
- );
135
+ async function saveBulkEdits() {
136
+ const sessionTable = getSessionTable();
137
+ for (let i = 0; i < sessionTable.data.length; i++) {
138
+ const newRow = sessionTable.data[i];
139
+ instrumentsTable.updateRow(newRow);
146
140
  }
147
141
  return {
148
142
  action: {
@@ -154,27 +148,23 @@ async function applyEditMultiple(rpcRequest) {
154
148
  type: "OPEN_DIALOG_ACTION"
155
149
  },
156
150
  requestId: "request_id",
157
- rpcName: "APPLY_EDIT_MULTIPLE"
151
+ rpcName: "VP_BULK_EDIT_SUBMIT_RPC"
158
152
  };
159
153
  }
160
154
  const services = {
161
155
  childOrders: void 0,
162
156
  instruments: [
163
157
  {
164
- rpcName: "ADD_INSTRUMENTS_TO_ORDER",
165
- service: addInstrumentsToOrder
166
- },
167
- {
168
- rpcName: "BULK_EDIT",
169
- service: editRow
158
+ rpcName: "VP_BULK_EDIT_BEGIN_RPC",
159
+ service: openBulkEdits
170
160
  },
171
161
  {
172
- rpcName: "APPLY_BULK_EDITS",
162
+ rpcName: "VP_BULK_EDIT_COLUMN_CELLS_RPC",
173
163
  service: applyBulkEdits
174
164
  },
175
165
  {
176
- rpcName: "APPLY_EDIT_MULTIPLE",
177
- service: applyEditMultiple
166
+ rpcName: "VP_BULK_EDIT_SUBMIT_RPC",
167
+ service: saveBulkEdits
178
168
  }
179
169
  ],
180
170
  instrumentsExtended: void 0,
@@ -187,10 +177,11 @@ const createDataSource = (tableName) => {
187
177
  const columnDescriptors = getColumnDescriptors(tableName);
188
178
  return new TickingArrayDataSource({
189
179
  columnDescriptors,
190
- keyColumn: schemas[tableName] === void 0 ? sessionTables[tableName].schema.key : schemas[tableName].key,
191
- table: tables[tableName] || sessionTables[tableName],
180
+ keyColumn: schemas[tableName] === void 0 ? sessionTableMap[tableName].schema.key : schemas[tableName].key,
181
+ table: tables[tableName] || sessionTableMap[tableName],
192
182
  menu: menus[tableName],
193
- rpcServices: services[tableName]
183
+ rpcServices: services[tableName],
184
+ sessionTables: sessionTableMap
194
185
  });
195
186
  };
196
187
  const suggestionFetcher = ([
@@ -1 +1 @@
1
- {"version":3,"file":"simul-module.js","sources":["../../src/simul/simul-module.ts"],"sourcesContent":["import { SuggestionFetcher } from \"@vuu-ui/vuu-data-types\";\nimport {\n ClientToServerEditRpc,\n ClientToServerMenuRPC,\n TypeaheadParams,\n VuuMenu,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { makeSuggestions } from \"../makeSuggestions\";\nimport { buildDataColumnMap, joinTables, Table } from \"../Table\";\nimport { TickingArrayDataSource } from \"../TickingArrayDataSource\";\nimport type { VuuModule } from \"../vuu-modules\";\nimport { instrumentsTable } from \"./reference-data/instruments\";\nimport { instrumentsExtendedTable } from \"./reference-data/instruments-extended\";\nimport { ordersTable } from \"./reference-data/orders\";\nimport { pricesTable } from \"./reference-data/prices\";\nimport { schemas, type SimulTableName } from \"./simul-schemas\";\n\ntype RpcService = {\n rpcName: string;\n service: (rpcRequest: any) => Promise<unknown>;\n};\n\nconst sessionTables: Record<string, Table> = {};\n\nconst tables: Record<SimulTableName, Table> = {\n childOrders: new Table(\n schemas.childOrders,\n [],\n buildDataColumnMap<SimulTableName>(schemas, \"childOrders\")\n ),\n instruments: instrumentsTable,\n instrumentsExtended: instrumentsExtendedTable,\n instrumentPrices: joinTables(\n { module: \"SIMUL\", table: \"instrumentPrices\" },\n instrumentsTable,\n pricesTable,\n \"ric\"\n ),\n orders: ordersTable,\n parentOrders: new Table(\n schemas.parentOrders,\n [],\n buildDataColumnMap<SimulTableName>(schemas, \"parentOrders\")\n ),\n prices: pricesTable,\n};\n\nconst getColumnDescriptors = (tableName: SimulTableName) => {\n const schema = schemas[tableName] || sessionTables[\"session-table-1\"].schema;\n if (schema) {\n return schema.columns;\n } else {\n throw Error(`simul-module no schema found for table SIMUL ${tableName}`);\n }\n};\n\nconst menus: Record<SimulTableName, VuuMenu | undefined> = {\n childOrders: undefined,\n instruments: {\n name: \"ROOT\",\n menus: [\n {\n context: \"selected-rows\",\n filter: \"\",\n name: \"Add Instruments To Order\",\n rpcName: \"ADD_INSTRUMENTS_TO_ORDER\",\n },\n {\n context: \"selected-rows\",\n filter: \"\",\n name: \"Edit Row\",\n rpcName: \"EDIT_ROW\",\n },\n {\n context: \"selected-rows\",\n filter: \"\",\n name: \"Edit Rows\",\n rpcName: \"BULK_EDIT\",\n },\n ],\n },\n instrumentsExtended: undefined,\n instrumentPrices: undefined,\n orders: undefined,\n parentOrders: undefined,\n prices: undefined,\n};\n\nasync function addInstrumentsToOrder(/*rpcRequest: unknown*/) {\n // create a `session table`,\n // populate with selected Instruments\n // sens subscriptionn details to user\n\n const sessionTableId = \"session-table-1\";\n sessionTables[sessionTableId] = new Table(\n schemas.instruments,\n [],\n buildDataColumnMap<SimulTableName>(schemas, \"instruments\")\n );\n\n return {\n action: {\n renderComponent: \"grid\",\n table: {\n module: \"SIMUL\",\n table: \"session-table-1\",\n },\n type: \"OPEN_DIALOG_ACTION\",\n },\n };\n}\n\nconst keyIndex = 6;\nasync function editRow(\n rpcRequest:\n | Omit<ClientToServerMenuRPC, \"vpId\">\n | ClientToServerEditRpc\n | { selectedRowIds: string[] }\n) {\n const sessionTableId = \"session-table-1\";\n const sessionData: VuuRowDataItemType[][] = [];\n const selectedRowIds = (rpcRequest as { selectedRowIds: string[] })\n .selectedRowIds;\n for (let i = 0; i < selectedRowIds.length; i++) {\n for (let j = 0; j < instrumentsTable.data.length; j++) {\n if (instrumentsTable.data[j][keyIndex] === selectedRowIds[i]) {\n sessionData.push(instrumentsTable.data[j]);\n }\n }\n }\n sessionTables[sessionTableId] = new Table(\n schemas.instruments,\n sessionData,\n buildDataColumnMap(schemas, \"instruments\")\n );\n\n return {\n action: {\n renderComponent: \"grid\",\n table: {\n module: \"SIMUL\",\n table: \"session-table-1\",\n },\n type: \"OPEN_DIALOG_ACTION\",\n },\n requestId: \"request_id\",\n rpcName: \"BULK_EDIT\",\n };\n}\n\nasync function applyBulkEdits() {\n for (let i = 0; i < sessionTables[\"session-table-1\"].data.length; i++) {\n const newRow = sessionTables[\"session-table-1\"].data[i];\n instrumentsTable.updateRow(newRow);\n }\n\n return {\n action: {\n renderComponent: \"grid\",\n table: {\n module: \"SIMUL\",\n table: \"instruments\",\n },\n type: \"OPEN_DIALOG_ACTION\",\n },\n requestId: \"request_id\",\n rpcName: \"APPLY_BULK_EDITS\",\n };\n}\n\nasync function applyEditMultiple(\n rpcRequest:\n | Omit<ClientToServerMenuRPC, \"vpId\">\n | ClientToServerEditRpc\n | { multiEditCol: string }\n | { multiEditVal: string }\n) {\n for (let i = 0; i < sessionTables[\"session-table-1\"].data.length; i++) {\n const newRow = sessionTables[\"session-table-1\"].data[i];\n instrumentsTable.update(\n String(newRow[keyIndex]),\n (rpcRequest as { multiEditCol: string }).multiEditCol,\n (rpcRequest as { multiEditVal: string }).multiEditVal\n );\n }\n\n return {\n action: {\n renderComponent: \"grid\",\n table: {\n module: \"SIMUL\",\n table: \"instruments\",\n },\n type: \"OPEN_DIALOG_ACTION\",\n },\n requestId: \"request_id\",\n rpcName: \"APPLY_EDIT_MULTIPLE\",\n };\n}\n\nconst services: Record<SimulTableName, RpcService[] | undefined> = {\n childOrders: undefined,\n instruments: [\n {\n rpcName: \"ADD_INSTRUMENTS_TO_ORDER\",\n service: addInstrumentsToOrder,\n },\n {\n rpcName: \"BULK_EDIT\",\n service: editRow,\n },\n {\n rpcName: \"APPLY_BULK_EDITS\",\n service: applyBulkEdits,\n },\n {\n rpcName: \"APPLY_EDIT_MULTIPLE\",\n service: applyEditMultiple,\n },\n ],\n instrumentsExtended: undefined,\n instrumentPrices: undefined,\n orders: undefined,\n parentOrders: undefined,\n prices: undefined,\n};\n\nconst createDataSource = (tableName: SimulTableName) => {\n const columnDescriptors = getColumnDescriptors(tableName);\n //console.log(sessionTables['session-table-1'].schema);\n return new TickingArrayDataSource({\n columnDescriptors,\n keyColumn:\n schemas[tableName] === undefined\n ? sessionTables[tableName].schema.key\n : schemas[tableName].key,\n table: tables[tableName] || sessionTables[tableName],\n menu: menus[tableName],\n rpcServices: services[tableName],\n });\n};\n\nconst suggestionFetcher: SuggestionFetcher = ([\n vuuTable,\n column,\n pattern,\n]: TypeaheadParams) => {\n const table = tables[vuuTable.table as SimulTableName];\n if (table) {\n return makeSuggestions(table, column, pattern);\n } else {\n throw Error(\n `SIMUL suggestionFetcher, unknown table ${vuuTable.module} ${vuuTable.table}`\n );\n }\n};\n\nexport const simulModule: VuuModule<SimulTableName> = {\n createDataSource,\n typeaheadHook: () => suggestionFetcher,\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simul-module.js","sources":["../../src/simul/simul-module.ts"],"sourcesContent":["import { OpenDialogAction, SuggestionFetcher } from \"@vuu-ui/vuu-data-types\";\nimport {\n ClientToServerViewportRpcCall,\n TypeaheadParams,\n VuuMenu,\n VuuTable,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { uuid } from \"@vuu-ui/vuu-utils\";\nimport { Table, buildDataColumnMap, joinTables } from \"../Table\";\nimport { TickingArrayDataSource } from \"../TickingArrayDataSource\";\nimport { makeSuggestions } from \"../makeSuggestions\";\nimport { createSessionTableFromSelectedRows } from \"../session-table-utils\";\nimport type { VuuModule } from \"../vuu-modules\";\nimport { instrumentsTable } from \"./reference-data/instruments\";\nimport { instrumentsExtendedTable } from \"./reference-data/instruments-extended\";\nimport { ordersTable } from \"./reference-data/orders\";\nimport { pricesTable } from \"./reference-data/prices\";\nimport { schemas, type SimulTableName } from \"./simul-schemas\";\n\ntype RpcService = {\n rpcName: string;\n service: (\n rpcRequest: Omit<ClientToServerViewportRpcCall, \"vpId\"> & {\n namedParams: { [key: string]: unknown };\n selectedRowIds: string[];\n table: VuuTable;\n }\n ) => Promise<unknown>;\n};\n\nexport type SessionTableMap = Record<string, Table>;\nconst sessionTableMap: SessionTableMap = {};\n\nconst getSessionTable = () => {\n if (Object.keys(sessionTableMap).length === 1) {\n const [sessionTable] = Object.values(sessionTableMap);\n return sessionTable;\n } else {\n throw Error(\n \"getSessionTable: should never be more than one session table in map\"\n );\n }\n};\n\nconst tables: Record<SimulTableName, Table> = {\n childOrders: new Table(\n schemas.childOrders,\n [],\n buildDataColumnMap<SimulTableName>(schemas, \"childOrders\")\n ),\n instruments: instrumentsTable,\n instrumentsExtended: instrumentsExtendedTable,\n instrumentPrices: joinTables(\n { module: \"SIMUL\", table: \"instrumentPrices\" },\n instrumentsTable,\n pricesTable,\n \"ric\"\n ),\n orders: ordersTable,\n parentOrders: new Table(\n schemas.parentOrders,\n [],\n buildDataColumnMap<SimulTableName>(schemas, \"parentOrders\")\n ),\n prices: pricesTable,\n};\n\nconst getColumnDescriptors = (tableName: SimulTableName) => {\n const schema = schemas[tableName] || getSessionTable()?.schema;\n if (schema) {\n return schema.columns;\n } else {\n throw Error(`simul-module no schema found for table SIMUL ${tableName}`);\n }\n};\n\nconst menus: Record<SimulTableName, VuuMenu | undefined> = {\n childOrders: undefined,\n instruments: {\n name: \"ROOT\",\n menus: [\n {\n context: \"selected-rows\",\n filter: \"\",\n name: \"Add Instruments To Order\",\n rpcName: \"ADD_INSTRUMENTS_TO_ORDER\",\n },\n {\n context: \"selected-rows\",\n filter: \"\",\n name: \"Edit Row\",\n rpcName: \"EDIT_ROW\",\n },\n {\n context: \"selected-rows\",\n filter: \"\",\n name: \"Edit Rows\",\n rpcName: \"VP_BULK_EDIT_BEGIN_RPC\",\n },\n ],\n },\n instrumentsExtended: undefined,\n instrumentPrices: undefined,\n orders: undefined,\n parentOrders: undefined,\n prices: undefined,\n};\n\nconst keyIndex = 6;\n\nasync function openBulkEdits(\n rpcRequest: Omit<ClientToServerViewportRpcCall, \"vpId\"> & {\n selectedRowIds: string[];\n table: VuuTable;\n }\n) {\n const { selectedRowIds, table } = rpcRequest;\n\n const dataTable = tables[table.table as SimulTableName];\n if (dataTable) {\n const sessionTable = createSessionTableFromSelectedRows(\n instrumentsTable,\n selectedRowIds\n );\n const sessionTableName = `instruments-${uuid()}`;\n sessionTableMap[sessionTableName] = sessionTable;\n\n return {\n action: {\n renderComponent: \"grid\",\n table: {\n module: \"SIMUL\",\n table: sessionTableName,\n },\n tableSchema: dataTable.schema,\n type: \"OPEN_DIALOG_ACTION\",\n } as OpenDialogAction,\n requestId: \"request_id\",\n rpcName: \"VP_BULK_EDIT_BEGIN_RPC\",\n };\n } else {\n return {\n requestId: \"request_id\",\n rpcName: \"VP_BULK_EDIT_REJECT\",\n };\n }\n}\n\n// Bulk-edit with input in session table\nasync function applyBulkEdits(\n rpcRequest: Omit<ClientToServerViewportRpcCall, \"vpId\"> & {\n namedParams: { [key: string]: unknown };\n selectedRowIds: string[];\n table: VuuTable;\n }\n) {\n const sessionTable = getSessionTable();\n\n for (let i = 0; i < sessionTable.data.length; i++) {\n const newRow = sessionTable.data[i];\n const { column, value } = rpcRequest.namedParams;\n sessionTable.update(String(newRow[keyIndex]), column as string, value);\n }\n\n return {\n action: {\n renderComponent: \"grid\",\n table: {\n module: \"SIMUL\",\n table: \"instruments\",\n },\n type: \"OPEN_DIALOG_ACTION\",\n },\n requestId: \"request_id\",\n rpcName: \"VP_BULK_EDIT_COLUMN_CELLS_RPC\",\n };\n}\n\n// Save session table data to main table\nasync function saveBulkEdits() {\n const sessionTable = getSessionTable();\n\n for (let i = 0; i < sessionTable.data.length; i++) {\n const newRow = sessionTable.data[i];\n instrumentsTable.updateRow(newRow);\n }\n\n return {\n action: {\n renderComponent: \"grid\",\n table: {\n module: \"SIMUL\",\n table: \"instruments\",\n },\n type: \"OPEN_DIALOG_ACTION\",\n },\n requestId: \"request_id\",\n rpcName: \"VP_BULK_EDIT_SUBMIT_RPC\",\n };\n}\n\nconst services: Record<SimulTableName, RpcService[] | undefined> = {\n childOrders: undefined,\n instruments: [\n {\n rpcName: \"VP_BULK_EDIT_BEGIN_RPC\",\n service: openBulkEdits,\n },\n {\n rpcName: \"VP_BULK_EDIT_COLUMN_CELLS_RPC\",\n service: applyBulkEdits,\n },\n {\n rpcName: \"VP_BULK_EDIT_SUBMIT_RPC\",\n service: saveBulkEdits,\n },\n ],\n instrumentsExtended: undefined,\n instrumentPrices: undefined,\n orders: undefined,\n parentOrders: undefined,\n prices: undefined,\n};\n\nconst createDataSource = (tableName: SimulTableName) => {\n const columnDescriptors = getColumnDescriptors(tableName);\n return new TickingArrayDataSource({\n columnDescriptors,\n keyColumn:\n schemas[tableName] === undefined\n ? sessionTableMap[tableName].schema.key\n : schemas[tableName].key,\n table: tables[tableName] || sessionTableMap[tableName],\n menu: menus[tableName],\n rpcServices: services[tableName],\n sessionTables: sessionTableMap,\n });\n};\n\nconst suggestionFetcher: SuggestionFetcher = ([\n vuuTable,\n column,\n pattern,\n]: TypeaheadParams) => {\n const table = tables[vuuTable.table as SimulTableName];\n if (table) {\n return makeSuggestions(table, column, pattern);\n } else {\n throw Error(\n `SIMUL suggestionFetcher, unknown table ${vuuTable.module} ${vuuTable.table}`\n );\n }\n};\n\nexport const simulModule: VuuModule<SimulTableName> = {\n createDataSource,\n typeaheadHook: () => suggestionFetcher,\n};\n"],"names":[],"mappings":";;;;;;;;;;;AA+BA,MAAM,kBAAmC,EAAC,CAAA;AAE1C,MAAM,kBAAkB,MAAM;AAC5B,EAAA,IAAI,MAAO,CAAA,IAAA,CAAK,eAAe,CAAA,CAAE,WAAW,CAAG,EAAA;AAC7C,IAAA,MAAM,CAAC,YAAY,CAAI,GAAA,MAAA,CAAO,OAAO,eAAe,CAAA,CAAA;AACpD,IAAO,OAAA,YAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,KAAA;AAAA,MACJ,qEAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAA,CAAA;AAEA,MAAM,MAAwC,GAAA;AAAA,EAC5C,aAAa,IAAI,KAAA;AAAA,IACf,OAAQ,CAAA,WAAA;AAAA,IACR,EAAC;AAAA,IACD,kBAAA,CAAmC,SAAS,aAAa,CAAA;AAAA,GAC3D;AAAA,EACA,WAAa,EAAA,gBAAA;AAAA,EACb,mBAAqB,EAAA,wBAAA;AAAA,EACrB,gBAAkB,EAAA,UAAA;AAAA,IAChB,EAAE,MAAA,EAAQ,OAAS,EAAA,KAAA,EAAO,kBAAmB,EAAA;AAAA,IAC7C,gBAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,GACF;AAAA,EACA,MAAQ,EAAA,WAAA;AAAA,EACR,cAAc,IAAI,KAAA;AAAA,IAChB,OAAQ,CAAA,YAAA;AAAA,IACR,EAAC;AAAA,IACD,kBAAA,CAAmC,SAAS,cAAc,CAAA;AAAA,GAC5D;AAAA,EACA,MAAQ,EAAA,WAAA;AACV,CAAA,CAAA;AAEA,MAAM,oBAAA,GAAuB,CAAC,SAA8B,KAAA;AAC1D,EAAA,MAAM,MAAS,GAAA,OAAA,CAAQ,SAAS,CAAA,IAAK,iBAAmB,EAAA,MAAA,CAAA;AACxD,EAAA,IAAI,MAAQ,EAAA;AACV,IAAA,OAAO,MAAO,CAAA,OAAA,CAAA;AAAA,GACT,MAAA;AACL,IAAM,MAAA,KAAA,CAAM,CAAgD,6CAAA,EAAA,SAAS,CAAE,CAAA,CAAA,CAAA;AAAA,GACzE;AACF,CAAA,CAAA;AAEA,MAAM,KAAqD,GAAA;AAAA,EACzD,WAAa,EAAA,KAAA,CAAA;AAAA,EACb,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,IACN,KAAO,EAAA;AAAA,MACL;AAAA,QACE,OAAS,EAAA,eAAA;AAAA,QACT,MAAQ,EAAA,EAAA;AAAA,QACR,IAAM,EAAA,0BAAA;AAAA,QACN,OAAS,EAAA,0BAAA;AAAA,OACX;AAAA,MACA;AAAA,QACE,OAAS,EAAA,eAAA;AAAA,QACT,MAAQ,EAAA,EAAA;AAAA,QACR,IAAM,EAAA,UAAA;AAAA,QACN,OAAS,EAAA,UAAA;AAAA,OACX;AAAA,MACA;AAAA,QACE,OAAS,EAAA,eAAA;AAAA,QACT,MAAQ,EAAA,EAAA;AAAA,QACR,IAAM,EAAA,WAAA;AAAA,QACN,OAAS,EAAA,wBAAA;AAAA,OACX;AAAA,KACF;AAAA,GACF;AAAA,EACA,mBAAqB,EAAA,KAAA,CAAA;AAAA,EACrB,gBAAkB,EAAA,KAAA,CAAA;AAAA,EAClB,MAAQ,EAAA,KAAA,CAAA;AAAA,EACR,YAAc,EAAA,KAAA,CAAA;AAAA,EACd,MAAQ,EAAA,KAAA,CAAA;AACV,CAAA,CAAA;AAEA,MAAM,QAAW,GAAA,CAAA,CAAA;AAEjB,eAAe,cACb,UAIA,EAAA;AACA,EAAM,MAAA,EAAE,cAAgB,EAAA,KAAA,EAAU,GAAA,UAAA,CAAA;AAElC,EAAM,MAAA,SAAA,GAAY,MAAO,CAAA,KAAA,CAAM,KAAuB,CAAA,CAAA;AACtD,EAAA,IAAI,SAAW,EAAA;AACb,IAAA,MAAM,YAAe,GAAA,kCAAA;AAAA,MACnB,gBAAA;AAAA,MACA,cAAA;AAAA,KACF,CAAA;AACA,IAAM,MAAA,gBAAA,GAAmB,CAAe,YAAA,EAAA,IAAA,EAAM,CAAA,CAAA,CAAA;AAC9C,IAAA,eAAA,CAAgB,gBAAgB,CAAI,GAAA,YAAA,CAAA;AAEpC,IAAO,OAAA;AAAA,MACL,MAAQ,EAAA;AAAA,QACN,eAAiB,EAAA,MAAA;AAAA,QACjB,KAAO,EAAA;AAAA,UACL,MAAQ,EAAA,OAAA;AAAA,UACR,KAAO,EAAA,gBAAA;AAAA,SACT;AAAA,QACA,aAAa,SAAU,CAAA,MAAA;AAAA,QACvB,IAAM,EAAA,oBAAA;AAAA,OACR;AAAA,MACA,SAAW,EAAA,YAAA;AAAA,MACX,OAAS,EAAA,wBAAA;AAAA,KACX,CAAA;AAAA,GACK,MAAA;AACL,IAAO,OAAA;AAAA,MACL,SAAW,EAAA,YAAA;AAAA,MACX,OAAS,EAAA,qBAAA;AAAA,KACX,CAAA;AAAA,GACF;AACF,CAAA;AAGA,eAAe,eACb,UAKA,EAAA;AACA,EAAA,MAAM,eAAe,eAAgB,EAAA,CAAA;AAErC,EAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,YAAa,CAAA,IAAA,CAAK,QAAQ,CAAK,EAAA,EAAA;AACjD,IAAM,MAAA,MAAA,GAAS,YAAa,CAAA,IAAA,CAAK,CAAC,CAAA,CAAA;AAClC,IAAA,MAAM,EAAE,MAAA,EAAQ,KAAM,EAAA,GAAI,UAAW,CAAA,WAAA,CAAA;AACrC,IAAA,YAAA,CAAa,OAAO,MAAO,CAAA,MAAA,CAAO,QAAQ,CAAC,CAAA,EAAG,QAAkB,KAAK,CAAA,CAAA;AAAA,GACvE;AAEA,EAAO,OAAA;AAAA,IACL,MAAQ,EAAA;AAAA,MACN,eAAiB,EAAA,MAAA;AAAA,MACjB,KAAO,EAAA;AAAA,QACL,MAAQ,EAAA,OAAA;AAAA,QACR,KAAO,EAAA,aAAA;AAAA,OACT;AAAA,MACA,IAAM,EAAA,oBAAA;AAAA,KACR;AAAA,IACA,SAAW,EAAA,YAAA;AAAA,IACX,OAAS,EAAA,+BAAA;AAAA,GACX,CAAA;AACF,CAAA;AAGA,eAAe,aAAgB,GAAA;AAC7B,EAAA,MAAM,eAAe,eAAgB,EAAA,CAAA;AAErC,EAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,YAAa,CAAA,IAAA,CAAK,QAAQ,CAAK,EAAA,EAAA;AACjD,IAAM,MAAA,MAAA,GAAS,YAAa,CAAA,IAAA,CAAK,CAAC,CAAA,CAAA;AAClC,IAAA,gBAAA,CAAiB,UAAU,MAAM,CAAA,CAAA;AAAA,GACnC;AAEA,EAAO,OAAA;AAAA,IACL,MAAQ,EAAA;AAAA,MACN,eAAiB,EAAA,MAAA;AAAA,MACjB,KAAO,EAAA;AAAA,QACL,MAAQ,EAAA,OAAA;AAAA,QACR,KAAO,EAAA,aAAA;AAAA,OACT;AAAA,MACA,IAAM,EAAA,oBAAA;AAAA,KACR;AAAA,IACA,SAAW,EAAA,YAAA;AAAA,IACX,OAAS,EAAA,yBAAA;AAAA,GACX,CAAA;AACF,CAAA;AAEA,MAAM,QAA6D,GAAA;AAAA,EACjE,WAAa,EAAA,KAAA,CAAA;AAAA,EACb,WAAa,EAAA;AAAA,IACX;AAAA,MACE,OAAS,EAAA,wBAAA;AAAA,MACT,OAAS,EAAA,aAAA;AAAA,KACX;AAAA,IACA;AAAA,MACE,OAAS,EAAA,+BAAA;AAAA,MACT,OAAS,EAAA,cAAA;AAAA,KACX;AAAA,IACA;AAAA,MACE,OAAS,EAAA,yBAAA;AAAA,MACT,OAAS,EAAA,aAAA;AAAA,KACX;AAAA,GACF;AAAA,EACA,mBAAqB,EAAA,KAAA,CAAA;AAAA,EACrB,gBAAkB,EAAA,KAAA,CAAA;AAAA,EAClB,MAAQ,EAAA,KAAA,CAAA;AAAA,EACR,YAAc,EAAA,KAAA,CAAA;AAAA,EACd,MAAQ,EAAA,KAAA,CAAA;AACV,CAAA,CAAA;AAEA,MAAM,gBAAA,GAAmB,CAAC,SAA8B,KAAA;AACtD,EAAM,MAAA,iBAAA,GAAoB,qBAAqB,SAAS,CAAA,CAAA;AACxD,EAAA,OAAO,IAAI,sBAAuB,CAAA;AAAA,IAChC,iBAAA;AAAA,IACA,SACE,EAAA,OAAA,CAAQ,SAAS,CAAA,KAAM,KACnB,CAAA,GAAA,eAAA,CAAgB,SAAS,CAAA,CAAE,MAAO,CAAA,GAAA,GAClC,OAAQ,CAAA,SAAS,CAAE,CAAA,GAAA;AAAA,IACzB,KAAO,EAAA,MAAA,CAAO,SAAS,CAAA,IAAK,gBAAgB,SAAS,CAAA;AAAA,IACrD,IAAA,EAAM,MAAM,SAAS,CAAA;AAAA,IACrB,WAAA,EAAa,SAAS,SAAS,CAAA;AAAA,IAC/B,aAAe,EAAA,eAAA;AAAA,GAChB,CAAA,CAAA;AACH,CAAA,CAAA;AAEA,MAAM,oBAAuC,CAAC;AAAA,EAC5C,QAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AACF,CAAuB,KAAA;AACrB,EAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,QAAA,CAAS,KAAuB,CAAA,CAAA;AACrD,EAAA,IAAI,KAAO,EAAA;AACT,IAAO,OAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,EAAQ,OAAO,CAAA,CAAA;AAAA,GACxC,MAAA;AACL,IAAM,MAAA,KAAA;AAAA,MACJ,CAA0C,uCAAA,EAAA,QAAA,CAAS,MAAM,CAAA,CAAA,EAAI,SAAS,KAAK,CAAA,CAAA;AAAA,KAC7E,CAAA;AAAA,GACF;AACF,CAAA,CAAA;AAEO,MAAM,WAAyC,GAAA;AAAA,EACpD,gBAAA;AAAA,EACA,eAAe,MAAM,iBAAA;AACvB;;;;"}
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
- "version": "0.8.60",
2
+ "version": "0.8.61",
3
3
  "author": "heswell",
4
4
  "license": "Apache-2.0",
5
5
  "dependencies": {
6
- "@vuu-ui/vuu-data-local": "0.8.60",
7
- "@vuu-ui/vuu-utils": "0.8.60",
6
+ "@vuu-ui/vuu-data-local": "0.8.61",
7
+ "@vuu-ui/vuu-utils": "0.8.61",
8
8
  "@thomaschaplin/isin-generator": "1.0.3"
9
9
  },
10
10
  "devDependencies": {
11
- "@vuu-ui/vuu-protocol-types": "0.8.60",
12
- "@vuu-ui/vuu-data-types": "0.8.60",
13
- "@vuu-ui/vuu-table-types": "0.8.60"
11
+ "@vuu-ui/vuu-protocol-types": "0.8.61",
12
+ "@vuu-ui/vuu-data-types": "0.8.61",
13
+ "@vuu-ui/vuu-table-types": "0.8.61"
14
14
  },
15
15
  "sideEffects": false,
16
16
  "files": [
package/types/Table.d.ts CHANGED
@@ -19,6 +19,7 @@ export declare class Table extends EventEmitter<TableEvents> {
19
19
  update(key: string, columnName: string, value: VuuRowDataItemType): void;
20
20
  updateRow(row: VuuRowDataItemType[]): void;
21
21
  }
22
+ export declare function buildDataColumnMapFromSchema(schema: Readonly<TableSchema>): ColumnMap;
22
23
  /**
23
24
  * Build a data ColumnMap for a table in the provided schema.
24
25
  * A data ColumnMap is a mapping from a raw data array to a map, keyed
@@ -1,7 +1,8 @@
1
1
  import { ArrayDataSource, ArrayDataSourceConstructorProps } from "@vuu-ui/vuu-data-local";
2
2
  import type { DataSourceRow, MenuRpcResponse, RpcResponse, SubscribeCallback, SubscribeProps, VuuUIMessageInRPCEditReject, VuuUIMessageInRPCEditResponse } from "@vuu-ui/vuu-data-types";
3
- import type { ClientToServerEditRpc, ClientToServerMenuRPC, ClientToServerViewportRpcCall, VuuMenu, VuuRange, VuuRowDataItemType } from "@vuu-ui/vuu-protocol-types";
3
+ import type { ClientToServerEditRpc, ClientToServerMenuRPC, ClientToServerViewportRpcCall, VuuMenu, VuuRange, VuuRowDataItemType, VuuTable } from "@vuu-ui/vuu-protocol-types";
4
4
  import { Table } from "./Table";
5
+ import { SessionTableMap } from "./simul";
5
6
  export type RpcService = {
6
7
  rpcName: string;
7
8
  service: (rpcRequest: any) => Promise<any>;
@@ -11,20 +12,20 @@ export interface TickingArrayDataSourceConstructorProps extends Omit<ArrayDataSo
11
12
  menu?: VuuMenu;
12
13
  menuRpcServices?: RpcService[];
13
14
  rpcServices?: RpcService[];
15
+ sessionTables?: SessionTableMap;
14
16
  table?: Table;
15
17
  }
16
18
  export declare class TickingArrayDataSource extends ArrayDataSource {
17
19
  #private;
18
- constructor({ data, menuRpcServices, rpcServices, table, menu, ...arrayDataSourceProps }: TickingArrayDataSourceConstructorProps);
20
+ constructor({ data, menuRpcServices, rpcServices, sessionTables, table, menu, ...arrayDataSourceProps }: TickingArrayDataSourceConstructorProps);
19
21
  subscribe(subscribeProps: SubscribeProps, callback: SubscribeCallback): Promise<void>;
20
22
  set range(range: VuuRange);
21
23
  get range(): VuuRange;
22
24
  private getSelectedRows;
23
25
  private getSelectedRowIds;
24
- private getMultiEditCol;
25
- private getMultiEditVal;
26
26
  applyEdit(row: DataSourceRow, columnName: string, value: VuuRowDataItemType): Promise<true>;
27
27
  rpcCall<T extends RpcResponse = RpcResponse>(rpcRequest: Omit<ClientToServerViewportRpcCall, "vpId">): Promise<T | undefined>;
28
28
  menuRpcCall(rpcRequest: Omit<ClientToServerMenuRPC, "vpId"> | ClientToServerEditRpc): Promise<MenuRpcResponse | VuuUIMessageInRPCEditReject | VuuUIMessageInRPCEditResponse | undefined>;
29
29
  getTypeaheadSuggestions(column: string, pattern?: string): Promise<string[]>;
30
+ createSessionDataSource(vuuTable: VuuTable): TickingArrayDataSource;
30
31
  }
@@ -0,0 +1,2 @@
1
+ import { Table } from "./Table";
2
+ export declare const createSessionTableFromSelectedRows: (table: Table, selectedRowIds: string[]) => Table;
@@ -1,3 +1,5 @@
1
+ import { Table } from "../Table";
1
2
  import type { VuuModule } from "../vuu-modules";
2
3
  import { type SimulTableName } from "./simul-schemas";
4
+ export type SessionTableMap = Record<string, Table>;
3
5
  export declare const simulModule: VuuModule<SimulTableName>;