@easyquery/core 7.3.4 → 7.3.5-rc02
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/dist/easyquery.core.cjs.js +158 -122
- package/dist/easyquery.core.esm.js +159 -123
- package/dist/types/common/eq_services.d.ts +13 -19
- package/dist/types/eqs/eqs_query_synchronizer.d.ts +1 -1
- package/dist/types/eqs/eqs_value_list_resolver.d.ts +2 -2
- package/dist/types/main/context.d.ts +24 -1
- package/dist/types/main/value_list_resolver.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
|
|
2
2
|
/*
|
|
3
|
-
* EasyQuery.JS Core v7.3.
|
|
3
|
+
* EasyQuery.JS Core v7.3.5-rc02
|
|
4
4
|
* Copyright 2024 Korzh.com
|
|
5
5
|
* Licensed under MIT
|
|
6
6
|
*
|
|
7
|
-
* Build time:
|
|
7
|
+
* Build time: 12/24/2024 12:16:48 PM
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
'use strict';
|
|
@@ -3614,7 +3614,7 @@ class BrowserQueryStorage {
|
|
|
3614
3614
|
}
|
|
3615
3615
|
newQuery(options) {
|
|
3616
3616
|
return new Promise((resolve, reject) => {
|
|
3617
|
-
const query =
|
|
3617
|
+
const query = this.context.createQuery();
|
|
3618
3618
|
query.reset();
|
|
3619
3619
|
query.setDefaultName();
|
|
3620
3620
|
if (options) {
|
|
@@ -3853,7 +3853,7 @@ class EqQueryFileLoader {
|
|
|
3853
3853
|
const blob = new Blob([responseData]);
|
|
3854
3854
|
const dispositionHeader = request.getXMLHttpRequest().getResponseHeader("Content-Disposition");
|
|
3855
3855
|
let fileName = dispositionHeader
|
|
3856
|
-
? dispositionHeader.match(/filename="(
|
|
3856
|
+
? dispositionHeader.match(/filename="?([^"]*)"?$/)[1]
|
|
3857
3857
|
: 'query.json';
|
|
3858
3858
|
if (options.fileName) {
|
|
3859
3859
|
fileName = options.fileName
|
|
@@ -4002,13 +4002,6 @@ class EqServiceProvider {
|
|
|
4002
4002
|
return EqServiceProvider._instance;
|
|
4003
4003
|
}
|
|
4004
4004
|
constructor() {
|
|
4005
|
-
this.modelLoader = null;
|
|
4006
|
-
this.queryStorage = null;
|
|
4007
|
-
this.querySynchronizer = null;
|
|
4008
|
-
this.dataFetcher = null;
|
|
4009
|
-
this.valueListResolver = null;
|
|
4010
|
-
this.queryFileLoader = null;
|
|
4011
|
-
this.aggrCalculator = null;
|
|
4012
4005
|
this.services = {};
|
|
4013
4006
|
this.httpClient = new core.HttpClient();
|
|
4014
4007
|
this.httpClient.defaultHeaders['x-eqjs-version'] = '7.3.0';
|
|
@@ -4018,16 +4011,12 @@ class EqServiceProvider {
|
|
|
4018
4011
|
this.modelLoaderResolver = (context) => new EqServerModelLoader(context);
|
|
4019
4012
|
this.queryStorageResolver = (context) => new BrowserQueryStorage(context);
|
|
4020
4013
|
this.querySynchronizerResolver = (context) => new EqServerQuerySynchronizer(context);
|
|
4021
|
-
this.
|
|
4014
|
+
this.vllResolver = (context) => new EqServerValueListResolver(context);
|
|
4022
4015
|
this.dataFetcherResolver = (context) => new EqServerDataFetcher(context);
|
|
4023
4016
|
this.queryFileLoaderResolver = (context) => new EqQueryFileLoader(context);
|
|
4024
4017
|
this.aggrCalculatoResolver = (context) => new DefaultAggregatesCalculator(context);
|
|
4025
4018
|
}
|
|
4026
4019
|
reset() {
|
|
4027
|
-
this.modelStorage = null;
|
|
4028
|
-
this.modelLoader = null;
|
|
4029
|
-
this.queryStorage = null;
|
|
4030
|
-
this.querySynchronizer = null;
|
|
4031
4020
|
}
|
|
4032
4021
|
getHttpClient() {
|
|
4033
4022
|
return this.httpClient;
|
|
@@ -4044,108 +4033,90 @@ class EqServiceProvider {
|
|
|
4044
4033
|
}
|
|
4045
4034
|
return this.queryResolver(context);
|
|
4046
4035
|
}
|
|
4047
|
-
getModelLoader(context) {
|
|
4048
|
-
if (!this.modelLoader) {
|
|
4049
|
-
if (!this.modelLoaderResolver) {
|
|
4050
|
-
throw 'ModelLoaderResolver is not defined';
|
|
4051
|
-
}
|
|
4052
|
-
this.modelLoader = this.modelLoaderResolver(context);
|
|
4053
|
-
}
|
|
4054
|
-
return this.modelLoader;
|
|
4055
|
-
}
|
|
4056
|
-
getModelStorage(context) {
|
|
4057
|
-
if (!this.modelStorage) {
|
|
4058
|
-
if (!this.modelStorageResolver) {
|
|
4059
|
-
throw 'ModelStorageResolver is not defined';
|
|
4060
|
-
}
|
|
4061
|
-
this.modelStorage = this.modelStorageResolver(context);
|
|
4062
|
-
}
|
|
4063
|
-
return this.modelStorage;
|
|
4064
|
-
}
|
|
4065
|
-
getQueryStorage(context) {
|
|
4066
|
-
if (!this.queryStorage) {
|
|
4067
|
-
if (!this.queryStorageResolver) {
|
|
4068
|
-
throw 'QueryStorageResolver is not defined';
|
|
4069
|
-
}
|
|
4070
|
-
this.queryStorage = this.queryStorageResolver(context);
|
|
4071
|
-
}
|
|
4072
|
-
return this.queryStorage;
|
|
4073
|
-
}
|
|
4074
|
-
getQuerySynchronizer(context) {
|
|
4075
|
-
if (!this.querySynchronizer) {
|
|
4076
|
-
if (!this.querySynchronizerResolver) {
|
|
4077
|
-
throw 'QuerySynchronizerResolver is not defined';
|
|
4078
|
-
}
|
|
4079
|
-
this.querySynchronizer = this.querySynchronizerResolver(context);
|
|
4080
|
-
}
|
|
4081
|
-
return this.querySynchronizer;
|
|
4082
|
-
}
|
|
4083
|
-
getDataFetcher(context) {
|
|
4084
|
-
if (!this.dataFetcher) {
|
|
4085
|
-
if (!this.dataFetcherResolver) {
|
|
4086
|
-
throw 'DataFetcherResolver is not defined';
|
|
4087
|
-
}
|
|
4088
|
-
this.dataFetcher = this.dataFetcherResolver(context);
|
|
4089
|
-
}
|
|
4090
|
-
return this.dataFetcher;
|
|
4091
|
-
}
|
|
4092
|
-
getValueListResolver(context) {
|
|
4093
|
-
if (!this.valueListResolver) {
|
|
4094
|
-
if (!this.vlrResolver) {
|
|
4095
|
-
throw 'Resolver for ValueListResolver is not defined';
|
|
4096
|
-
}
|
|
4097
|
-
this.valueListResolver = this.vlrResolver(context);
|
|
4098
|
-
}
|
|
4099
|
-
return this.valueListResolver;
|
|
4100
|
-
}
|
|
4101
|
-
getQueryFileLoader(context) {
|
|
4102
|
-
if (!this.queryFileLoader) {
|
|
4103
|
-
if (!this.queryFileLoaderResolver) {
|
|
4104
|
-
throw 'Resolver for QueryFileLoader is not defined';
|
|
4105
|
-
}
|
|
4106
|
-
this.queryFileLoader = this.queryFileLoaderResolver(context);
|
|
4107
|
-
}
|
|
4108
|
-
return this.queryFileLoader;
|
|
4109
|
-
}
|
|
4110
|
-
getAggregatesCalculator(context) {
|
|
4111
|
-
if (!this.aggrCalculator) {
|
|
4112
|
-
if (!this.aggrCalculatoResolver) {
|
|
4113
|
-
throw 'Resolver for AggregatesCalculator is not defined';
|
|
4114
|
-
}
|
|
4115
|
-
this.aggrCalculator = this.aggrCalculatoResolver(context);
|
|
4116
|
-
}
|
|
4117
|
-
return this.aggrCalculator;
|
|
4118
|
-
}
|
|
4119
4036
|
registerDataModelResolver(resolver) {
|
|
4120
4037
|
this.modelResolver = resolver;
|
|
4121
4038
|
}
|
|
4039
|
+
getDataModelResolver() {
|
|
4040
|
+
return this.modelResolver;
|
|
4041
|
+
}
|
|
4122
4042
|
registerQueryResolver(resolver) {
|
|
4123
4043
|
this.queryResolver = resolver;
|
|
4124
4044
|
}
|
|
4045
|
+
getQueryResolver() {
|
|
4046
|
+
return this.queryResolver;
|
|
4047
|
+
}
|
|
4125
4048
|
registerModelLoaderResolver(resolver) {
|
|
4126
4049
|
this.modelLoaderResolver = resolver;
|
|
4127
4050
|
}
|
|
4051
|
+
getModelLoaderResolver() {
|
|
4052
|
+
if (!this.modelLoaderResolver) {
|
|
4053
|
+
throw 'ModelLoaderResolver is not defined';
|
|
4054
|
+
}
|
|
4055
|
+
return this.modelLoaderResolver;
|
|
4056
|
+
}
|
|
4128
4057
|
registerModelStorageResolver(resolver) {
|
|
4129
4058
|
this.modelStorageResolver = resolver;
|
|
4130
4059
|
}
|
|
4060
|
+
getModelStorageResolver() {
|
|
4061
|
+
if (!this.modelStorageResolver) {
|
|
4062
|
+
throw 'ModelStorageResolver is not defined';
|
|
4063
|
+
}
|
|
4064
|
+
return this.modelStorageResolver;
|
|
4065
|
+
}
|
|
4131
4066
|
registerQueryStorageResolver(resolver) {
|
|
4132
4067
|
this.queryStorageResolver = resolver;
|
|
4133
4068
|
}
|
|
4069
|
+
getQueryStorageResolver() {
|
|
4070
|
+
if (!this.queryStorageResolver) {
|
|
4071
|
+
throw 'QueryStorageResolver is not defined';
|
|
4072
|
+
}
|
|
4073
|
+
return this.queryStorageResolver;
|
|
4074
|
+
}
|
|
4134
4075
|
registerDataFetcherResolver(resolver) {
|
|
4135
4076
|
this.dataFetcherResolver = resolver;
|
|
4136
4077
|
}
|
|
4078
|
+
getDataFetcherResolver() {
|
|
4079
|
+
if (!this.dataFetcherResolver) {
|
|
4080
|
+
throw 'DataFetcherResolver is not defined';
|
|
4081
|
+
}
|
|
4082
|
+
return this.dataFetcherResolver;
|
|
4083
|
+
}
|
|
4137
4084
|
registerQuerySyncronizerResolver(resolver) {
|
|
4138
4085
|
this.querySynchronizerResolver = resolver;
|
|
4139
4086
|
}
|
|
4140
|
-
|
|
4141
|
-
this.
|
|
4087
|
+
getQuerySynchronizerResolver() {
|
|
4088
|
+
if (!this.querySynchronizerResolver) {
|
|
4089
|
+
throw 'QuerySynchronizerResolver is not defined';
|
|
4090
|
+
}
|
|
4091
|
+
return this.querySynchronizerResolver;
|
|
4092
|
+
}
|
|
4093
|
+
registerValueListLoaderResolver(resolver) {
|
|
4094
|
+
this.vllResolver = resolver;
|
|
4095
|
+
}
|
|
4096
|
+
getValueListLoaderResolver() {
|
|
4097
|
+
if (!this.vllResolver) {
|
|
4098
|
+
throw 'Resolver for ValueListLoader is not defined';
|
|
4099
|
+
}
|
|
4100
|
+
return this.vllResolver;
|
|
4142
4101
|
}
|
|
4143
4102
|
registerQueryFileLoaderResolver(resolver) {
|
|
4144
4103
|
this.queryFileLoaderResolver = resolver;
|
|
4145
4104
|
}
|
|
4105
|
+
getQueryFileLoaderResolver() {
|
|
4106
|
+
if (!this.queryFileLoaderResolver) {
|
|
4107
|
+
throw 'Resolver for QueryFileLoader is not defined';
|
|
4108
|
+
}
|
|
4109
|
+
return this.queryFileLoaderResolver;
|
|
4110
|
+
}
|
|
4146
4111
|
registerAggregatesCalculator(resolver) {
|
|
4147
4112
|
this.aggrCalculatoResolver = resolver;
|
|
4148
4113
|
}
|
|
4114
|
+
getAggregatesCalculatorResolver() {
|
|
4115
|
+
if (!this.aggrCalculatoResolver) {
|
|
4116
|
+
throw 'Resolver for AggregatesCalculator is not defined';
|
|
4117
|
+
}
|
|
4118
|
+
return this.aggrCalculatoResolver;
|
|
4119
|
+
}
|
|
4149
4120
|
registerService(serviceId, serviceResolver) {
|
|
4150
4121
|
this.services[serviceId] = serviceResolver;
|
|
4151
4122
|
}
|
|
@@ -4220,7 +4191,7 @@ class EqServerExporter {
|
|
|
4220
4191
|
const blob = new Blob([responseData]);
|
|
4221
4192
|
const dispositionHeader = request.getXMLHttpRequest().getResponseHeader("Content-Disposition");
|
|
4222
4193
|
const filename = dispositionHeader
|
|
4223
|
-
? dispositionHeader.match(/filename="(
|
|
4194
|
+
? dispositionHeader.match(/filename="?([^"]*)"?$/)[1]
|
|
4224
4195
|
: 'export-data.' + format;
|
|
4225
4196
|
if (window.navigator['msSaveOrOpenBlob']) {
|
|
4226
4197
|
// Internet Explorer
|
|
@@ -4323,6 +4294,13 @@ class EqContext {
|
|
|
4323
4294
|
columnTitleFormat: null //means it will be the same as attributeFormat
|
|
4324
4295
|
};
|
|
4325
4296
|
this.servicesInitialized = false;
|
|
4297
|
+
this.modelLoader = null;
|
|
4298
|
+
this.queryStorage = null;
|
|
4299
|
+
this.querySynchronizer = null;
|
|
4300
|
+
this.dataFetcher = null;
|
|
4301
|
+
this.valueListLoader = null;
|
|
4302
|
+
this.queryFileLoader = null;
|
|
4303
|
+
this.aggrCalculator = null;
|
|
4326
4304
|
this.internalListCache = {};
|
|
4327
4305
|
this.loadModelOnStart = true;
|
|
4328
4306
|
this.loadQueryOnStart = false;
|
|
@@ -4430,6 +4408,62 @@ class EqContext {
|
|
|
4430
4408
|
getServices() {
|
|
4431
4409
|
return this.eqServices;
|
|
4432
4410
|
}
|
|
4411
|
+
getModelLoader() {
|
|
4412
|
+
if (!this.modelLoader) {
|
|
4413
|
+
const modelLoaderResolver = this.eqServices.getModelLoaderResolver();
|
|
4414
|
+
this.modelLoader = modelLoaderResolver(this);
|
|
4415
|
+
}
|
|
4416
|
+
return this.modelLoader;
|
|
4417
|
+
}
|
|
4418
|
+
getModelStorage() {
|
|
4419
|
+
if (!this.modelStorage) {
|
|
4420
|
+
const modelStorageResolver = this.eqServices.getModelStorageResolver();
|
|
4421
|
+
this.modelStorage = modelStorageResolver(this);
|
|
4422
|
+
}
|
|
4423
|
+
return this.modelStorage;
|
|
4424
|
+
}
|
|
4425
|
+
getQueryStorage() {
|
|
4426
|
+
if (!this.queryStorage) {
|
|
4427
|
+
const queryStorageResolver = this.eqServices.getQueryStorageResolver();
|
|
4428
|
+
this.queryStorage = queryStorageResolver(this);
|
|
4429
|
+
}
|
|
4430
|
+
return this.queryStorage;
|
|
4431
|
+
}
|
|
4432
|
+
getQuerySynchronizer() {
|
|
4433
|
+
if (!this.querySynchronizer) {
|
|
4434
|
+
const querySynchronizerResolver = this.eqServices.getQuerySynchronizerResolver();
|
|
4435
|
+
this.querySynchronizer = querySynchronizerResolver(this);
|
|
4436
|
+
}
|
|
4437
|
+
return this.querySynchronizer;
|
|
4438
|
+
}
|
|
4439
|
+
getDataFetcher() {
|
|
4440
|
+
if (!this.dataFetcher) {
|
|
4441
|
+
const dataFetcherResolver = this.eqServices.getDataFetcherResolver();
|
|
4442
|
+
this.dataFetcher = dataFetcherResolver(this);
|
|
4443
|
+
}
|
|
4444
|
+
return this.dataFetcher;
|
|
4445
|
+
}
|
|
4446
|
+
getValueListLoader() {
|
|
4447
|
+
if (!this.valueListLoader) {
|
|
4448
|
+
const vllResolver = this.eqServices.getValueListLoaderResolver();
|
|
4449
|
+
this.valueListLoader = vllResolver(this);
|
|
4450
|
+
}
|
|
4451
|
+
return this.valueListLoader;
|
|
4452
|
+
}
|
|
4453
|
+
getQueryFileLoader() {
|
|
4454
|
+
if (!this.queryFileLoader) {
|
|
4455
|
+
const queryFileLoaderResolver = this.eqServices.getQueryFileLoaderResolver();
|
|
4456
|
+
this.queryFileLoader = queryFileLoaderResolver(this);
|
|
4457
|
+
}
|
|
4458
|
+
return this.queryFileLoader;
|
|
4459
|
+
}
|
|
4460
|
+
getAggregatesCalculator() {
|
|
4461
|
+
if (!this.aggrCalculator) {
|
|
4462
|
+
const aggrCalculatorResolver = this.eqServices.getAggregatesCalculatorResolver();
|
|
4463
|
+
this.aggrCalculator = aggrCalculatorResolver(this);
|
|
4464
|
+
}
|
|
4465
|
+
return this.aggrCalculator;
|
|
4466
|
+
}
|
|
4433
4467
|
/**
|
|
4434
4468
|
* Activates `Enterprise` functionality of the library. Works only with @easyquery/enterprise packag and a proper license key.
|
|
4435
4469
|
* @param keyOrInitCallback The license key or a callback wich is called after
|
|
@@ -4618,9 +4652,9 @@ class EqContext {
|
|
|
4618
4652
|
this.initialQuery = options.initialQuery;
|
|
4619
4653
|
this.defaultQueryId = options.defaultQueryId || '';
|
|
4620
4654
|
this.defaultModelId = options.defaultModelId || '__default';
|
|
4621
|
-
const modelLoader = this.
|
|
4655
|
+
const modelLoader = this.getModelLoader();
|
|
4622
4656
|
modelLoader.init(options);
|
|
4623
|
-
const queryStorage = this.
|
|
4657
|
+
const queryStorage = this.getQueryStorage();
|
|
4624
4658
|
queryStorage.init(options);
|
|
4625
4659
|
if (options.useDefaultExporters !== false) {
|
|
4626
4660
|
this.addDefaultExporters();
|
|
@@ -4980,7 +5014,7 @@ class EqContext {
|
|
|
4980
5014
|
action: exports.EqAction.GetValueList,
|
|
4981
5015
|
text: 'Loading values'
|
|
4982
5016
|
}, exports.WidgetGroup.Result);
|
|
4983
|
-
const valueListResolver = this.
|
|
5017
|
+
const valueListResolver = this.getValueListLoader();
|
|
4984
5018
|
valueListResolver.loadValueList(options)
|
|
4985
5019
|
.then((values) => {
|
|
4986
5020
|
this.endProcess({
|
|
@@ -5027,7 +5061,7 @@ class EqContext {
|
|
|
5027
5061
|
action: exports.EqAction.LoadModel,
|
|
5028
5062
|
text: 'Loading model: ' + modelId
|
|
5029
5063
|
}, exports.WidgetGroup.Model);
|
|
5030
|
-
const modelLoader = this.
|
|
5064
|
+
const modelLoader = this.getModelLoader();
|
|
5031
5065
|
return modelLoader.startModelLoading(options)
|
|
5032
5066
|
.then((value) => {
|
|
5033
5067
|
if (value) {
|
|
@@ -5070,7 +5104,7 @@ class EqContext {
|
|
|
5070
5104
|
});
|
|
5071
5105
|
}
|
|
5072
5106
|
callWhenModelLoaded(callFunc) {
|
|
5073
|
-
const modelLoader = this.
|
|
5107
|
+
const modelLoader = this.getModelLoader();
|
|
5074
5108
|
modelLoader.getModelPromise().then(() => {
|
|
5075
5109
|
callFunc();
|
|
5076
5110
|
});
|
|
@@ -5087,7 +5121,7 @@ class EqContext {
|
|
|
5087
5121
|
*/
|
|
5088
5122
|
loadQuery(options) {
|
|
5089
5123
|
options = options || {};
|
|
5090
|
-
const modelLoader = this.
|
|
5124
|
+
const modelLoader = this.getModelLoader();
|
|
5091
5125
|
this.clearResult();
|
|
5092
5126
|
modelLoader.getModelPromise()
|
|
5093
5127
|
.then(() => {
|
|
@@ -5101,7 +5135,7 @@ class EqContext {
|
|
|
5101
5135
|
action: exports.EqAction.LoadQuery,
|
|
5102
5136
|
text: "Query loading: " + queryId
|
|
5103
5137
|
}, exports.WidgetGroup.Query);
|
|
5104
|
-
const queryStorage = this.
|
|
5138
|
+
const queryStorage = this.getQueryStorage();
|
|
5105
5139
|
queryStorage.loadQuery(options)
|
|
5106
5140
|
.then((data) => {
|
|
5107
5141
|
if (data) {
|
|
@@ -5153,7 +5187,7 @@ class EqContext {
|
|
|
5153
5187
|
* Usually it contains `success`, `error` callbacks
|
|
5154
5188
|
*/
|
|
5155
5189
|
loadQueryList(options) {
|
|
5156
|
-
const modelLoader = this.
|
|
5190
|
+
const modelLoader = this.getModelLoader();
|
|
5157
5191
|
modelLoader.getModelPromise()
|
|
5158
5192
|
.then(() => {
|
|
5159
5193
|
this.startQueryListLoading(options);
|
|
@@ -5169,7 +5203,7 @@ class EqContext {
|
|
|
5169
5203
|
}
|
|
5170
5204
|
startQueryListLoading(options) {
|
|
5171
5205
|
options = options || {};
|
|
5172
|
-
const queryStorage = this.
|
|
5206
|
+
const queryStorage = this.getQueryStorage();
|
|
5173
5207
|
const queryListLoadingPromise = queryStorage.getQueryList(options);
|
|
5174
5208
|
queryListLoadingPromise
|
|
5175
5209
|
.then((queries) => {
|
|
@@ -5234,7 +5268,7 @@ class EqContext {
|
|
|
5234
5268
|
action: exports.EqAction.NewQuery,
|
|
5235
5269
|
text: 'New query creation...'
|
|
5236
5270
|
}, exports.WidgetGroup.Query);
|
|
5237
|
-
const queryStorage = this.
|
|
5271
|
+
const queryStorage = this.getQueryStorage();
|
|
5238
5272
|
queryStorage.newQuery(options)
|
|
5239
5273
|
.then((queryData) => {
|
|
5240
5274
|
if (queryData) {
|
|
@@ -5281,7 +5315,7 @@ class EqContext {
|
|
|
5281
5315
|
action: exports.EqAction.SaveQuery,
|
|
5282
5316
|
text: 'Query saving: ' + query.getId()
|
|
5283
5317
|
}, exports.WidgetGroup.Query);
|
|
5284
|
-
const queryStorage = this.
|
|
5318
|
+
const queryStorage = this.getQueryStorage();
|
|
5285
5319
|
queryStorage.saveQuery(options)
|
|
5286
5320
|
.then((data) => {
|
|
5287
5321
|
this.endProcess({
|
|
@@ -5324,7 +5358,7 @@ class EqContext {
|
|
|
5324
5358
|
action: exports.EqAction.RemoveQuery,
|
|
5325
5359
|
text: 'Query deleting: ' + query.getId()
|
|
5326
5360
|
}, exports.WidgetGroup.Query);
|
|
5327
|
-
const queryStorage = this.
|
|
5361
|
+
const queryStorage = this.getQueryStorage();
|
|
5328
5362
|
queryStorage.removeQuery(options)
|
|
5329
5363
|
.then(() => {
|
|
5330
5364
|
query.reset();
|
|
@@ -5366,7 +5400,7 @@ class EqContext {
|
|
|
5366
5400
|
action: exports.EqAction.SyncQuery,
|
|
5367
5401
|
text: 'Query syncing: ' + query.getId()
|
|
5368
5402
|
}, exports.WidgetGroup.Query);
|
|
5369
|
-
const querySyncrhonizer = this.
|
|
5403
|
+
const querySyncrhonizer = this.getQuerySynchronizer();
|
|
5370
5404
|
querySyncrhonizer.syncQuery(options)
|
|
5371
5405
|
.then((result) => {
|
|
5372
5406
|
this.resultStatement = result && result.statement
|
|
@@ -5451,7 +5485,7 @@ class EqContext {
|
|
|
5451
5485
|
this.resultStatement = result.statement;
|
|
5452
5486
|
this.refreshWidgets(exports.WidgetGroup.Statement);
|
|
5453
5487
|
}
|
|
5454
|
-
const aggrCalculator = this.
|
|
5488
|
+
const aggrCalculator = this.getAggregatesCalculator();
|
|
5455
5489
|
aggrCalculator.reset();
|
|
5456
5490
|
this.resultContent = result;
|
|
5457
5491
|
if (result.resultSet) {
|
|
@@ -5489,7 +5523,7 @@ class EqContext {
|
|
|
5489
5523
|
action: exports.EqAction.GetQueryFile,
|
|
5490
5524
|
text: 'Getting query file: ' + query.getId()
|
|
5491
5525
|
}, exports.WidgetGroup.Query);
|
|
5492
|
-
const queryFileLoader = this.
|
|
5526
|
+
const queryFileLoader = this.getQueryFileLoader();
|
|
5493
5527
|
queryFileLoader.getQueryFile(options)
|
|
5494
5528
|
.then(() => {
|
|
5495
5529
|
this.endProcess({
|
|
@@ -5520,7 +5554,7 @@ class EqContext {
|
|
|
5520
5554
|
action: exports.EqAction.UploadQueryFile,
|
|
5521
5555
|
text: 'Uploading query file: ' + query.getId()
|
|
5522
5556
|
}, exports.WidgetGroup.Query);
|
|
5523
|
-
const queryFileLoader = this.
|
|
5557
|
+
const queryFileLoader = this.getQueryFileLoader();
|
|
5524
5558
|
queryFileLoader.uploadQueryFile(options)
|
|
5525
5559
|
.then((data) => {
|
|
5526
5560
|
query.loadFromData(data);
|
|
@@ -5551,6 +5585,7 @@ class EqContext {
|
|
|
5551
5585
|
fetchDataChunk(options) {
|
|
5552
5586
|
const queryId = this.getQuery().getId();
|
|
5553
5587
|
let fetchOptions = options || {};
|
|
5588
|
+
fetchOptions.data = fetchOptions.data || {}; // add empty data property for convenience
|
|
5554
5589
|
if (this.useStoredQueryOnFetch) {
|
|
5555
5590
|
fetchOptions.queryId = this.query.getId();
|
|
5556
5591
|
}
|
|
@@ -5561,7 +5596,7 @@ class EqContext {
|
|
|
5561
5596
|
action: exports.EqAction.FetchData,
|
|
5562
5597
|
text: 'Fetching data for the query: ' + queryId
|
|
5563
5598
|
}, exports.WidgetGroup.Result);
|
|
5564
|
-
const dataFetcher = this.
|
|
5599
|
+
const dataFetcher = this.getDataFetcher();
|
|
5565
5600
|
dataFetcher.fetchData(fetchOptions)
|
|
5566
5601
|
.then((result) => {
|
|
5567
5602
|
if (result.statement) {
|
|
@@ -5596,7 +5631,7 @@ class EqContext {
|
|
|
5596
5631
|
}
|
|
5597
5632
|
onResultTableUpdate() {
|
|
5598
5633
|
const aggrSettings = this.query.getAggregationSettings();
|
|
5599
|
-
const calculator = this.
|
|
5634
|
+
const calculator = this.getAggregatesCalculator();
|
|
5600
5635
|
if (aggrSettings.needAggrCalculation() && calculator.needRecalculation()) {
|
|
5601
5636
|
calculator.calculate({
|
|
5602
5637
|
maxLevel: aggrSettings.getGroups().length + 1,
|
|
@@ -5634,7 +5669,7 @@ class EqContext {
|
|
|
5634
5669
|
action: exports.EqAction.FetchData,
|
|
5635
5670
|
text: 'DrillDown executing: ' + queryId
|
|
5636
5671
|
}, exports.WidgetGroup.Result);
|
|
5637
|
-
const queryExecutor = this.
|
|
5672
|
+
const queryExecutor = this.getDataFetcher();
|
|
5638
5673
|
queryExecutor.fetchData(options)
|
|
5639
5674
|
.then((result) => {
|
|
5640
5675
|
this.endProcess({
|
|
@@ -5677,31 +5712,32 @@ class EqContext {
|
|
|
5677
5712
|
*
|
|
5678
5713
|
*/
|
|
5679
5714
|
exportResult(options) {
|
|
5680
|
-
|
|
5681
|
-
|
|
5715
|
+
let exportOptions = options || {};
|
|
5716
|
+
exportOptions.chunk = exportOptions.chunk || EmptyChunk;
|
|
5717
|
+
exportOptions.data = exportOptions.data || {}; //add data property for convenience
|
|
5682
5718
|
if (this.beforeExportResult) {
|
|
5683
|
-
this.beforeExportResult(this,
|
|
5719
|
+
this.beforeExportResult(this, exportOptions);
|
|
5684
5720
|
}
|
|
5685
|
-
const format =
|
|
5721
|
+
const format = exportOptions.format;
|
|
5686
5722
|
if (format) {
|
|
5687
5723
|
const exporter = this.getExporter(format);
|
|
5688
5724
|
if (exporter) {
|
|
5689
5725
|
const queryId = this.getQuery().getId();
|
|
5690
5726
|
if (this.useStoredQueryOnFetch) {
|
|
5691
|
-
|
|
5727
|
+
exportOptions.queryId = queryId;
|
|
5692
5728
|
}
|
|
5693
5729
|
this.startProcess({
|
|
5694
5730
|
action: exports.EqAction.ExportResult,
|
|
5695
5731
|
text: 'Exporting result for query: ' + queryId
|
|
5696
5732
|
}, exports.WidgetGroup.Result);
|
|
5697
5733
|
const localeSettings = core.i18n.getLocaleSettings();
|
|
5698
|
-
|
|
5734
|
+
exportOptions.settings = localeSettings;
|
|
5699
5735
|
const aggrSettings = this.query.getAggregationSettings();
|
|
5700
5736
|
if (aggrSettings.hasAggregates()
|
|
5701
5737
|
&& (aggrSettings.hasGrandTotals() || aggrSettings.hasGroups())) {
|
|
5702
|
-
|
|
5738
|
+
exportOptions.aggregates = aggrSettings.saveToData();
|
|
5703
5739
|
}
|
|
5704
|
-
exporter.export(
|
|
5740
|
+
exporter.export(exportOptions)
|
|
5705
5741
|
.then((result) => {
|
|
5706
5742
|
this.fireEvent('exportResult');
|
|
5707
5743
|
this.endProcess({
|
|
@@ -5709,8 +5745,8 @@ class EqContext {
|
|
|
5709
5745
|
action: exports.EqAction.ExportResult,
|
|
5710
5746
|
text: `The result set for query [${queryId}] has been successfully exported`
|
|
5711
5747
|
}, exports.WidgetGroup.Result);
|
|
5712
|
-
if (
|
|
5713
|
-
|
|
5748
|
+
if (exportOptions.success) {
|
|
5749
|
+
exportOptions.success();
|
|
5714
5750
|
}
|
|
5715
5751
|
})
|
|
5716
5752
|
.catch((error) => {
|
|
@@ -5721,8 +5757,8 @@ class EqContext {
|
|
|
5721
5757
|
text: errorMessage,
|
|
5722
5758
|
sourceError: error
|
|
5723
5759
|
}, exports.WidgetGroup.Result);
|
|
5724
|
-
if (
|
|
5725
|
-
|
|
5760
|
+
if (exportOptions.error) {
|
|
5761
|
+
exportOptions.error(errorMessage, 'ExportResult');
|
|
5726
5762
|
}
|
|
5727
5763
|
});
|
|
5728
5764
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
|
|
2
2
|
/*
|
|
3
|
-
* EasyQuery.JS Core v7.3.
|
|
3
|
+
* EasyQuery.JS Core v7.3.5-rc02
|
|
4
4
|
* Copyright 2024 Korzh.com
|
|
5
5
|
* Licensed under MIT
|
|
6
6
|
*
|
|
7
|
-
* Build time:
|
|
7
|
+
* Build time: 12/24/2024 12:16:48 PM
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { i18n, DataType, utils, ValueEditor,
|
|
10
|
+
import { i18n, DataType, utils, ValueEditor, MetaEntity, MetaEntityAttr, EditorTag, MetaData, EventEmitter, AggregationSettings, HttpClient, EasyDataTable } from '@easydata/core';
|
|
11
11
|
export { i18n } from '@easydata/core';
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -3613,7 +3613,7 @@ class BrowserQueryStorage {
|
|
|
3613
3613
|
}
|
|
3614
3614
|
newQuery(options) {
|
|
3615
3615
|
return new Promise((resolve, reject) => {
|
|
3616
|
-
const query =
|
|
3616
|
+
const query = this.context.createQuery();
|
|
3617
3617
|
query.reset();
|
|
3618
3618
|
query.setDefaultName();
|
|
3619
3619
|
if (options) {
|
|
@@ -3852,7 +3852,7 @@ class EqQueryFileLoader {
|
|
|
3852
3852
|
const blob = new Blob([responseData]);
|
|
3853
3853
|
const dispositionHeader = request.getXMLHttpRequest().getResponseHeader("Content-Disposition");
|
|
3854
3854
|
let fileName = dispositionHeader
|
|
3855
|
-
? dispositionHeader.match(/filename="(
|
|
3855
|
+
? dispositionHeader.match(/filename="?([^"]*)"?$/)[1]
|
|
3856
3856
|
: 'query.json';
|
|
3857
3857
|
if (options.fileName) {
|
|
3858
3858
|
fileName = options.fileName
|
|
@@ -4001,13 +4001,6 @@ class EqServiceProvider {
|
|
|
4001
4001
|
return EqServiceProvider._instance;
|
|
4002
4002
|
}
|
|
4003
4003
|
constructor() {
|
|
4004
|
-
this.modelLoader = null;
|
|
4005
|
-
this.queryStorage = null;
|
|
4006
|
-
this.querySynchronizer = null;
|
|
4007
|
-
this.dataFetcher = null;
|
|
4008
|
-
this.valueListResolver = null;
|
|
4009
|
-
this.queryFileLoader = null;
|
|
4010
|
-
this.aggrCalculator = null;
|
|
4011
4004
|
this.services = {};
|
|
4012
4005
|
this.httpClient = new HttpClient();
|
|
4013
4006
|
this.httpClient.defaultHeaders['x-eqjs-version'] = '7.3.0';
|
|
@@ -4017,16 +4010,12 @@ class EqServiceProvider {
|
|
|
4017
4010
|
this.modelLoaderResolver = (context) => new EqServerModelLoader(context);
|
|
4018
4011
|
this.queryStorageResolver = (context) => new BrowserQueryStorage(context);
|
|
4019
4012
|
this.querySynchronizerResolver = (context) => new EqServerQuerySynchronizer(context);
|
|
4020
|
-
this.
|
|
4013
|
+
this.vllResolver = (context) => new EqServerValueListResolver(context);
|
|
4021
4014
|
this.dataFetcherResolver = (context) => new EqServerDataFetcher(context);
|
|
4022
4015
|
this.queryFileLoaderResolver = (context) => new EqQueryFileLoader(context);
|
|
4023
4016
|
this.aggrCalculatoResolver = (context) => new DefaultAggregatesCalculator(context);
|
|
4024
4017
|
}
|
|
4025
4018
|
reset() {
|
|
4026
|
-
this.modelStorage = null;
|
|
4027
|
-
this.modelLoader = null;
|
|
4028
|
-
this.queryStorage = null;
|
|
4029
|
-
this.querySynchronizer = null;
|
|
4030
4019
|
}
|
|
4031
4020
|
getHttpClient() {
|
|
4032
4021
|
return this.httpClient;
|
|
@@ -4043,108 +4032,90 @@ class EqServiceProvider {
|
|
|
4043
4032
|
}
|
|
4044
4033
|
return this.queryResolver(context);
|
|
4045
4034
|
}
|
|
4046
|
-
getModelLoader(context) {
|
|
4047
|
-
if (!this.modelLoader) {
|
|
4048
|
-
if (!this.modelLoaderResolver) {
|
|
4049
|
-
throw 'ModelLoaderResolver is not defined';
|
|
4050
|
-
}
|
|
4051
|
-
this.modelLoader = this.modelLoaderResolver(context);
|
|
4052
|
-
}
|
|
4053
|
-
return this.modelLoader;
|
|
4054
|
-
}
|
|
4055
|
-
getModelStorage(context) {
|
|
4056
|
-
if (!this.modelStorage) {
|
|
4057
|
-
if (!this.modelStorageResolver) {
|
|
4058
|
-
throw 'ModelStorageResolver is not defined';
|
|
4059
|
-
}
|
|
4060
|
-
this.modelStorage = this.modelStorageResolver(context);
|
|
4061
|
-
}
|
|
4062
|
-
return this.modelStorage;
|
|
4063
|
-
}
|
|
4064
|
-
getQueryStorage(context) {
|
|
4065
|
-
if (!this.queryStorage) {
|
|
4066
|
-
if (!this.queryStorageResolver) {
|
|
4067
|
-
throw 'QueryStorageResolver is not defined';
|
|
4068
|
-
}
|
|
4069
|
-
this.queryStorage = this.queryStorageResolver(context);
|
|
4070
|
-
}
|
|
4071
|
-
return this.queryStorage;
|
|
4072
|
-
}
|
|
4073
|
-
getQuerySynchronizer(context) {
|
|
4074
|
-
if (!this.querySynchronizer) {
|
|
4075
|
-
if (!this.querySynchronizerResolver) {
|
|
4076
|
-
throw 'QuerySynchronizerResolver is not defined';
|
|
4077
|
-
}
|
|
4078
|
-
this.querySynchronizer = this.querySynchronizerResolver(context);
|
|
4079
|
-
}
|
|
4080
|
-
return this.querySynchronizer;
|
|
4081
|
-
}
|
|
4082
|
-
getDataFetcher(context) {
|
|
4083
|
-
if (!this.dataFetcher) {
|
|
4084
|
-
if (!this.dataFetcherResolver) {
|
|
4085
|
-
throw 'DataFetcherResolver is not defined';
|
|
4086
|
-
}
|
|
4087
|
-
this.dataFetcher = this.dataFetcherResolver(context);
|
|
4088
|
-
}
|
|
4089
|
-
return this.dataFetcher;
|
|
4090
|
-
}
|
|
4091
|
-
getValueListResolver(context) {
|
|
4092
|
-
if (!this.valueListResolver) {
|
|
4093
|
-
if (!this.vlrResolver) {
|
|
4094
|
-
throw 'Resolver for ValueListResolver is not defined';
|
|
4095
|
-
}
|
|
4096
|
-
this.valueListResolver = this.vlrResolver(context);
|
|
4097
|
-
}
|
|
4098
|
-
return this.valueListResolver;
|
|
4099
|
-
}
|
|
4100
|
-
getQueryFileLoader(context) {
|
|
4101
|
-
if (!this.queryFileLoader) {
|
|
4102
|
-
if (!this.queryFileLoaderResolver) {
|
|
4103
|
-
throw 'Resolver for QueryFileLoader is not defined';
|
|
4104
|
-
}
|
|
4105
|
-
this.queryFileLoader = this.queryFileLoaderResolver(context);
|
|
4106
|
-
}
|
|
4107
|
-
return this.queryFileLoader;
|
|
4108
|
-
}
|
|
4109
|
-
getAggregatesCalculator(context) {
|
|
4110
|
-
if (!this.aggrCalculator) {
|
|
4111
|
-
if (!this.aggrCalculatoResolver) {
|
|
4112
|
-
throw 'Resolver for AggregatesCalculator is not defined';
|
|
4113
|
-
}
|
|
4114
|
-
this.aggrCalculator = this.aggrCalculatoResolver(context);
|
|
4115
|
-
}
|
|
4116
|
-
return this.aggrCalculator;
|
|
4117
|
-
}
|
|
4118
4035
|
registerDataModelResolver(resolver) {
|
|
4119
4036
|
this.modelResolver = resolver;
|
|
4120
4037
|
}
|
|
4038
|
+
getDataModelResolver() {
|
|
4039
|
+
return this.modelResolver;
|
|
4040
|
+
}
|
|
4121
4041
|
registerQueryResolver(resolver) {
|
|
4122
4042
|
this.queryResolver = resolver;
|
|
4123
4043
|
}
|
|
4044
|
+
getQueryResolver() {
|
|
4045
|
+
return this.queryResolver;
|
|
4046
|
+
}
|
|
4124
4047
|
registerModelLoaderResolver(resolver) {
|
|
4125
4048
|
this.modelLoaderResolver = resolver;
|
|
4126
4049
|
}
|
|
4050
|
+
getModelLoaderResolver() {
|
|
4051
|
+
if (!this.modelLoaderResolver) {
|
|
4052
|
+
throw 'ModelLoaderResolver is not defined';
|
|
4053
|
+
}
|
|
4054
|
+
return this.modelLoaderResolver;
|
|
4055
|
+
}
|
|
4127
4056
|
registerModelStorageResolver(resolver) {
|
|
4128
4057
|
this.modelStorageResolver = resolver;
|
|
4129
4058
|
}
|
|
4059
|
+
getModelStorageResolver() {
|
|
4060
|
+
if (!this.modelStorageResolver) {
|
|
4061
|
+
throw 'ModelStorageResolver is not defined';
|
|
4062
|
+
}
|
|
4063
|
+
return this.modelStorageResolver;
|
|
4064
|
+
}
|
|
4130
4065
|
registerQueryStorageResolver(resolver) {
|
|
4131
4066
|
this.queryStorageResolver = resolver;
|
|
4132
4067
|
}
|
|
4068
|
+
getQueryStorageResolver() {
|
|
4069
|
+
if (!this.queryStorageResolver) {
|
|
4070
|
+
throw 'QueryStorageResolver is not defined';
|
|
4071
|
+
}
|
|
4072
|
+
return this.queryStorageResolver;
|
|
4073
|
+
}
|
|
4133
4074
|
registerDataFetcherResolver(resolver) {
|
|
4134
4075
|
this.dataFetcherResolver = resolver;
|
|
4135
4076
|
}
|
|
4077
|
+
getDataFetcherResolver() {
|
|
4078
|
+
if (!this.dataFetcherResolver) {
|
|
4079
|
+
throw 'DataFetcherResolver is not defined';
|
|
4080
|
+
}
|
|
4081
|
+
return this.dataFetcherResolver;
|
|
4082
|
+
}
|
|
4136
4083
|
registerQuerySyncronizerResolver(resolver) {
|
|
4137
4084
|
this.querySynchronizerResolver = resolver;
|
|
4138
4085
|
}
|
|
4139
|
-
|
|
4140
|
-
this.
|
|
4086
|
+
getQuerySynchronizerResolver() {
|
|
4087
|
+
if (!this.querySynchronizerResolver) {
|
|
4088
|
+
throw 'QuerySynchronizerResolver is not defined';
|
|
4089
|
+
}
|
|
4090
|
+
return this.querySynchronizerResolver;
|
|
4091
|
+
}
|
|
4092
|
+
registerValueListLoaderResolver(resolver) {
|
|
4093
|
+
this.vllResolver = resolver;
|
|
4094
|
+
}
|
|
4095
|
+
getValueListLoaderResolver() {
|
|
4096
|
+
if (!this.vllResolver) {
|
|
4097
|
+
throw 'Resolver for ValueListLoader is not defined';
|
|
4098
|
+
}
|
|
4099
|
+
return this.vllResolver;
|
|
4141
4100
|
}
|
|
4142
4101
|
registerQueryFileLoaderResolver(resolver) {
|
|
4143
4102
|
this.queryFileLoaderResolver = resolver;
|
|
4144
4103
|
}
|
|
4104
|
+
getQueryFileLoaderResolver() {
|
|
4105
|
+
if (!this.queryFileLoaderResolver) {
|
|
4106
|
+
throw 'Resolver for QueryFileLoader is not defined';
|
|
4107
|
+
}
|
|
4108
|
+
return this.queryFileLoaderResolver;
|
|
4109
|
+
}
|
|
4145
4110
|
registerAggregatesCalculator(resolver) {
|
|
4146
4111
|
this.aggrCalculatoResolver = resolver;
|
|
4147
4112
|
}
|
|
4113
|
+
getAggregatesCalculatorResolver() {
|
|
4114
|
+
if (!this.aggrCalculatoResolver) {
|
|
4115
|
+
throw 'Resolver for AggregatesCalculator is not defined';
|
|
4116
|
+
}
|
|
4117
|
+
return this.aggrCalculatoResolver;
|
|
4118
|
+
}
|
|
4148
4119
|
registerService(serviceId, serviceResolver) {
|
|
4149
4120
|
this.services[serviceId] = serviceResolver;
|
|
4150
4121
|
}
|
|
@@ -4219,7 +4190,7 @@ class EqServerExporter {
|
|
|
4219
4190
|
const blob = new Blob([responseData]);
|
|
4220
4191
|
const dispositionHeader = request.getXMLHttpRequest().getResponseHeader("Content-Disposition");
|
|
4221
4192
|
const filename = dispositionHeader
|
|
4222
|
-
? dispositionHeader.match(/filename="(
|
|
4193
|
+
? dispositionHeader.match(/filename="?([^"]*)"?$/)[1]
|
|
4223
4194
|
: 'export-data.' + format;
|
|
4224
4195
|
if (window.navigator['msSaveOrOpenBlob']) {
|
|
4225
4196
|
// Internet Explorer
|
|
@@ -4322,6 +4293,13 @@ class EqContext {
|
|
|
4322
4293
|
columnTitleFormat: null //means it will be the same as attributeFormat
|
|
4323
4294
|
};
|
|
4324
4295
|
this.servicesInitialized = false;
|
|
4296
|
+
this.modelLoader = null;
|
|
4297
|
+
this.queryStorage = null;
|
|
4298
|
+
this.querySynchronizer = null;
|
|
4299
|
+
this.dataFetcher = null;
|
|
4300
|
+
this.valueListLoader = null;
|
|
4301
|
+
this.queryFileLoader = null;
|
|
4302
|
+
this.aggrCalculator = null;
|
|
4325
4303
|
this.internalListCache = {};
|
|
4326
4304
|
this.loadModelOnStart = true;
|
|
4327
4305
|
this.loadQueryOnStart = false;
|
|
@@ -4429,6 +4407,62 @@ class EqContext {
|
|
|
4429
4407
|
getServices() {
|
|
4430
4408
|
return this.eqServices;
|
|
4431
4409
|
}
|
|
4410
|
+
getModelLoader() {
|
|
4411
|
+
if (!this.modelLoader) {
|
|
4412
|
+
const modelLoaderResolver = this.eqServices.getModelLoaderResolver();
|
|
4413
|
+
this.modelLoader = modelLoaderResolver(this);
|
|
4414
|
+
}
|
|
4415
|
+
return this.modelLoader;
|
|
4416
|
+
}
|
|
4417
|
+
getModelStorage() {
|
|
4418
|
+
if (!this.modelStorage) {
|
|
4419
|
+
const modelStorageResolver = this.eqServices.getModelStorageResolver();
|
|
4420
|
+
this.modelStorage = modelStorageResolver(this);
|
|
4421
|
+
}
|
|
4422
|
+
return this.modelStorage;
|
|
4423
|
+
}
|
|
4424
|
+
getQueryStorage() {
|
|
4425
|
+
if (!this.queryStorage) {
|
|
4426
|
+
const queryStorageResolver = this.eqServices.getQueryStorageResolver();
|
|
4427
|
+
this.queryStorage = queryStorageResolver(this);
|
|
4428
|
+
}
|
|
4429
|
+
return this.queryStorage;
|
|
4430
|
+
}
|
|
4431
|
+
getQuerySynchronizer() {
|
|
4432
|
+
if (!this.querySynchronizer) {
|
|
4433
|
+
const querySynchronizerResolver = this.eqServices.getQuerySynchronizerResolver();
|
|
4434
|
+
this.querySynchronizer = querySynchronizerResolver(this);
|
|
4435
|
+
}
|
|
4436
|
+
return this.querySynchronizer;
|
|
4437
|
+
}
|
|
4438
|
+
getDataFetcher() {
|
|
4439
|
+
if (!this.dataFetcher) {
|
|
4440
|
+
const dataFetcherResolver = this.eqServices.getDataFetcherResolver();
|
|
4441
|
+
this.dataFetcher = dataFetcherResolver(this);
|
|
4442
|
+
}
|
|
4443
|
+
return this.dataFetcher;
|
|
4444
|
+
}
|
|
4445
|
+
getValueListLoader() {
|
|
4446
|
+
if (!this.valueListLoader) {
|
|
4447
|
+
const vllResolver = this.eqServices.getValueListLoaderResolver();
|
|
4448
|
+
this.valueListLoader = vllResolver(this);
|
|
4449
|
+
}
|
|
4450
|
+
return this.valueListLoader;
|
|
4451
|
+
}
|
|
4452
|
+
getQueryFileLoader() {
|
|
4453
|
+
if (!this.queryFileLoader) {
|
|
4454
|
+
const queryFileLoaderResolver = this.eqServices.getQueryFileLoaderResolver();
|
|
4455
|
+
this.queryFileLoader = queryFileLoaderResolver(this);
|
|
4456
|
+
}
|
|
4457
|
+
return this.queryFileLoader;
|
|
4458
|
+
}
|
|
4459
|
+
getAggregatesCalculator() {
|
|
4460
|
+
if (!this.aggrCalculator) {
|
|
4461
|
+
const aggrCalculatorResolver = this.eqServices.getAggregatesCalculatorResolver();
|
|
4462
|
+
this.aggrCalculator = aggrCalculatorResolver(this);
|
|
4463
|
+
}
|
|
4464
|
+
return this.aggrCalculator;
|
|
4465
|
+
}
|
|
4432
4466
|
/**
|
|
4433
4467
|
* Activates `Enterprise` functionality of the library. Works only with @easyquery/enterprise packag and a proper license key.
|
|
4434
4468
|
* @param keyOrInitCallback The license key or a callback wich is called after
|
|
@@ -4617,9 +4651,9 @@ class EqContext {
|
|
|
4617
4651
|
this.initialQuery = options.initialQuery;
|
|
4618
4652
|
this.defaultQueryId = options.defaultQueryId || '';
|
|
4619
4653
|
this.defaultModelId = options.defaultModelId || '__default';
|
|
4620
|
-
const modelLoader = this.
|
|
4654
|
+
const modelLoader = this.getModelLoader();
|
|
4621
4655
|
modelLoader.init(options);
|
|
4622
|
-
const queryStorage = this.
|
|
4656
|
+
const queryStorage = this.getQueryStorage();
|
|
4623
4657
|
queryStorage.init(options);
|
|
4624
4658
|
if (options.useDefaultExporters !== false) {
|
|
4625
4659
|
this.addDefaultExporters();
|
|
@@ -4979,7 +5013,7 @@ class EqContext {
|
|
|
4979
5013
|
action: EqAction.GetValueList,
|
|
4980
5014
|
text: 'Loading values'
|
|
4981
5015
|
}, WidgetGroup.Result);
|
|
4982
|
-
const valueListResolver = this.
|
|
5016
|
+
const valueListResolver = this.getValueListLoader();
|
|
4983
5017
|
valueListResolver.loadValueList(options)
|
|
4984
5018
|
.then((values) => {
|
|
4985
5019
|
this.endProcess({
|
|
@@ -5026,7 +5060,7 @@ class EqContext {
|
|
|
5026
5060
|
action: EqAction.LoadModel,
|
|
5027
5061
|
text: 'Loading model: ' + modelId
|
|
5028
5062
|
}, WidgetGroup.Model);
|
|
5029
|
-
const modelLoader = this.
|
|
5063
|
+
const modelLoader = this.getModelLoader();
|
|
5030
5064
|
return modelLoader.startModelLoading(options)
|
|
5031
5065
|
.then((value) => {
|
|
5032
5066
|
if (value) {
|
|
@@ -5069,7 +5103,7 @@ class EqContext {
|
|
|
5069
5103
|
});
|
|
5070
5104
|
}
|
|
5071
5105
|
callWhenModelLoaded(callFunc) {
|
|
5072
|
-
const modelLoader = this.
|
|
5106
|
+
const modelLoader = this.getModelLoader();
|
|
5073
5107
|
modelLoader.getModelPromise().then(() => {
|
|
5074
5108
|
callFunc();
|
|
5075
5109
|
});
|
|
@@ -5086,7 +5120,7 @@ class EqContext {
|
|
|
5086
5120
|
*/
|
|
5087
5121
|
loadQuery(options) {
|
|
5088
5122
|
options = options || {};
|
|
5089
|
-
const modelLoader = this.
|
|
5123
|
+
const modelLoader = this.getModelLoader();
|
|
5090
5124
|
this.clearResult();
|
|
5091
5125
|
modelLoader.getModelPromise()
|
|
5092
5126
|
.then(() => {
|
|
@@ -5100,7 +5134,7 @@ class EqContext {
|
|
|
5100
5134
|
action: EqAction.LoadQuery,
|
|
5101
5135
|
text: "Query loading: " + queryId
|
|
5102
5136
|
}, WidgetGroup.Query);
|
|
5103
|
-
const queryStorage = this.
|
|
5137
|
+
const queryStorage = this.getQueryStorage();
|
|
5104
5138
|
queryStorage.loadQuery(options)
|
|
5105
5139
|
.then((data) => {
|
|
5106
5140
|
if (data) {
|
|
@@ -5152,7 +5186,7 @@ class EqContext {
|
|
|
5152
5186
|
* Usually it contains `success`, `error` callbacks
|
|
5153
5187
|
*/
|
|
5154
5188
|
loadQueryList(options) {
|
|
5155
|
-
const modelLoader = this.
|
|
5189
|
+
const modelLoader = this.getModelLoader();
|
|
5156
5190
|
modelLoader.getModelPromise()
|
|
5157
5191
|
.then(() => {
|
|
5158
5192
|
this.startQueryListLoading(options);
|
|
@@ -5168,7 +5202,7 @@ class EqContext {
|
|
|
5168
5202
|
}
|
|
5169
5203
|
startQueryListLoading(options) {
|
|
5170
5204
|
options = options || {};
|
|
5171
|
-
const queryStorage = this.
|
|
5205
|
+
const queryStorage = this.getQueryStorage();
|
|
5172
5206
|
const queryListLoadingPromise = queryStorage.getQueryList(options);
|
|
5173
5207
|
queryListLoadingPromise
|
|
5174
5208
|
.then((queries) => {
|
|
@@ -5233,7 +5267,7 @@ class EqContext {
|
|
|
5233
5267
|
action: EqAction.NewQuery,
|
|
5234
5268
|
text: 'New query creation...'
|
|
5235
5269
|
}, WidgetGroup.Query);
|
|
5236
|
-
const queryStorage = this.
|
|
5270
|
+
const queryStorage = this.getQueryStorage();
|
|
5237
5271
|
queryStorage.newQuery(options)
|
|
5238
5272
|
.then((queryData) => {
|
|
5239
5273
|
if (queryData) {
|
|
@@ -5280,7 +5314,7 @@ class EqContext {
|
|
|
5280
5314
|
action: EqAction.SaveQuery,
|
|
5281
5315
|
text: 'Query saving: ' + query.getId()
|
|
5282
5316
|
}, WidgetGroup.Query);
|
|
5283
|
-
const queryStorage = this.
|
|
5317
|
+
const queryStorage = this.getQueryStorage();
|
|
5284
5318
|
queryStorage.saveQuery(options)
|
|
5285
5319
|
.then((data) => {
|
|
5286
5320
|
this.endProcess({
|
|
@@ -5323,7 +5357,7 @@ class EqContext {
|
|
|
5323
5357
|
action: EqAction.RemoveQuery,
|
|
5324
5358
|
text: 'Query deleting: ' + query.getId()
|
|
5325
5359
|
}, WidgetGroup.Query);
|
|
5326
|
-
const queryStorage = this.
|
|
5360
|
+
const queryStorage = this.getQueryStorage();
|
|
5327
5361
|
queryStorage.removeQuery(options)
|
|
5328
5362
|
.then(() => {
|
|
5329
5363
|
query.reset();
|
|
@@ -5365,7 +5399,7 @@ class EqContext {
|
|
|
5365
5399
|
action: EqAction.SyncQuery,
|
|
5366
5400
|
text: 'Query syncing: ' + query.getId()
|
|
5367
5401
|
}, WidgetGroup.Query);
|
|
5368
|
-
const querySyncrhonizer = this.
|
|
5402
|
+
const querySyncrhonizer = this.getQuerySynchronizer();
|
|
5369
5403
|
querySyncrhonizer.syncQuery(options)
|
|
5370
5404
|
.then((result) => {
|
|
5371
5405
|
this.resultStatement = result && result.statement
|
|
@@ -5450,7 +5484,7 @@ class EqContext {
|
|
|
5450
5484
|
this.resultStatement = result.statement;
|
|
5451
5485
|
this.refreshWidgets(WidgetGroup.Statement);
|
|
5452
5486
|
}
|
|
5453
|
-
const aggrCalculator = this.
|
|
5487
|
+
const aggrCalculator = this.getAggregatesCalculator();
|
|
5454
5488
|
aggrCalculator.reset();
|
|
5455
5489
|
this.resultContent = result;
|
|
5456
5490
|
if (result.resultSet) {
|
|
@@ -5488,7 +5522,7 @@ class EqContext {
|
|
|
5488
5522
|
action: EqAction.GetQueryFile,
|
|
5489
5523
|
text: 'Getting query file: ' + query.getId()
|
|
5490
5524
|
}, WidgetGroup.Query);
|
|
5491
|
-
const queryFileLoader = this.
|
|
5525
|
+
const queryFileLoader = this.getQueryFileLoader();
|
|
5492
5526
|
queryFileLoader.getQueryFile(options)
|
|
5493
5527
|
.then(() => {
|
|
5494
5528
|
this.endProcess({
|
|
@@ -5519,7 +5553,7 @@ class EqContext {
|
|
|
5519
5553
|
action: EqAction.UploadQueryFile,
|
|
5520
5554
|
text: 'Uploading query file: ' + query.getId()
|
|
5521
5555
|
}, WidgetGroup.Query);
|
|
5522
|
-
const queryFileLoader = this.
|
|
5556
|
+
const queryFileLoader = this.getQueryFileLoader();
|
|
5523
5557
|
queryFileLoader.uploadQueryFile(options)
|
|
5524
5558
|
.then((data) => {
|
|
5525
5559
|
query.loadFromData(data);
|
|
@@ -5550,6 +5584,7 @@ class EqContext {
|
|
|
5550
5584
|
fetchDataChunk(options) {
|
|
5551
5585
|
const queryId = this.getQuery().getId();
|
|
5552
5586
|
let fetchOptions = options || {};
|
|
5587
|
+
fetchOptions.data = fetchOptions.data || {}; // add empty data property for convenience
|
|
5553
5588
|
if (this.useStoredQueryOnFetch) {
|
|
5554
5589
|
fetchOptions.queryId = this.query.getId();
|
|
5555
5590
|
}
|
|
@@ -5560,7 +5595,7 @@ class EqContext {
|
|
|
5560
5595
|
action: EqAction.FetchData,
|
|
5561
5596
|
text: 'Fetching data for the query: ' + queryId
|
|
5562
5597
|
}, WidgetGroup.Result);
|
|
5563
|
-
const dataFetcher = this.
|
|
5598
|
+
const dataFetcher = this.getDataFetcher();
|
|
5564
5599
|
dataFetcher.fetchData(fetchOptions)
|
|
5565
5600
|
.then((result) => {
|
|
5566
5601
|
if (result.statement) {
|
|
@@ -5595,7 +5630,7 @@ class EqContext {
|
|
|
5595
5630
|
}
|
|
5596
5631
|
onResultTableUpdate() {
|
|
5597
5632
|
const aggrSettings = this.query.getAggregationSettings();
|
|
5598
|
-
const calculator = this.
|
|
5633
|
+
const calculator = this.getAggregatesCalculator();
|
|
5599
5634
|
if (aggrSettings.needAggrCalculation() && calculator.needRecalculation()) {
|
|
5600
5635
|
calculator.calculate({
|
|
5601
5636
|
maxLevel: aggrSettings.getGroups().length + 1,
|
|
@@ -5633,7 +5668,7 @@ class EqContext {
|
|
|
5633
5668
|
action: EqAction.FetchData,
|
|
5634
5669
|
text: 'DrillDown executing: ' + queryId
|
|
5635
5670
|
}, WidgetGroup.Result);
|
|
5636
|
-
const queryExecutor = this.
|
|
5671
|
+
const queryExecutor = this.getDataFetcher();
|
|
5637
5672
|
queryExecutor.fetchData(options)
|
|
5638
5673
|
.then((result) => {
|
|
5639
5674
|
this.endProcess({
|
|
@@ -5676,31 +5711,32 @@ class EqContext {
|
|
|
5676
5711
|
*
|
|
5677
5712
|
*/
|
|
5678
5713
|
exportResult(options) {
|
|
5679
|
-
|
|
5680
|
-
|
|
5714
|
+
let exportOptions = options || {};
|
|
5715
|
+
exportOptions.chunk = exportOptions.chunk || EmptyChunk;
|
|
5716
|
+
exportOptions.data = exportOptions.data || {}; //add data property for convenience
|
|
5681
5717
|
if (this.beforeExportResult) {
|
|
5682
|
-
this.beforeExportResult(this,
|
|
5718
|
+
this.beforeExportResult(this, exportOptions);
|
|
5683
5719
|
}
|
|
5684
|
-
const format =
|
|
5720
|
+
const format = exportOptions.format;
|
|
5685
5721
|
if (format) {
|
|
5686
5722
|
const exporter = this.getExporter(format);
|
|
5687
5723
|
if (exporter) {
|
|
5688
5724
|
const queryId = this.getQuery().getId();
|
|
5689
5725
|
if (this.useStoredQueryOnFetch) {
|
|
5690
|
-
|
|
5726
|
+
exportOptions.queryId = queryId;
|
|
5691
5727
|
}
|
|
5692
5728
|
this.startProcess({
|
|
5693
5729
|
action: EqAction.ExportResult,
|
|
5694
5730
|
text: 'Exporting result for query: ' + queryId
|
|
5695
5731
|
}, WidgetGroup.Result);
|
|
5696
5732
|
const localeSettings = i18n.getLocaleSettings();
|
|
5697
|
-
|
|
5733
|
+
exportOptions.settings = localeSettings;
|
|
5698
5734
|
const aggrSettings = this.query.getAggregationSettings();
|
|
5699
5735
|
if (aggrSettings.hasAggregates()
|
|
5700
5736
|
&& (aggrSettings.hasGrandTotals() || aggrSettings.hasGroups())) {
|
|
5701
|
-
|
|
5737
|
+
exportOptions.aggregates = aggrSettings.saveToData();
|
|
5702
5738
|
}
|
|
5703
|
-
exporter.export(
|
|
5739
|
+
exporter.export(exportOptions)
|
|
5704
5740
|
.then((result) => {
|
|
5705
5741
|
this.fireEvent('exportResult');
|
|
5706
5742
|
this.endProcess({
|
|
@@ -5708,8 +5744,8 @@ class EqContext {
|
|
|
5708
5744
|
action: EqAction.ExportResult,
|
|
5709
5745
|
text: `The result set for query [${queryId}] has been successfully exported`
|
|
5710
5746
|
}, WidgetGroup.Result);
|
|
5711
|
-
if (
|
|
5712
|
-
|
|
5747
|
+
if (exportOptions.success) {
|
|
5748
|
+
exportOptions.success();
|
|
5713
5749
|
}
|
|
5714
5750
|
})
|
|
5715
5751
|
.catch((error) => {
|
|
@@ -5720,8 +5756,8 @@ class EqContext {
|
|
|
5720
5756
|
text: errorMessage,
|
|
5721
5757
|
sourceError: error
|
|
5722
5758
|
}, WidgetGroup.Result);
|
|
5723
|
-
if (
|
|
5724
|
-
|
|
5759
|
+
if (exportOptions.error) {
|
|
5760
|
+
exportOptions.error(errorMessage, 'ExportResult');
|
|
5725
5761
|
}
|
|
5726
5762
|
});
|
|
5727
5763
|
}
|
|
@@ -7,7 +7,7 @@ import { DataModelStorage } from '../main/model_storage';
|
|
|
7
7
|
import { QueryStorage } from '../main/query_storage';
|
|
8
8
|
import { QuerySynchronizer } from '../main/query_synchronizer';
|
|
9
9
|
import { DataFetcher } from '../main/data_fetcher';
|
|
10
|
-
import {
|
|
10
|
+
import { EqValueListLoader } from '../main/value_list_resolver';
|
|
11
11
|
import { QueryFileLoader } from '../main/query_file_loader';
|
|
12
12
|
export declare class EqServiceProvider {
|
|
13
13
|
private static _instance;
|
|
@@ -15,20 +15,12 @@ export declare class EqServiceProvider {
|
|
|
15
15
|
private httpClient;
|
|
16
16
|
private queryResolver;
|
|
17
17
|
private modelResolver;
|
|
18
|
-
private modelStorage;
|
|
19
|
-
private modelLoader;
|
|
20
|
-
private queryStorage;
|
|
21
|
-
private querySynchronizer;
|
|
22
|
-
private dataFetcher;
|
|
23
|
-
private valueListResolver;
|
|
24
|
-
private queryFileLoader;
|
|
25
|
-
private aggrCalculator;
|
|
26
18
|
private modelStorageResolver;
|
|
27
19
|
private modelLoaderResolver;
|
|
28
20
|
private queryStorageResolver;
|
|
29
21
|
private querySynchronizerResolver;
|
|
30
22
|
private dataFetcherResolver;
|
|
31
|
-
private
|
|
23
|
+
private vllResolver;
|
|
32
24
|
private queryFileLoaderResolver;
|
|
33
25
|
private aggrCalculatoResolver;
|
|
34
26
|
constructor();
|
|
@@ -36,24 +28,26 @@ export declare class EqServiceProvider {
|
|
|
36
28
|
getHttpClient(): HttpClient;
|
|
37
29
|
createDataModel(context: EqContext): DataModel;
|
|
38
30
|
createQuery(context: EqContext): Query;
|
|
39
|
-
getModelLoader(context: EqContext): EqModelLoader;
|
|
40
|
-
getModelStorage(context: EqContext): DataModelStorage;
|
|
41
|
-
getQueryStorage(context: EqContext): QueryStorage;
|
|
42
|
-
getQuerySynchronizer(context: EqContext): QuerySynchronizer;
|
|
43
|
-
getDataFetcher(context: EqContext): DataFetcher;
|
|
44
|
-
getValueListResolver(context: EqContext): EqValueListResolver;
|
|
45
|
-
getQueryFileLoader(context: EqContext): QueryFileLoader;
|
|
46
|
-
getAggregatesCalculator(context: EqContext): AggregatesCalculator;
|
|
47
31
|
registerDataModelResolver(resolver: (context: EqContext) => DataModel): void;
|
|
32
|
+
getDataModelResolver(): (context: EqContext) => DataModel;
|
|
48
33
|
registerQueryResolver(resolver: (context: EqContext) => Query): void;
|
|
34
|
+
getQueryResolver(): (context: EqContext) => Query;
|
|
49
35
|
registerModelLoaderResolver(resolver: (context: EqContext) => EqModelLoader): void;
|
|
36
|
+
getModelLoaderResolver(): (context: EqContext) => EqModelLoader;
|
|
50
37
|
registerModelStorageResolver(resolver: (context: EqContext) => DataModelStorage): void;
|
|
38
|
+
getModelStorageResolver(): (context: EqContext) => DataModelStorage;
|
|
51
39
|
registerQueryStorageResolver(resolver: (context: EqContext) => QueryStorage): void;
|
|
40
|
+
getQueryStorageResolver(): (context: EqContext) => QueryStorage;
|
|
52
41
|
registerDataFetcherResolver(resolver: (context: EqContext) => DataFetcher): void;
|
|
42
|
+
getDataFetcherResolver(): (context: EqContext) => DataFetcher;
|
|
53
43
|
registerQuerySyncronizerResolver(resolver: (context: EqContext) => QuerySynchronizer): void;
|
|
54
|
-
|
|
44
|
+
getQuerySynchronizerResolver(): (context: EqContext) => QuerySynchronizer;
|
|
45
|
+
registerValueListLoaderResolver(resolver: (context: EqContext) => EqValueListLoader): void;
|
|
46
|
+
getValueListLoaderResolver(): (context: EqContext) => EqValueListLoader;
|
|
55
47
|
registerQueryFileLoaderResolver(resolver: (context: EqContext) => QueryFileLoader): void;
|
|
48
|
+
getQueryFileLoaderResolver(): (context: EqContext) => QueryFileLoader;
|
|
56
49
|
registerAggregatesCalculator(resolver: (context: EqContext) => AggregatesCalculator): void;
|
|
50
|
+
getAggregatesCalculatorResolver(): (context: EqContext) => AggregatesCalculator;
|
|
57
51
|
private services;
|
|
58
52
|
registerService<T>(serviceId: string, serviceResolver: () => T): void;
|
|
59
53
|
getService<T>(serviceId: string): T | undefined;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EqContext } from '../main/context';
|
|
2
2
|
import { QuerySynchronizer, SyncOptions } from '../main/query_synchronizer';
|
|
3
3
|
export declare class EqServerQuerySynchronizer implements QuerySynchronizer {
|
|
4
|
-
|
|
4
|
+
protected context: EqContext;
|
|
5
5
|
constructor(context: EqContext);
|
|
6
6
|
syncQuery(options?: SyncOptions): Promise<any>;
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EqValueListLoader, LoadValueListOptions, ValueListItem } from '../main/value_list_resolver';
|
|
2
2
|
import { EqContext } from '../main/context';
|
|
3
|
-
export declare class EqServerValueListResolver implements
|
|
3
|
+
export declare class EqServerValueListResolver implements EqValueListLoader {
|
|
4
4
|
private context;
|
|
5
5
|
constructor(context: EqContext);
|
|
6
6
|
loadValueList(options?: LoadValueListOptions): Promise<ValueListItem[]>;
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
import { EasyDataTable } from '@easydata/core';
|
|
1
|
+
import { EasyDataTable, AggregatesCalculator } from '@easydata/core';
|
|
2
2
|
import { i18n } from '@easydata/core';
|
|
3
3
|
import { EqServiceProvider } from '../common/eq_services';
|
|
4
|
+
import { EqModelLoader } from '../main/model_loader';
|
|
5
|
+
import { DataModelStorage } from '../main/model_storage';
|
|
6
|
+
import { QueryStorage } from '../main/query_storage';
|
|
7
|
+
import { QuerySynchronizer } from '../main/query_synchronizer';
|
|
8
|
+
import { DataFetcher } from '../main/data_fetcher';
|
|
9
|
+
import { EqValueListLoader } from '../main/value_list_resolver';
|
|
10
|
+
import { QueryFileLoader } from '../main/query_file_loader';
|
|
4
11
|
import { DataModel } from '../dm/data_model';
|
|
5
12
|
import { EntityAttr } from '../dm/entity';
|
|
6
13
|
import { ModelPlainData } from '../dm/dto/dm_data';
|
|
@@ -28,6 +35,14 @@ export declare class EqContext {
|
|
|
28
35
|
options: EqContextOptions;
|
|
29
36
|
private servicesInitialized;
|
|
30
37
|
private eqServices;
|
|
38
|
+
private modelStorage;
|
|
39
|
+
private modelLoader;
|
|
40
|
+
private queryStorage;
|
|
41
|
+
private querySynchronizer;
|
|
42
|
+
private dataFetcher;
|
|
43
|
+
private valueListLoader;
|
|
44
|
+
private queryFileLoader;
|
|
45
|
+
private aggrCalculator;
|
|
31
46
|
private internalListCache;
|
|
32
47
|
private externalListCache?;
|
|
33
48
|
private dataModel;
|
|
@@ -62,6 +77,14 @@ export declare class EqContext {
|
|
|
62
77
|
private afterGroupFetch?;
|
|
63
78
|
constructor();
|
|
64
79
|
getServices(): EqServiceProvider;
|
|
80
|
+
getModelLoader(): EqModelLoader;
|
|
81
|
+
getModelStorage(): DataModelStorage;
|
|
82
|
+
getQueryStorage(): QueryStorage;
|
|
83
|
+
getQuerySynchronizer(): QuerySynchronizer;
|
|
84
|
+
getDataFetcher(): DataFetcher;
|
|
85
|
+
getValueListLoader(): EqValueListLoader;
|
|
86
|
+
getQueryFileLoader(): QueryFileLoader;
|
|
87
|
+
getAggregatesCalculator(): AggregatesCalculator;
|
|
65
88
|
/**
|
|
66
89
|
* Activates `Enterprise` functionality of the library. Works only with @easyquery/enterprise packag and a proper license key.
|
|
67
90
|
* @param keyOrInitCallback The license key or a callback wich is called after
|