From 994675c3848327e47304ef8cf79adecc3f641de9 Mon Sep 17 00:00:00 2001 From: Abhijeet Date: Sat, 5 Jul 2025 20:16:13 +0530 Subject: [PATCH 01/87] feat(tracking): added tracking on Visit Details and added tracking servervice in app module --- .../app-header/app-header.component.html | 9 ++++++++- .../components/app-header/app-header.component.ts | 8 ++++++++ .../chief-complaints.component.html | 4 ++++ .../chief-complaints.component.ts | 6 ++++++ .../upload-files/upload-files.component.html | 5 +++-- .../upload-files/upload-files.component.ts | 5 +++++ .../visit-details/visit-details.component.html | 15 +++++++++++++-- src/app/app.module.ts | 2 ++ 8 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/app/app-modules/core/components/app-header/app-header.component.html b/src/app/app-modules/core/components/app-header/app-header.component.html index 4bc3d2d5..e10af027 100644 --- a/src/app/app-modules/core/components/app-header/app-header.component.html +++ b/src/app/app-modules/core/components/app-header/app-header.component.html @@ -180,6 +180,7 @@ [routerLink]="[item.work[1].link]" routerLinkActive="active" [ngClass]="{ active: updateCSSToShowActiveRegistrar }" + (click)="trackRoleButtonClick('Registrar')" > {{ item.work[1].label }} @@ -195,12 +196,18 @@ mat-button [routerLink]="[item.link]" routerLinkActive="active" + (click)="trackRoleButtonClick(item.role)" > {{ item.label }} +
  • +
    +

    {{ currentLanguageSet?.highRiskPregnancy }}

    +
  • From d0118b9f4c66845dd8d7e68d45803862e4667824 Mon Sep 17 00:00:00 2001 From: Helen Grace Karyamsetty <133211481+helenKaryamsetty@users.noreply.github.com> Date: Mon, 25 Aug 2025 13:27:12 +0530 Subject: [PATCH 45/87] common ui commit to release-3.5.0 (#178) * fix(bug): default abdm facilityId not saving issue * feat: added righ risk patients from flw to nurse worklist * Release 3.4.0 (#1) * fix(bug): hwc block matching issue * fix(bug): saving abdm facilityid in session storage * fix: updated commonui commitid (#143) Co-authored-by: Karyamsetty Helen Grace * Abdm Facility Id default not saving issue (#149) * fix: updated commonui commitid * fix(bug): default abdm facilityId not saving issue --------- Co-authored-by: Karyamsetty Helen Grace * fix: aam-1725 provisional diagnosis rendering issue fix and performance improvement by n factor * fix: amm-1724 removed commented code * Update version in pom.xml to 3.4.0 * Update pom.xml * fix: amm-1725 provisonal diagnosis in quick consult issue fix * Display HRP-marked Beneficiaries in Red for Easy Identification (#162) * fix(bug): default abdm facilityId not saving issue * feat: added righ risk patients from flw to nurse worklist --------- Co-authored-by: Karyamsetty Helen Grace --------- Co-authored-by: Karyamsetty Helen Grace Co-authored-by: Devika S <57424483+devikasuresh20@users.noreply.github.com> Co-authored-by: 5Amogh Co-authored-by: Amoghavarsh <93114621+5Amogh@users.noreply.github.com> * fix(feat): highRisk flw patients display in red colorfor doctor worklist * fix: latest common-ui commit * Update pom.xml * fix: updated latest common-ui commit --------- Co-authored-by: Karyamsetty Helen Grace Co-authored-by: Devika S <57424483+devikasuresh20@users.noreply.github.com> Co-authored-by: 5Amogh Co-authored-by: Amoghavarsh <93114621+5Amogh@users.noreply.github.com> --- Common-UI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common-UI b/Common-UI index bb57ecfa..1827cdfb 160000 --- a/Common-UI +++ b/Common-UI @@ -1 +1 @@ -Subproject commit bb57ecfac052a50bd85dc30eba1ca93335c34344 +Subproject commit 1827cdfbc1f59b7901ea6140ff6e513729e902e6 From 11c0a9fa8f0980572ead6f84817623480ce6c56c Mon Sep 17 00:00:00 2001 From: Helen Grace Karyamsetty <133211481+helenKaryamsetty@users.noreply.github.com> Date: Tue, 26 Aug 2025 10:50:42 +0530 Subject: [PATCH 46/87] Revert "Display HRP-marked Beneficiaries in Red for Easy Identification (#162)" (#179) This reverts commit 6b06aa231ee8f82cfd0f17c2c0214840a4a52664. --- .../nurse-worklist/nurse-worklist.component.css | 15 --------------- .../nurse-worklist/nurse-worklist.component.html | 11 +++-------- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/src/app/app-modules/nurse-doctor/nurse-worklist-wrapper/nurse-worklist/nurse-worklist.component.css b/src/app/app-modules/nurse-doctor/nurse-worklist-wrapper/nurse-worklist/nurse-worklist.component.css index 601d6ac8..216cea83 100644 --- a/src/app/app-modules/nurse-doctor/nurse-worklist-wrapper/nurse-worklist/nurse-worklist.component.css +++ b/src/app/app-modules/nurse-doctor/nurse-worklist-wrapper/nurse-worklist/nurse-worklist.component.css @@ -33,16 +33,6 @@ md-input-container { text-align: center; } -.visitStatus.high-risk::before { - content: ""; - position: absolute; - left: 0; - top: 0; - bottom: 1px; - width: 4px; - background: #FF0000 !important; -} - .visitStatus.first-visit::before { content: ""; position: absolute; @@ -94,11 +84,6 @@ ul li div { } -.high-risk-marker { - background: #FF0000; - margin-right: 5px !important; -} - .totalCount, .description { padding-top: 15px; diff --git a/src/app/app-modules/nurse-doctor/nurse-worklist-wrapper/nurse-worklist/nurse-worklist.component.html b/src/app/app-modules/nurse-doctor/nurse-worklist-wrapper/nurse-worklist/nurse-worklist.component.html index c5ae47d5..8ee6187b 100644 --- a/src/app/app-modules/nurse-doctor/nurse-worklist-wrapper/nurse-worklist/nurse-worklist.component.html +++ b/src/app/app-modules/nurse-doctor/nurse-worklist-wrapper/nurse-worklist/nurse-worklist.component.html @@ -62,10 +62,9 @@ mat-cell *matCellDef="let element" [ngClass]="{ - 'visitStatus': true, - 'high-risk': element?.is_high_risk === true, - 'first-visit': !element?.is_high_risk && element?.benVisitNo === 1, - 'revisit': !element?.is_high_risk && element?.benVisitNo !== 1 + visitStatus: true, + 'first-visit': element?.benVisitNo === 1, + revisit: element?.benVisitNo !== 1 }" > {{ element.sno }} @@ -257,10 +256,6 @@

    {{ currentLanguageSet?.common?.reVisit }}

    -
  • -
    -

    {{ currentLanguageSet?.highRiskPregnancy }}

    -
  • From 72d328fa84facc6d52c55f929571508af64613b7 Mon Sep 17 00:00:00 2001 From: Helen Grace Karyamsetty <133211481+helenKaryamsetty@users.noreply.github.com> Date: Tue, 26 Aug 2025 16:00:59 +0530 Subject: [PATCH 47/87] fix: aam-1725 provisional diagnosis rendering issue fix and performance improvement by n factor (#164) (#180) * fix: aam-1725 provisional diagnosis rendering issue fix and performance improvement by n factor * fix: amm-1725 provisonal diagnosis in quick consult issue fix Co-authored-by: Amoghavarsh <93114621+5Amogh@users.noreply.github.com> Co-authored-by: Mithun James From dec1fd2024226631924aea376fa522093dd136e9 Mon Sep 17 00:00:00 2001 From: Abhijeet <149177534+abhijeetw035@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:47:06 +0530 Subject: [PATCH 48/87] feat(tracking): added userID tracking after login success (#165) Co-authored-by: Abhijeet --- src/app/user-login/login/login.component.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/app/user-login/login/login.component.ts b/src/app/user-login/login/login.component.ts index 65536d54..ac026ed0 100644 --- a/src/app/user-login/login/login.component.ts +++ b/src/app/user-login/login/login.component.ts @@ -34,6 +34,7 @@ import { MasterDownloadComponent } from 'src/app/app-modules/data-sync/master-do import { SessionStorageService } from 'Common-UI/src/registrar/services/session-storage.service'; import { CaptchaComponent } from '../captcha/captcha.component'; import { environment } from 'src/environments/environment'; +import { AmritTrackingService } from 'Common-UI/src/tracking'; @Component({ selector: 'app-login-cmp', @@ -66,6 +67,7 @@ export class LoginComponent implements OnInit { private confirmationService: ConfirmationService, private fb: FormBuilder, readonly sessionstorage: SessionStorageService, + private trackingService: AmritTrackingService, ) { this._keySize = 256; this._ivSize = 128; @@ -219,6 +221,13 @@ export class LoginComponent implements OnInit { .subscribe((userLoggedIn: any) => { if (userLoggedIn.statusCode === 200) { if (userLoggedIn?.data?.previlegeObj[0]) { + this.sessionstorage.setItem( + 'loginDataResponse', + JSON.stringify(userLoggedIn.data), + ); + this.trackingService.setUserId( + userLoggedIn.data.userID, + ); this.authService.sessionExpiredHandled = false; this.sessionstorage.setItem( @@ -280,6 +289,7 @@ export class LoginComponent implements OnInit { loginDataResponse.isAuthenticated, ); this.sessionstorage.setItem('userID', loginDataResponse.userID); + this.trackingService.setUserId(loginDataResponse.userID); this.sessionstorage.setItem('userName', loginDataResponse.userName); this.sessionstorage.setItem('username', userName); this.sessionstorage.setItem('fullName', loginDataResponse.fullName); From a10bcca605fd84dd646afb649e7b1801b12f0bbf Mon Sep 17 00:00:00 2001 From: 5Amogh Date: Wed, 3 Sep 2025 19:47:09 +0530 Subject: [PATCH 49/87] feat: amm-1830 infinite scroll for provisional diagnosis --- .../general-opd-diagnosis.component.html | 8 +- .../general-opd-diagnosis.component.ts | 135 ++++++++++++-- .../ncd-care-diagnosis.component.html | 7 +- .../ncd-care-diagnosis.component.ts | 128 ++++++++++++- .../ncd-screening-diagnosis.component.html | 15 +- .../ncd-screening-diagnosis.component.ts | 130 +++++++++++++- .../pnc-diagnosis.component.html | 129 ++++++++----- .../pnc-diagnosis/pnc-diagnosis.component.ts | 170 +++++++++++++++++- .../nurse-doctor/nurse-doctor.module.ts | 2 + .../quick-consult.component.html | 27 ++- .../quick-consult/quick-consult.component.ts | 126 ++++++++++++- .../autocomplete-scroller.directive.ts | 119 ++++++++++++ 12 files changed, 906 insertions(+), 90 deletions(-) create mode 100644 src/app/app-modules/nurse-doctor/shared/utility/autocomplete-scroller.directive.ts diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.html b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.html index aa8f2a5e..f684b395 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.html +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.html @@ -38,12 +38,16 @@ (keyup)="onDiagnosisInputKeyup(diagnosisInput.value, i)" /> - + {{ diag.term }} + Loading… + End of results +
    diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.ts b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.ts index 13bc4b8a..8f9b7432 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.ts +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/general-opd-diagnosis/general-opd-diagnosis.component.ts @@ -64,6 +64,17 @@ export class GeneralOpdDiagnosisComponent designation: any; specialist = false; suggestedDiagnosisList: any = []; + private readonly PAGE_BASE = 0; + pageSize: number | undefined = undefined; + + private readonly BOOTSTRAP_MAX_PAGES = 3; // when first page can't scroll, prefill up to this many extra pages + + loadingMore: boolean[] = []; + noMore: boolean[] = []; + wantMore: boolean[] = []; + pageByIndex: number[] = []; + lastQueryByIndex: string[] = []; + constructor( private fb: FormBuilder, public httpServiceService: HttpServiceService, @@ -110,7 +121,6 @@ export class GeneralOpdDiagnosisComponent const beneficiaryRegID = this.sessionstorage.getItem('beneficiaryRegID'); const visitID = this.sessionstorage.getItem('visitID'); const visitCategory = this.sessionstorage.getItem('visitCategory'); - const specialistFlagString = this.sessionstorage.getItem('specialist_flag'); @@ -201,7 +211,6 @@ export class GeneralOpdDiagnosisComponent (diagnosisArrayList.at(i)).controls[ 'viewProvisionalDiagnosisProvided' ].disable(); - // if (diagnosisArrayList.length < savedDiagnosisData.length) this.addDiagnosis(); } } @@ -263,16 +272,28 @@ export class GeneralOpdDiagnosisComponent if (this.diagnosisSubscription) { this.diagnosisSubscription.unsubscribe(); } + if (this.MMUdiagnosisSubscription) { + this.MMUdiagnosisSubscription.unsubscribe?.(); + } } onDiagnosisInputKeyup(value: string, index: number) { - if (value.length >= 3) { - this.masterdataService - .searchDiagnosisBasedOnPageNo(value, index) - .subscribe((results: any) => { - this.suggestedDiagnosisList[index] = results?.data?.sctMaster; - }); + const term = (value || '').trim(); + + if (term.length >= 3) { + if (this.lastQueryByIndex[index] !== term) { + this.lastQueryByIndex[index] = term; + this.pageByIndex[index] = 0; // logical 0th page + this.noMore[index] = false; + this.wantMore[index] = false; + this.suggestedDiagnosisList[index] = []; + } + this.fetchPage(index, false); } else { + this.lastQueryByIndex[index] = ''; + this.pageByIndex[index] = 0; + this.noMore[index] = false; + this.wantMore[index] = false; this.suggestedDiagnosisList[index] = []; } } @@ -282,17 +303,111 @@ export class GeneralOpdDiagnosisComponent } onDiagnosisSelected(selected: any, index: number) { - // this.patientQuickConsultForm.get(['provisionalDiagnosisList', index])?.setValue(selected); const diagnosisFormArray = this.generalDiagnosisForm.get( 'provisionalDiagnosisList', ) as FormArray; const diagnosisFormGroup = diagnosisFormArray.at(index) as FormGroup; - // Set the nested and top-level fields diagnosisFormGroup.patchValue({ viewProvisionalDiagnosisProvided: selected, conceptID: selected?.conceptID || null, term: selected?.term || null, }); } + + onPanelReady(index: number, panelEl: HTMLElement) { + if (panelEl.scrollHeight <= panelEl.clientHeight && !this.noMore[index]) { + this.bootstrapUntilScrollable(index, panelEl); + } + } + + onAutoNearEnd(index: number) { + if (!this.loadingMore[index] && !this.noMore[index]) { + this.fetchPage(index, true); + } else if (this.loadingMore[index]) { + this.wantMore[index] = true; + } + } + + private bootstrapUntilScrollable(rowIndex: number, panelEl: HTMLElement) { + let fetched = 0; + + const tryFill = () => { + const scrollable = panelEl.scrollHeight > panelEl.clientHeight; + if ( + scrollable || + this.noMore[rowIndex] || + fetched >= this.BOOTSTRAP_MAX_PAGES + ) + return; + + if (this.loadingMore[rowIndex]) { + requestAnimationFrame(tryFill); + return; + } + + fetched++; + this.fetchPage(rowIndex, true); + + requestAnimationFrame(tryFill); + }; + + if (this.lastQueryByIndex[rowIndex]?.length >= 3) { + tryFill(); + } + } + + private fetchPage(index: number, append = false) { + const term = this.lastQueryByIndex[index]; + if (!term) return; + + const nextLogical = (this.pageByIndex[index] ?? 0) + (append ? 1 : 0); + const pageAtReq = nextLogical + this.PAGE_BASE; + + if (this.loadingMore[index]) return; + this.loadingMore[index] = true; + + const termAtReq = term; + + this.masterdataService + .searchDiagnosisBasedOnPageNo(termAtReq, pageAtReq) + .subscribe({ + next: (results: any) => { + if (this.lastQueryByIndex[index] !== termAtReq) return; + + const list = results?.data?.sctMaster ?? []; + + if (append) { + const existing = new Set( + (this.suggestedDiagnosisList[index] ?? []).map( + (d: any) => d.id ?? d.code ?? d.term, + ), + ); + this.suggestedDiagnosisList[index] = [ + ...(this.suggestedDiagnosisList[index] ?? []), + ...list.filter( + (d: any) => !existing.has(d.id ?? d.code ?? d.term), + ), + ]; + } else { + this.suggestedDiagnosisList[index] = list; + } + + this.pageByIndex[index] = nextLogical; + if (!list.length) { + this.noMore[index] = true; + } + }, + error: () => { + console.error('Error fetching diagnosis data'); + }, + complete: () => { + const wantChain = this.wantMore[index] && !this.noMore[index]; + this.loadingMore[index] = false; + this.wantMore[index] = false; + + if (wantChain) this.fetchPage(index, true); + }, + }); + } } diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.html b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.html index ae17aa4c..fd266224 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.html +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.html @@ -117,11 +117,14 @@

    {{ current_language_set?.casesheet?.provisionalDiag }}

    [matAutocomplete]="autoDiagnosis" (keyup)="onDiagnosisInputKeyup(diagnosisInput.value, i)" /> - + {{ diag.term }} + Loading… + End of results diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.ts b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.ts index 5807d1ef..3c0417c3 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.ts +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-care-diagnosis/ncd-care-diagnosis.component.ts @@ -63,6 +63,16 @@ export class NcdCareDiagnosisComponent implements OnInit, DoCheck, OnDestroy { attendantType: any; enableNCDCondition = false; suggestedDiagnosisList: any = []; + private readonly PAGE_BASE = 0; + pageSize: number | undefined = undefined; + + private readonly BOOTSTRAP_MAX_PAGES = 3; // when first page can't scroll, prefill up to this many extra pages + + loadingMore: boolean[] = []; + noMore: boolean[] = []; + wantMore: boolean[] = []; + pageByIndex: number[] = []; + lastQueryByIndex: string[] = []; constructor( private fb: FormBuilder, @@ -205,7 +215,6 @@ export class NcdCareDiagnosisComponent implements OnInit, DoCheck, OnDestroy { (diagnosisArrayList.at(i)).controls[ 'viewProvisionalDiagnosisProvided' ].disable(); - // if (diagnosisArrayList.length < savedDiagnosisData.length) this.addDiagnosis(); } } @@ -291,13 +300,22 @@ export class NcdCareDiagnosisComponent implements OnInit, DoCheck, OnDestroy { } } onDiagnosisInputKeyup(value: string, index: number) { - if (value.length >= 3) { - this.masterdataService - .searchDiagnosisBasedOnPageNo(value, index) - .subscribe((results: any) => { - this.suggestedDiagnosisList[index] = results?.data?.sctMaster; - }); + const term = (value || '').trim(); + + if (term.length >= 3) { + if (this.lastQueryByIndex[index] !== term) { + this.lastQueryByIndex[index] = term; + this.pageByIndex[index] = 0; // logical 0th page + this.noMore[index] = false; + this.wantMore[index] = false; + this.suggestedDiagnosisList[index] = []; + } + this.fetchPage(index, false); } else { + this.lastQueryByIndex[index] = ''; + this.pageByIndex[index] = 0; + this.noMore[index] = false; + this.wantMore[index] = false; this.suggestedDiagnosisList[index] = []; } } @@ -320,4 +338,100 @@ export class NcdCareDiagnosisComponent implements OnInit, DoCheck, OnDestroy { term: selected?.term || null, }); } + + onPanelReady(index: number, panelEl: HTMLElement) { + if (panelEl.scrollHeight <= panelEl.clientHeight && !this.noMore[index]) { + this.bootstrapUntilScrollable(index, panelEl); + } + } + + onAutoNearEnd(index: number) { + if (!this.loadingMore[index] && !this.noMore[index]) { + this.fetchPage(index, true); + } else if (this.loadingMore[index]) { + this.wantMore[index] = true; + } + } + + private bootstrapUntilScrollable(rowIndex: number, panelEl: HTMLElement) { + let fetched = 0; + + const tryFill = () => { + const scrollable = panelEl.scrollHeight > panelEl.clientHeight; + if ( + scrollable || + this.noMore[rowIndex] || + fetched >= this.BOOTSTRAP_MAX_PAGES + ) + return; + + if (this.loadingMore[rowIndex]) { + requestAnimationFrame(tryFill); + return; + } + + fetched++; + this.fetchPage(rowIndex, true); + + requestAnimationFrame(tryFill); + }; + + if (this.lastQueryByIndex[rowIndex]?.length >= 3) { + tryFill(); + } + } + + private fetchPage(index: number, append = false) { + const term = this.lastQueryByIndex[index]; + if (!term) return; + + const nextLogical = (this.pageByIndex[index] ?? 0) + (append ? 1 : 0); + const pageAtReq = nextLogical + this.PAGE_BASE; + + if (this.loadingMore[index]) return; + this.loadingMore[index] = true; + + const termAtReq = term; + + this.masterdataService + .searchDiagnosisBasedOnPageNo(termAtReq, pageAtReq) + .subscribe({ + next: (results: any) => { + if (this.lastQueryByIndex[index] !== termAtReq) return; + + const list = results?.data?.sctMaster ?? []; + + if (append) { + const existing = new Set( + (this.suggestedDiagnosisList[index] ?? []).map( + (d: any) => d.id ?? d.code ?? d.term, + ), + ); + this.suggestedDiagnosisList[index] = [ + ...(this.suggestedDiagnosisList[index] ?? []), + ...list.filter( + (d: any) => !existing.has(d.id ?? d.code ?? d.term), + ), + ]; + } else { + this.suggestedDiagnosisList[index] = list; + } + + this.pageByIndex[index] = nextLogical; + if (!list.length) { + this.noMore[index] = true; + } + }, + error: () => { + console.error('Error fetching diagnosis data'); + }, + complete: () => { + const wantChain = this.wantMore[index] && !this.noMore[index]; + this.loadingMore[index] = false; + this.wantMore[index] = false; + + if (wantChain) this.fetchPage(index, true); + }, + }); + } } diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.html b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.html index 0c10133d..a41e4aad 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.html +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.html @@ -21,12 +21,15 @@

    [matAutocomplete]="autoDiagnosis" (keyup)="onDiagnosisInputKeyup(diagnosisInput.value, i)" /> - - - {{ diag.term }} - - + + + {{ diag.term }} + + Loading… + End of results + diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.ts b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.ts index 5f4f8446..4ceaf249 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.ts +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/ncd-screening-diagnosis/ncd-screening-diagnosis.component.ts @@ -98,6 +98,16 @@ export class NcdScreeningDiagnosisComponent previousVisitConfirmedDiseasesSubscription!: Subscription; enableProvisionalDiag = false; suggestedDiagnosisList: any = []; + private readonly PAGE_BASE = 0; + pageSize: number | undefined = undefined; + + private readonly BOOTSTRAP_MAX_PAGES = 3; // when first page can't scroll, prefill up to this many extra pages + + loadingMore: boolean[] = []; + noMore: boolean[] = []; + wantMore: boolean[] = []; + pageByIndex: number[] = []; + lastQueryByIndex: string[] = []; constructor( private fb: FormBuilder, private doctorService: DoctorService, @@ -539,16 +549,28 @@ export class NcdScreeningDiagnosisComponent if (this.previousVisitConfirmedDiseasesSubscription) { this.previousVisitConfirmedDiseasesSubscription.unsubscribe(); } + if (this.MMUdiagnosisSubscription) { + this.MMUdiagnosisSubscription.unsubscribe(); + } } onDiagnosisInputKeyup(value: string, index: number) { - if (value.length >= 3) { - this.masterdataService - .searchDiagnosisBasedOnPageNo(value, index) - .subscribe((results: any) => { - this.suggestedDiagnosisList[index] = results?.data?.sctMaster; - }); + const term = (value || '').trim(); + + if (term.length >= 3) { + if (this.lastQueryByIndex[index] !== term) { + this.lastQueryByIndex[index] = term; + this.pageByIndex[index] = 0; // logical 0th page + this.noMore[index] = false; + this.wantMore[index] = false; + this.suggestedDiagnosisList[index] = []; + } + this.fetchPage(index, false); } else { + this.lastQueryByIndex[index] = ''; + this.pageByIndex[index] = 0; + this.noMore[index] = false; + this.wantMore[index] = false; this.suggestedDiagnosisList[index] = []; } } @@ -571,4 +593,100 @@ export class NcdScreeningDiagnosisComponent term: selected?.term || null, }); } + + onPanelReady(index: number, panelEl: HTMLElement) { + if (panelEl.scrollHeight <= panelEl.clientHeight && !this.noMore[index]) { + this.bootstrapUntilScrollable(index, panelEl); + } + } + + onAutoNearEnd(index: number) { + if (!this.loadingMore[index] && !this.noMore[index]) { + this.fetchPage(index, true); + } else if (this.loadingMore[index]) { + this.wantMore[index] = true; + } + } + + private bootstrapUntilScrollable(rowIndex: number, panelEl: HTMLElement) { + let fetched = 0; + + const tryFill = () => { + const scrollable = panelEl.scrollHeight > panelEl.clientHeight; + if ( + scrollable || + this.noMore[rowIndex] || + fetched >= this.BOOTSTRAP_MAX_PAGES + ) + return; + + if (this.loadingMore[rowIndex]) { + requestAnimationFrame(tryFill); + return; + } + + fetched++; + this.fetchPage(rowIndex, true); + + requestAnimationFrame(tryFill); + }; + + if (this.lastQueryByIndex[rowIndex]?.length >= 3) { + tryFill(); + } + } + + private fetchPage(index: number, append = false) { + const term = this.lastQueryByIndex[index]; + if (!term) return; + + const nextLogical = (this.pageByIndex[index] ?? 0) + (append ? 1 : 0); + const pageAtReq = nextLogical + this.PAGE_BASE; + + if (this.loadingMore[index]) return; + this.loadingMore[index] = true; + + const termAtReq = term; + + this.masterdataService + .searchDiagnosisBasedOnPageNo(termAtReq, pageAtReq) + .subscribe({ + next: (results: any) => { + if (this.lastQueryByIndex[index] !== termAtReq) return; + + const list = results?.data?.sctMaster ?? []; + + if (append) { + const existing = new Set( + (this.suggestedDiagnosisList[index] ?? []).map( + (d: any) => d.id ?? d.code ?? d.term, + ), + ); + this.suggestedDiagnosisList[index] = [ + ...(this.suggestedDiagnosisList[index] ?? []), + ...list.filter( + (d: any) => !existing.has(d.id ?? d.code ?? d.term), + ), + ]; + } else { + this.suggestedDiagnosisList[index] = list; + } + + this.pageByIndex[index] = nextLogical; + if (!list.length) { + this.noMore[index] = true; + } + }, + error: () => { + console.error('Error fetching diagnosis data'); + }, + complete: () => { + const wantChain = this.wantMore[index] && !this.noMore[index]; + this.loadingMore[index] = false; + this.wantMore[index] = false; + + if (wantChain) this.fetchPage(index, true); + }, + }); + } } diff --git a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/pnc-diagnosis/pnc-diagnosis.component.html b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/pnc-diagnosis/pnc-diagnosis.component.html index 88408df8..6ef708aa 100644 --- a/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/pnc-diagnosis/pnc-diagnosis.component.html +++ b/src/app/app-modules/nurse-doctor/case-record/general-case-record/diagnosis/pnc-diagnosis/pnc-diagnosis.component.html @@ -7,6 +7,7 @@

    {{ current_language_set?.casesheet?.provisionalDiag }}

    - search + + + + {{ diag.term }} + + Loading… + End of results +
    diff --git a/src/app/app-modules/nurse-doctor/quick-consult/quick-consult.component.ts b/src/app/app-modules/nurse-doctor/quick-consult/quick-consult.component.ts index 79de333d..e798bc28 100644 --- a/src/app/app-modules/nurse-doctor/quick-consult/quick-consult.component.ts +++ b/src/app/app-modules/nurse-doctor/quick-consult/quick-consult.component.ts @@ -169,6 +169,15 @@ export class QuickConsultComponent dataSource = new MatTableDataSource(); suggestedDiagnosisList: any = []; + private readonly PAGE_BASE = 0; + + private readonly BOOTSTRAP_MAX_PAGES = 3; // when first page can't scroll, prefill up to this many extra pages + + loadingMore: boolean[] = []; + noMore: boolean[] = []; + wantMore: boolean[] = []; + pageByIndex: number[] = []; + lastQueryByIndex: string[] = []; constructor( private fb: FormBuilder, @@ -1359,13 +1368,22 @@ export class QuickConsultComponent } onDiagnosisInputKeyup(value: string, index: number) { - if (value.length >= 3) { - this.masterdataService - .searchDiagnosisBasedOnPageNo(value, index) - .subscribe((results: any) => { - this.suggestedDiagnosisList[index] = results?.data?.sctMaster; - }); + const term = (value || '').trim(); + + if (term.length >= 3) { + if (this.lastQueryByIndex[index] !== term) { + this.lastQueryByIndex[index] = term; + this.pageByIndex[index] = 0; // logical 0th page + this.noMore[index] = false; + this.wantMore[index] = false; + this.suggestedDiagnosisList[index] = []; + } + this.fetchPage(index, false); } else { + this.lastQueryByIndex[index] = ''; + this.pageByIndex[index] = 0; + this.noMore[index] = false; + this.wantMore[index] = false; this.suggestedDiagnosisList[index] = []; } } @@ -1387,4 +1405,100 @@ export class QuickConsultComponent term: selected?.term || null, }); } + + onPanelReady(index: number, panelEl: HTMLElement) { + if (panelEl.scrollHeight <= panelEl.clientHeight && !this.noMore[index]) { + this.bootstrapUntilScrollable(index, panelEl); + } + } + + onAutoNearEnd(index: number) { + if (!this.loadingMore[index] && !this.noMore[index]) { + this.fetchPage(index, true); + } else if (this.loadingMore[index]) { + this.wantMore[index] = true; + } + } + + private bootstrapUntilScrollable(rowIndex: number, panelEl: HTMLElement) { + let fetched = 0; + + const tryFill = () => { + const scrollable = panelEl.scrollHeight > panelEl.clientHeight; + if ( + scrollable || + this.noMore[rowIndex] || + fetched >= this.BOOTSTRAP_MAX_PAGES + ) + return; + + if (this.loadingMore[rowIndex]) { + requestAnimationFrame(tryFill); + return; + } + + fetched++; + this.fetchPage(rowIndex, true); + + requestAnimationFrame(tryFill); + }; + + if (this.lastQueryByIndex[rowIndex]?.length >= 3) { + tryFill(); + } + } + + private fetchPage(index: number, append = false) { + const term = this.lastQueryByIndex[index]; + if (!term) return; + + const nextLogical = (this.pageByIndex[index] ?? 0) + (append ? 1 : 0); + const pageAtReq = nextLogical + this.PAGE_BASE; + + if (this.loadingMore[index]) return; + this.loadingMore[index] = true; + + const termAtReq = term; + + this.masterdataService + .searchDiagnosisBasedOnPageNo(termAtReq, pageAtReq) + .subscribe({ + next: (results: any) => { + if (this.lastQueryByIndex[index] !== termAtReq) return; + + const list = results?.data?.sctMaster ?? []; + + if (append) { + const existing = new Set( + (this.suggestedDiagnosisList[index] ?? []).map( + (d: any) => d.id ?? d.code ?? d.term, + ), + ); + this.suggestedDiagnosisList[index] = [ + ...(this.suggestedDiagnosisList[index] ?? []), + ...list.filter( + (d: any) => !existing.has(d.id ?? d.code ?? d.term), + ), + ]; + } else { + this.suggestedDiagnosisList[index] = list; + } + + this.pageByIndex[index] = nextLogical; + if (!list.length) { + this.noMore[index] = true; + } + }, + error: () => { + console.error('Error fetching diagnosis data'); + }, + complete: () => { + const wantChain = this.wantMore[index] && !this.noMore[index]; + this.loadingMore[index] = false; + this.wantMore[index] = false; + + if (wantChain) this.fetchPage(index, true); + }, + }); + } } diff --git a/src/app/app-modules/nurse-doctor/shared/utility/autocomplete-scroller.directive.ts b/src/app/app-modules/nurse-doctor/shared/utility/autocomplete-scroller.directive.ts new file mode 100644 index 00000000..629a9966 --- /dev/null +++ b/src/app/app-modules/nurse-doctor/shared/utility/autocomplete-scroller.directive.ts @@ -0,0 +1,119 @@ +/* + * AMRIT – Accessible Medical Records via Integrated Technology + * Integrated EHR (Electronic Health Records) Solution + * + * Copyright (C) "Piramal Swasthya Management and Research Institute" + * + * This file is part of AMRIT. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see https://www.gnu.org/licenses/. + */ +import { + Directive, + EventEmitter, + NgZone, + OnDestroy, + AfterViewInit, + Output, + Input, +} from '@angular/core'; +import { MatAutocomplete } from '@angular/material/autocomplete'; +import { Subscription } from 'rxjs'; + +@Directive({ + selector: '[appAutocompleteScroller]', +}) +export class AutocompleteScrollerDirective implements AfterViewInit, OnDestroy { + @Input() threshold = 0.6; // 60% down + @Output() nearEnd = new EventEmitter(); + @Output() panelReady = new EventEmitter(); // lets component bootstrap if no overflow + + private subs: Subscription[] = []; + private scrollListener?: (e: Event) => void; + + constructor( + private ac: MatAutocomplete, + private ngZone: NgZone, + ) {} + + ngAfterViewInit(): void { + // Fired when the overlay panel opens + const openedSub = this.ac.opened.subscribe(() => { + this.waitForPanel((panelEl) => { + this.panelReady.emit(panelEl); // tell component the panel is live (for bootstrap) + + // attach scroll listener + this.ngZone.runOutsideAngular(() => { + this.scrollListener = () => { + if (panelEl.scrollHeight <= panelEl.clientHeight) return; // no overflow yet + const ratio = + (panelEl.scrollTop + panelEl.clientHeight) / panelEl.scrollHeight; + if (ratio >= this.threshold) { + // hop back into Angular so change detection works + this.ngZone.run(() => this.nearEnd.emit()); + } + }; + panelEl.addEventListener('scroll', this.scrollListener!, { + passive: true, + }); + }); + }); + }); + + // Fired when the panel closes + const closedSub = this.ac.closed.subscribe(() => { + const panelEl = this.getPanelEl(); + if (panelEl && this.scrollListener) { + panelEl.removeEventListener('scroll', this.scrollListener); + this.scrollListener = undefined; + } + }); + + this.subs.push(openedSub, closedSub); + } + + ngOnDestroy(): void { + this.subs.forEach((s) => s.unsubscribe()); + const panelEl = this.getPanelEl(); + if (panelEl && this.scrollListener) { + panelEl.removeEventListener('scroll', this.scrollListener); + this.scrollListener = undefined; + } + } + + private getPanelEl(): HTMLElement | null { + // Newer Material exposes panel element + const anyAc = this.ac as any; + const el = anyAc?.panel?.nativeElement as HTMLElement | null | undefined; + if (el) return el; + + // Fallback by id + const id = anyAc?.id as string | undefined; + return id ? (document.getElementById(id) as HTMLElement | null) : null; + } + + private waitForPanel(cb: (panelEl: HTMLElement) => void) { + let tries = 0; + const maxTries = 10; + const tick = () => { + const el = this.getPanelEl(); + if (el) { + cb(el); + return; + } + if (tries++ < maxTries) requestAnimationFrame(tick); + }; + requestAnimationFrame(tick); + } +} From eedbf98ee7528931f77e7e717f3eda197562333f Mon Sep 17 00:00:00 2001 From: 5Amogh Date: Thu, 4 Sep 2025 15:07:26 +0530 Subject: [PATCH 50/87] feat: amm56-1337 work in progress for feedback module --- Common-UI | 2 +- src/app/app-routing.module.ts | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Common-UI b/Common-UI index 1827cdfb..d6ef3846 160000 --- a/Common-UI +++ b/Common-UI @@ -1 +1 @@ -Subproject commit 1827cdfbc1f59b7901ea6140ff6e513729e902e6 +Subproject commit d6ef38461138fe39666edb6cdf68f7a08ecc55c8 diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 9bc5555c..06d5041b 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -109,6 +109,13 @@ const routes: Routes = [ (module) => module.DataSYNCModule, ), }, + { + path: 'feedback', + loadChildren: () => + import('Common-UI/src/feedback/feedback.module').then( + (m) => m.FeedbackModule, + ), + }, ]; @NgModule({ From 52e97b8f56f323dd04ee5420619760c13904b367 Mon Sep 17 00:00:00 2001 From: 5Amogh Date: Fri, 5 Sep 2025 07:29:45 +0530 Subject: [PATCH 51/87] fix: deployment issue fix --- Common-UI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common-UI b/Common-UI index 1827cdfb..3d17432e 160000 --- a/Common-UI +++ b/Common-UI @@ -1 +1 @@ -Subproject commit 1827cdfbc1f59b7901ea6140ff6e513729e902e6 +Subproject commit 3d17432e2138b2e9a7e2d4bffc5b3e24a1d68e6d From f9c285f917a62b00bfa0e18e9d6665a0f0f28aa4 Mon Sep 17 00:00:00 2001 From: SnehaRH Date: Fri, 5 Sep 2025 12:36:59 +0530 Subject: [PATCH 52/87] fix: amm-1478 fixed Preview casessheet problem in previous history --- .../core/services/http-service.service.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/app/app-modules/core/services/http-service.service.ts b/src/app/app-modules/core/services/http-service.service.ts index b305e09e..ab249160 100644 --- a/src/app/app-modules/core/services/http-service.service.ts +++ b/src/app/app-modules/core/services/http-service.service.ts @@ -22,7 +22,13 @@ export class HttpServiceService { constructor( private _http: HttpClient, private http: HttpClient, - ) {} + ) { + const storedLang = localStorage.getItem('appLanguage'); + this.language = storedLang ? JSON.parse(storedLang) : null; + + this.appCurrentLanguge = new BehaviorSubject(this.language); + this.currentLangugae$ = this.appCurrentLanguge.asObservable(); + } fetchLanguageSet() { console.log('Here i come'); @@ -34,10 +40,8 @@ export class HttpServiceService { } getCurrentLanguage(response: any) { - console.log('here at one', response); this.language = response; - console.log('teste', this.language); this.appCurrentLanguge.next(response); - console.log('here at two', this.appCurrentLanguge.value); + localStorage.setItem('appLanguage', JSON.stringify(response)); } } From 3a3a5765ec600d0b6a70c18f94144eaf190cbb50 Mon Sep 17 00:00:00 2001 From: SnehaRH <77656297+snehar-nd@users.noreply.github.com> Date: Fri, 5 Sep 2025 13:22:53 +0530 Subject: [PATCH 53/87] fix: amm-1478 fixed Preview casessheet problem in previous history (#184) --- .../app-modules/core/services/http-service.service.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/app/app-modules/core/services/http-service.service.ts b/src/app/app-modules/core/services/http-service.service.ts index b305e09e..9b850e68 100644 --- a/src/app/app-modules/core/services/http-service.service.ts +++ b/src/app/app-modules/core/services/http-service.service.ts @@ -22,7 +22,10 @@ export class HttpServiceService { constructor( private _http: HttpClient, private http: HttpClient, - ) {} + ) { + const storedLang = localStorage.getItem('appLanguage'); + this.language = storedLang ? JSON.parse(storedLang) : null; + } fetchLanguageSet() { console.log('Here i come'); @@ -34,10 +37,8 @@ export class HttpServiceService { } getCurrentLanguage(response: any) { - console.log('here at one', response); this.language = response; - console.log('teste', this.language); + localStorage.setItem('appLanguage', JSON.stringify(response)); this.appCurrentLanguge.next(response); - console.log('here at two', this.appCurrentLanguge.value); } } From a9b33547254ef20bb12688c73845e386d96112fe Mon Sep 17 00:00:00 2001 From: SnehaRH Date: Fri, 5 Sep 2025 18:56:08 +0530 Subject: [PATCH 54/87] fix: amm-1785 doctor signature in casesheet --- .../doctor-diagnosis-case-sheet.component.ts | 27 +++++++++---------- .../shared/services/doctor.service.ts | 6 ++--- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/app/app-modules/nurse-doctor/case-sheet/general-case-sheet/doctor-diagnosis-case-sheet/doctor-diagnosis-case-sheet.component.ts b/src/app/app-modules/nurse-doctor/case-sheet/general-case-sheet/doctor-diagnosis-case-sheet/doctor-diagnosis-case-sheet.component.ts index efcede90..4dff55af 100644 --- a/src/app/app-modules/nurse-doctor/case-sheet/general-case-sheet/doctor-diagnosis-case-sheet/doctor-diagnosis-case-sheet.component.ts +++ b/src/app/app-modules/nurse-doctor/case-sheet/general-case-sheet/doctor-diagnosis-case-sheet/doctor-diagnosis-case-sheet.component.ts @@ -577,20 +577,19 @@ export class DoctorDiagnosisCaseSheetComponent return len > 0 ? new Array(len).join('0') + this : this; } downloadSign() { - if (this.beneficiaryDetails && this.beneficiaryDetails.tCSpecialistUserID) { - const tCSpecialistUserID = this.beneficiaryDetails.tCSpecialistUserID; - this.doctorService.downloadSign(tCSpecialistUserID).subscribe( - (response: any) => { - const blob = new Blob([response], { type: response.type }); - this.showSign(blob); - }, - (err: any) => { - console.log('error'); - }, - ); - } else { - console.log('No tCSpecialistUserID found'); - } + const userId = + this.beneficiaryDetails?.tCSpecialistUserID ?? + this.sessionstorage.getItem('userID'); + + this.doctorService.downloadSign(userId).subscribe( + (response: any) => { + const blob = new Blob([response], { type: response.type }); + this.showSign(blob); + }, + (err: any) => { + console.error('Error downloading signature:', err); + }, + ); } showSign(blob: any) { const reader = new FileReader(); diff --git a/src/app/app-modules/nurse-doctor/shared/services/doctor.service.ts b/src/app/app-modules/nurse-doctor/shared/services/doctor.service.ts index 9281c5db..38446256 100644 --- a/src/app/app-modules/nurse-doctor/shared/services/doctor.service.ts +++ b/src/app/app-modules/nurse-doctor/shared/services/doctor.service.ts @@ -3015,9 +3015,9 @@ export class DoctorService { } /* Doctor Signature download */ downloadSign(userID: any) { - return this.http - .get(environment.downloadSignUrl + userID, { responseType: 'blob' }) - .pipe(map((res: any) => res.blob())); + return this.http.get(environment.downloadSignUrl + userID, { + responseType: 'blob' as 'json', + }); } getIDRSDetails(beneficiaryID: string, visitID: string): Observable { const visitCategory = this.sessionstorage.getItem('visitCategory'); From 09f024460bc899d3f0ce83d510948db5afc48173 Mon Sep 17 00:00:00 2001 From: SnehaRH <77656297+snehar-nd@users.noreply.github.com> Date: Tue, 9 Sep 2025 13:29:27 +0530 Subject: [PATCH 55/87] fix: update pom.xml 3.4.0 to 3.4.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0f8898ab..608c5629 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.iemr.aam-ui aam-ui - 3.4.0 + 3.4.1 AAM-UI Piramal - AAM: Module ui war From e68be945fa8c3bc183ac59b14c8a7490d35de4a2 Mon Sep 17 00:00:00 2001 From: 5Amogh Date: Tue, 9 Sep 2025 20:59:38 +0530 Subject: [PATCH 56/87] feat: amm-1337 work in progress for feedback module --- Common-UI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common-UI b/Common-UI index d6ef3846..4235e464 160000 --- a/Common-UI +++ b/Common-UI @@ -1 +1 @@ -Subproject commit d6ef38461138fe39666edb6cdf68f7a08ecc55c8 +Subproject commit 4235e46491d03a6232ed2b80954abbbc72933ca5 From 931e06cc205828d199d2e6997c019b7fab9f876c Mon Sep 17 00:00:00 2001 From: 5Amogh Date: Wed, 10 Sep 2025 20:07:09 +0530 Subject: [PATCH 57/87] feat: amm-1337 feedback module integration --- Common-UI | 2 +- .../app-footer/app-footer.component.html | 18 ++++++++++-- .../app-header/app-header.component.ts | 16 +++++----- .../core/services/http-interceptor.service.ts | 29 +++++++++++++------ 4 files changed, 45 insertions(+), 20 deletions(-) diff --git a/Common-UI b/Common-UI index 4235e464..b8a0d220 160000 --- a/Common-UI +++ b/Common-UI @@ -1 +1 @@ -Subproject commit 4235e46491d03a6232ed2b80954abbbc72933ca5 +Subproject commit b8a0d220a5aae508ca04b56f6e6911fd48326704 diff --git a/src/app/app-modules/core/components/app-footer/app-footer.component.html b/src/app/app-modules/core/components/app-footer/app-footer.component.html index e0e99a6d..2a3b4e35 100644 --- a/src/app/app-modules/core/components/app-footer/app-footer.component.html +++ b/src/app/app-modules/core/components/app-footer/app-footer.component.html @@ -1,6 +1,6 @@