@provoly/dashboard 1.4.22 → 1.4.24
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/esm2022/lib/core/model/manifest.interface.mjs +1 -1
- package/esm2022/lib/core/store/search/search.actions.mjs +1 -1
- package/esm2022/lib/core/store/search/search.effects.mjs +10 -5
- package/esm2022/lib/core/store/search/search.service.mjs +14 -5
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +7 -10
- package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +4 -2
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +32 -23
- package/esm2022/lib/dashboard/resultset-utils.mjs +18 -11
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +1 -1
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +11 -19
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +5 -2
- package/esm2022/lib/dashboard/store/manifest-utils.class.mjs +17 -1
- package/fesm2022/provoly-dashboard.mjs +144 -105
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/model/manifest.interface.d.ts +7 -0
- package/lib/core/store/search/search.actions.d.ts +5 -4
- package/lib/core/store/search/search.effects.d.ts +2 -1
- package/lib/core/store/search/search.service.d.ts +4 -3
- package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +3 -9
- package/lib/dashboard/resultset-utils.d.ts +1 -0
- package/lib/dashboard/store/dashboard.actions.d.ts +5 -3
- package/lib/dashboard/store/dashboard.effects.d.ts +3 -3
- package/lib/dashboard/store/manifest-utils.class.d.ts +2 -1
- package/package.json +43 -43
- package/search/search-fulltext/store/search-fulltext.effects.d.ts +1 -1
- package/search/search-mono-class/store/search-mono-class.effects.d.ts +1 -1
- package/search/search-multi-class/store/search-multi-class.effects.d.ts +1 -1
|
@@ -5021,17 +5021,26 @@ class SearchService {
|
|
|
5021
5021
|
}
|
|
5022
5022
|
return this.store.select(ConfigSelectors.dataUrl).pipe(mergeMap((url) => {
|
|
5023
5023
|
const ds = this.datasources.find((d) => d.id === id);
|
|
5024
|
+
const otherParams = {};
|
|
5025
|
+
if (linkedItems.length > 0) {
|
|
5026
|
+
if (linkedItems.includes('destination')) {
|
|
5027
|
+
otherParams['withDestinationItems'] = 'true';
|
|
5028
|
+
}
|
|
5029
|
+
if (linkedItems.includes('source')) {
|
|
5030
|
+
otherParams['withSourceItems'] = 'true';
|
|
5031
|
+
}
|
|
5032
|
+
}
|
|
5024
5033
|
return this.httpClient.post(encodeURI(`${url}/data-sources/id/${id}/items`), {
|
|
5025
5034
|
type: ds?.sourceType === 'namedQuery' ? ds.request.type : NamedQueryTypes.MONO_CLASS,
|
|
5026
5035
|
excludeGeo: excludeGeo ?? false,
|
|
5027
5036
|
searchAfter: searchAfter ?? undefined,
|
|
5028
|
-
|
|
5029
|
-
|
|
5037
|
+
limit: this.limits[id] || this.limits['default'],
|
|
5038
|
+
...otherParams
|
|
5030
5039
|
}, { params });
|
|
5031
5040
|
}), map((rs) => this.applyTransformations(id, rs)));
|
|
5032
5041
|
}
|
|
5033
|
-
getItemsSerializedParams(id, quickOrder = {}) {
|
|
5034
|
-
return
|
|
5042
|
+
getItemsSerializedParams(id, quickOrder = {}, excludeGeo, linkedItems) {
|
|
5043
|
+
return `|${this.getItemsFilter(id, this.getOrder(quickOrder[id])).toString()}|${excludeGeo ? 'excludeGeo' : ''}|${linkedItems?.join(',')}|`;
|
|
5035
5044
|
}
|
|
5036
5045
|
getItemsFilter(id, cumulative) {
|
|
5037
5046
|
let params = cumulative ?? new HttpParams({ encoder: new FilterParamEncoder() });
|
|
@@ -5243,6 +5252,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
5243
5252
|
args: [{ selector: 'pry-widget-placeholder', template: "<p>{{ '@pry.widget.unrecognized' | i18n: { type: manifest ? manifest.type : 'placeholder' } }}</p>\n" }]
|
|
5244
5253
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i0.ElementRef }] });
|
|
5245
5254
|
|
|
5255
|
+
const DEFAULT_GAP_PX = 15;
|
|
5256
|
+
const DEFAULT_COLUMNS_NUMBER = 12;
|
|
5257
|
+
const DEFAULT_ROWS_NUMBER = 12;
|
|
5258
|
+
const DEFAULT_ROW_HEIGHT_PX = 50;
|
|
5259
|
+
|
|
5260
|
+
class ManifestUtils {
|
|
5261
|
+
static getDatasourcesUsedByManifest(manifest) {
|
|
5262
|
+
const mapOfDatasources = manifest.windows
|
|
5263
|
+
.map((window) => (window.widgets ?? []).map((widget) => ({ datasetId: widget.datasource, excludeGeo: widget?.type !== 'map' })))
|
|
5264
|
+
.flat(3)
|
|
5265
|
+
.filter((dataset) => !!dataset.datasetId)
|
|
5266
|
+
.map((res) => Array.isArray(res.datasetId)
|
|
5267
|
+
? res.datasetId.map((r) => ({ datasetId: r, excludeGeo: res.excludeGeo }))
|
|
5268
|
+
: [res])
|
|
5269
|
+
.flat().reduce((p, c) => ({ ...p, [c.datasetId]: { ...p[c.datasetId], ...c } }), {});
|
|
5270
|
+
return Object.values(mapOfDatasources);
|
|
5271
|
+
}
|
|
5272
|
+
static cleanupManifest(manifest) {
|
|
5273
|
+
return {
|
|
5274
|
+
...manifest,
|
|
5275
|
+
windows: manifest.windows.map((window) => ManifestUtils.cleanupDashboardManifest(window))
|
|
5276
|
+
};
|
|
5277
|
+
}
|
|
5278
|
+
static cleanupDashboardManifest(window) {
|
|
5279
|
+
return {
|
|
5280
|
+
...window,
|
|
5281
|
+
grid: {
|
|
5282
|
+
columns: DEFAULT_COLUMNS_NUMBER,
|
|
5283
|
+
rows: DEFAULT_ROWS_NUMBER,
|
|
5284
|
+
layout: DashboardGridLayout.MANUAL,
|
|
5285
|
+
gap: DEFAULT_GAP_PX,
|
|
5286
|
+
...window.grid
|
|
5287
|
+
},
|
|
5288
|
+
widgets: window.widgets ?? []
|
|
5289
|
+
};
|
|
5290
|
+
}
|
|
5291
|
+
static mergeDatasourceRequests(datasourceRequests) {
|
|
5292
|
+
const uniqueDatasourceRequestIds = [...new Set((datasourceRequests ?? []).map((ds) => ds.datasetId))];
|
|
5293
|
+
// We keep the most inclusive request for multiple requests for the same dataset
|
|
5294
|
+
return uniqueDatasourceRequestIds.map((id) => ({
|
|
5295
|
+
datasetId: id,
|
|
5296
|
+
// If at least one request must include geo data, then keep request with geo data
|
|
5297
|
+
excludeGeo: !datasourceRequests.some((ds) => ds.datasetId === id && !ds.excludeGeo),
|
|
5298
|
+
// If at least one request must include source or destination items, then create request with everything needed
|
|
5299
|
+
linkedItems: [
|
|
5300
|
+
...new Set(datasourceRequests
|
|
5301
|
+
.filter((ds) => ds.datasetId === id)
|
|
5302
|
+
.map((ds) => ds.linkedItems ?? [])
|
|
5303
|
+
.flat())
|
|
5304
|
+
]
|
|
5305
|
+
}));
|
|
5306
|
+
}
|
|
5307
|
+
}
|
|
5308
|
+
|
|
5246
5309
|
const WIDGET_DEFINITION = new InjectionToken('Widgets definition');
|
|
5247
5310
|
const NON_EXCLUDE_GEO_WIDGET_TYPES = {
|
|
5248
5311
|
values: ['map', 'tile']
|
|
@@ -5292,23 +5355,31 @@ class WidgetFactoryService {
|
|
|
5292
5355
|
return this.reference$.pipe(map((componentDefs) => !!componentDefs[type]));
|
|
5293
5356
|
}
|
|
5294
5357
|
datasourcesToAutoLoad(manifest) {
|
|
5295
|
-
|
|
5296
|
-
|
|
5297
|
-
|
|
5298
|
-
|
|
5299
|
-
|
|
5300
|
-
|
|
5301
|
-
|
|
5302
|
-
|
|
5303
|
-
(
|
|
5304
|
-
|
|
5305
|
-
(widgetDefinition.autoLoadDatasource ===
|
|
5306
|
-
|
|
5358
|
+
return ManifestUtils.mergeDatasourceRequests(manifest.widgets
|
|
5359
|
+
.map((widgetManifest) => {
|
|
5360
|
+
const widgetDefinition = this.reference$.getValue()[widgetManifest.type];
|
|
5361
|
+
const datasourcesArray = Array.isArray(widgetManifest.datasource ?? [])
|
|
5362
|
+
? (widgetManifest.datasource ?? [])
|
|
5363
|
+
: [widgetManifest.datasource];
|
|
5364
|
+
return datasourcesArray
|
|
5365
|
+
.filter((datasource) => {
|
|
5366
|
+
const matching = this.datasources.find((ds) => ds.id === datasource);
|
|
5367
|
+
return (!!matching &&
|
|
5368
|
+
(widgetDefinition.autoLoadDatasource === undefined ||
|
|
5369
|
+
widgetDefinition.autoLoadDatasource === 'all' ||
|
|
5370
|
+
(widgetDefinition.autoLoadDatasource === 'geo' && DatasourceUtils.isGeo(matching)) ||
|
|
5371
|
+
(widgetDefinition.autoLoadDatasource === 'not-geo' && !DatasourceUtils.isGeo(matching))));
|
|
5372
|
+
})
|
|
5373
|
+
.map((datasetId) => {
|
|
5374
|
+
const matching = this.datasources.find((ds) => ds.id === datasetId);
|
|
5375
|
+
return {
|
|
5376
|
+
datasetId: datasetId,
|
|
5377
|
+
excludeGeo: this.calculateExcludeGeo(widgetManifest, matching),
|
|
5378
|
+
linkedItems: manifest.linkedItems
|
|
5379
|
+
};
|
|
5380
|
+
});
|
|
5307
5381
|
})
|
|
5308
|
-
.
|
|
5309
|
-
const matching = this.datasources.find((ds) => ds.id === datasetId);
|
|
5310
|
-
return { datasetId: datasetId, excludeGeo: this.calculateExcludeGeo(manifest, matching) };
|
|
5311
|
-
});
|
|
5382
|
+
.flat());
|
|
5312
5383
|
}
|
|
5313
5384
|
calculateExcludeGeo(manifest, matching) {
|
|
5314
5385
|
if (manifest.excludeGeo === undefined || manifest.excludeGeo === 'widget-type-based') {
|
|
@@ -5336,16 +5407,16 @@ class WidgetFactoryService {
|
|
|
5336
5407
|
const datasources = [];
|
|
5337
5408
|
const aggregates = [];
|
|
5338
5409
|
manifest.windows.forEach((windowManifest) => {
|
|
5410
|
+
this.datasourcesToAutoLoad(windowManifest).forEach((res) => {
|
|
5411
|
+
if (res.datasetId) {
|
|
5412
|
+
datasources.push(res);
|
|
5413
|
+
}
|
|
5414
|
+
});
|
|
5339
5415
|
(windowManifest.widgets ?? []).forEach((widgetManifest) => {
|
|
5340
|
-
this.datasourcesToAutoLoad(widgetManifest).forEach((res) => {
|
|
5341
|
-
if (res.datasetId) {
|
|
5342
|
-
datasources.push(res);
|
|
5343
|
-
}
|
|
5344
|
-
});
|
|
5345
5416
|
this.aggregatesToAutoLoad(widgetManifest).forEach((ds) => aggregates.push(ds));
|
|
5346
5417
|
});
|
|
5347
5418
|
});
|
|
5348
|
-
return { datasources, aggregates };
|
|
5419
|
+
return { datasources: ManifestUtils.mergeDatasourceRequests(datasources), aggregates };
|
|
5349
5420
|
}
|
|
5350
5421
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: WidgetFactoryService, deps: [{ token: i0.Injector }, { token: WIDGET_DEFINITION }, { token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5351
5422
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: WidgetFactoryService, providedIn: 'root' }); }
|
|
@@ -5371,20 +5442,25 @@ class SearchEffects {
|
|
|
5371
5442
|
.pipe(map((resultSet) => SearchActions.searchSuccess({
|
|
5372
5443
|
resultSet,
|
|
5373
5444
|
id: props.id,
|
|
5374
|
-
params: this.searchService.getItemsSerializedParams(props.id, quickOrder),
|
|
5445
|
+
params: this.searchService.getItemsSerializedParams(props.id, quickOrder, props.excludeGeo, props.linkedItems),
|
|
5375
5446
|
next: props.next
|
|
5376
5447
|
})), catchError((error) => [SearchActions.searchFailure({ error, id: props.id })])))))));
|
|
5377
5448
|
this.fetchMore$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.fetchMoreItems), withLatestFrom(this.store.select(DashboardSelectors.rank), this.store.select(DashboardSelectors.resultSets)), filter(([props, rank, rs]) => rank === 0 && !!rs[props.id].searchAfter), debounceTime(300), mergeMap(([props]) => {
|
|
5378
5449
|
const ds = this.widgetFactoryService.datasourcesToAutoLoad({
|
|
5379
|
-
|
|
5380
|
-
|
|
5450
|
+
widgets: [
|
|
5451
|
+
{
|
|
5452
|
+
type: props.widgetType,
|
|
5453
|
+
datasource: [props.id]
|
|
5454
|
+
}
|
|
5455
|
+
]
|
|
5381
5456
|
})[0];
|
|
5382
5457
|
if (!!ds) {
|
|
5383
5458
|
return of(SearchActions.getDatasourceItems({
|
|
5384
5459
|
id: ds.datasetId,
|
|
5385
5460
|
excludeGeo: ds.excludeGeo,
|
|
5386
5461
|
from: 'fetchMore',
|
|
5387
|
-
next: true
|
|
5462
|
+
next: true,
|
|
5463
|
+
linkedItems: ds.linkedItems
|
|
5388
5464
|
}));
|
|
5389
5465
|
}
|
|
5390
5466
|
else {
|
|
@@ -6025,17 +6101,10 @@ class ResultsetUtils {
|
|
|
6025
6101
|
if (!rs2)
|
|
6026
6102
|
return rs1;
|
|
6027
6103
|
const rs1Copy = structuredClone(rs1);
|
|
6028
|
-
|
|
6029
|
-
|
|
6030
|
-
|
|
6031
|
-
}
|
|
6032
|
-
rs1Copy.items[key].push(...rs2.items[key]);
|
|
6033
|
-
});
|
|
6104
|
+
this.mergeItems(rs1Copy, rs2, (rs) => rs.items);
|
|
6105
|
+
this.mergeItems(rs1Copy, rs2, (rs) => rs.sourceItems ?? {});
|
|
6106
|
+
this.mergeItems(rs1Copy, rs2, (rs) => rs.destinationItems ?? {});
|
|
6034
6107
|
/* Make items and relations unique in resulted dataset */
|
|
6035
|
-
Object.keys(rs1Copy.items).forEach((key) => {
|
|
6036
|
-
const uniqueList = [...new Set(rs1Copy.items[key].map((it) => it.id))];
|
|
6037
|
-
rs1Copy.items[key] = uniqueList.map((id) => rs1Copy.items[key].find((it) => it.id === id));
|
|
6038
|
-
});
|
|
6039
6108
|
rs1Copy.relations = [
|
|
6040
6109
|
...new Set([
|
|
6041
6110
|
...([...(rs1Copy.relations ?? []), ...(rs2.relations ?? [])] ?? []).map((rel) => `${rel.relationType}|${rel.source}|${rel.destination}`),
|
|
@@ -6060,6 +6129,20 @@ class ResultsetUtils {
|
|
|
6060
6129
|
rs1Copy.searchAfter = rs2.searchAfter ?? rs1Copy.searchAfter;
|
|
6061
6130
|
return rs1Copy;
|
|
6062
6131
|
}
|
|
6132
|
+
static mergeItems(rs1, rs2, getItemsToMerge) {
|
|
6133
|
+
const rs1Items = getItemsToMerge(rs1);
|
|
6134
|
+
const rs2Items = getItemsToMerge(rs2);
|
|
6135
|
+
Object.keys(rs2Items).forEach((key) => {
|
|
6136
|
+
if (!rs1Items[key]) {
|
|
6137
|
+
rs1Items[key] = [];
|
|
6138
|
+
}
|
|
6139
|
+
rs1Items[key].push(...rs2Items[key]);
|
|
6140
|
+
});
|
|
6141
|
+
Object.keys(rs1Items).forEach((key) => {
|
|
6142
|
+
const uniqueList = [...new Set(rs1Items[key].map((it) => it.id))];
|
|
6143
|
+
rs1Items[key] = uniqueList.map((id) => (rs1Items ? rs1Items[key].find((it) => it.id === id) : []));
|
|
6144
|
+
});
|
|
6145
|
+
}
|
|
6063
6146
|
}
|
|
6064
6147
|
|
|
6065
6148
|
class AggregationUtils {
|
|
@@ -8821,11 +8904,6 @@ const WidgetPlacementUtils = {
|
|
|
8821
8904
|
}
|
|
8822
8905
|
};
|
|
8823
8906
|
|
|
8824
|
-
const DEFAULT_GAP_PX = 15;
|
|
8825
|
-
const DEFAULT_COLUMNS_NUMBER = 12;
|
|
8826
|
-
const DEFAULT_ROWS_NUMBER = 12;
|
|
8827
|
-
const DEFAULT_ROW_HEIGHT_PX = 50;
|
|
8828
|
-
|
|
8829
8907
|
function orderWidgetsAccordingToPlacement(a, b) {
|
|
8830
8908
|
return ((b.layout.weight ?? 0) * 1000000 -
|
|
8831
8909
|
(a.layout.weight ?? 0) * 1000000 +
|
|
@@ -9432,16 +9510,13 @@ class DashboardComponent extends SubscriptionnerDirective {
|
|
|
9432
9510
|
return wManifest;
|
|
9433
9511
|
}), distinctUntilChanged((p, c) => equal(p, c)));
|
|
9434
9512
|
this.nonFillerWidgets$ = this.windowManifest$.pipe(map((wManifest) => (wManifest.widgets ?? []).filter((w) => w.type !== 'filler').length));
|
|
9435
|
-
this.subscriptions.add(
|
|
9436
|
-
|
|
9437
|
-
|
|
9438
|
-
|
|
9439
|
-
|
|
9440
|
-
}
|
|
9441
|
-
}));
|
|
9442
|
-
this.subscriptions.add(combineLatest([this.windowManifest$, this.store.select(DataSourceSelectors.getDataSources)]).subscribe(([manifest, datasets]) => {
|
|
9513
|
+
this.subscriptions.add(combineLatest([
|
|
9514
|
+
this.windowManifest$,
|
|
9515
|
+
this.store.select(DataSourceSelectors.getDataSources),
|
|
9516
|
+
this.staticDashboard$
|
|
9517
|
+
]).subscribe(([manifest, datasets, staticManifest]) => {
|
|
9443
9518
|
if (datasets.length > 0) {
|
|
9444
|
-
this.store.dispatch(DashboardActions.assertResultSets({}));
|
|
9519
|
+
this.store.dispatch(DashboardActions.assertResultSets({ staticManifest }));
|
|
9445
9520
|
}
|
|
9446
9521
|
}));
|
|
9447
9522
|
this.store.dispatch(FieldActions.load({}));
|
|
@@ -10784,7 +10859,9 @@ class DataWidgetComponent extends BaseWidgetComponent {
|
|
|
10784
10859
|
return resultSetArray.reduce((rs1, rs2) => ResultsetUtils.mergeResultSets(rs1, rs2), {
|
|
10785
10860
|
items: {},
|
|
10786
10861
|
relations: [],
|
|
10787
|
-
merged: resultSetArray.length
|
|
10862
|
+
merged: resultSetArray.length,
|
|
10863
|
+
sourceItems: {},
|
|
10864
|
+
destinationItems: {}
|
|
10788
10865
|
});
|
|
10789
10866
|
}), distinctUntilChanged((p, v) => equal(p, v)));
|
|
10790
10867
|
}
|
|
@@ -11832,39 +11909,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
11832
11909
|
args: [BASE_CONFIG]
|
|
11833
11910
|
}] }] });
|
|
11834
11911
|
|
|
11835
|
-
class ManifestUtils {
|
|
11836
|
-
static getDatasourcesUsedByManifest(manifest) {
|
|
11837
|
-
const mapOfDatasources = manifest.windows
|
|
11838
|
-
.map((window) => (window.widgets ?? []).map((widget) => ({ datasetId: widget.datasource, excludeGeo: widget?.type !== 'map' })))
|
|
11839
|
-
.flat(3)
|
|
11840
|
-
.filter((dataset) => !!dataset.datasetId)
|
|
11841
|
-
.map((res) => Array.isArray(res.datasetId)
|
|
11842
|
-
? res.datasetId.map((r) => ({ datasetId: r, excludeGeo: res.excludeGeo }))
|
|
11843
|
-
: [res])
|
|
11844
|
-
.flat().reduce((p, c) => ({ ...p, [c.datasetId]: { ...p[c.datasetId], ...c } }), {});
|
|
11845
|
-
return Object.values(mapOfDatasources);
|
|
11846
|
-
}
|
|
11847
|
-
static cleanupManifest(manifest) {
|
|
11848
|
-
return {
|
|
11849
|
-
...manifest,
|
|
11850
|
-
windows: manifest.windows.map((window) => ManifestUtils.cleanupDashboardManifest(window))
|
|
11851
|
-
};
|
|
11852
|
-
}
|
|
11853
|
-
static cleanupDashboardManifest(window) {
|
|
11854
|
-
return {
|
|
11855
|
-
...window,
|
|
11856
|
-
grid: {
|
|
11857
|
-
columns: DEFAULT_COLUMNS_NUMBER,
|
|
11858
|
-
rows: DEFAULT_ROWS_NUMBER,
|
|
11859
|
-
layout: DashboardGridLayout.MANUAL,
|
|
11860
|
-
gap: DEFAULT_GAP_PX,
|
|
11861
|
-
...window.grid
|
|
11862
|
-
},
|
|
11863
|
-
widgets: window.widgets ?? []
|
|
11864
|
-
};
|
|
11865
|
-
}
|
|
11866
|
-
}
|
|
11867
|
-
|
|
11868
11912
|
class ManifestService {
|
|
11869
11913
|
constructor(httpClient, store, snackBar, translateService) {
|
|
11870
11914
|
this.httpClient = httpClient;
|
|
@@ -12205,28 +12249,19 @@ class DashboardEffects {
|
|
|
12205
12249
|
.map((widManifest) => this.widgetFactoryService.aggregatesToAutoLoad(widManifest))
|
|
12206
12250
|
.reduce((p, c) => [...p, ...c], []))
|
|
12207
12251
|
].map((ds) => DashboardActions.triggerAggregate({ id: ds }));
|
|
12208
|
-
const toItemsActions =
|
|
12209
|
-
.map((winManifest) => (winManifest
|
|
12210
|
-
.
|
|
12211
|
-
.map((widManifest) => this.widgetFactoryService.datasourcesToAutoLoad(widManifest))
|
|
12212
|
-
.flat()
|
|
12213
|
-
.reduce((p, c) => ({
|
|
12214
|
-
...p,
|
|
12215
|
-
[c.datasetId]: {
|
|
12216
|
-
...p[c.datasetId],
|
|
12217
|
-
...c,
|
|
12218
|
-
excludeGeo: p[c.datasetId]?.excludeGeo === false ? p[c.datasetId].excludeGeo : c.excludeGeo
|
|
12219
|
-
}
|
|
12220
|
-
}), {}))
|
|
12252
|
+
const toItemsActions = ManifestUtils.mergeDatasourceRequests(manifestToCheck.windows
|
|
12253
|
+
.map((winManifest) => this.widgetFactoryService.datasourcesToAutoLoad(winManifest))
|
|
12254
|
+
.flat())
|
|
12221
12255
|
.filter((resultSet) => !!resultSet.datasetId &&
|
|
12222
12256
|
resultSet.datasetId !== '' &&
|
|
12223
12257
|
(!resultSets[resultSet.datasetId] ||
|
|
12224
12258
|
resultSetsParams[resultSet.datasetId] !==
|
|
12225
|
-
this.searchService.getItemsSerializedParams(resultSet.datasetId, quickOrder)))
|
|
12259
|
+
this.searchService.getItemsSerializedParams(resultSet.datasetId, quickOrder, resultSet.excludeGeo, resultSet.linkedItems)))
|
|
12226
12260
|
.map((resultSet) => SearchActions.getDatasourceItems({
|
|
12227
12261
|
id: resultSet.datasetId,
|
|
12228
12262
|
excludeGeo: resultSet.excludeGeo,
|
|
12229
|
-
from: 'DashboardEffects.assertResultSets$-1'
|
|
12263
|
+
from: 'DashboardEffects.assertResultSets$-1',
|
|
12264
|
+
linkedItems: resultSet.linkedItems
|
|
12230
12265
|
}));
|
|
12231
12266
|
return [...toItemsActions, ...toAggregateActions];
|
|
12232
12267
|
})));
|
|
@@ -12499,7 +12534,8 @@ class DashboardEffects {
|
|
|
12499
12534
|
this.relaunchAfterOrder$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.quickOrder), map((action) => SearchActions.getDatasourceItems({
|
|
12500
12535
|
id: action.datasourceId,
|
|
12501
12536
|
excludeGeo: true,
|
|
12502
|
-
from: 'DashboardEffects.relaunchAfterOrder$'
|
|
12537
|
+
from: 'DashboardEffects.relaunchAfterOrder$',
|
|
12538
|
+
linkedItems: action.linkedItems
|
|
12503
12539
|
}))));
|
|
12504
12540
|
this.propagateGridLayout$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.setGridLayout), withLatestFrom(this.store.select(DashboardSelectors.rank), this.store.select(DashboardSelectors.windowManifest)), map(([action, rank, windowManifest]) => DashboardActions.propagateGridLayout({ manifest: windowManifest, rank }))));
|
|
12505
12541
|
this.toggleEditionModeIfNotManual$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.setGridLayout), filter((action) => action.layout !== DashboardGridLayout.MANUAL), map(() => DashboardActions.toggleEditionMode({ force: false }))));
|
|
@@ -13168,7 +13204,10 @@ const internalReducer = createReducer(dashboardInitialState, on(DashboardActions
|
|
|
13168
13204
|
...state.manifests,
|
|
13169
13205
|
manifest: {
|
|
13170
13206
|
...state.manifests.manifest,
|
|
13171
|
-
filters: state.manifests.manifest.filters?.map((filter) => ({
|
|
13207
|
+
filters: state.manifests.manifest.filters?.map((filter) => ({
|
|
13208
|
+
...filter,
|
|
13209
|
+
value: filter.type === 'invisible' ? filter.value : undefined
|
|
13210
|
+
}))
|
|
13172
13211
|
}
|
|
13173
13212
|
}
|
|
13174
13213
|
};
|