From 2b583778300e7e1dddb57f1c40b9f7b945c76eab Mon Sep 17 00:00:00 2001 From: Alisa Ismailati Date: Wed, 20 Nov 2024 15:23:09 +0100 Subject: [PATCH] [DURACOM-304] Refactored scripts-select.component by using infinite scroll instead of page size 9999 --- .../scripts-select.component.html | 58 +++++++---- .../scripts-select.component.scss | 23 +++++ .../scripts-select.component.ts | 95 +++++++++++++------ 3 files changed, 133 insertions(+), 43 deletions(-) diff --git a/src/app/process-page/form/scripts-select/scripts-select.component.html b/src/app/process-page/form/scripts-select/scripts-select.component.html index 9cd86d1a6d..8b040308c4 100644 --- a/src/app/process-page/form/scripts-select/scripts-select.component.html +++ b/src/app/process-page/form/scripts-select/scripts-select.component.html @@ -1,20 +1,46 @@ -
- - - +
+
+
+ + +
+
+
-
- {{'process.new.select-script.required' | translate}} -
+
+ {{ 'process.new.select-script.required' | translate }} +
+
diff --git a/src/app/process-page/form/scripts-select/scripts-select.component.scss b/src/app/process-page/form/scripts-select/scripts-select.component.scss index e69de29bb2..4f9ca62310 100644 --- a/src/app/process-page/form/scripts-select/scripts-select.component.scss +++ b/src/app/process-page/form/scripts-select/scripts-select.component.scss @@ -0,0 +1,23 @@ +.dropdown-item { + padding: 0.35rem 1rem; + + &:active { + color: white !important; + } +} + +.scrollable-menu { + height: auto; + max-height: var(--ds-dropdown-menu-max-height); + overflow-x: hidden; +} + +li:not(:last-of-type) .dropdown-item { + border-bottom: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); +} + +#entityControlsDropdownMenu { + outline: 0; + left: 0 !important; + box-shadow: var(--bs-btn-focus-box-shadow); +} diff --git a/src/app/process-page/form/scripts-select/scripts-select.component.ts b/src/app/process-page/form/scripts-select/scripts-select.component.ts index 4c7fe3bdf7..c2d74938d7 100644 --- a/src/app/process-page/form/scripts-select/scripts-select.component.ts +++ b/src/app/process-page/form/scripts-select/scripts-select.component.ts @@ -1,14 +1,19 @@ import { Component, EventEmitter, Input, OnDestroy, OnInit, Optional, Output } from '@angular/core'; import { ScriptDataService } from '../../../core/data/processes/script-data.service'; import { Script } from '../../scripts/script.model'; -import { Observable, Subscription } from 'rxjs'; +import { BehaviorSubject, Observable, Subscription, tap } from 'rxjs'; import { distinctUntilChanged, filter, map, switchMap, take } from 'rxjs/operators'; -import { getRemoteDataPayload, getFirstSucceededRemoteData } from '../../../core/shared/operators'; +import { + getRemoteDataPayload, + getFirstSucceededRemoteData, + getFirstCompletedRemoteData +} from '../../../core/shared/operators'; import { PaginatedList } from '../../../core/data/paginated-list.model'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { hasNoValue, hasValue } from '../../../shared/empty.util'; import { ControlContainer, NgForm } from '@angular/forms'; import { controlContainerFactory } from '../process-form.component'; +import { FindListOptions } from "../../../core/data/find-list-options.model"; const SCRIPT_QUERY_PARAMETER = 'script'; @@ -31,10 +36,20 @@ export class ScriptsSelectComponent implements OnInit, OnDestroy { /** * All available scripts */ - scripts$: Observable; + scripts: Script[] = []; + private _selectedScript: Script; private routeSub: Subscription; + private _isLastPage = false; + + scriptOptions: FindListOptions = { + elementsPerPage: 20, + currentPage: 1, + }; + + isLoading$: BehaviorSubject = new BehaviorSubject(false); + constructor( private scriptService: ScriptDataService, private router: Router, @@ -47,31 +62,46 @@ export class ScriptsSelectComponent implements OnInit, OnDestroy { * Checks if the route contains a script ID and auto selects this scripts */ ngOnInit() { - this.scripts$ = this.scriptService.findAll({ elementsPerPage: 9999 }) - .pipe( - getFirstSucceededRemoteData(), - getRemoteDataPayload(), - map((paginatedList: PaginatedList