@alfresco/adf-process-services-cloud 9.2.0-38701479568 → 9.2.0-38745876662
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.
|
@@ -3,7 +3,7 @@ import { inject, Injectable, InjectionToken, EventEmitter, DestroyRef, Output, I
|
|
|
3
3
|
import * as i3 from '@alfresco/adf-core';
|
|
4
4
|
import { AppConfigService, JwtHelperService, OAuth2Service, TranslationService, DataTableSchema, UserPreferencesService, UserPreferenceValues, CustomEmptyContentTemplateDirective, ObjectDataTableAdapter, ColumnsSelectorComponent, MainMenuDataTableTemplateDirective, EmptyContentComponent, NoContentTemplateDirective, LoadingContentTemplateDirective, DataTableComponent, AdfDateFnsAdapter, MOMENT_DATE_FORMATS, AuthenticationService, StorageService, IconModule, DateFnsUtils, ADF_DATE_FORMATS, FullNamePipe, InitialUsernamePipe, FormFieldTypes, FormService, FormModel, ROW_ID_PREFIX, FormBaseComponent, ADF_DISPLAY_TEXT_SETTINGS, WidgetVisibilityService, FormExpressionService, UploadWidgetContentLinkModel, FormEvent, FormOutcomeModel, ConfirmDialogComponent, FormRulesEvent, FormOutcomeEvent, FormRendererComponent, ToolbarDividerComponent, ToolbarComponent, FormatSpacePipe, NotificationService, DownloadService, WidgetComponent, ThumbnailService, ErrorWidgetComponent, LocalizedDatePipe, UploadDirective, ContentLinkModel, getDynamicDateFieldRange, getDateFieldRange, isEmptyFieldValue, getValidationSummaryTranslationParameters, DEFAULT_DATE_FORMAT, FormFieldValueFormatterService, ADF_TYPED_VALUE_FORMATTING_ENABLED, FormFieldEvent, SelectFilterInputComponent, FormRenderingService, DynamicComponentMapper, CardViewUpdateService, ClipboardService, CardViewTextItemModel, CardViewSelectItemModel, CardViewDatetimeItemModel, CardViewDateItemModel, CardViewArrayItemModel, CardViewComponent, CustomLoadingContentTemplateDirective, isOutcomeButtonVisible, FormOutcomeNotFoundError, InplaceFormInputComponent, BaseViewerWidgetComponent, ErrorMessageModel, BaseDisplayTextWidgetComponent, ObjectDataColumn, ObjectDataRow, FormBaseModule, provideTranslations } from '@alfresco/adf-core';
|
|
5
5
|
import { from, EMPTY, isObservable, of, Subject, throwError, BehaviorSubject, combineLatest, defer, merge, asapScheduler, firstValueFrom, forkJoin, catchError as catchError$1 } from 'rxjs';
|
|
6
|
-
import { map, take, switchMap, catchError, distinctUntilChanged, filter, tap, finalize, debounceTime, shareReplay, mergeMap, expand, reduce, mapTo, concatMap } from 'rxjs/operators';
|
|
6
|
+
import { map, take, switchMap, catchError, distinctUntilChanged, filter, tap, finalize, debounceTime, shareReplay, scan, mergeMap, expand, reduce, mapTo, concatMap } from 'rxjs/operators';
|
|
7
7
|
import { AlfrescoApiService, NodeAction, ContentNodeSelectorComponent, NodesApiService, ContentService, ContentNodeSelectorPanelService, NewVersionUploaderService, NewVersionUploaderDataAction, ContentMetadataComponent, AlfrescoViewerComponent } from '@alfresco/adf-content-services';
|
|
8
8
|
import { AdfHttpClient } from '@alfresco/adf-core/api';
|
|
9
9
|
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
@@ -4193,6 +4193,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImpo
|
|
|
4193
4193
|
args: [{ providedIn: 'root' }]
|
|
4194
4194
|
}] });
|
|
4195
4195
|
|
|
4196
|
+
/*!
|
|
4197
|
+
* @license
|
|
4198
|
+
* Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4199
|
+
*
|
|
4200
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4201
|
+
* you may not use this file except in compliance with the License.
|
|
4202
|
+
* You may obtain a copy of the License at
|
|
4203
|
+
*
|
|
4204
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4205
|
+
*
|
|
4206
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
4207
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4208
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4209
|
+
* See the License for the specific language governing permissions and
|
|
4210
|
+
* limitations under the License.
|
|
4211
|
+
*/
|
|
4212
|
+
|
|
4196
4213
|
/*!
|
|
4197
4214
|
* @license
|
|
4198
4215
|
* Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
@@ -4376,6 +4393,259 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImpo
|
|
|
4376
4393
|
* limitations under the License.
|
|
4377
4394
|
*/
|
|
4378
4395
|
|
|
4396
|
+
/*!
|
|
4397
|
+
* @license
|
|
4398
|
+
* Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4399
|
+
*
|
|
4400
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4401
|
+
* you may not use this file except in compliance with the License.
|
|
4402
|
+
* You may obtain a copy of the License at
|
|
4403
|
+
*
|
|
4404
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4405
|
+
*
|
|
4406
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
4407
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4408
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4409
|
+
* See the License for the specific language governing permissions and
|
|
4410
|
+
* limitations under the License.
|
|
4411
|
+
*/
|
|
4412
|
+
const PUSHED_COUNTER_SUBSCRIPTIONS_BY_ENTITY_TYPE = {
|
|
4413
|
+
[FilterCounterEntityType.TASK]: [
|
|
4414
|
+
{
|
|
4415
|
+
filterKey: 'my-tasks',
|
|
4416
|
+
graphQlFieldName: 'assignedTasks',
|
|
4417
|
+
subscriptionQuery: `
|
|
4418
|
+
subscription {
|
|
4419
|
+
assignedTasks {
|
|
4420
|
+
count
|
|
4421
|
+
asOf
|
|
4422
|
+
}
|
|
4423
|
+
}
|
|
4424
|
+
`
|
|
4425
|
+
},
|
|
4426
|
+
{
|
|
4427
|
+
filterKey: 'queued-tasks',
|
|
4428
|
+
graphQlFieldName: 'queuedTasks',
|
|
4429
|
+
subscriptionQuery: `
|
|
4430
|
+
subscription {
|
|
4431
|
+
queuedTasks {
|
|
4432
|
+
count
|
|
4433
|
+
asOf
|
|
4434
|
+
}
|
|
4435
|
+
}
|
|
4436
|
+
`
|
|
4437
|
+
}
|
|
4438
|
+
],
|
|
4439
|
+
[FilterCounterEntityType.PROCESS_INSTANCE]: [
|
|
4440
|
+
{
|
|
4441
|
+
filterKey: 'running-processes',
|
|
4442
|
+
graphQlFieldName: 'runningProcesses',
|
|
4443
|
+
subscriptionQuery: `
|
|
4444
|
+
subscription {
|
|
4445
|
+
runningProcesses {
|
|
4446
|
+
count
|
|
4447
|
+
asOf
|
|
4448
|
+
}
|
|
4449
|
+
}
|
|
4450
|
+
`
|
|
4451
|
+
}
|
|
4452
|
+
]
|
|
4453
|
+
};
|
|
4454
|
+
class QueryPushedFilterCountersCloudService extends BaseCloudService {
|
|
4455
|
+
constructor() {
|
|
4456
|
+
super(...arguments);
|
|
4457
|
+
this.notificationCloudService = inject(NotificationCloudService);
|
|
4458
|
+
this.taskListCloudService = inject(TaskListCloudService);
|
|
4459
|
+
this.processListCloudService = inject(ProcessListCloudService);
|
|
4460
|
+
this.injector = inject(Injector);
|
|
4461
|
+
this.taskFiltersPerApp = new Map();
|
|
4462
|
+
this.processFiltersPerApp = new Map();
|
|
4463
|
+
this.recountTriggerPerApp = new Map();
|
|
4464
|
+
this.entityTypeCountersPerApp = new Map();
|
|
4465
|
+
this.activeEntityTypesPerApp = new Map();
|
|
4466
|
+
this.activeSubscriberCountPerEntityType = new Map();
|
|
4467
|
+
this.initialCountersPerApp = new Map();
|
|
4468
|
+
this.applyCounterUpdate = (entries, event) => {
|
|
4469
|
+
if (event.source === 'initialFetch') {
|
|
4470
|
+
const mergedEntries = { ...entries };
|
|
4471
|
+
Object.entries(event.counters).forEach(([filterKey, count]) => {
|
|
4472
|
+
if (mergedEntries[filterKey]?.source === 'webSocketPush') {
|
|
4473
|
+
return;
|
|
4474
|
+
}
|
|
4475
|
+
mergedEntries[filterKey] = { count, source: 'initialFetch' };
|
|
4476
|
+
});
|
|
4477
|
+
return mergedEntries;
|
|
4478
|
+
}
|
|
4479
|
+
const existingEntry = entries[event.filterKey];
|
|
4480
|
+
const isOutOfOrderPush = existingEntry?.source === 'webSocketPush' &&
|
|
4481
|
+
existingEntry.asOf !== undefined &&
|
|
4482
|
+
event.asOf !== undefined &&
|
|
4483
|
+
event.asOf < existingEntry.asOf;
|
|
4484
|
+
if (isOutOfOrderPush) {
|
|
4485
|
+
return entries;
|
|
4486
|
+
}
|
|
4487
|
+
return { ...entries, [event.filterKey]: { count: event.count, asOf: event.asOf, source: 'webSocketPush' } };
|
|
4488
|
+
};
|
|
4489
|
+
}
|
|
4490
|
+
getTaskFilters(appName) {
|
|
4491
|
+
return this.shareFilters(this.taskFiltersPerApp, appName, () => this.injector.get(TaskFilterCloudService).getTaskListFilters(appName));
|
|
4492
|
+
}
|
|
4493
|
+
getProcessFilters(appName) {
|
|
4494
|
+
return this.shareFilters(this.processFiltersPerApp, appName, () => this.injector.get(ProcessFilterCloudService).getProcessFilters(appName));
|
|
4495
|
+
}
|
|
4496
|
+
getFilterCounters(appName, entityType) {
|
|
4497
|
+
if (!appName) {
|
|
4498
|
+
return EMPTY;
|
|
4499
|
+
}
|
|
4500
|
+
return defer(() => {
|
|
4501
|
+
this.activateEntityType(appName, entityType);
|
|
4502
|
+
return this.watchEntityTypeCounters(appName, entityType);
|
|
4503
|
+
}).pipe(map((counters) => ({ counters })), finalize(() => this.deactivateEntityType(appName, entityType)));
|
|
4504
|
+
}
|
|
4505
|
+
refreshFilterCounters(appName) {
|
|
4506
|
+
this.recountTrigger(appName).next();
|
|
4507
|
+
}
|
|
4508
|
+
getEngineEvents(_appName, _entityType) {
|
|
4509
|
+
return EMPTY;
|
|
4510
|
+
}
|
|
4511
|
+
watchEntityTypeCounters(appName, entityType) {
|
|
4512
|
+
const key = this.entityTypeKey(appName, entityType);
|
|
4513
|
+
let entityTypeCounters$ = this.entityTypeCountersPerApp.get(key);
|
|
4514
|
+
if (!entityTypeCounters$) {
|
|
4515
|
+
const initialCountersEvents$ = this.initialCounters(appName).pipe(map((counters) => ({
|
|
4516
|
+
source: 'initialFetch',
|
|
4517
|
+
counters: counters[entityType] ?? {}
|
|
4518
|
+
})));
|
|
4519
|
+
const pushedCounterEvents$ = this.pushedCounterUpdates(appName, entityType).pipe(map(({ filterKey, count, asOf }) => ({
|
|
4520
|
+
source: 'webSocketPush',
|
|
4521
|
+
filterKey,
|
|
4522
|
+
count,
|
|
4523
|
+
asOf
|
|
4524
|
+
})));
|
|
4525
|
+
entityTypeCounters$ = merge(initialCountersEvents$, pushedCounterEvents$).pipe(scan(this.applyCounterUpdate, {}), map((entries) => this.toEntityTypeCounters(entries)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
4526
|
+
this.entityTypeCountersPerApp.set(key, entityTypeCounters$);
|
|
4527
|
+
}
|
|
4528
|
+
return entityTypeCounters$;
|
|
4529
|
+
}
|
|
4530
|
+
activateEntityType(appName, entityType) {
|
|
4531
|
+
const key = this.entityTypeKey(appName, entityType);
|
|
4532
|
+
const activeSubscriberCount = (this.activeSubscriberCountPerEntityType.get(key) ?? 0) + 1;
|
|
4533
|
+
this.activeSubscriberCountPerEntityType.set(key, activeSubscriberCount);
|
|
4534
|
+
if (activeSubscriberCount > 1) {
|
|
4535
|
+
return;
|
|
4536
|
+
}
|
|
4537
|
+
const activeEntityTypes = this.activeEntityTypes(appName);
|
|
4538
|
+
const joinsAlreadyActiveEntityTypes = activeEntityTypes.size > 0;
|
|
4539
|
+
activeEntityTypes.add(entityType);
|
|
4540
|
+
if (joinsAlreadyActiveEntityTypes) {
|
|
4541
|
+
this.refreshFilterCounters(appName);
|
|
4542
|
+
}
|
|
4543
|
+
}
|
|
4544
|
+
deactivateEntityType(appName, entityType) {
|
|
4545
|
+
const key = this.entityTypeKey(appName, entityType);
|
|
4546
|
+
const activeSubscriberCount = (this.activeSubscriberCountPerEntityType.get(key) ?? 1) - 1;
|
|
4547
|
+
if (activeSubscriberCount > 0) {
|
|
4548
|
+
this.activeSubscriberCountPerEntityType.set(key, activeSubscriberCount);
|
|
4549
|
+
return;
|
|
4550
|
+
}
|
|
4551
|
+
this.activeSubscriberCountPerEntityType.delete(key);
|
|
4552
|
+
this.activeEntityTypes(appName).delete(entityType);
|
|
4553
|
+
}
|
|
4554
|
+
activeEntityTypes(appName) {
|
|
4555
|
+
let activeEntityTypes = this.activeEntityTypesPerApp.get(appName);
|
|
4556
|
+
if (!activeEntityTypes) {
|
|
4557
|
+
activeEntityTypes = new Set();
|
|
4558
|
+
this.activeEntityTypesPerApp.set(appName, activeEntityTypes);
|
|
4559
|
+
}
|
|
4560
|
+
return activeEntityTypes;
|
|
4561
|
+
}
|
|
4562
|
+
initialCounters(appName) {
|
|
4563
|
+
let initialCounters$ = this.initialCountersPerApp.get(appName);
|
|
4564
|
+
if (!initialCounters$) {
|
|
4565
|
+
initialCounters$ = merge(of(undefined), this.recountTrigger(appName)).pipe(debounceTime(0), switchMap(() => this.fetchActiveEntityTypesCounters(appName)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
4566
|
+
this.initialCountersPerApp.set(appName, initialCounters$);
|
|
4567
|
+
}
|
|
4568
|
+
return initialCounters$;
|
|
4569
|
+
}
|
|
4570
|
+
pushedCounterUpdates(appName, entityType) {
|
|
4571
|
+
return merge(...PUSHED_COUNTER_SUBSCRIPTIONS_BY_ENTITY_TYPE[entityType].map((subscription) => this.pushedCounterUpdate(appName, subscription)));
|
|
4572
|
+
}
|
|
4573
|
+
pushedCounterUpdate(appName, subscription) {
|
|
4574
|
+
return defer(() => this.notificationCloudService.makeGQLQuery(appName, subscription.subscriptionQuery)).pipe(map((result) => result.data?.[subscription.graphQlFieldName]), filter((value) => value?.count !== undefined), map((value) => ({ filterKey: subscription.filterKey, count: value.count, asOf: value.asOf })), catchError(() => EMPTY));
|
|
4575
|
+
}
|
|
4576
|
+
toEntityTypeCounters(entries) {
|
|
4577
|
+
return Object.fromEntries(Object.entries(entries).map(([filterKey, entry]) => [filterKey, entry.count]));
|
|
4578
|
+
}
|
|
4579
|
+
fetchActiveEntityTypesCounters(appName) {
|
|
4580
|
+
const activeEntityTypes = this.activeEntityTypes(appName);
|
|
4581
|
+
return combineLatest({
|
|
4582
|
+
[FilterCounterEntityType.TASK]: activeEntityTypes.has(FilterCounterEntityType.TASK)
|
|
4583
|
+
? this.getTaskFilters(appName).pipe(catchError(() => of([])))
|
|
4584
|
+
: of([]),
|
|
4585
|
+
[FilterCounterEntityType.PROCESS_INSTANCE]: activeEntityTypes.has(FilterCounterEntityType.PROCESS_INSTANCE)
|
|
4586
|
+
? this.getProcessFilters(appName).pipe(catchError(() => of([])))
|
|
4587
|
+
: of([])
|
|
4588
|
+
}).pipe(take(1), switchMap((filters) => this.fetchFilterCounters(appName, this.buildRequest(filters))), catchError(() => EMPTY));
|
|
4589
|
+
}
|
|
4590
|
+
buildRequest(filters) {
|
|
4591
|
+
const request = {};
|
|
4592
|
+
const taskQueries = this.buildQueries(filters[FilterCounterEntityType.TASK], (taskFilter) => this.taskListCloudService.buildQueryData(new TaskFilterCloudAdapter(taskFilter)));
|
|
4593
|
+
if (taskQueries.length) {
|
|
4594
|
+
request[FilterCounterEntityType.TASK] = taskQueries;
|
|
4595
|
+
}
|
|
4596
|
+
const processQueries = this.buildQueries(filters[FilterCounterEntityType.PROCESS_INSTANCE], (processFilter) => this.processListCloudService.buildQueryData(new ProcessFilterCloudAdapter(processFilter)));
|
|
4597
|
+
if (processQueries.length) {
|
|
4598
|
+
request[FilterCounterEntityType.PROCESS_INSTANCE] = processQueries;
|
|
4599
|
+
}
|
|
4600
|
+
return request;
|
|
4601
|
+
}
|
|
4602
|
+
buildQueries(filters, buildQuery) {
|
|
4603
|
+
return (filters ?? [])
|
|
4604
|
+
.filter((candidate) => candidate?.showCounter && !!candidate?.key)
|
|
4605
|
+
.map((candidate) => {
|
|
4606
|
+
try {
|
|
4607
|
+
return { ...buildQuery(candidate), requestId: candidate.key };
|
|
4608
|
+
}
|
|
4609
|
+
catch {
|
|
4610
|
+
return undefined;
|
|
4611
|
+
}
|
|
4612
|
+
})
|
|
4613
|
+
.filter((query) => !!query);
|
|
4614
|
+
}
|
|
4615
|
+
fetchFilterCounters(appName, request) {
|
|
4616
|
+
if (!Object.keys(request).length) {
|
|
4617
|
+
return of({});
|
|
4618
|
+
}
|
|
4619
|
+
const queryUrl = `${this.getBasePath(appName)}/query/v1/count`;
|
|
4620
|
+
return this.post(queryUrl, request).pipe(map((counters) => counters || {}));
|
|
4621
|
+
}
|
|
4622
|
+
shareFilters(cache, appName, loadFilters) {
|
|
4623
|
+
let filters$ = cache.get(appName);
|
|
4624
|
+
if (!filters$) {
|
|
4625
|
+
filters$ = defer(loadFilters).pipe(shareReplay({ bufferSize: 1, refCount: true }));
|
|
4626
|
+
cache.set(appName, filters$);
|
|
4627
|
+
}
|
|
4628
|
+
return filters$;
|
|
4629
|
+
}
|
|
4630
|
+
recountTrigger(appName) {
|
|
4631
|
+
let recountTrigger$ = this.recountTriggerPerApp.get(appName);
|
|
4632
|
+
if (!recountTrigger$) {
|
|
4633
|
+
recountTrigger$ = new Subject();
|
|
4634
|
+
this.recountTriggerPerApp.set(appName, recountTrigger$);
|
|
4635
|
+
}
|
|
4636
|
+
return recountTrigger$;
|
|
4637
|
+
}
|
|
4638
|
+
entityTypeKey(appName, entityType) {
|
|
4639
|
+
return `${appName}|${entityType}`;
|
|
4640
|
+
}
|
|
4641
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: QueryPushedFilterCountersCloudService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4642
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: QueryPushedFilterCountersCloudService, providedIn: 'root' }); }
|
|
4643
|
+
}
|
|
4644
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: QueryPushedFilterCountersCloudService, decorators: [{
|
|
4645
|
+
type: Injectable,
|
|
4646
|
+
args: [{ providedIn: 'root' }]
|
|
4647
|
+
}] });
|
|
4648
|
+
|
|
4379
4649
|
/*!
|
|
4380
4650
|
* @license
|
|
4381
4651
|
* Copyright © 2005-2026 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
@@ -4718,6 +4988,13 @@ class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent {
|
|
|
4718
4988
|
*
|
|
4719
4989
|
*/
|
|
4720
4990
|
this.searchApiMethod = 'GET';
|
|
4991
|
+
/**
|
|
4992
|
+
* (optional) Resolves the initial counters of the filters with a single call to
|
|
4993
|
+
* `POST /query/v1/count`, then keeps the counters of the `my-tasks` and `queued-tasks`
|
|
4994
|
+
* filters in sync with the counts pushed by the engine over the web socket, without any
|
|
4995
|
+
* further call to the count endpoint. Both filter components have to use the same value.
|
|
4996
|
+
*/
|
|
4997
|
+
this.queryPushedCounter = false;
|
|
4721
4998
|
/** Emitted when a filter is being selected based on the filterParam input. */
|
|
4722
4999
|
this.filterSelected = new EventEmitter();
|
|
4723
5000
|
/** Emitted when a filter is being clicked from the UI. */
|
|
@@ -4733,11 +5010,15 @@ class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent {
|
|
|
4733
5010
|
this.taskFilterCloudService = inject(TaskFilterCloudService);
|
|
4734
5011
|
this.taskListCloudService = inject(TaskListCloudService);
|
|
4735
5012
|
this.filterCountersCloudService = inject(FilterCountersCloudService);
|
|
5013
|
+
this.queryPushedFilterCountersCloudService = inject(QueryPushedFilterCountersCloudService);
|
|
4736
5014
|
this.translationService = inject(TranslationService);
|
|
4737
5015
|
this.appConfigService = inject(AppConfigService);
|
|
4738
5016
|
this.activatedRoute = inject(ActivatedRoute);
|
|
4739
5017
|
this.currentRouteFilterId = toSignal(this.activatedRoute.queryParamMap.pipe(map((params) => params.get('filterId'))));
|
|
4740
5018
|
}
|
|
5019
|
+
get filterCountersService() {
|
|
5020
|
+
return this.queryPushedCounter ? this.queryPushedFilterCountersCloudService : this.filterCountersCloudService;
|
|
5021
|
+
}
|
|
4741
5022
|
ngOnInit() {
|
|
4742
5023
|
this.enableNotifications = this.appConfigService.get('notifications', true);
|
|
4743
5024
|
this.notificationDebounceTime = this.appConfigService.get('notificationDebounceTime', 3000);
|
|
@@ -4756,6 +5037,10 @@ class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent {
|
|
|
4756
5037
|
else if (filter && filter.currentValue !== filter.previousValue) {
|
|
4757
5038
|
this.selectFilterAndEmit(filter.currentValue);
|
|
4758
5039
|
}
|
|
5040
|
+
else if (changes['queryPushedCounter'] && !changes['queryPushedCounter'].firstChange && this.filtersLoadedFor) {
|
|
5041
|
+
this.initFilterCounterNotifications();
|
|
5042
|
+
this.loadFilterCounters(this.filtersLoadedFor);
|
|
5043
|
+
}
|
|
4759
5044
|
}
|
|
4760
5045
|
/**
|
|
4761
5046
|
* Loads the filter list filtered by appName
|
|
@@ -4764,7 +5049,7 @@ class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent {
|
|
|
4764
5049
|
*/
|
|
4765
5050
|
getFilters(appName) {
|
|
4766
5051
|
this.filtersLoadedFor = appName;
|
|
4767
|
-
const filters$ = this.
|
|
5052
|
+
const filters$ = this.filterCountersService.getTaskFilters(appName);
|
|
4768
5053
|
this.filters$ = filters$.pipe(catchError(() => of([])));
|
|
4769
5054
|
filters$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
4770
5055
|
next: (res) => {
|
|
@@ -4816,8 +5101,9 @@ class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent {
|
|
|
4816
5101
|
if (!this.appName) {
|
|
4817
5102
|
return;
|
|
4818
5103
|
}
|
|
5104
|
+
this.notificationsSubscription?.unsubscribe();
|
|
4819
5105
|
if (this.enableNotifications) {
|
|
4820
|
-
this.
|
|
5106
|
+
this.notificationsSubscription = this.filterCountersService
|
|
4821
5107
|
.getEngineEvents(this.appName, FilterCounterEntityType.TASK)
|
|
4822
5108
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
4823
5109
|
.subscribe((events) => {
|
|
@@ -4920,7 +5206,7 @@ class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent {
|
|
|
4920
5206
|
this.countersSubscription?.unsubscribe();
|
|
4921
5207
|
this.countersSubscription = combineLatest([
|
|
4922
5208
|
this.countersFilters$.pipe(catchError(() => of([]))),
|
|
4923
|
-
this.
|
|
5209
|
+
this.filterCountersService.getFilterCounters(appName, FilterCounterEntityType.TASK)
|
|
4924
5210
|
])
|
|
4925
5211
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
4926
5212
|
.subscribe(([, { counters }]) => {
|
|
@@ -4955,16 +5241,18 @@ class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent {
|
|
|
4955
5241
|
this.currentFilter = undefined;
|
|
4956
5242
|
}
|
|
4957
5243
|
refreshFilterCounter() {
|
|
4958
|
-
this.
|
|
5244
|
+
this.filterCountersService.refreshFilterCounters(this.appName);
|
|
4959
5245
|
}
|
|
4960
5246
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: TaskFiltersCloudComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
4961
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: TaskFiltersCloudComponent, isStandalone: true, selector: "adf-cloud-task-filters", inputs: { searchApiMethod: "searchApiMethod" }, outputs: { filterSelected: "filterSelected", filterClicked: "filterClicked", filterCounterUpdated: "filterCounterUpdated", updatedFilter: "updatedFilter" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (filters$ | async; as filterList) {\n <mat-nav-list>\n @for (filter of filterList; track filter.id) {\n <a mat-list-item\n [activated]=\"filter.id === currentRouteFilterId()\"\n [routerLink]=\"[TASKS_ROUTE]\"\n [queryParams]=\"{ filterId: filter.id }\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n class=\"adf-task-filters__entry\"\n [class.adf-active]=\"filter.id === currentRouteFilterId()\"\n [attr.aria-current]=\"filter.id === currentRouteFilterId() ? 'page' : null\"\n [id]=\"filter.id\"\n [title]=\"filter.name | translate\"\n [attr.aria-label]=\"filter.name | translate\"\n (click)=\"onFilterClick(filter)\">\n <span matListItemTitle>\n {{ filter.name | translate }}\n </span>\n @if (showIcons) {\n <mat-icon matListItemIcon\n data-automation-id=\"adf-filter-icon\"\n [adf-icon]=\"filter.icon\"\n aria-hidden=\"true\" />\n }\n @if (counters[filter.key]) {\n <span matListItemMeta\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-task-filters__entry-counter\"\n [class.adf-active]=\"wasFilterUpdated(filter.key)\"\n >\n {{ counters[filter.key] }}\n </span>\n }\n </a>\n }\n </mat-nav-list>\n} @else {\n <div class=\"adf-app-list-spinner\">\n <mat-spinner [attr.aria-label]=\"'ADF_CLOUD_TASK_LIST.LOADING' | translate\" aria-live=\"polite\" />\n </div>\n}\n", styles: [".adf-task-filters__entry-counter{padding:0 5px;border-radius:var(--mat-sys-corner-large)}.adf-task-filters__entry-counter.adf-active{background-color:var(--mat-sys-secondary);--mat-list-list-item-trailing-supporting-text-color: var(--mat-sys-on-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i2$1.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$1.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i2$1.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i2$1.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.IconDirective, selector: "mat-icon[adf-icon]", inputs: ["adf-icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
5247
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: TaskFiltersCloudComponent, isStandalone: true, selector: "adf-cloud-task-filters", inputs: { searchApiMethod: "searchApiMethod", queryPushedCounter: "queryPushedCounter" }, outputs: { filterSelected: "filterSelected", filterClicked: "filterClicked", filterCounterUpdated: "filterCounterUpdated", updatedFilter: "updatedFilter" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (filters$ | async; as filterList) {\n <mat-nav-list>\n @for (filter of filterList; track filter.id) {\n <a mat-list-item\n [activated]=\"filter.id === currentRouteFilterId()\"\n [routerLink]=\"[TASKS_ROUTE]\"\n [queryParams]=\"{ filterId: filter.id }\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n class=\"adf-task-filters__entry\"\n [class.adf-active]=\"filter.id === currentRouteFilterId()\"\n [attr.aria-current]=\"filter.id === currentRouteFilterId() ? 'page' : null\"\n [id]=\"filter.id\"\n [title]=\"filter.name | translate\"\n [attr.aria-label]=\"filter.name | translate\"\n (click)=\"onFilterClick(filter)\">\n <span matListItemTitle>\n {{ filter.name | translate }}\n </span>\n @if (showIcons) {\n <mat-icon matListItemIcon\n data-automation-id=\"adf-filter-icon\"\n [adf-icon]=\"filter.icon\"\n aria-hidden=\"true\" />\n }\n @if (counters[filter.key]) {\n <span matListItemMeta\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-task-filters__entry-counter\"\n [class.adf-active]=\"wasFilterUpdated(filter.key)\"\n >\n {{ counters[filter.key] }}\n </span>\n }\n </a>\n }\n </mat-nav-list>\n} @else {\n <div class=\"adf-app-list-spinner\">\n <mat-spinner [attr.aria-label]=\"'ADF_CLOUD_TASK_LIST.LOADING' | translate\" aria-live=\"polite\" />\n </div>\n}\n", styles: [".adf-task-filters__entry-counter{padding:0 5px;border-radius:var(--mat-sys-corner-large)}.adf-task-filters__entry-counter.adf-active{background-color:var(--mat-sys-secondary);--mat-list-list-item-trailing-supporting-text-color: var(--mat-sys-on-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i2$1.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$1.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i2$1.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i2$1.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.IconDirective, selector: "mat-icon[adf-icon]", inputs: ["adf-icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
4962
5248
|
}
|
|
4963
5249
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: TaskFiltersCloudComponent, decorators: [{
|
|
4964
5250
|
type: Component,
|
|
4965
5251
|
args: [{ selector: 'adf-cloud-task-filters', imports: [AsyncPipe, MatProgressSpinnerModule, TranslatePipe, MatListModule, RouterLink, IconModule], template: "@if (filters$ | async; as filterList) {\n <mat-nav-list>\n @for (filter of filterList; track filter.id) {\n <a mat-list-item\n [activated]=\"filter.id === currentRouteFilterId()\"\n [routerLink]=\"[TASKS_ROUTE]\"\n [queryParams]=\"{ filterId: filter.id }\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n class=\"adf-task-filters__entry\"\n [class.adf-active]=\"filter.id === currentRouteFilterId()\"\n [attr.aria-current]=\"filter.id === currentRouteFilterId() ? 'page' : null\"\n [id]=\"filter.id\"\n [title]=\"filter.name | translate\"\n [attr.aria-label]=\"filter.name | translate\"\n (click)=\"onFilterClick(filter)\">\n <span matListItemTitle>\n {{ filter.name | translate }}\n </span>\n @if (showIcons) {\n <mat-icon matListItemIcon\n data-automation-id=\"adf-filter-icon\"\n [adf-icon]=\"filter.icon\"\n aria-hidden=\"true\" />\n }\n @if (counters[filter.key]) {\n <span matListItemMeta\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-task-filters__entry-counter\"\n [class.adf-active]=\"wasFilterUpdated(filter.key)\"\n >\n {{ counters[filter.key] }}\n </span>\n }\n </a>\n }\n </mat-nav-list>\n} @else {\n <div class=\"adf-app-list-spinner\">\n <mat-spinner [attr.aria-label]=\"'ADF_CLOUD_TASK_LIST.LOADING' | translate\" aria-live=\"polite\" />\n </div>\n}\n", styles: [".adf-task-filters__entry-counter{padding:0 5px;border-radius:var(--mat-sys-corner-large)}.adf-task-filters__entry-counter.adf-active{background-color:var(--mat-sys-secondary);--mat-list-list-item-trailing-supporting-text-color: var(--mat-sys-on-secondary)}\n"] }]
|
|
4966
5252
|
}], propDecorators: { searchApiMethod: [{
|
|
4967
5253
|
type: Input
|
|
5254
|
+
}], queryPushedCounter: [{
|
|
5255
|
+
type: Input
|
|
4968
5256
|
}], filterSelected: [{
|
|
4969
5257
|
type: Output
|
|
4970
5258
|
}], filterClicked: [{
|
|
@@ -11990,6 +12278,13 @@ class ProcessFiltersCloudComponent {
|
|
|
11990
12278
|
*
|
|
11991
12279
|
*/
|
|
11992
12280
|
this.searchApiMethod = 'GET';
|
|
12281
|
+
/**
|
|
12282
|
+
* (optional) Resolves the initial counters of the filters with a single call to
|
|
12283
|
+
* `POST /query/v1/count`, then keeps the counter of the `running-processes` filter in sync
|
|
12284
|
+
* with the counts pushed by the engine over the web socket, without any further call to the
|
|
12285
|
+
* count endpoint. Both filter components have to use the same value.
|
|
12286
|
+
*/
|
|
12287
|
+
this.queryPushedCounter = false;
|
|
11993
12288
|
/** (optional) Toggles showing an icon by the side of each filter */
|
|
11994
12289
|
this.showIcons = false;
|
|
11995
12290
|
/** Emitted when a filter is being selected based on the filterParam input. */
|
|
@@ -12014,9 +12309,13 @@ class ProcessFiltersCloudComponent {
|
|
|
12014
12309
|
this.appConfigService = inject(AppConfigService);
|
|
12015
12310
|
this.processListCloudService = inject(ProcessListCloudService);
|
|
12016
12311
|
this.filterCountersCloudService = inject(FilterCountersCloudService);
|
|
12312
|
+
this.queryPushedFilterCountersCloudService = inject(QueryPushedFilterCountersCloudService);
|
|
12017
12313
|
this.activatedRoute = inject(ActivatedRoute);
|
|
12018
12314
|
this.currentRouteFilterId = toSignal(this.activatedRoute.queryParamMap.pipe(map((params) => params.get('filterId'))));
|
|
12019
12315
|
}
|
|
12316
|
+
get filterCountersService() {
|
|
12317
|
+
return this.queryPushedCounter ? this.queryPushedFilterCountersCloudService : this.filterCountersCloudService;
|
|
12318
|
+
}
|
|
12020
12319
|
ngOnInit() {
|
|
12021
12320
|
this.enableNotifications = this.appConfigService.get('notifications', true);
|
|
12022
12321
|
this.notificationDebounceTime = this.appConfigService.get('notificationDebounceTime', 3000);
|
|
@@ -12034,6 +12333,9 @@ class ProcessFiltersCloudComponent {
|
|
|
12034
12333
|
else if (filter && filter.currentValue !== filter.previousValue) {
|
|
12035
12334
|
this.selectFilterAndEmit(filter.currentValue);
|
|
12036
12335
|
}
|
|
12336
|
+
else if (changes['queryPushedCounter'] && !changes['queryPushedCounter'].firstChange && this.filtersLoadedFor) {
|
|
12337
|
+
this.loadFilterCounters(this.filtersLoadedFor);
|
|
12338
|
+
}
|
|
12037
12339
|
}
|
|
12038
12340
|
/**
|
|
12039
12341
|
* Fetch the filter list based on appName
|
|
@@ -12042,7 +12344,7 @@ class ProcessFiltersCloudComponent {
|
|
|
12042
12344
|
*/
|
|
12043
12345
|
getFilters(appName) {
|
|
12044
12346
|
this.filtersLoadedFor = appName;
|
|
12045
|
-
const filters$ = this.
|
|
12347
|
+
const filters$ = this.filterCountersService.getProcessFilters(appName);
|
|
12046
12348
|
this.filters$ = filters$.pipe(catchError(() => of([])));
|
|
12047
12349
|
filters$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
12048
12350
|
next: (res) => {
|
|
@@ -12226,7 +12528,7 @@ class ProcessFiltersCloudComponent {
|
|
|
12226
12528
|
this.countersSubscription?.unsubscribe();
|
|
12227
12529
|
this.countersSubscription = combineLatest([
|
|
12228
12530
|
this.countersFilters$.pipe(catchError(() => of([]))),
|
|
12229
|
-
this.
|
|
12531
|
+
this.filterCountersService.getFilterCounters(appName, FilterCounterEntityType.PROCESS_INSTANCE)
|
|
12230
12532
|
])
|
|
12231
12533
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
12232
12534
|
.subscribe(([, { counters }]) => {
|
|
@@ -12249,7 +12551,7 @@ class ProcessFiltersCloudComponent {
|
|
|
12249
12551
|
});
|
|
12250
12552
|
}
|
|
12251
12553
|
refreshFilterCounter() {
|
|
12252
|
-
this.
|
|
12554
|
+
this.filterCountersService.refreshFilterCounters(this.appName);
|
|
12253
12555
|
}
|
|
12254
12556
|
fetchProcessFilterCounter(filter) {
|
|
12255
12557
|
return this.searchApiMethod === 'POST'
|
|
@@ -12257,7 +12559,7 @@ class ProcessFiltersCloudComponent {
|
|
|
12257
12559
|
: this.processListCloudService.getProcessCounter(filter.appName, filter.status);
|
|
12258
12560
|
}
|
|
12259
12561
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: ProcessFiltersCloudComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12260
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: ProcessFiltersCloudComponent, isStandalone: true, selector: "adf-cloud-process-filters", inputs: { appName: "appName", searchApiMethod: "searchApiMethod", filterParam: "filterParam", showIcons: "showIcons" }, outputs: { filterSelected: "filterSelected", filterClicked: "filterClicked", success: "success", error: "error", updatedFilter: "updatedFilter" }, usesOnChanges: true, ngImport: i0, template: "@if (filters$ | async; as filterList) {\n <mat-nav-list>\n @for (filter of filterList; track filter.id) {\n <a mat-list-item\n [activated]=\"filter.id === currentRouteFilterId()\"\n [routerLink]=\"[PROCESSES_ROUTE]\"\n [queryParams]=\"{ filterId: filter.id }\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n class=\"adf-process-filters__entry\"\n [class.adf-active]=\"filter.id === currentRouteFilterId()\"\n [attr.aria-current]=\"filter.id === currentRouteFilterId() ? 'page' : null\"\n [id]=\"filter.id\"\n [title]=\"filter.name ?? '' | translate\"\n [attr.aria-label]=\"filter.name ?? '' | translate\"\n (click)=\"onFilterClick(filter)\">\n <span matListItemTitle>\n {{ filter.name ?? '' | translate }}\n </span>\n @if (showIcons) {\n <mat-icon matListItemIcon\n data-automation-id=\"adf-filter-icon\"\n [adf-icon]=\"filter.icon ?? ''\"\n aria-hidden=\"true\" />\n }\n @if (counters[filter.key ?? '']) {\n <span matListItemMeta\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-process-filters__entry-counter\"\n [class.adf-active]=\"isFilterUpdated(filter.key ?? '')\"\n >\n {{ counters[filter.key ?? ''] }}\n </span>\n }\n </a>\n }\n </mat-nav-list>\n} @else {\n <div class=\"adf-app-list-spinner\">\n <mat-spinner [attr.aria-label]=\"'ADF_CLOUD_PROCESS_LIST.LOADING' | translate\" aria-live=\"polite\" />\n </div>\n}\n\n", styles: [".adf-process-filters__entry-counter{padding:0 5px;border-radius:var(--mat-sys-corner-large)}.adf-process-filters__entry-counter.adf-active{background-color:var(--mat-sys-secondary);--mat-list-list-item-trailing-supporting-text-color: var(--mat-sys-on-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: IconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.IconDirective, selector: "mat-icon[adf-icon]", inputs: ["adf-icon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i2$1.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$1.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i2$1.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i2$1.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
12562
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: ProcessFiltersCloudComponent, isStandalone: true, selector: "adf-cloud-process-filters", inputs: { appName: "appName", searchApiMethod: "searchApiMethod", queryPushedCounter: "queryPushedCounter", filterParam: "filterParam", showIcons: "showIcons" }, outputs: { filterSelected: "filterSelected", filterClicked: "filterClicked", success: "success", error: "error", updatedFilter: "updatedFilter" }, usesOnChanges: true, ngImport: i0, template: "@if (filters$ | async; as filterList) {\n <mat-nav-list>\n @for (filter of filterList; track filter.id) {\n <a mat-list-item\n [activated]=\"filter.id === currentRouteFilterId()\"\n [routerLink]=\"[PROCESSES_ROUTE]\"\n [queryParams]=\"{ filterId: filter.id }\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n class=\"adf-process-filters__entry\"\n [class.adf-active]=\"filter.id === currentRouteFilterId()\"\n [attr.aria-current]=\"filter.id === currentRouteFilterId() ? 'page' : null\"\n [id]=\"filter.id\"\n [title]=\"filter.name ?? '' | translate\"\n [attr.aria-label]=\"filter.name ?? '' | translate\"\n (click)=\"onFilterClick(filter)\">\n <span matListItemTitle>\n {{ filter.name ?? '' | translate }}\n </span>\n @if (showIcons) {\n <mat-icon matListItemIcon\n data-automation-id=\"adf-filter-icon\"\n [adf-icon]=\"filter.icon ?? ''\"\n aria-hidden=\"true\" />\n }\n @if (counters[filter.key ?? '']) {\n <span matListItemMeta\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-process-filters__entry-counter\"\n [class.adf-active]=\"isFilterUpdated(filter.key ?? '')\"\n >\n {{ counters[filter.key ?? ''] }}\n </span>\n }\n </a>\n }\n </mat-nav-list>\n} @else {\n <div class=\"adf-app-list-spinner\">\n <mat-spinner [attr.aria-label]=\"'ADF_CLOUD_PROCESS_LIST.LOADING' | translate\" aria-live=\"polite\" />\n </div>\n}\n\n", styles: [".adf-process-filters__entry-counter{padding:0 5px;border-radius:var(--mat-sys-corner-large)}.adf-process-filters__entry-counter.adf-active{background-color:var(--mat-sys-secondary);--mat-list-list-item-trailing-supporting-text-color: var(--mat-sys-on-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: IconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.IconDirective, selector: "mat-icon[adf-icon]", inputs: ["adf-icon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i2$1.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i2$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$1.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i2$1.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i2$1.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
12261
12563
|
}
|
|
12262
12564
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: ProcessFiltersCloudComponent, decorators: [{
|
|
12263
12565
|
type: Component,
|
|
@@ -12266,6 +12568,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImpo
|
|
|
12266
12568
|
type: Input
|
|
12267
12569
|
}], searchApiMethod: [{
|
|
12268
12570
|
type: Input
|
|
12571
|
+
}], queryPushedCounter: [{
|
|
12572
|
+
type: Input
|
|
12269
12573
|
}], filterParam: [{
|
|
12270
12574
|
type: Input
|
|
12271
12575
|
}], showIcons: [{
|
|
@@ -17108,5 +17412,5 @@ const DATE_FORMAT_CLOUD = 'YYYY-MM-DD';
|
|
|
17108
17412
|
* Generated bundle index. Do not edit.
|
|
17109
17413
|
*/
|
|
17110
17414
|
|
|
17111
|
-
export { ADF_FORM_TAB_NAV_ENABLED, ADF_TASK_RUNTIME_BUNDLE_FALLBACK_ENABLED, APP_CUSTOM_SCREEN_TOKEN, ApplicationVersionModel, ApplicationVersionResponseModel, AppsProcessCloudService, AssignmentType, AttachFileCloudWidgetComponent, BaseCloudService, CLOUD_FORM_FIELD_VALIDATORS, CloudFormRenderingService, ContentCloudNodeSelectorService, DATE_FORMAT_CLOUD, DEFAULT_OPTION, DEFAULT_TASK_PRIORITIES, DROPDOWN_CLOUD_WIDGET_SET_VALUE_DEBOUNCE, DateCloudFilterType, DateCloudWidgetComponent, DateRangeFilterService, DescriptorCustomUIAuthFlowType, DisplayModeService, DisplayRichTextWidgetComponent, DropdownCloudFieldValidator, DropdownCloudWidgetComponent, EditProcessFilterCloudComponent, EditServiceTaskFilterCloudComponent, EditTaskFilterCloudComponent, FORM_CLOUD_DIRECTIVES, FORM_CLOUD_FIELD_VALIDATORS_TOKEN, FORM_CLOUD_SERVICE_FIELD_VALIDATORS_TOKEN, FilePropertiesTableCloudComponent, FileViewerWidgetComponent, FilterCounterEntityType, FilterCountersCloudService, FormCloudComponent, FormCloudDisplayMode, FormCloudModule, FormCloudService, FormCustomOutcomesComponent, FormFieldType, FormSpinnerComponent, GroupCloudComponent, GroupCloudModule, GroupCloudWidgetComponent, HIDE_FILTER_LIMIT, IdentityGroupService, IdentityUserService, LocalPreferenceCloudService, NotificationCloudService, PROCESS_CLOUD_DIRECTIVES, PROCESS_FILTERS_CLOUD_DIRECTIVES, PROCESS_FILTERS_SERVICE_TOKEN, PROCESS_FILTER_ACTION_DELETE, PROCESS_FILTER_ACTION_RESTORE, PROCESS_FILTER_ACTION_SAVE, PROCESS_FILTER_ACTION_SAVE_AS, PROCESS_FILTER_ACTION_SAVE_DEFAULT, PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN, PROCESS_SERVICES_CLOUD_DIRECTIVES, PeopleCloudComponent, PeopleCloudModule, PeopleCloudWidgetComponent, PeopleModeOptions, ProcessCloudContentService, ProcessCloudModule, ProcessCloudService, ProcessDefinitionCloud, ProcessFilterCloudAdapter, ProcessFilterCloudModel, ProcessFilterCloudService, ProcessFilterDialogCloudComponent, ProcessFiltersCloudComponent, ProcessFiltersCloudModule, ProcessHeaderCloudComponent, ProcessHeaderCloudModule, ProcessListCloudComponent, ProcessListCloudModule, ProcessListCloudPreferences, ProcessListCloudService, ProcessListCloudSortingModel, ProcessListRequestModel, ProcessListRequestSortingModel, ProcessPayloadCloud, ProcessQueryCloudRequestModel, ProcessServicesCloudModule, ProcessTaskListCloudService, PropertiesViewerWidgetComponent, PropertiesViewerWrapperComponent, RICH_TEXT_PARSER_TOKEN, RadioButtonsCloudWidgetComponent, ScreenRenderingService, ServiceTaskFilterCloudService, ServiceTaskFiltersCloudComponent, ServiceTaskListCloudComponent, ServiceTaskListCloudService, StartProcessCloudComponent, StartProcessCloudService, StartProcessScreenCloudComponent, StartTaskCloudRequestModel, TASK_ASSIGNED_STATE, TASK_CANCELLED_STATE, TASK_CLAIM_PERMISSION, TASK_COMPLETED_STATE, TASK_CREATED_STATE, TASK_FILTERS_CLOUD_DIRECTIVES, TASK_FILTERS_SERVICE_TOKEN, TASK_FORM_CLOUD_DIRECTIVES, TASK_LIST_CLOUD_DIRECTIVES, TASK_LIST_CLOUD_TOKEN, TASK_LIST_PREFERENCES_SERVICE_TOKEN, TASK_RELEASE_PERMISSION, TASK_SUSPENDED_STATE, TASK_UPDATE_PERMISSION, TASK_VIEW_PERMISSION, TaskAssignmentFilterCloudComponent, TaskCloudEntryModel, TaskCloudModule, TaskCloudNodePaging, TaskCloudPagingList, TaskCloudService, TaskFilterCloudAdapter, TaskFilterCloudModel, TaskFilterCloudService, TaskFilterDialogCloudComponent, TaskFiltersCloudComponent, TaskFiltersCloudModule, TaskFormCloudComponent, TaskFormModule, TaskHeaderCloudComponent, TaskHeaderCloudModule, TaskListCloudComponent, TaskListCloudModule, TaskListCloudService, TaskListCloudSortingModel, TaskListRequestModel, TaskListRequestSortingModel, TaskQueryCloudRequestModel, TaskStatusFilter, TaskVariableCloud, UploadCloudWidgetComponent, UserPreferenceCloudService, UserTaskCloudButtonsComponent, UserTaskCloudComponent, VariableMapperService, WebSocketService, getDateCloudWidgetRange, getExpressionEvaluationEnabled$, materializeSubmissionValues, processCloudPresetsDefaultModel, provideCloudFormRenderer, provideCloudPreferences, provideScreen, radioButtonsSchema, resolveTaskRuntimeBundleFallback$ };
|
|
17415
|
+
export { ADF_FORM_TAB_NAV_ENABLED, ADF_TASK_RUNTIME_BUNDLE_FALLBACK_ENABLED, APP_CUSTOM_SCREEN_TOKEN, ApplicationVersionModel, ApplicationVersionResponseModel, AppsProcessCloudService, AssignmentType, AttachFileCloudWidgetComponent, BaseCloudService, CLOUD_FORM_FIELD_VALIDATORS, CloudFormRenderingService, ContentCloudNodeSelectorService, DATE_FORMAT_CLOUD, DEFAULT_OPTION, DEFAULT_TASK_PRIORITIES, DROPDOWN_CLOUD_WIDGET_SET_VALUE_DEBOUNCE, DateCloudFilterType, DateCloudWidgetComponent, DateRangeFilterService, DescriptorCustomUIAuthFlowType, DisplayModeService, DisplayRichTextWidgetComponent, DropdownCloudFieldValidator, DropdownCloudWidgetComponent, EditProcessFilterCloudComponent, EditServiceTaskFilterCloudComponent, EditTaskFilterCloudComponent, FORM_CLOUD_DIRECTIVES, FORM_CLOUD_FIELD_VALIDATORS_TOKEN, FORM_CLOUD_SERVICE_FIELD_VALIDATORS_TOKEN, FilePropertiesTableCloudComponent, FileViewerWidgetComponent, FilterCounterEntityType, FilterCountersCloudService, FormCloudComponent, FormCloudDisplayMode, FormCloudModule, FormCloudService, FormCustomOutcomesComponent, FormFieldType, FormSpinnerComponent, GroupCloudComponent, GroupCloudModule, GroupCloudWidgetComponent, HIDE_FILTER_LIMIT, IdentityGroupService, IdentityUserService, LocalPreferenceCloudService, NotificationCloudService, PROCESS_CLOUD_DIRECTIVES, PROCESS_FILTERS_CLOUD_DIRECTIVES, PROCESS_FILTERS_SERVICE_TOKEN, PROCESS_FILTER_ACTION_DELETE, PROCESS_FILTER_ACTION_RESTORE, PROCESS_FILTER_ACTION_SAVE, PROCESS_FILTER_ACTION_SAVE_AS, PROCESS_FILTER_ACTION_SAVE_DEFAULT, PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN, PROCESS_SERVICES_CLOUD_DIRECTIVES, PeopleCloudComponent, PeopleCloudModule, PeopleCloudWidgetComponent, PeopleModeOptions, ProcessCloudContentService, ProcessCloudModule, ProcessCloudService, ProcessDefinitionCloud, ProcessFilterCloudAdapter, ProcessFilterCloudModel, ProcessFilterCloudService, ProcessFilterDialogCloudComponent, ProcessFiltersCloudComponent, ProcessFiltersCloudModule, ProcessHeaderCloudComponent, ProcessHeaderCloudModule, ProcessListCloudComponent, ProcessListCloudModule, ProcessListCloudPreferences, ProcessListCloudService, ProcessListCloudSortingModel, ProcessListRequestModel, ProcessListRequestSortingModel, ProcessPayloadCloud, ProcessQueryCloudRequestModel, ProcessServicesCloudModule, ProcessTaskListCloudService, PropertiesViewerWidgetComponent, PropertiesViewerWrapperComponent, QueryPushedFilterCountersCloudService, RICH_TEXT_PARSER_TOKEN, RadioButtonsCloudWidgetComponent, ScreenRenderingService, ServiceTaskFilterCloudService, ServiceTaskFiltersCloudComponent, ServiceTaskListCloudComponent, ServiceTaskListCloudService, StartProcessCloudComponent, StartProcessCloudService, StartProcessScreenCloudComponent, StartTaskCloudRequestModel, TASK_ASSIGNED_STATE, TASK_CANCELLED_STATE, TASK_CLAIM_PERMISSION, TASK_COMPLETED_STATE, TASK_CREATED_STATE, TASK_FILTERS_CLOUD_DIRECTIVES, TASK_FILTERS_SERVICE_TOKEN, TASK_FORM_CLOUD_DIRECTIVES, TASK_LIST_CLOUD_DIRECTIVES, TASK_LIST_CLOUD_TOKEN, TASK_LIST_PREFERENCES_SERVICE_TOKEN, TASK_RELEASE_PERMISSION, TASK_SUSPENDED_STATE, TASK_UPDATE_PERMISSION, TASK_VIEW_PERMISSION, TaskAssignmentFilterCloudComponent, TaskCloudEntryModel, TaskCloudModule, TaskCloudNodePaging, TaskCloudPagingList, TaskCloudService, TaskFilterCloudAdapter, TaskFilterCloudModel, TaskFilterCloudService, TaskFilterDialogCloudComponent, TaskFiltersCloudComponent, TaskFiltersCloudModule, TaskFormCloudComponent, TaskFormModule, TaskHeaderCloudComponent, TaskHeaderCloudModule, TaskListCloudComponent, TaskListCloudModule, TaskListCloudService, TaskListCloudSortingModel, TaskListRequestModel, TaskListRequestSortingModel, TaskQueryCloudRequestModel, TaskStatusFilter, TaskVariableCloud, UploadCloudWidgetComponent, UserPreferenceCloudService, UserTaskCloudButtonsComponent, UserTaskCloudComponent, VariableMapperService, WebSocketService, getDateCloudWidgetRange, getExpressionEvaluationEnabled$, materializeSubmissionValues, processCloudPresetsDefaultModel, provideCloudFormRenderer, provideCloudPreferences, provideScreen, radioButtonsSchema, resolveTaskRuntimeBundleFallback$ };
|
|
17112
17416
|
//# sourceMappingURL=adf-process-services-cloud.mjs.map
|