@vuu-ui/vuu-data-remote 0.8.96 → 0.8.97
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/index.js +2 -2
- package/cjs/inlined-worker.js +83 -160
- package/cjs/inlined-worker.js.map +1 -1
- package/cjs/rest-data/{rest-data-source.js → RestDataSource.js} +40 -68
- package/cjs/rest-data/RestDataSource.js.map +1 -0
- package/cjs/rest-data/rest-utils.js +8 -0
- package/cjs/rest-data/rest-utils.js.map +1 -1
- package/cjs/vuu-data-source.js +36 -202
- package/cjs/vuu-data-source.js.map +1 -1
- package/esm/index.js +1 -1
- package/esm/inlined-worker.js +83 -160
- package/esm/inlined-worker.js.map +1 -1
- package/esm/rest-data/{rest-data-source.js → RestDataSource.js} +42 -70
- package/esm/rest-data/RestDataSource.js.map +1 -0
- package/esm/rest-data/rest-utils.js +7 -1
- package/esm/rest-data/rest-utils.js.map +1 -1
- package/esm/vuu-data-source.js +37 -203
- package/esm/vuu-data-source.js.map +1 -1
- package/package.json +7 -7
- package/types/index.d.ts +1 -1
- package/types/inlined-worker.d.ts +1 -1
- package/types/rest-data/RestDataSource.d.ts +41 -0
- package/types/rest-data/rest-utils.d.ts +3 -0
- package/types/server-proxy/server-proxy.d.ts +0 -3
- package/types/server-proxy/viewport.d.ts +4 -27
- package/types/vuu-data-source.d.ts +9 -23
- package/cjs/rest-data/rest-data-source.js.map +0 -1
- package/esm/rest-data/rest-data-source.js.map +0 -1
- package/types/rest-data/rest-data-source.d.ts +0 -48
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { NDJsonReader, jsonToDataSourceRow } from './rest-utils.js';
|
|
1
|
+
import { BaseDataSource, buildColumnMap, NULL_RANGE, hasSort, hasFilter } from '@vuu-ui/vuu-utils';
|
|
2
|
+
import { NDJsonReader, sortToQueryString, filterToQueryString, jsonToDataSourceRow } from './rest-utils.js';
|
|
3
3
|
import { MovingWindow } from './moving-window.js';
|
|
4
4
|
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -11,16 +11,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
11
11
|
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
12
12
|
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
13
13
|
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);
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
table,
|
|
19
|
-
title,
|
|
20
|
-
viewport = uuid()
|
|
21
|
-
}) {
|
|
22
|
-
super();
|
|
23
|
-
__publicField(this, "clientCallback");
|
|
14
|
+
var _columnMap, _dataWindow;
|
|
15
|
+
const _RestDataSource = class _RestDataSource extends BaseDataSource {
|
|
16
|
+
constructor(props) {
|
|
17
|
+
super(props);
|
|
24
18
|
__privateAdd(this, _columnMap, buildColumnMap([
|
|
25
19
|
"bbg",
|
|
26
20
|
"currency",
|
|
@@ -29,20 +23,11 @@ const _RestDataSource = class _RestDataSource extends EventEmitter {
|
|
|
29
23
|
"ric",
|
|
30
24
|
"lotSize"
|
|
31
25
|
]));
|
|
32
|
-
__privateAdd(this, _config, vanillaConfig);
|
|
33
|
-
__privateAdd(this, _data, []);
|
|
34
26
|
__privateAdd(this, _dataWindow, new MovingWindow(NULL_RANGE));
|
|
35
|
-
__privateAdd(this, _range, NULL_RANGE);
|
|
36
|
-
__privateAdd(this, _title);
|
|
37
|
-
__publicField(this, "aggregations", []);
|
|
38
|
-
__publicField(this, "filter", { filter: "" });
|
|
39
27
|
__publicField(this, "groupBy", []);
|
|
40
28
|
__publicField(this, "selectedRowsCount", 0);
|
|
41
|
-
__publicField(this, "size", 0);
|
|
42
|
-
__publicField(this, "sort", { sortDefs: [] });
|
|
43
29
|
__publicField(this, "status", "initialising");
|
|
44
30
|
__publicField(this, "table");
|
|
45
|
-
__publicField(this, "viewport");
|
|
46
31
|
__publicField(this, "fetchData", async () => {
|
|
47
32
|
const { recordCount } = await this.fetchMetaData();
|
|
48
33
|
const pageCount = Math.ceil(recordCount / this.pageSize);
|
|
@@ -53,10 +38,10 @@ const _RestDataSource = class _RestDataSource extends EventEmitter {
|
|
|
53
38
|
console.log(
|
|
54
39
|
`processing ${__privateGet(this, _dataWindow).data.length} rows took ${end - start}ms`
|
|
55
40
|
);
|
|
56
|
-
this.
|
|
41
|
+
this._clientCallback?.({
|
|
57
42
|
clientViewportId: this.viewport,
|
|
58
43
|
mode: "update",
|
|
59
|
-
range:
|
|
44
|
+
range: this._range,
|
|
60
45
|
rows: __privateGet(this, _dataWindow).data,
|
|
61
46
|
size: recordCount,
|
|
62
47
|
type: "viewport-update"
|
|
@@ -67,7 +52,7 @@ const _RestDataSource = class _RestDataSource extends EventEmitter {
|
|
|
67
52
|
mode: "cors"
|
|
68
53
|
}).then(
|
|
69
54
|
NDJsonReader(
|
|
70
|
-
|
|
55
|
+
this._range.from,
|
|
71
56
|
(index, json) => __privateGet(this, _dataWindow).add(
|
|
72
57
|
jsonToDataSourceRow(index, json, __privateGet(this, _columnMap))
|
|
73
58
|
),
|
|
@@ -89,7 +74,6 @@ const _RestDataSource = class _RestDataSource extends EventEmitter {
|
|
|
89
74
|
__publicField(this, "applyEdit", async () => {
|
|
90
75
|
return "Method not implemented";
|
|
91
76
|
});
|
|
92
|
-
__publicField(this, "applyConfig", () => NO_CONFIG_CHANGES);
|
|
93
77
|
__publicField(this, "openTreeNode", () => {
|
|
94
78
|
throw new Error("openTreeNode, Method not implemented.");
|
|
95
79
|
});
|
|
@@ -106,25 +90,20 @@ const _RestDataSource = class _RestDataSource extends EventEmitter {
|
|
|
106
90
|
__publicField(this, "select", () => {
|
|
107
91
|
throw new Error("remoteProcedureCall, Method not implemented.");
|
|
108
92
|
});
|
|
93
|
+
const { table } = props;
|
|
109
94
|
if (!table) throw Error("RestDataSource constructor called without table");
|
|
110
95
|
this.table = table;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
"ric",
|
|
120
|
-
"isin",
|
|
121
|
-
"lotSize"
|
|
122
|
-
]
|
|
123
|
-
});
|
|
124
|
-
__privateSet(this, _title, title);
|
|
96
|
+
}
|
|
97
|
+
async subscribe(subscribeProps, callback) {
|
|
98
|
+
super.subscribe(subscribeProps, callback);
|
|
99
|
+
console.log(`subscribe ${JSON.stringify(subscribeProps, null, 2)}`);
|
|
100
|
+
this.rangeRequest(this._range);
|
|
101
|
+
}
|
|
102
|
+
unsubscribe() {
|
|
103
|
+
console.log("unsubscribe");
|
|
125
104
|
}
|
|
126
105
|
get pageSize() {
|
|
127
|
-
return
|
|
106
|
+
return this._range.to - this._range.from;
|
|
128
107
|
}
|
|
129
108
|
static get api() {
|
|
130
109
|
return this._api;
|
|
@@ -136,43 +115,40 @@ const _RestDataSource = class _RestDataSource extends EventEmitter {
|
|
|
136
115
|
return `${_RestDataSource.api}/${this.table.table}`;
|
|
137
116
|
}
|
|
138
117
|
get dataUrl() {
|
|
139
|
-
const { from, to } =
|
|
140
|
-
return `${this.url}?origin=${from}&limit=${to - from}`;
|
|
118
|
+
const { from, to } = this._range;
|
|
119
|
+
return `${this.url}?origin=${from}&limit=${to - from}${this.queryStringParameters}`;
|
|
141
120
|
}
|
|
142
121
|
get metaDataUrl() {
|
|
143
122
|
return `${this.url}/summary`;
|
|
144
123
|
}
|
|
124
|
+
get queryStringParameters() {
|
|
125
|
+
const params = [];
|
|
126
|
+
if (hasSort(this._config)) {
|
|
127
|
+
params.push(sortToQueryString(this._config.sort));
|
|
128
|
+
}
|
|
129
|
+
if (hasFilter(this._config)) {
|
|
130
|
+
params.push(filterToQueryString(this._config.filterSpec));
|
|
131
|
+
}
|
|
132
|
+
return params.join("");
|
|
133
|
+
}
|
|
145
134
|
get title() {
|
|
146
|
-
return
|
|
135
|
+
return this._title ?? `${this.table.module} ${this.table.table}`;
|
|
147
136
|
}
|
|
148
137
|
set title(title) {
|
|
149
|
-
|
|
138
|
+
this._title = title;
|
|
150
139
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
console.log(`subscribe ${JSON.stringify(props, null, 2)}`);
|
|
156
|
-
this.clientCallback = callback;
|
|
140
|
+
rangeRequest(range) {
|
|
141
|
+
console.log(`set range ${JSON.stringify(range)}`);
|
|
142
|
+
__privateGet(this, _dataWindow).setRange(range);
|
|
157
143
|
this.fetchData();
|
|
158
144
|
}
|
|
159
|
-
unsubscribe() {
|
|
160
|
-
console.log("unsubscribe");
|
|
161
|
-
}
|
|
162
|
-
get columns() {
|
|
163
|
-
return __privateGet(this, _config).columns;
|
|
164
|
-
}
|
|
165
145
|
get config() {
|
|
166
|
-
return
|
|
146
|
+
return super.config;
|
|
167
147
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
console.log(`set range ${JSON.stringify(range)}`);
|
|
173
|
-
if (range.from !== __privateGet(this, _range).from || range.to !== __privateGet(this, _range).to) {
|
|
174
|
-
__privateSet(this, _range, range);
|
|
175
|
-
__privateGet(this, _dataWindow).setRange(range);
|
|
148
|
+
set config(config) {
|
|
149
|
+
const previousConfig = this._config;
|
|
150
|
+
super.config = config;
|
|
151
|
+
if (this._config !== previousConfig) {
|
|
176
152
|
this.fetchData();
|
|
177
153
|
}
|
|
178
154
|
}
|
|
@@ -181,13 +157,9 @@ const _RestDataSource = class _RestDataSource extends EventEmitter {
|
|
|
181
157
|
}
|
|
182
158
|
};
|
|
183
159
|
_columnMap = new WeakMap();
|
|
184
|
-
_config = new WeakMap();
|
|
185
|
-
_data = new WeakMap();
|
|
186
160
|
_dataWindow = new WeakMap();
|
|
187
|
-
_range = new WeakMap();
|
|
188
|
-
_title = new WeakMap();
|
|
189
161
|
__publicField(_RestDataSource, "_api", "/api");
|
|
190
162
|
let RestDataSource = _RestDataSource;
|
|
191
163
|
|
|
192
164
|
export { RestDataSource };
|
|
193
|
-
//# sourceMappingURL=
|
|
165
|
+
//# sourceMappingURL=RestDataSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RestDataSource.js","sources":["../../src/rest-data/RestDataSource.ts"],"sourcesContent":["import {\n DataSource,\n DataSourceConfig,\n DataSourceConstructorProps,\n DataSourceEditHandler,\n DataSourceStatus,\n SubscribeCallback,\n SubscribeProps,\n} from \"@vuu-ui/vuu-data-types\";\nimport { VuuTable, VuuGroupBy, VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n BaseDataSource,\n ColumnMap,\n NULL_RANGE,\n buildColumnMap,\n hasFilter,\n hasSort,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n NDJsonReader,\n filterToQueryString,\n jsonToDataSourceRow,\n sortToQueryString,\n} from \"./rest-utils\";\nimport { MovingWindow } from \"./moving-window\";\n\nexport type RestMetaData = {\n recordCount: number;\n};\n\nexport class RestDataSource extends BaseDataSource implements DataSource {\n private static _api = \"/api\";\n\n #columnMap: ColumnMap = buildColumnMap([\n \"bbg\",\n \"currency\",\n \"description\",\n \"exchange\",\n \"ric\",\n \"lotSize\",\n ]);\n #dataWindow = new MovingWindow(NULL_RANGE);\n\n groupBy: VuuGroupBy = [];\n selectedRowsCount = 0;\n status: DataSourceStatus = \"initialising\";\n table: VuuTable;\n\n constructor(props: DataSourceConstructorProps & { url?: string }) {\n super(props);\n\n const { table } = props;\n\n if (!table) throw Error(\"RestDataSource constructor called without table\");\n this.table = table;\n }\n\n async subscribe(subscribeProps: SubscribeProps, callback: SubscribeCallback) {\n super.subscribe(subscribeProps, callback);\n\n console.log(`subscribe ${JSON.stringify(subscribeProps, null, 2)}`);\n\n this.rangeRequest(this._range);\n }\n\n unsubscribe() {\n console.log(\"unsubscribe\");\n }\n\n private get pageSize() {\n return this._range.to - this._range.from;\n }\n\n static get api() {\n return this._api;\n }\n\n static set api(url: string) {\n this._api = url;\n }\n\n get url() {\n return `${RestDataSource.api}/${this.table.table}`;\n }\n\n get dataUrl() {\n const { from, to } = this._range;\n return `${this.url}?origin=${from}&limit=${to - from}${this.queryStringParameters}`;\n }\n\n get metaDataUrl() {\n return `${this.url}/summary`;\n }\n\n private get queryStringParameters() {\n const params: string[] = [];\n if (hasSort(this._config)) {\n params.push(sortToQueryString(this._config.sort));\n }\n\n if (hasFilter(this._config)) {\n params.push(filterToQueryString(this._config.filterSpec));\n }\n\n return params.join(\"\");\n }\n\n get title() {\n return this._title ?? `${this.table.module} ${this.table.table}`;\n }\n\n set title(title: string) {\n this._title = title;\n }\n\n rangeRequest(range: VuuRange) {\n console.log(`set range ${JSON.stringify(range)}`);\n this.#dataWindow.setRange(range);\n this.fetchData();\n }\n\n get config() {\n return super.config;\n }\n\n set config(config: DataSourceConfig) {\n const previousConfig = this._config;\n super.config = config;\n\n if (this._config !== previousConfig) {\n this.fetchData();\n }\n }\n\n private fetchData = async () => {\n const { recordCount } = await this.fetchMetaData();\n\n const pageCount = Math.ceil(recordCount / this.pageSize);\n this.emit(\"page-count\", pageCount);\n\n const start = performance.now();\n const allDone = () => {\n const end = performance.now();\n console.log(\n `processing ${this.#dataWindow.data.length} rows took ${end - start}ms`,\n );\n this._clientCallback?.({\n clientViewportId: this.viewport,\n mode: \"update\",\n range: this._range,\n rows: this.#dataWindow.data,\n size: recordCount,\n type: \"viewport-update\",\n });\n };\n\n console.log(`base ${RestDataSource.api}`);\n\n fetch(this.dataUrl, {\n mode: \"cors\",\n }).then(\n NDJsonReader(\n this._range.from,\n (index, json) =>\n this.#dataWindow.add(\n jsonToDataSourceRow(index, json, this.#columnMap),\n ),\n allDone,\n ),\n );\n };\n\n private fetchMetaData = async () =>\n new Promise<RestMetaData>((resolve, reject) => {\n fetch(this.metaDataUrl, {\n mode: \"cors\",\n }).then((response) => {\n if (response.ok) {\n resolve(response.json());\n } else {\n reject(response.status);\n }\n });\n });\n\n private sendRowsToClient() {\n console.log(`send rows to client`);\n }\n\n applyEdit: DataSourceEditHandler = async () => {\n return \"Method not implemented\";\n };\n\n openTreeNode = () => {\n throw new Error(\"openTreeNode, Method not implemented.\");\n };\n closeTreeNode = () => {\n throw new Error(\"closeTreeNode, Method not implemented.\");\n };\n\n remoteProcedureCall = async <T>() => \"Method not implemented\" as T;\n menuRpcCall = async () => {\n return \"Method not supported\";\n };\n rpcCall = async <T>() => {\n return \"Method not supported\" as T;\n };\n\n select = () => {\n throw new Error(\"remoteProcedureCall, Method not implemented.\");\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,12 @@ const jsonToDataSourceRow = (rowIndex, json, columnMap) => {
|
|
|
44
44
|
}
|
|
45
45
|
return dataSourceRow;
|
|
46
46
|
};
|
|
47
|
+
const sortParamsToList = (sortDefs) => sortDefs.reduce(
|
|
48
|
+
(list, { column, sortType }) => list.concat([column, sortType]),
|
|
49
|
+
[]
|
|
50
|
+
);
|
|
51
|
+
const sortToQueryString = (sort) => `&sort=[${sortParamsToList(sort.sortDefs)}]`;
|
|
52
|
+
const filterToQueryString = (vuuFilter) => `&filter=[${vuuFilter.filter}]`;
|
|
47
53
|
|
|
48
|
-
export { NDJsonReader, jsonToDataSourceRow };
|
|
54
|
+
export { NDJsonReader, filterToQueryString, jsonToDataSourceRow, sortToQueryString };
|
|
49
55
|
//# sourceMappingURL=rest-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest-utils.js","sources":["../../src/rest-data/rest-utils.ts"],"sourcesContent":["import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {
|
|
1
|
+
{"version":3,"file":"rest-utils.js","sources":["../../src/rest-data/rest-utils.ts"],"sourcesContent":["import { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuFilter,\n VuuRowDataItemType,\n VuuSort,\n VuuSortCol,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { ColumnMap } from \"@vuu-ui/vuu-utils\";\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonArray = Json[];\nexport type JsonObject = { [key: string]: Json };\nexport type Json = JsonPrimitive | JsonArray | JsonObject;\nexport type JsonHandler = (rowIndex: number, json: JsonObject) => void;\n\nexport const NDJsonReader =\n (startIndex: number, jsonHandler: JsonHandler, onEnd: () => void) =>\n (response: Response) => {\n if (response.ok && response.body) {\n const stream = response.body.getReader();\n const decoder = new TextDecoder();\n const matcher = /\\r?\\n/;\n let buf = \"\";\n let index = startIndex;\n\n const loop: () => void = () =>\n stream.read().then(({ done, value }) => {\n if (done) {\n if (buf.length > 0) jsonHandler(index, JSON.parse(buf));\n onEnd();\n } else {\n const chunk = decoder.decode(value, {\n stream: true,\n });\n buf += chunk;\n\n const jsonFragments = buf.split(matcher);\n buf = jsonFragments.pop() ?? \"\";\n for (const jsonFragment of jsonFragments) {\n jsonHandler(index, JSON.parse(jsonFragment));\n index += 1;\n }\n return loop();\n }\n });\n return loop();\n } else {\n throw Error(`response invalid ${response.status} ${response.statusText}`);\n }\n };\n\nexport const jsonToDataSourceRow = (\n rowIndex: number,\n json: JsonObject,\n columnMap: ColumnMap,\n): DataSourceRow => {\n const dataSourceRow: DataSourceRow = [\n rowIndex,\n rowIndex,\n true,\n false,\n 0,\n 0,\n json.ric as string,\n 0,\n ];\n for (const [column, colIdx] of Object.entries(columnMap)) {\n dataSourceRow[colIdx] = json[column] as VuuRowDataItemType;\n }\n return dataSourceRow;\n};\n\nconst sortParamsToList = (sortDefs: VuuSortCol[]) =>\n sortDefs.reduce<string[]>(\n (list, { column, sortType }) => list.concat([column, sortType]),\n [],\n );\n\nexport const sortToQueryString = (sort: VuuSort) =>\n `&sort=[${sortParamsToList(sort.sortDefs)}]`;\n\nexport const filterToQueryString = (vuuFilter: VuuFilter) =>\n `&filter=[${vuuFilter.filter}]`;\n"],"names":[],"mappings":"AAeO,MAAM,eACX,CAAC,UAAA,EAAoB,WAA0B,EAAA,KAAA,KAC/C,CAAC,QAAuB,KAAA;AACtB,EAAI,IAAA,QAAA,CAAS,EAAM,IAAA,QAAA,CAAS,IAAM,EAAA;AAChC,IAAM,MAAA,MAAA,GAAS,QAAS,CAAA,IAAA,CAAK,SAAU,EAAA,CAAA;AACvC,IAAM,MAAA,OAAA,GAAU,IAAI,WAAY,EAAA,CAAA;AAChC,IAAA,MAAM,OAAU,GAAA,OAAA,CAAA;AAChB,IAAA,IAAI,GAAM,GAAA,EAAA,CAAA;AACV,IAAA,IAAI,KAAQ,GAAA,UAAA,CAAA;AAEZ,IAAM,MAAA,IAAA,GAAmB,MACvB,MAAA,CAAO,IAAK,EAAA,CAAE,KAAK,CAAC,EAAE,IAAM,EAAA,KAAA,EAAY,KAAA;AACtC,MAAA,IAAI,IAAM,EAAA;AACR,QAAI,IAAA,GAAA,CAAI,SAAS,CAAG,EAAA,WAAA,CAAY,OAAO,IAAK,CAAA,KAAA,CAAM,GAAG,CAAC,CAAA,CAAA;AACtD,QAAM,KAAA,EAAA,CAAA;AAAA,OACD,MAAA;AACL,QAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,MAAA,CAAO,KAAO,EAAA;AAAA,UAClC,MAAQ,EAAA,IAAA;AAAA,SACT,CAAA,CAAA;AACD,QAAO,GAAA,IAAA,KAAA,CAAA;AAEP,QAAM,MAAA,aAAA,GAAgB,GAAI,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AACvC,QAAM,GAAA,GAAA,aAAA,CAAc,KAAS,IAAA,EAAA,CAAA;AAC7B,QAAA,KAAA,MAAW,gBAAgB,aAAe,EAAA;AACxC,UAAA,WAAA,CAAY,KAAO,EAAA,IAAA,CAAK,KAAM,CAAA,YAAY,CAAC,CAAA,CAAA;AAC3C,UAAS,KAAA,IAAA,CAAA,CAAA;AAAA,SACX;AACA,QAAA,OAAO,IAAK,EAAA,CAAA;AAAA,OACd;AAAA,KACD,CAAA,CAAA;AACH,IAAA,OAAO,IAAK,EAAA,CAAA;AAAA,GACP,MAAA;AACL,IAAA,MAAM,MAAM,CAAoB,iBAAA,EAAA,QAAA,CAAS,MAAM,CAAI,CAAA,EAAA,QAAA,CAAS,UAAU,CAAE,CAAA,CAAA,CAAA;AAAA,GAC1E;AACF,EAAA;AAEK,MAAM,mBAAsB,GAAA,CACjC,QACA,EAAA,IAAA,EACA,SACkB,KAAA;AAClB,EAAA,MAAM,aAA+B,GAAA;AAAA,IACnC,QAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA;AAAA,IACA,IAAK,CAAA,GAAA;AAAA,IACL,CAAA;AAAA,GACF,CAAA;AACA,EAAA,KAAA,MAAW,CAAC,MAAQ,EAAA,MAAM,KAAK,MAAO,CAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACxD,IAAc,aAAA,CAAA,MAAM,CAAI,GAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,GACrC;AACA,EAAO,OAAA,aAAA,CAAA;AACT,EAAA;AAEA,MAAM,gBAAA,GAAmB,CAAC,QAAA,KACxB,QAAS,CAAA,MAAA;AAAA,EACP,CAAC,IAAM,EAAA,EAAE,MAAQ,EAAA,QAAA,EAAe,KAAA,IAAA,CAAK,MAAO,CAAA,CAAC,MAAQ,EAAA,QAAQ,CAAC,CAAA;AAAA,EAC9D,EAAC;AACH,CAAA,CAAA;AAEK,MAAM,oBAAoB,CAAC,IAAA,KAChC,UAAU,gBAAiB,CAAA,IAAA,CAAK,QAAQ,CAAC,CAAA,CAAA,EAAA;AAEpC,MAAM,mBAAsB,GAAA,CAAC,SAClC,KAAA,CAAA,SAAA,EAAY,UAAU,MAAM,CAAA,CAAA;;;;"}
|
package/esm/vuu-data-source.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { logger, EventEmitter, debounce, throttle, uuid, selectionCount, combineFilters, isConfigChanged, withConfigDefaults, itemsOrOrderChanged, vuuEditCellRequest, vuuAddRowRequest, vuuDeleteRowRequest, vanillaConfig, isViewportMenusAction, isVisualLinksAction } from '@vuu-ui/vuu-utils';
|
|
1
|
+
import { logger, BaseDataSource, debounce, throttle, uuid, combineFilters, selectionCount, itemsOrOrderChanged, vuuEditCellRequest, vuuAddRowRequest, vuuDeleteRowRequest, isViewportMenusAction, isVisualLinksAction } from '@vuu-ui/vuu-utils';
|
|
3
2
|
import ConnectionManager from './ConnectionManager.js';
|
|
4
3
|
import { isDataSourceConfigMessage } from './data-source.js';
|
|
5
4
|
|
|
@@ -13,28 +12,15 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
|
|
|
13
12
|
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
14
13
|
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);
|
|
15
14
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
16
|
-
var
|
|
15
|
+
var _groupBy, _pendingVisualLink, _links, _menu, _optimize, _range, _selectedRowsCount, _status, _tableSchema;
|
|
17
16
|
const { info } = logger("VuuDataSource");
|
|
18
|
-
class VuuDataSource extends
|
|
19
|
-
constructor({
|
|
20
|
-
|
|
21
|
-
aggregations,
|
|
22
|
-
columns,
|
|
23
|
-
filterSpec,
|
|
24
|
-
groupBy,
|
|
25
|
-
sort,
|
|
26
|
-
table,
|
|
27
|
-
title,
|
|
28
|
-
viewport,
|
|
29
|
-
visualLink
|
|
30
|
-
}) {
|
|
31
|
-
super();
|
|
17
|
+
class VuuDataSource extends BaseDataSource {
|
|
18
|
+
constructor(props) {
|
|
19
|
+
super(props);
|
|
32
20
|
__publicField(this, "bufferSize");
|
|
33
21
|
__publicField(this, "server", null);
|
|
34
|
-
__publicField(this, "clientCallback");
|
|
35
22
|
__publicField(this, "configChangePending");
|
|
36
23
|
__publicField(this, "rangeRequest");
|
|
37
|
-
__privateAdd(this, _config, vanillaConfig);
|
|
38
24
|
__privateAdd(this, _groupBy, []);
|
|
39
25
|
__privateAdd(this, _pendingVisualLink);
|
|
40
26
|
__privateAdd(this, _links);
|
|
@@ -42,17 +28,14 @@ class VuuDataSource extends EventEmitter {
|
|
|
42
28
|
__privateAdd(this, _optimize, "throttle");
|
|
43
29
|
__privateAdd(this, _range, { from: 0, to: 0 });
|
|
44
30
|
__privateAdd(this, _selectedRowsCount, 0);
|
|
45
|
-
__privateAdd(this, _size, 0);
|
|
46
31
|
__privateAdd(this, _status, "initialising");
|
|
47
32
|
__privateAdd(this, _tableSchema);
|
|
48
|
-
__privateAdd(this, _title);
|
|
49
33
|
__publicField(this, "table");
|
|
50
|
-
__publicField(this, "viewport");
|
|
51
34
|
__publicField(this, "handleMessageFromServer", (message) => {
|
|
52
35
|
if (message.type === "subscribed") {
|
|
53
36
|
__privateSet(this, _status, "subscribed");
|
|
54
37
|
this.tableSchema = message.tableSchema;
|
|
55
|
-
this.
|
|
38
|
+
this._clientCallback?.(message);
|
|
56
39
|
if (__privateGet(this, _pendingVisualLink)) {
|
|
57
40
|
this.visualLink = __privateGet(this, _pendingVisualLink);
|
|
58
41
|
__privateSet(this, _pendingVisualLink, void 0);
|
|
@@ -67,11 +50,11 @@ class VuuDataSource extends EventEmitter {
|
|
|
67
50
|
} else if (message.type === "debounce-begin") {
|
|
68
51
|
this.optimize = "debounce";
|
|
69
52
|
} else {
|
|
70
|
-
if (message.type === "viewport-update" && message.size !== void 0 && message.size !==
|
|
71
|
-
|
|
53
|
+
if (message.type === "viewport-update" && message.size !== void 0 && message.size !== this._size) {
|
|
54
|
+
this._size = message.size;
|
|
72
55
|
this.emit("resize", message.size);
|
|
73
56
|
} else if (message.type === "viewport-clear") {
|
|
74
|
-
|
|
57
|
+
this._size = 0;
|
|
75
58
|
this.emit("resize", 0);
|
|
76
59
|
}
|
|
77
60
|
if (this.configChangePending) {
|
|
@@ -82,7 +65,7 @@ class VuuDataSource extends EventEmitter {
|
|
|
82
65
|
} else if (isVisualLinksAction(message)) {
|
|
83
66
|
__privateSet(this, _links, message.links);
|
|
84
67
|
} else {
|
|
85
|
-
this.
|
|
68
|
+
this._clientCallback?.(message);
|
|
86
69
|
}
|
|
87
70
|
if (this.optimize === "debounce") {
|
|
88
71
|
this.revertDebounce();
|
|
@@ -119,65 +102,36 @@ class VuuDataSource extends EventEmitter {
|
|
|
119
102
|
});
|
|
120
103
|
}
|
|
121
104
|
}, 80));
|
|
105
|
+
const { bufferSize = 100, table, visualLink } = props;
|
|
122
106
|
if (!table)
|
|
123
107
|
throw Error("RemoteDataSource constructor called without table");
|
|
124
108
|
this.bufferSize = bufferSize;
|
|
125
109
|
this.table = table;
|
|
126
|
-
this.viewport = viewport ?? "";
|
|
127
|
-
__privateSet(this, _config, {
|
|
128
|
-
...__privateGet(this, _config),
|
|
129
|
-
aggregations: aggregations || __privateGet(this, _config).aggregations,
|
|
130
|
-
columns: columns || __privateGet(this, _config).columns,
|
|
131
|
-
filterSpec: filterSpec || __privateGet(this, _config).filterSpec,
|
|
132
|
-
groupBy: groupBy || __privateGet(this, _config).groupBy,
|
|
133
|
-
sort: sort || __privateGet(this, _config).sort
|
|
134
|
-
});
|
|
135
110
|
__privateSet(this, _pendingVisualLink, visualLink);
|
|
136
|
-
__privateSet(this, _title, title);
|
|
137
111
|
this.rangeRequest = this.rawRangeRequest;
|
|
138
112
|
}
|
|
139
|
-
async subscribe({
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
aggregations,
|
|
143
|
-
range,
|
|
144
|
-
sort,
|
|
145
|
-
groupBy,
|
|
146
|
-
filterSpec
|
|
147
|
-
}, callback) {
|
|
113
|
+
async subscribe(subscribeProps, callback) {
|
|
114
|
+
super.subscribe(subscribeProps, callback);
|
|
115
|
+
const { viewport = this.viewport || (this.viewport = uuid()) } = subscribeProps;
|
|
148
116
|
if (__privateGet(this, _status) === "disabled" || __privateGet(this, _status) === "disabling") {
|
|
149
117
|
this.enable(callback);
|
|
150
118
|
return;
|
|
151
119
|
}
|
|
152
|
-
this.clientCallback = callback;
|
|
153
|
-
if (aggregations || columns || filterSpec || groupBy || sort) {
|
|
154
|
-
__privateSet(this, _config, {
|
|
155
|
-
...__privateGet(this, _config),
|
|
156
|
-
aggregations: aggregations || __privateGet(this, _config).aggregations,
|
|
157
|
-
columns: columns || __privateGet(this, _config).columns,
|
|
158
|
-
filterSpec: filterSpec || __privateGet(this, _config).filterSpec,
|
|
159
|
-
groupBy: groupBy || __privateGet(this, _config).groupBy,
|
|
160
|
-
sort: sort || __privateGet(this, _config).sort
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
if (range) {
|
|
164
|
-
__privateSet(this, _range, range);
|
|
165
|
-
}
|
|
166
120
|
if (__privateGet(this, _status) !== "initialising" && __privateGet(this, _status) !== "unsubscribed") {
|
|
167
121
|
return;
|
|
168
122
|
}
|
|
169
123
|
__privateSet(this, _status, "subscribing");
|
|
170
|
-
this.viewport = viewport;
|
|
171
124
|
this.server = await ConnectionManager.serverAPI;
|
|
172
125
|
const { bufferSize } = this;
|
|
126
|
+
const dataSourceConfig = combineFilters(this._config);
|
|
173
127
|
this.server?.subscribe(
|
|
174
128
|
{
|
|
175
|
-
...
|
|
129
|
+
...dataSourceConfig,
|
|
176
130
|
bufferSize,
|
|
177
131
|
viewport,
|
|
178
132
|
table: this.table,
|
|
179
|
-
range:
|
|
180
|
-
title:
|
|
133
|
+
range: this._range,
|
|
134
|
+
title: this._title
|
|
181
135
|
},
|
|
182
136
|
this.handleMessageFromServer
|
|
183
137
|
);
|
|
@@ -193,7 +147,7 @@ class VuuDataSource extends EventEmitter {
|
|
|
193
147
|
this.server = null;
|
|
194
148
|
this.removeAllListeners();
|
|
195
149
|
__privateSet(this, _status, "unsubscribed");
|
|
196
|
-
this.viewport =
|
|
150
|
+
this.viewport = "";
|
|
197
151
|
this.range = { from: 0, to: 0 };
|
|
198
152
|
}
|
|
199
153
|
}
|
|
@@ -215,7 +169,7 @@ class VuuDataSource extends EventEmitter {
|
|
|
215
169
|
const isSuspended = __privateGet(this, _status) === "suspended";
|
|
216
170
|
info?.(`resume #${this.viewport}, current status ${__privateGet(this, _status)}`);
|
|
217
171
|
if (callback) {
|
|
218
|
-
this.
|
|
172
|
+
this._clientCallback = callback;
|
|
219
173
|
}
|
|
220
174
|
if (this.viewport) {
|
|
221
175
|
if (isDisabled) {
|
|
@@ -246,7 +200,7 @@ class VuuDataSource extends EventEmitter {
|
|
|
246
200
|
if (this.viewport && (__privateGet(this, _status) === "disabled" || __privateGet(this, _status) === "disabling")) {
|
|
247
201
|
__privateSet(this, _status, "enabling");
|
|
248
202
|
if (callback) {
|
|
249
|
-
this.
|
|
203
|
+
this._clientCallback = callback;
|
|
250
204
|
}
|
|
251
205
|
this.server?.send({
|
|
252
206
|
viewport: this.viewport,
|
|
@@ -322,149 +276,32 @@ class VuuDataSource extends EventEmitter {
|
|
|
322
276
|
get selectedRowsCount() {
|
|
323
277
|
return __privateGet(this, _selectedRowsCount);
|
|
324
278
|
}
|
|
325
|
-
get size() {
|
|
326
|
-
return __privateGet(this, _size);
|
|
327
|
-
}
|
|
328
|
-
get range() {
|
|
329
|
-
return __privateGet(this, _range);
|
|
330
|
-
}
|
|
331
|
-
set range(range) {
|
|
332
|
-
if (range.from !== __privateGet(this, _range).from || range.to !== __privateGet(this, _range).to) {
|
|
333
|
-
__privateSet(this, _range, range);
|
|
334
|
-
this.rangeRequest(range);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
279
|
get config() {
|
|
338
|
-
return
|
|
280
|
+
return super.config;
|
|
339
281
|
}
|
|
340
282
|
set config(config) {
|
|
341
|
-
const
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
if (config) {
|
|
345
|
-
const newConfig = combineFilters(__privateGet(this, _config));
|
|
346
|
-
this.server?.send({
|
|
347
|
-
viewport: this.viewport,
|
|
348
|
-
type: "config",
|
|
349
|
-
config: newConfig
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
this.emit("config", __privateGet(this, _config), void 0, configChanges);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
applyConfig(config, preserveExistingConfigAttributes = false) {
|
|
357
|
-
const { noChanges, ...otherChanges } = isConfigChanged(
|
|
358
|
-
__privateGet(this, _config),
|
|
359
|
-
config
|
|
360
|
-
);
|
|
361
|
-
if (noChanges !== true) {
|
|
362
|
-
if (config) {
|
|
363
|
-
const newConfig = config?.filterSpec?.filter && config?.filterSpec.filterStruct === void 0 ? {
|
|
364
|
-
...config,
|
|
365
|
-
filterSpec: {
|
|
366
|
-
filter: config.filterSpec.filter,
|
|
367
|
-
filterStruct: parseFilter(config.filterSpec.filter)
|
|
368
|
-
}
|
|
369
|
-
} : config;
|
|
370
|
-
if (preserveExistingConfigAttributes) {
|
|
371
|
-
__privateSet(this, _config, {
|
|
372
|
-
...__privateGet(this, _config),
|
|
373
|
-
...config
|
|
374
|
-
});
|
|
375
|
-
} else {
|
|
376
|
-
__privateSet(this, _config, withConfigDefaults(newConfig));
|
|
377
|
-
}
|
|
378
|
-
return otherChanges;
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
//TODO replace all these individual server calls with calls to setConfig
|
|
383
|
-
get columns() {
|
|
384
|
-
return __privateGet(this, _config).columns;
|
|
385
|
-
}
|
|
386
|
-
set columns(columns) {
|
|
387
|
-
__privateSet(this, _config, {
|
|
388
|
-
...__privateGet(this, _config),
|
|
389
|
-
columns
|
|
390
|
-
});
|
|
391
|
-
if (this.viewport) {
|
|
392
|
-
const message = {
|
|
393
|
-
viewport: this.viewport,
|
|
394
|
-
type: "setColumns",
|
|
395
|
-
columns
|
|
396
|
-
};
|
|
397
|
-
if (this.server) {
|
|
398
|
-
this.server.send(message);
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
this.emit("config", __privateGet(this, _config));
|
|
402
|
-
}
|
|
403
|
-
get aggregations() {
|
|
404
|
-
return __privateGet(this, _config).aggregations;
|
|
405
|
-
}
|
|
406
|
-
set aggregations(aggregations) {
|
|
407
|
-
__privateSet(this, _config, {
|
|
408
|
-
...__privateGet(this, _config),
|
|
409
|
-
aggregations
|
|
410
|
-
});
|
|
411
|
-
if (this.viewport) {
|
|
283
|
+
const previousConfig = this._config;
|
|
284
|
+
super.config = config;
|
|
285
|
+
if (this._config !== previousConfig) {
|
|
412
286
|
this.server?.send({
|
|
413
287
|
viewport: this.viewport,
|
|
414
|
-
type: "
|
|
415
|
-
|
|
288
|
+
type: "config",
|
|
289
|
+
config: combineFilters(this._config)
|
|
416
290
|
});
|
|
417
291
|
}
|
|
418
|
-
this.emit("config", __privateGet(this, _config));
|
|
419
|
-
}
|
|
420
|
-
get sort() {
|
|
421
|
-
return __privateGet(this, _config).sort;
|
|
422
|
-
}
|
|
423
|
-
set sort(sort) {
|
|
424
|
-
__privateSet(this, _config, {
|
|
425
|
-
...__privateGet(this, _config),
|
|
426
|
-
sort
|
|
427
|
-
});
|
|
428
|
-
if (this.viewport) {
|
|
429
|
-
const message = {
|
|
430
|
-
viewport: this.viewport,
|
|
431
|
-
type: "sort",
|
|
432
|
-
sort
|
|
433
|
-
};
|
|
434
|
-
this.server?.send(message);
|
|
435
|
-
}
|
|
436
|
-
this.emit("config", __privateGet(this, _config));
|
|
437
|
-
}
|
|
438
|
-
get baseFilter() {
|
|
439
|
-
return __privateGet(this, _config).baseFilterSpec;
|
|
440
|
-
}
|
|
441
|
-
set baseFilter(baseFilter) {
|
|
442
|
-
this.config = {
|
|
443
|
-
...__privateGet(this, _config),
|
|
444
|
-
baseFilterSpec: baseFilter
|
|
445
|
-
};
|
|
446
|
-
}
|
|
447
|
-
get filter() {
|
|
448
|
-
return __privateGet(this, _config).filterSpec;
|
|
449
|
-
}
|
|
450
|
-
set filter(filter) {
|
|
451
|
-
this.config = {
|
|
452
|
-
...__privateGet(this, _config),
|
|
453
|
-
filterSpec: filter
|
|
454
|
-
};
|
|
455
292
|
}
|
|
456
293
|
get groupBy() {
|
|
457
|
-
return
|
|
294
|
+
return this._config.groupBy;
|
|
458
295
|
}
|
|
459
296
|
set groupBy(groupBy) {
|
|
460
297
|
if (itemsOrOrderChanged(this.groupBy, groupBy)) {
|
|
461
298
|
const wasGrouped = this.groupBy.length > 0;
|
|
462
299
|
this.config = {
|
|
463
|
-
...
|
|
300
|
+
...this._config,
|
|
464
301
|
groupBy
|
|
465
302
|
};
|
|
466
303
|
if (!wasGrouped && groupBy.length > 0 && this.viewport) {
|
|
467
|
-
this.
|
|
304
|
+
this._clientCallback?.({
|
|
468
305
|
clientViewportId: this.viewport,
|
|
469
306
|
mode: "batch",
|
|
470
307
|
type: "viewport-update",
|
|
@@ -476,10 +313,10 @@ class VuuDataSource extends EventEmitter {
|
|
|
476
313
|
}
|
|
477
314
|
}
|
|
478
315
|
get title() {
|
|
479
|
-
return
|
|
316
|
+
return this._title ?? `${this.table.module} ${this.table.table}`;
|
|
480
317
|
}
|
|
481
318
|
set title(title) {
|
|
482
|
-
|
|
319
|
+
this._title = title;
|
|
483
320
|
if (this.viewport && title) {
|
|
484
321
|
this.server?.send({
|
|
485
322
|
type: "setTitle",
|
|
@@ -490,13 +327,13 @@ class VuuDataSource extends EventEmitter {
|
|
|
490
327
|
this.emit("title-changed", this.viewport ?? "'", title);
|
|
491
328
|
}
|
|
492
329
|
get visualLink() {
|
|
493
|
-
return
|
|
330
|
+
return this._config.visualLink;
|
|
494
331
|
}
|
|
495
332
|
set visualLink(visualLink) {
|
|
496
|
-
|
|
497
|
-
...
|
|
333
|
+
this._config = {
|
|
334
|
+
...this._config,
|
|
498
335
|
visualLink
|
|
499
|
-
}
|
|
336
|
+
};
|
|
500
337
|
if (visualLink) {
|
|
501
338
|
const {
|
|
502
339
|
parentClientVpId,
|
|
@@ -523,7 +360,7 @@ class VuuDataSource extends EventEmitter {
|
|
|
523
360
|
});
|
|
524
361
|
}
|
|
525
362
|
}
|
|
526
|
-
this.emit("config",
|
|
363
|
+
this.emit("config", this._config);
|
|
527
364
|
}
|
|
528
365
|
setConfigPending(config) {
|
|
529
366
|
const pendingConfig = this.configChangePending;
|
|
@@ -587,7 +424,6 @@ class VuuDataSource extends EventEmitter {
|
|
|
587
424
|
});
|
|
588
425
|
}
|
|
589
426
|
}
|
|
590
|
-
_config = new WeakMap();
|
|
591
427
|
_groupBy = new WeakMap();
|
|
592
428
|
_pendingVisualLink = new WeakMap();
|
|
593
429
|
_links = new WeakMap();
|
|
@@ -595,10 +431,8 @@ _menu = new WeakMap();
|
|
|
595
431
|
_optimize = new WeakMap();
|
|
596
432
|
_range = new WeakMap();
|
|
597
433
|
_selectedRowsCount = new WeakMap();
|
|
598
|
-
_size = new WeakMap();
|
|
599
434
|
_status = new WeakMap();
|
|
600
435
|
_tableSchema = new WeakMap();
|
|
601
|
-
_title = new WeakMap();
|
|
602
436
|
|
|
603
437
|
export { VuuDataSource };
|
|
604
438
|
//# sourceMappingURL=vuu-data-source.js.map
|