dhomie-app 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/dhomie-app-all-polls.page-C4KixPzj.mjs +127 -0
- package/fesm2022/dhomie-app-all-polls.page-C4KixPzj.mjs.map +1 -0
- package/fesm2022/dhomie-app-all-polls.routes-PQj6MzRg.mjs +18 -0
- package/fesm2022/dhomie-app-all-polls.routes-PQj6MzRg.mjs.map +1 -0
- package/fesm2022/dhomie-app-all-schedules.page-Ddzmws9b.mjs +221 -0
- package/fesm2022/dhomie-app-all-schedules.page-Ddzmws9b.mjs.map +1 -0
- package/fesm2022/dhomie-app-all-schedules.routes-CIQfknrS.mjs +18 -0
- package/fesm2022/dhomie-app-all-schedules.routes-CIQfknrS.mjs.map +1 -0
- package/fesm2022/dhomie-app-apartment.page-C3iAYxmx.mjs +725 -0
- package/fesm2022/dhomie-app-apartment.page-C3iAYxmx.mjs.map +1 -0
- package/fesm2022/dhomie-app-apartment.routes-BT-QQjCc.mjs +15 -0
- package/fesm2022/dhomie-app-apartment.routes-BT-QQjCc.mjs.map +1 -0
- package/fesm2022/dhomie-app-apartment.service-D80oK8mY.mjs +78 -0
- package/fesm2022/dhomie-app-apartment.service-D80oK8mY.mjs.map +1 -0
- package/fesm2022/dhomie-app-chat-create.page-BlttwdJX.mjs +286 -0
- package/fesm2022/dhomie-app-chat-create.page-BlttwdJX.mjs.map +1 -0
- package/fesm2022/dhomie-app-chat.page-dc3ic19h.mjs +426 -0
- package/fesm2022/dhomie-app-chat.page-dc3ic19h.mjs.map +1 -0
- package/fesm2022/dhomie-app-chat.routes-BKOlvP3Z.mjs +31 -0
- package/fesm2022/dhomie-app-chat.routes-BKOlvP3Z.mjs.map +1 -0
- package/fesm2022/dhomie-app-chat.service-XCaGObkk.mjs +48 -0
- package/fesm2022/dhomie-app-chat.service-XCaGObkk.mjs.map +1 -0
- package/fesm2022/dhomie-app-construction-updates.page-DWnUfrmq.mjs +172 -0
- package/fesm2022/dhomie-app-construction-updates.page-DWnUfrmq.mjs.map +1 -0
- package/fesm2022/dhomie-app-construction-updates.routes-DazakF3d.mjs +18 -0
- package/fesm2022/dhomie-app-construction-updates.routes-DazakF3d.mjs.map +1 -0
- package/fesm2022/dhomie-app-construction-updates.service-La7hyNbH.mjs +21 -0
- package/fesm2022/dhomie-app-construction-updates.service-La7hyNbH.mjs.map +1 -0
- package/fesm2022/dhomie-app-dhomie-app-D398ZdDA.mjs +2323 -0
- package/fesm2022/dhomie-app-dhomie-app-D398ZdDA.mjs.map +1 -0
- package/fesm2022/dhomie-app-documents.page-D6Z-bBJU.mjs +175 -0
- package/fesm2022/dhomie-app-documents.page-D6Z-bBJU.mjs.map +1 -0
- package/fesm2022/dhomie-app-documents.routes-mhJqJ15p.mjs +18 -0
- package/fesm2022/dhomie-app-documents.routes-mhJqJ15p.mjs.map +1 -0
- package/fesm2022/dhomie-app-edit-profile.page-Di1u1zrr.mjs +119 -0
- package/fesm2022/dhomie-app-edit-profile.page-Di1u1zrr.mjs.map +1 -0
- package/fesm2022/dhomie-app-edit-profile.routes-rhqFhnp8.mjs +18 -0
- package/fesm2022/dhomie-app-edit-profile.routes-rhqFhnp8.mjs.map +1 -0
- package/fesm2022/dhomie-app-icon.component-DS9P4GWG.mjs +281 -0
- package/fesm2022/dhomie-app-icon.component-DS9P4GWG.mjs.map +1 -0
- package/fesm2022/dhomie-app-index-opgBKfPr.mjs +637 -0
- package/fesm2022/dhomie-app-index-opgBKfPr.mjs.map +1 -0
- package/fesm2022/dhomie-app-language-selection.page-BPzfoyYc.mjs +106 -0
- package/fesm2022/dhomie-app-language-selection.page-BPzfoyYc.mjs.map +1 -0
- package/fesm2022/dhomie-app-language-selection.routes-e7grvD6i.mjs +18 -0
- package/fesm2022/dhomie-app-language-selection.routes-e7grvD6i.mjs.map +1 -0
- package/fesm2022/dhomie-app-layout-action.service-FCahocPH.mjs +23 -0
- package/fesm2022/dhomie-app-layout-action.service-FCahocPH.mjs.map +1 -0
- package/fesm2022/dhomie-app-layout-title.service-sNCGba1f.mjs +23 -0
- package/fesm2022/dhomie-app-layout-title.service-sNCGba1f.mjs.map +1 -0
- package/fesm2022/dhomie-app-loading.component-BUk3sOe8.mjs +22 -0
- package/fesm2022/dhomie-app-loading.component-BUk3sOe8.mjs.map +1 -0
- package/fesm2022/dhomie-app-main-layout.component-YSEUIffq.mjs +154 -0
- package/fesm2022/dhomie-app-main-layout.component-YSEUIffq.mjs.map +1 -0
- package/fesm2022/dhomie-app-new-request.page-DRT_t7aC.mjs +117 -0
- package/fesm2022/dhomie-app-new-request.page-DRT_t7aC.mjs.map +1 -0
- package/fesm2022/dhomie-app-new-request.routes-VOyDSZP3.mjs +18 -0
- package/fesm2022/dhomie-app-new-request.routes-VOyDSZP3.mjs.map +1 -0
- package/fesm2022/dhomie-app-notifications.page-C5ulrqTq.mjs +173 -0
- package/fesm2022/dhomie-app-notifications.page-C5ulrqTq.mjs.map +1 -0
- package/fesm2022/dhomie-app-notifications.routes-nyJGUyAZ.mjs +18 -0
- package/fesm2022/dhomie-app-notifications.routes-nyJGUyAZ.mjs.map +1 -0
- package/fesm2022/dhomie-app-pdf-viewer.page-UpiOuN3L.mjs +64 -0
- package/fesm2022/dhomie-app-pdf-viewer.page-UpiOuN3L.mjs.map +1 -0
- package/fesm2022/dhomie-app-pdf-viewer.routes-CWjKohDO.mjs +18 -0
- package/fesm2022/dhomie-app-pdf-viewer.routes-CWjKohDO.mjs.map +1 -0
- package/fesm2022/dhomie-app-poll-card.component-BUyBeXNY.mjs +128 -0
- package/fesm2022/dhomie-app-poll-card.component-BUyBeXNY.mjs.map +1 -0
- package/fesm2022/dhomie-app-profile.page-BX8kXTDT.mjs +159 -0
- package/fesm2022/dhomie-app-profile.page-BX8kXTDT.mjs.map +1 -0
- package/fesm2022/dhomie-app-profile.routes-CA1sUclX.mjs +15 -0
- package/fesm2022/dhomie-app-profile.routes-CA1sUclX.mjs.map +1 -0
- package/fesm2022/dhomie-app-request-detail.page-DOxZ4oek.mjs +200 -0
- package/fesm2022/dhomie-app-request-detail.page-DOxZ4oek.mjs.map +1 -0
- package/fesm2022/dhomie-app-request-detail.routes-CMe1mA7I.mjs +18 -0
- package/fesm2022/dhomie-app-request-detail.routes-CMe1mA7I.mjs.map +1 -0
- package/fesm2022/dhomie-app-requests.page-DkPF4jxY.mjs +318 -0
- package/fesm2022/dhomie-app-requests.page-DkPF4jxY.mjs.map +1 -0
- package/fesm2022/dhomie-app-requests.routes-BetidN1k.mjs +17 -0
- package/fesm2022/dhomie-app-requests.routes-BetidN1k.mjs.map +1 -0
- package/fesm2022/dhomie-app-requests.service-Boe4_VEq.mjs +77 -0
- package/fesm2022/dhomie-app-requests.service-Boe4_VEq.mjs.map +1 -0
- package/fesm2022/dhomie-app-select.component-B8-K6prI.mjs +48 -0
- package/fesm2022/dhomie-app-select.component-B8-K6prI.mjs.map +1 -0
- package/fesm2022/dhomie-app-top-header.component-DqkZjgM1.mjs +92 -0
- package/fesm2022/dhomie-app-top-header.component-DqkZjgM1.mjs.map +1 -0
- package/fesm2022/dhomie-app.mjs +2 -608
- package/index.d.ts +65 -17
- package/package.json +8 -2
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, DestroyRef, signal, computed, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { ActivatedRoute } from '@angular/router';
|
|
5
|
+
import { IonContent, IonInfiniteScroll, IonInfiniteScrollContent } from '@ionic/angular/standalone';
|
|
6
|
+
import { TranslatePipe } from '@ngx-translate/core';
|
|
7
|
+
import { catchError, of, map, switchMap } from 'rxjs';
|
|
8
|
+
import { D as DhLoadingComponent } from './dhomie-app-loading.component-BUk3sOe8.mjs';
|
|
9
|
+
import { a as DhPollCardComponent } from './dhomie-app-poll-card.component-BUyBeXNY.mjs';
|
|
10
|
+
import { d as AllPollsService, P as PollNotificationService } from './dhomie-app-dhomie-app-D398ZdDA.mjs';
|
|
11
|
+
|
|
12
|
+
const PAGE_SIZE = 20;
|
|
13
|
+
class AllPollsPage {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.activatedRoute = inject(ActivatedRoute);
|
|
16
|
+
this.destroyRef = inject(DestroyRef);
|
|
17
|
+
this.allPollsService = inject(AllPollsService);
|
|
18
|
+
this.pollNotification = inject(PollNotificationService);
|
|
19
|
+
this.currentCommunityId = signal('', ...(ngDevMode ? [{ debugName: "currentCommunityId" }] : []));
|
|
20
|
+
this.polls = signal(this.readSeedPolls() ?? [], ...(ngDevMode ? [{ debugName: "polls" }] : []));
|
|
21
|
+
this.status = signal(this.polls().length ? 'success' : 'idle', ...(ngDevMode ? [{ debugName: "status" }] : []));
|
|
22
|
+
this.isLoadingMore = signal(false, ...(ngDevMode ? [{ debugName: "isLoadingMore" }] : []));
|
|
23
|
+
this.hasMore = signal(false, ...(ngDevMode ? [{ debugName: "hasMore" }] : []));
|
|
24
|
+
this.isLoading = computed(() => this.status() === 'loading', ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
|
|
25
|
+
this.hasError = computed(() => this.status() === 'error', ...(ngDevMode ? [{ debugName: "hasError" }] : []));
|
|
26
|
+
this.hasCommunityContext = computed(() => !!this.currentCommunityId(), ...(ngDevMode ? [{ debugName: "hasCommunityContext" }] : []));
|
|
27
|
+
}
|
|
28
|
+
onVote(pollId, optionId) {
|
|
29
|
+
const communityId = this.currentCommunityId();
|
|
30
|
+
if (!communityId)
|
|
31
|
+
return;
|
|
32
|
+
this.allPollsService
|
|
33
|
+
.submitVote(pollId, optionId, communityId)
|
|
34
|
+
.pipe(catchError(() => of(null)), takeUntilDestroyed(this.destroyRef))
|
|
35
|
+
.subscribe((result) => {
|
|
36
|
+
if (result !== null) {
|
|
37
|
+
this.polls.update((items) => this.allPollsService.vote(items, pollId, optionId));
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
onChangeAnswer(pollId) {
|
|
42
|
+
this.polls.update((items) => this.allPollsService.resetVote(items, pollId));
|
|
43
|
+
}
|
|
44
|
+
onIonInfinite(event) {
|
|
45
|
+
const communityId = this.currentCommunityId();
|
|
46
|
+
if (!communityId || this.isLoadingMore())
|
|
47
|
+
return;
|
|
48
|
+
this.isLoadingMore.set(true);
|
|
49
|
+
this.allPollsService
|
|
50
|
+
.getPolls(communityId, { skip: this.polls().length, take: PAGE_SIZE })
|
|
51
|
+
.pipe(catchError(() => of([])), takeUntilDestroyed(this.destroyRef))
|
|
52
|
+
.subscribe((newPolls) => {
|
|
53
|
+
this.polls.update((current) => [...current, ...newPolls]);
|
|
54
|
+
this.hasMore.set(newPolls.length === PAGE_SIZE);
|
|
55
|
+
this.isLoadingMore.set(false);
|
|
56
|
+
event.target.complete();
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
ngOnInit() {
|
|
60
|
+
this.listenForNewPolls();
|
|
61
|
+
this.activatedRoute.queryParamMap
|
|
62
|
+
.pipe(map((params) => params.get('communityId') ?? ''), switchMap((communityId) => {
|
|
63
|
+
this.currentCommunityId.set(communityId);
|
|
64
|
+
if (!communityId) {
|
|
65
|
+
this.status.set('idle');
|
|
66
|
+
return of(null);
|
|
67
|
+
}
|
|
68
|
+
this.status.set('loading');
|
|
69
|
+
return this.allPollsService
|
|
70
|
+
.getPolls(communityId, { skip: 0, take: PAGE_SIZE })
|
|
71
|
+
.pipe(catchError(() => {
|
|
72
|
+
this.status.set('error');
|
|
73
|
+
return of([]);
|
|
74
|
+
}));
|
|
75
|
+
}), takeUntilDestroyed(this.destroyRef))
|
|
76
|
+
.subscribe((polls) => {
|
|
77
|
+
if (polls === null) {
|
|
78
|
+
this.polls.set([]);
|
|
79
|
+
this.hasMore.set(false);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
this.polls.set(polls);
|
|
83
|
+
this.hasMore.set(polls.length === PAGE_SIZE);
|
|
84
|
+
if (this.status() !== 'error') {
|
|
85
|
+
this.status.set('success');
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
listenForNewPolls() {
|
|
90
|
+
this.pollNotification.pollCreated$
|
|
91
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
92
|
+
.subscribe(({ pollId }) => {
|
|
93
|
+
const communityId = this.currentCommunityId();
|
|
94
|
+
if (!communityId || !pollId) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
this.allPollsService
|
|
98
|
+
.getPoll(communityId, pollId)
|
|
99
|
+
.pipe(catchError(() => of(null)), takeUntilDestroyed(this.destroyRef))
|
|
100
|
+
.subscribe((poll) => {
|
|
101
|
+
if (poll) {
|
|
102
|
+
this.polls.update((current) => [poll, ...current]);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
readSeedPolls() {
|
|
108
|
+
const state = history.state;
|
|
109
|
+
return state?.polls ?? null;
|
|
110
|
+
}
|
|
111
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AllPollsPage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
112
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: AllPollsPage, isStandalone: true, selector: "dh-all-polls-page", ngImport: i0, template: "<dh-loading [isOpen]=\"isLoading()\" />\n\n<ion-content [fullscreen]=\"true\" class=\"dh-all-polls-content\">\n <div class=\"dh-all-polls-container\">\n @if (hasError()) {\n <p class=\"dh-all-polls-state-text\">{{ 'states.loadFailed' | translate }}</p>\n } @else if (polls().length > 0) {\n @for (poll of polls(); track poll.id) {\n <dh-poll-card\n [poll]=\"poll\"\n (vote)=\"onVote(poll.id, $event)\"\n (changeAnswer)=\"onChangeAnswer(poll.id)\"\n ></dh-poll-card>\n }\n } @else {\n <p class=\"dh-all-polls-state-text\">{{ 'polls.empty' | translate }}</p>\n }\n </div>\n\n <ion-infinite-scroll [disabled]=\"!hasMore()\" (ionInfinite)=\"onIonInfinite($event)\">\n <ion-infinite-scroll-content />\n </ion-infinite-scroll>\n</ion-content>\n", dependencies: [{ kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonInfiniteScroll, selector: "ion-infinite-scroll", inputs: ["disabled", "position", "threshold"] }, { kind: "component", type: IonInfiniteScrollContent, selector: "ion-infinite-scroll-content", inputs: ["loadingSpinner", "loadingText"] }, { kind: "component", type: DhPollCardComponent, selector: "dh-poll-card", inputs: ["poll"], outputs: ["vote", "changeAnswer"] }, { kind: "component", type: DhLoadingComponent, selector: "dh-loading", inputs: ["trigger", "isOpen", "duration", "spinner", "inline"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
113
|
+
}
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AllPollsPage, decorators: [{
|
|
115
|
+
type: Component,
|
|
116
|
+
args: [{ selector: 'dh-all-polls-page', standalone: true, imports: [
|
|
117
|
+
IonContent,
|
|
118
|
+
IonInfiniteScroll,
|
|
119
|
+
IonInfiniteScrollContent,
|
|
120
|
+
TranslatePipe,
|
|
121
|
+
DhPollCardComponent,
|
|
122
|
+
DhLoadingComponent,
|
|
123
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<dh-loading [isOpen]=\"isLoading()\" />\n\n<ion-content [fullscreen]=\"true\" class=\"dh-all-polls-content\">\n <div class=\"dh-all-polls-container\">\n @if (hasError()) {\n <p class=\"dh-all-polls-state-text\">{{ 'states.loadFailed' | translate }}</p>\n } @else if (polls().length > 0) {\n @for (poll of polls(); track poll.id) {\n <dh-poll-card\n [poll]=\"poll\"\n (vote)=\"onVote(poll.id, $event)\"\n (changeAnswer)=\"onChangeAnswer(poll.id)\"\n ></dh-poll-card>\n }\n } @else {\n <p class=\"dh-all-polls-state-text\">{{ 'polls.empty' | translate }}</p>\n }\n </div>\n\n <ion-infinite-scroll [disabled]=\"!hasMore()\" (ionInfinite)=\"onIonInfinite($event)\">\n <ion-infinite-scroll-content />\n </ion-infinite-scroll>\n</ion-content>\n" }]
|
|
124
|
+
}] });
|
|
125
|
+
|
|
126
|
+
export { AllPollsPage };
|
|
127
|
+
//# sourceMappingURL=dhomie-app-all-polls.page-C4KixPzj.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dhomie-app-all-polls.page-C4KixPzj.mjs","sources":["../../../projects/dhomie-app/src/lib/pages/all-polls/all-polls.page.ts","../../../projects/dhomie-app/src/lib/pages/all-polls/all-polls.page.html"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n OnInit,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n IonContent,\n IonInfiniteScroll,\n IonInfiniteScrollContent,\n InfiniteScrollCustomEvent,\n} from '@ionic/angular/standalone';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { catchError, map, of, switchMap } from 'rxjs';\nimport { DhLoadingComponent } from '../../components/loading/loading.component';\nimport { DhPollCardComponent } from '../../components/poll-card/poll-card.component';\nimport { DhPoll } from '../../components/poll-card/poll-card.model';\nimport { PollNotificationService } from '../../shared/signalr/poll-notification.service';\nimport { AllPollsNavigationState } from './all-polls.models';\nimport { AllPollsService } from './all-polls.service';\n\nconst PAGE_SIZE = 20;\n\n@Component({\n selector: 'dh-all-polls-page',\n standalone: true,\n imports: [\n IonContent,\n IonInfiniteScroll,\n IonInfiniteScrollContent,\n TranslatePipe,\n DhPollCardComponent,\n DhLoadingComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './all-polls.page.html',\n})\nexport class AllPollsPage implements OnInit {\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly destroyRef = inject(DestroyRef);\n private readonly allPollsService = inject(AllPollsService);\n private readonly pollNotification = inject(PollNotificationService);\n private readonly currentCommunityId = signal('');\n\n readonly polls = signal<DhPoll[]>(this.readSeedPolls() ?? []);\n readonly status = signal<'idle' | 'loading' | 'success' | 'error'>(\n this.polls().length ? 'success' : 'idle',\n );\n readonly isLoadingMore = signal(false);\n readonly hasMore = signal(false);\n\n readonly isLoading = computed(() => this.status() === 'loading');\n readonly hasError = computed(() => this.status() === 'error');\n readonly hasCommunityContext = computed(() => !!this.currentCommunityId());\n\n onVote(pollId: string, optionId: string): void {\n const communityId = this.currentCommunityId();\n if (!communityId) return;\n\n this.allPollsService\n .submitVote(pollId, optionId, communityId)\n .pipe(\n catchError(() => of(null)),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((result) => {\n if (result !== null) {\n this.polls.update((items) =>\n this.allPollsService.vote(items, pollId, optionId),\n );\n }\n });\n }\n\n onChangeAnswer(pollId: string): void {\n this.polls.update((items) => this.allPollsService.resetVote(items, pollId));\n }\n\n onIonInfinite(event: InfiniteScrollCustomEvent): void {\n const communityId = this.currentCommunityId();\n if (!communityId || this.isLoadingMore()) return;\n\n this.isLoadingMore.set(true);\n\n this.allPollsService\n .getPolls(communityId, { skip: this.polls().length, take: PAGE_SIZE })\n .pipe(\n catchError(() => of<DhPoll[]>([])),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((newPolls) => {\n this.polls.update((current) => [...current, ...newPolls]);\n this.hasMore.set(newPolls.length === PAGE_SIZE);\n this.isLoadingMore.set(false);\n event.target.complete();\n });\n }\n\n ngOnInit(): void {\n this.listenForNewPolls();\n\n this.activatedRoute.queryParamMap\n .pipe(\n map((params) => params.get('communityId') ?? ''),\n switchMap((communityId) => {\n this.currentCommunityId.set(communityId);\n\n if (!communityId) {\n this.status.set('idle');\n return of<DhPoll[] | null>(null);\n }\n\n this.status.set('loading');\n return this.allPollsService\n .getPolls(communityId, { skip: 0, take: PAGE_SIZE })\n .pipe(\n catchError(() => {\n this.status.set('error');\n return of<DhPoll[]>([]);\n }),\n );\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((polls) => {\n if (polls === null) {\n this.polls.set([]);\n this.hasMore.set(false);\n return;\n }\n\n this.polls.set(polls);\n this.hasMore.set(polls.length === PAGE_SIZE);\n if (this.status() !== 'error') {\n this.status.set('success');\n }\n });\n }\n\n private listenForNewPolls(): void {\n this.pollNotification.pollCreated$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(({ pollId }) => {\n const communityId = this.currentCommunityId();\n if (!communityId || !pollId) {\n return;\n }\n\n this.allPollsService\n .getPoll(communityId, pollId)\n .pipe(\n catchError(() => of(null)),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((poll) => {\n if (poll) {\n this.polls.update((current) => [poll, ...current]);\n }\n });\n });\n }\n\n private readSeedPolls(): DhPoll[] | null {\n const state = history.state as AllPollsNavigationState | null;\n return state?.polls ?? null;\n }\n}\n","<dh-loading [isOpen]=\"isLoading()\" />\n\n<ion-content [fullscreen]=\"true\" class=\"dh-all-polls-content\">\n <div class=\"dh-all-polls-container\">\n @if (hasError()) {\n <p class=\"dh-all-polls-state-text\">{{ 'states.loadFailed' | translate }}</p>\n } @else if (polls().length > 0) {\n @for (poll of polls(); track poll.id) {\n <dh-poll-card\n [poll]=\"poll\"\n (vote)=\"onVote(poll.id, $event)\"\n (changeAnswer)=\"onChangeAnswer(poll.id)\"\n ></dh-poll-card>\n }\n } @else {\n <p class=\"dh-all-polls-state-text\">{{ 'polls.empty' | translate }}</p>\n }\n </div>\n\n <ion-infinite-scroll [disabled]=\"!hasMore()\" (ionInfinite)=\"onIonInfinite($event)\">\n <ion-infinite-scroll-content />\n </ion-infinite-scroll>\n</ion-content>\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const ALL_POLLS_ROUTES = [
|
|
2
|
+
{
|
|
3
|
+
path: '',
|
|
4
|
+
loadComponent: () => import('./dhomie-app-all-polls.page-C4KixPzj.mjs').then((m) => m.AllPollsPage),
|
|
5
|
+
data: {
|
|
6
|
+
layout: {
|
|
7
|
+
hideHeader: false,
|
|
8
|
+
hideBottomNav: true,
|
|
9
|
+
hideToolbar: true,
|
|
10
|
+
showBack: true,
|
|
11
|
+
title: 'polls.title',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
export { ALL_POLLS_ROUTES };
|
|
18
|
+
//# sourceMappingURL=dhomie-app-all-polls.routes-PQj6MzRg.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dhomie-app-all-polls.routes-PQj6MzRg.mjs","sources":["../../../projects/dhomie-app/src/lib/pages/all-polls/all-polls.routes.ts"],"sourcesContent":["import { Routes } from '@angular/router';\nimport { LayoutConfig } from '../../layout/main-layout/layout-config.model';\n\nexport const ALL_POLLS_ROUTES: Routes = [\n {\n path: '',\n loadComponent: () => import('./all-polls.page').then((m) => m.AllPollsPage),\n data: {\n layout: {\n hideHeader: false,\n hideBottomNav: true,\n hideToolbar: true,\n showBack: true,\n title: 'polls.title',\n } satisfies LayoutConfig,\n },\n },\n];\n"],"names":[],"mappings":"AAGO,MAAM,gBAAgB,GAAW;AACtC,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,aAAa,EAAE,MAAM,OAAO,0CAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;AAC3E,QAAA,IAAI,EAAE;AACJ,YAAA,MAAM,EAAE;AACN,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,KAAK,EAAE,aAAa;AACE,aAAA;AACzB,SAAA;AACF,KAAA;;;;;"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, Injectable, computed, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { ActivatedRoute } from '@angular/router';
|
|
5
|
+
import { IonContent } from '@ionic/angular/standalone';
|
|
6
|
+
import { map, switchMap, of, startWith, catchError } from 'rxjs';
|
|
7
|
+
import { TranslateService, TranslatePipe } from '@ngx-translate/core';
|
|
8
|
+
import { d as DhPaymentItemComponent, e as DhProgressBarComponent } from './dhomie-app-index-opgBKfPr.mjs';
|
|
9
|
+
import { HttpClient, HttpContext } from '@angular/common/http';
|
|
10
|
+
import { I as IS_MICRO_API } from './dhomie-app-dhomie-app-D398ZdDA.mjs';
|
|
11
|
+
import { D as DhLoadingComponent } from './dhomie-app-loading.component-BUk3sOe8.mjs';
|
|
12
|
+
|
|
13
|
+
class AllSchedulesService {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.http = inject(HttpClient);
|
|
16
|
+
}
|
|
17
|
+
getDeal(constructionCompanyId, communityId, apartmentId) {
|
|
18
|
+
return this.http.get(`/mobile/ConstructionCompanies/${constructionCompanyId}/Communities/${communityId}/Apartments/${apartmentId}/Deals`, {
|
|
19
|
+
context: new HttpContext().set(IS_MICRO_API, true),
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AllSchedulesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
23
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AllSchedulesService }); }
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AllSchedulesService, decorators: [{
|
|
26
|
+
type: Injectable
|
|
27
|
+
}] });
|
|
28
|
+
|
|
29
|
+
const INTERVAL_KEYS = {
|
|
30
|
+
1: 'enums.intervals.monthly',
|
|
31
|
+
3: 'enums.intervals.quarterly',
|
|
32
|
+
6: 'enums.intervals.semiannual',
|
|
33
|
+
12: 'enums.intervals.annual',
|
|
34
|
+
};
|
|
35
|
+
class AllSchedulesPage {
|
|
36
|
+
constructor() {
|
|
37
|
+
this.activatedRoute = inject(ActivatedRoute);
|
|
38
|
+
this.allSchedulesService = inject(AllSchedulesService);
|
|
39
|
+
this.translate = inject(TranslateService);
|
|
40
|
+
this.queryParams = toSignal(this.activatedRoute.queryParamMap.pipe(map((params) => ({
|
|
41
|
+
constructionCompanyId: params.get('constructionCompanyId') ?? '',
|
|
42
|
+
communityId: params.get('communityId') ?? '',
|
|
43
|
+
apartmentId: params.get('apartmentId') ?? '',
|
|
44
|
+
}))), {
|
|
45
|
+
initialValue: {
|
|
46
|
+
constructionCompanyId: '',
|
|
47
|
+
communityId: '',
|
|
48
|
+
apartmentId: '',
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
this.hasApartmentContext = computed(() => !!this.queryParams().constructionCompanyId &&
|
|
52
|
+
!!this.queryParams().communityId &&
|
|
53
|
+
!!this.queryParams().apartmentId, ...(ngDevMode ? [{ debugName: "hasApartmentContext" }] : []));
|
|
54
|
+
this.loadState = toSignal(this.activatedRoute.queryParamMap.pipe(map((params) => ({
|
|
55
|
+
constructionCompanyId: params.get('constructionCompanyId') ?? '',
|
|
56
|
+
communityId: params.get('communityId') ?? '',
|
|
57
|
+
apartmentId: params.get('apartmentId') ?? '',
|
|
58
|
+
})), switchMap((params) => {
|
|
59
|
+
if (!params.constructionCompanyId ||
|
|
60
|
+
!params.communityId ||
|
|
61
|
+
!params.apartmentId) {
|
|
62
|
+
return of({
|
|
63
|
+
status: 'idle',
|
|
64
|
+
deal: null,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return this.allSchedulesService
|
|
68
|
+
.getDeal(params.constructionCompanyId, params.communityId, params.apartmentId)
|
|
69
|
+
.pipe(map((deal) => ({
|
|
70
|
+
status: 'success',
|
|
71
|
+
deal,
|
|
72
|
+
})), startWith({
|
|
73
|
+
status: 'loading',
|
|
74
|
+
deal: null,
|
|
75
|
+
}), catchError(() => of({
|
|
76
|
+
status: 'error',
|
|
77
|
+
deal: null,
|
|
78
|
+
})));
|
|
79
|
+
})), {
|
|
80
|
+
initialValue: {
|
|
81
|
+
status: 'idle',
|
|
82
|
+
deal: null,
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
this.isLoading = computed(() => this.loadState().status === 'loading', ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
|
|
86
|
+
this.hasError = computed(() => this.loadState().status === 'error', ...(ngDevMode ? [{ debugName: "hasError" }] : []));
|
|
87
|
+
this.installmentSubtitle = computed(() => {
|
|
88
|
+
const deal = this.loadState().deal;
|
|
89
|
+
if (!deal)
|
|
90
|
+
return '';
|
|
91
|
+
const parts = [];
|
|
92
|
+
const optionLabel = this.translate.instant(('enums.paymentOptions.' + deal.paymentOption));
|
|
93
|
+
if (optionLabel)
|
|
94
|
+
parts.push(optionLabel);
|
|
95
|
+
const { startPercentage, inProcessPercentage, endPercentage } = deal;
|
|
96
|
+
if (startPercentage != null &&
|
|
97
|
+
inProcessPercentage != null &&
|
|
98
|
+
endPercentage != null) {
|
|
99
|
+
parts.push(`${startPercentage}% - ${inProcessPercentage}% - ${endPercentage}%`);
|
|
100
|
+
}
|
|
101
|
+
if (deal.monthsInterval != null && INTERVAL_KEYS[deal.monthsInterval]) {
|
|
102
|
+
parts.push(this.translate.instant(INTERVAL_KEYS[deal.monthsInterval]));
|
|
103
|
+
}
|
|
104
|
+
return parts.join(' / ');
|
|
105
|
+
}, ...(ngDevMode ? [{ debugName: "installmentSubtitle" }] : []));
|
|
106
|
+
this.paymentSchedules = computed(() => {
|
|
107
|
+
const schedules = this.loadState().deal?.paymentSchedules ?? [];
|
|
108
|
+
return schedules
|
|
109
|
+
.slice()
|
|
110
|
+
.sort((a, b) => a.sequenceNumber - b.sequenceNumber);
|
|
111
|
+
}, ...(ngDevMode ? [{ debugName: "paymentSchedules" }] : []));
|
|
112
|
+
this.installmentProgress = computed(() => {
|
|
113
|
+
return Math.round(this.loadState().deal?.paidMonthsPercentage ?? 0);
|
|
114
|
+
}, ...(ngDevMode ? [{ debugName: "installmentProgress" }] : []));
|
|
115
|
+
this.remainingPaymentsCount = computed(() => {
|
|
116
|
+
return this.paymentSchedules().filter((schedule) => schedule.status !== 'paid').length;
|
|
117
|
+
}, ...(ngDevMode ? [{ debugName: "remainingPaymentsCount" }] : []));
|
|
118
|
+
this.scheduleItems = computed(() => {
|
|
119
|
+
const schedules = this.paymentSchedules();
|
|
120
|
+
const firstOpenScheduleId = schedules.find((schedule) => schedule.status !== 'paid')?.id ?? null;
|
|
121
|
+
const firstPendingId = schedules.find((schedule) => schedule.status === 'pending')?.id ?? null;
|
|
122
|
+
return schedules.map((schedule) => ({
|
|
123
|
+
id: schedule.id,
|
|
124
|
+
step: schedule.sequenceNumber,
|
|
125
|
+
amount: this.formatAmount(schedule.amount, schedule.currency),
|
|
126
|
+
date: schedule.dueDate ?? '',
|
|
127
|
+
year: schedule.dueDate ? new Date(schedule.dueDate).getFullYear() : 0,
|
|
128
|
+
status: schedule.status,
|
|
129
|
+
isActive: schedule.status === 'overdue' ||
|
|
130
|
+
(schedule.status === 'pending' && schedule.id === firstPendingId),
|
|
131
|
+
chipLabel: schedule.id === firstOpenScheduleId
|
|
132
|
+
? this.getChipLabel(schedule.status)
|
|
133
|
+
: '',
|
|
134
|
+
chipBgColor: this.getChipBgColor(schedule.status),
|
|
135
|
+
chipTextColor: this.getChipTextColor(schedule.status),
|
|
136
|
+
}));
|
|
137
|
+
}, ...(ngDevMode ? [{ debugName: "scheduleItems" }] : []));
|
|
138
|
+
this.scheduleGroups = computed(() => {
|
|
139
|
+
const groups = [];
|
|
140
|
+
for (const item of this.scheduleItems()) {
|
|
141
|
+
const group = groups.find((g) => g.year === item.year);
|
|
142
|
+
if (group) {
|
|
143
|
+
group.items.push(item);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
groups.push({ year: item.year, items: [item] });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return groups;
|
|
150
|
+
}, ...(ngDevMode ? [{ debugName: "scheduleGroups" }] : []));
|
|
151
|
+
this.formattedPaidAmount = computed(() => {
|
|
152
|
+
const deal = this.loadState().deal;
|
|
153
|
+
if (deal?.paidAmount == null)
|
|
154
|
+
return '';
|
|
155
|
+
const currency = deal.paymentSchedules?.[0]?.currency ?? 'amd';
|
|
156
|
+
return this.formatAmount(deal.paidAmount, currency);
|
|
157
|
+
}, ...(ngDevMode ? [{ debugName: "formattedPaidAmount" }] : []));
|
|
158
|
+
this.formattedRemainingAmount = computed(() => {
|
|
159
|
+
const deal = this.loadState().deal;
|
|
160
|
+
if (deal?.remainingAmount == null)
|
|
161
|
+
return '';
|
|
162
|
+
const currency = deal.paymentSchedules?.[0]?.currency ?? 'amd';
|
|
163
|
+
return this.formatAmount(deal.remainingAmount, currency);
|
|
164
|
+
}, ...(ngDevMode ? [{ debugName: "formattedRemainingAmount" }] : []));
|
|
165
|
+
}
|
|
166
|
+
getChipBgColor(status) {
|
|
167
|
+
if (status === 'overdue')
|
|
168
|
+
return '#FFE4E8';
|
|
169
|
+
if (status === 'paid')
|
|
170
|
+
return '#E6F4D7';
|
|
171
|
+
return '#D1E0FF';
|
|
172
|
+
}
|
|
173
|
+
getChipTextColor(status) {
|
|
174
|
+
if (status === 'pending')
|
|
175
|
+
return '#528BFF';
|
|
176
|
+
return '#212121';
|
|
177
|
+
}
|
|
178
|
+
getChipLabel(status) {
|
|
179
|
+
if (status === 'overdue')
|
|
180
|
+
return this.translate.instant('enums.scheduleStatuses.overdue');
|
|
181
|
+
if (status === 'pending')
|
|
182
|
+
return this.translate.instant('enums.scheduleStatuses.pending');
|
|
183
|
+
if (status === 'paid')
|
|
184
|
+
return this.translate.instant('enums.scheduleStatuses.paid');
|
|
185
|
+
return '';
|
|
186
|
+
}
|
|
187
|
+
formatAmount(amount, currency) {
|
|
188
|
+
const currencySymbol = {
|
|
189
|
+
amd: '֏',
|
|
190
|
+
eur: '€',
|
|
191
|
+
usd: '$',
|
|
192
|
+
gel: '₾',
|
|
193
|
+
rub: '₽',
|
|
194
|
+
};
|
|
195
|
+
const symbol = currencySymbol[currency] ?? currency.toUpperCase();
|
|
196
|
+
try {
|
|
197
|
+
const formatted = new Intl.NumberFormat('hy-AM', {
|
|
198
|
+
maximumFractionDigits: 0,
|
|
199
|
+
}).format(amount);
|
|
200
|
+
return `${formatted} ${symbol}`;
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
return `${amount} ${symbol}`;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AllSchedulesPage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
207
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: AllSchedulesPage, isStandalone: true, selector: "dh-all-schedules-page", providers: [AllSchedulesService], ngImport: i0, template: "<ion-content [fullscreen]=\"true\" class=\"dh-apartment-content\">\n @if (!isLoading()) {\n <div class=\"dh-apartment-container\">\n <section class=\"dh-apartment-section\">\n <div class=\"p-4\">\n <div class=\"dh-apartment-installment-header\">\n <span class=\"dh-apartment-installment-title\">\n {{ 'schedules.paymentsLeft' | translate: { count:\n remainingPaymentsCount() } }}\n </span>\n <span class=\"dh-apartment-installment-subtitle\"\n >{{ installmentSubtitle() }}</span\n >\n </div>\n\n <dh-progress-bar [percentage]=\"installmentProgress()\"></dh-progress-bar>\n\n <div class=\"dh-apartment-installment-items\">\n @if (hasError()) {\n <p class=\"dh-all-schedules-state-text\">\n {{ 'states.scheduleLoadFailed' | translate }}\n </p>\n } @else if (!hasApartmentContext()) {\n <p class=\"dh-all-schedules-state-text\">\n {{ 'states.missingContext' | translate }}\n </p>\n } @else if (scheduleGroups().length > 0) { @for (group of\n scheduleGroups(); track group.year) {\n <p class=\"dh-all-schedules-year-label\">{{ group.year }}</p>\n @for (item of group.items; track item.id) {\n <dh-payment-item\n [step]=\"item.step\"\n [amount]=\"item.amount\"\n [date]=\"item.date\"\n [active]=\"item.isActive\"\n [chipLabel]=\"item.chipLabel ?? ''\"\n [chipBgColor]=\"item.chipBgColor ?? ''\"\n [chipTextColor]=\"item.chipTextColor ?? ''\"\n ></dh-payment-item>\n } } } @else {\n <p class=\"dh-all-schedules-state-text\">\n {{ 'schedules.empty' | translate }}\n </p>\n }\n </div>\n\n @if (formattedPaidAmount() || formattedRemainingAmount()) {\n <div class=\"dh-all-schedules-summary-card\">\n @if (formattedPaidAmount()) {\n <div class=\"dh-all-schedules-summary-row\">\n <span class=\"dh-all-schedules-summary-label\"\n >{{ 'schedules.youPaid' | translate }}</span\n >\n <span class=\"dh-all-schedules-summary-amount\"\n >{{ formattedPaidAmount() }}</span\n >\n </div>\n } @if (formattedRemainingAmount()) {\n <div class=\"dh-all-schedules-summary-divider\"></div>\n <div class=\"dh-all-schedules-summary-row\">\n <span class=\"dh-all-schedules-summary-label\"\n >{{ 'schedules.remaining' | translate }}</span\n >\n <span class=\"dh-all-schedules-summary-amount\"\n >{{ formattedRemainingAmount() }}</span\n >\n </div>\n }\n </div>\n }\n </div>\n </section>\n </div>\n }\n</ion-content>\n\n<dh-loading [isOpen]=\"isLoading()\" />\n", dependencies: [{ kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: DhLoadingComponent, selector: "dh-loading", inputs: ["trigger", "isOpen", "duration", "spinner", "inline"] }, { kind: "component", type: DhPaymentItemComponent, selector: "dh-payment-item", inputs: ["step", "amount", "date", "active", "chipLabel", "chipBgColor", "chipTextColor"] }, { kind: "component", type: DhProgressBarComponent, selector: "dh-progress-bar", inputs: ["value", "buffer", "percentage", "showPercentage"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
208
|
+
}
|
|
209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AllSchedulesPage, decorators: [{
|
|
210
|
+
type: Component,
|
|
211
|
+
args: [{ selector: 'dh-all-schedules-page', standalone: true, imports: [
|
|
212
|
+
IonContent,
|
|
213
|
+
DhLoadingComponent,
|
|
214
|
+
DhPaymentItemComponent,
|
|
215
|
+
DhProgressBarComponent,
|
|
216
|
+
TranslatePipe,
|
|
217
|
+
], providers: [AllSchedulesService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-content [fullscreen]=\"true\" class=\"dh-apartment-content\">\n @if (!isLoading()) {\n <div class=\"dh-apartment-container\">\n <section class=\"dh-apartment-section\">\n <div class=\"p-4\">\n <div class=\"dh-apartment-installment-header\">\n <span class=\"dh-apartment-installment-title\">\n {{ 'schedules.paymentsLeft' | translate: { count:\n remainingPaymentsCount() } }}\n </span>\n <span class=\"dh-apartment-installment-subtitle\"\n >{{ installmentSubtitle() }}</span\n >\n </div>\n\n <dh-progress-bar [percentage]=\"installmentProgress()\"></dh-progress-bar>\n\n <div class=\"dh-apartment-installment-items\">\n @if (hasError()) {\n <p class=\"dh-all-schedules-state-text\">\n {{ 'states.scheduleLoadFailed' | translate }}\n </p>\n } @else if (!hasApartmentContext()) {\n <p class=\"dh-all-schedules-state-text\">\n {{ 'states.missingContext' | translate }}\n </p>\n } @else if (scheduleGroups().length > 0) { @for (group of\n scheduleGroups(); track group.year) {\n <p class=\"dh-all-schedules-year-label\">{{ group.year }}</p>\n @for (item of group.items; track item.id) {\n <dh-payment-item\n [step]=\"item.step\"\n [amount]=\"item.amount\"\n [date]=\"item.date\"\n [active]=\"item.isActive\"\n [chipLabel]=\"item.chipLabel ?? ''\"\n [chipBgColor]=\"item.chipBgColor ?? ''\"\n [chipTextColor]=\"item.chipTextColor ?? ''\"\n ></dh-payment-item>\n } } } @else {\n <p class=\"dh-all-schedules-state-text\">\n {{ 'schedules.empty' | translate }}\n </p>\n }\n </div>\n\n @if (formattedPaidAmount() || formattedRemainingAmount()) {\n <div class=\"dh-all-schedules-summary-card\">\n @if (formattedPaidAmount()) {\n <div class=\"dh-all-schedules-summary-row\">\n <span class=\"dh-all-schedules-summary-label\"\n >{{ 'schedules.youPaid' | translate }}</span\n >\n <span class=\"dh-all-schedules-summary-amount\"\n >{{ formattedPaidAmount() }}</span\n >\n </div>\n } @if (formattedRemainingAmount()) {\n <div class=\"dh-all-schedules-summary-divider\"></div>\n <div class=\"dh-all-schedules-summary-row\">\n <span class=\"dh-all-schedules-summary-label\"\n >{{ 'schedules.remaining' | translate }}</span\n >\n <span class=\"dh-all-schedules-summary-amount\"\n >{{ formattedRemainingAmount() }}</span\n >\n </div>\n }\n </div>\n }\n </div>\n </section>\n </div>\n }\n</ion-content>\n\n<dh-loading [isOpen]=\"isLoading()\" />\n" }]
|
|
218
|
+
}] });
|
|
219
|
+
|
|
220
|
+
export { AllSchedulesPage };
|
|
221
|
+
//# sourceMappingURL=dhomie-app-all-schedules.page-Ddzmws9b.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dhomie-app-all-schedules.page-Ddzmws9b.mjs","sources":["../../../projects/dhomie-app/src/lib/pages/all-schedules/all-schedules.service.ts","../../../projects/dhomie-app/src/lib/pages/all-schedules/all-schedules.page.ts","../../../projects/dhomie-app/src/lib/pages/all-schedules/all-schedules.page.html"],"sourcesContent":["import { HttpClient, HttpContext } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\n\nimport { IS_MICRO_API } from '../../tokens/is-micro-api.token';\nimport { ConstructionCompanyDealByApartmentIdMobile } from './all-schedules.models';\n\n@Injectable()\nexport class AllSchedulesService {\n private http = inject(HttpClient);\n\n getDeal(\n constructionCompanyId: string,\n communityId: string,\n apartmentId: string,\n ) {\n return this.http.get<ConstructionCompanyDealByApartmentIdMobile>(\n `/mobile/ConstructionCompanies/${constructionCompanyId}/Communities/${communityId}/Apartments/${apartmentId}/Deals`,\n {\n context: new HttpContext().set(IS_MICRO_API, true),\n },\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { IonContent } from '@ionic/angular/standalone';\nimport { catchError, map, of, startWith, switchMap } from 'rxjs';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\n\nimport {\n DhLoadingComponent,\n DhPaymentItemComponent,\n DhProgressBarComponent,\n} from '../../components';\nimport { AllSchedulesService } from './all-schedules.service';\nimport {\n AllSchedulesGroup,\n AllSchedulesItem,\n AllSchedulesQueryParams,\n ConstructionCompanyDealByApartmentIdMobile,\n Currency,\n PaymentOption,\n} from './all-schedules.models';\n\ntype AllSchedulesLoadState =\n | {\n status: 'idle' | 'loading' | 'error';\n deal: null;\n }\n | {\n status: 'success';\n deal: ConstructionCompanyDealByApartmentIdMobile;\n };\n\nconst INTERVAL_KEYS: Record<number, string> = {\n 1: 'enums.intervals.monthly',\n 3: 'enums.intervals.quarterly',\n 6: 'enums.intervals.semiannual',\n 12: 'enums.intervals.annual',\n};\n\n@Component({\n selector: 'dh-all-schedules-page',\n standalone: true,\n imports: [\n IonContent,\n DhLoadingComponent,\n DhPaymentItemComponent,\n DhProgressBarComponent,\n TranslatePipe,\n ],\n providers: [AllSchedulesService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './all-schedules.page.html',\n})\nexport class AllSchedulesPage {\n private activatedRoute = inject(ActivatedRoute);\n private allSchedulesService = inject(AllSchedulesService);\n private translate = inject(TranslateService);\n\n readonly queryParams = toSignal(\n this.activatedRoute.queryParamMap.pipe(\n map(\n (params): AllSchedulesQueryParams => ({\n constructionCompanyId: params.get('constructionCompanyId') ?? '',\n communityId: params.get('communityId') ?? '',\n apartmentId: params.get('apartmentId') ?? '',\n }),\n ),\n ),\n {\n initialValue: {\n constructionCompanyId: '',\n communityId: '',\n apartmentId: '',\n },\n },\n );\n\n readonly hasApartmentContext = computed(\n () =>\n !!this.queryParams().constructionCompanyId &&\n !!this.queryParams().communityId &&\n !!this.queryParams().apartmentId,\n );\n\n readonly loadState = toSignal(\n this.activatedRoute.queryParamMap.pipe(\n map(\n (params): AllSchedulesQueryParams => ({\n constructionCompanyId: params.get('constructionCompanyId') ?? '',\n communityId: params.get('communityId') ?? '',\n apartmentId: params.get('apartmentId') ?? '',\n }),\n ),\n switchMap((params) => {\n if (\n !params.constructionCompanyId ||\n !params.communityId ||\n !params.apartmentId\n ) {\n return of<AllSchedulesLoadState>({\n status: 'idle',\n deal: null,\n });\n }\n\n return this.allSchedulesService\n .getDeal(\n params.constructionCompanyId,\n params.communityId,\n params.apartmentId,\n )\n .pipe(\n map(\n (deal): AllSchedulesLoadState => ({\n status: 'success',\n deal,\n }),\n ),\n startWith<AllSchedulesLoadState>({\n status: 'loading',\n deal: null,\n }),\n catchError(() =>\n of<AllSchedulesLoadState>({\n status: 'error',\n deal: null,\n }),\n ),\n );\n }),\n ),\n {\n initialValue: {\n status: 'idle',\n deal: null,\n },\n },\n );\n\n readonly isLoading = computed(() => this.loadState().status === 'loading');\n readonly hasError = computed(() => this.loadState().status === 'error');\n\n readonly installmentSubtitle = computed(() => {\n const deal = this.loadState().deal;\n if (!deal) return '';\n\n const parts: string[] = [];\n\n const optionLabel = this.translate.instant(\n ('enums.paymentOptions.' + deal.paymentOption) as PaymentOption,\n );\n if (optionLabel) parts.push(optionLabel);\n\n const { startPercentage, inProcessPercentage, endPercentage } = deal;\n if (\n startPercentage != null &&\n inProcessPercentage != null &&\n endPercentage != null\n ) {\n parts.push(\n `${startPercentage}% - ${inProcessPercentage}% - ${endPercentage}%`,\n );\n }\n\n if (deal.monthsInterval != null && INTERVAL_KEYS[deal.monthsInterval]) {\n parts.push(this.translate.instant(INTERVAL_KEYS[deal.monthsInterval]));\n }\n\n return parts.join(' / ');\n });\n\n readonly paymentSchedules = computed(() => {\n const schedules = this.loadState().deal?.paymentSchedules ?? [];\n return schedules\n .slice()\n .sort((a, b) => a.sequenceNumber - b.sequenceNumber);\n });\n\n readonly installmentProgress = computed(() => {\n return Math.round(this.loadState().deal?.paidMonthsPercentage ?? 0);\n });\n\n readonly remainingPaymentsCount = computed(() => {\n return this.paymentSchedules().filter(\n (schedule) => schedule.status !== 'paid',\n ).length;\n });\n\n readonly scheduleItems = computed<AllSchedulesItem[]>(() => {\n const schedules = this.paymentSchedules();\n const firstOpenScheduleId =\n schedules.find((schedule) => schedule.status !== 'paid')?.id ?? null;\n const firstPendingId =\n schedules.find((schedule) => schedule.status === 'pending')?.id ?? null;\n\n return schedules.map((schedule) => ({\n id: schedule.id,\n step: schedule.sequenceNumber,\n amount: this.formatAmount(schedule.amount, schedule.currency),\n date: schedule.dueDate ?? '',\n year: schedule.dueDate ? new Date(schedule.dueDate).getFullYear() : 0,\n status: schedule.status,\n isActive:\n schedule.status === 'overdue' ||\n (schedule.status === 'pending' && schedule.id === firstPendingId),\n chipLabel:\n schedule.id === firstOpenScheduleId\n ? this.getChipLabel(schedule.status)\n : '',\n chipBgColor: this.getChipBgColor(schedule.status),\n chipTextColor: this.getChipTextColor(schedule.status),\n }));\n });\n\n readonly scheduleGroups = computed<AllSchedulesGroup[]>(() => {\n const groups: AllSchedulesGroup[] = [];\n for (const item of this.scheduleItems()) {\n const group = groups.find((g) => g.year === item.year);\n if (group) {\n group.items.push(item);\n } else {\n groups.push({ year: item.year, items: [item] });\n }\n }\n return groups;\n });\n\n readonly formattedPaidAmount = computed(() => {\n const deal = this.loadState().deal;\n if (deal?.paidAmount == null) return '';\n const currency = deal.paymentSchedules?.[0]?.currency ?? 'amd';\n return this.formatAmount(deal.paidAmount, currency);\n });\n\n readonly formattedRemainingAmount = computed(() => {\n const deal = this.loadState().deal;\n if (deal?.remainingAmount == null) return '';\n const currency = deal.paymentSchedules?.[0]?.currency ?? 'amd';\n return this.formatAmount(deal.remainingAmount, currency);\n });\n\n private getChipBgColor(status: AllSchedulesItem['status']): string {\n if (status === 'overdue') return '#FFE4E8';\n if (status === 'paid') return '#E6F4D7';\n return '#D1E0FF';\n }\n\n private getChipTextColor(status: AllSchedulesItem['status']): string {\n if (status === 'pending') return '#528BFF';\n return '#212121';\n }\n\n private getChipLabel(status: AllSchedulesItem['status']): string {\n if (status === 'overdue')\n return this.translate.instant('enums.scheduleStatuses.overdue');\n if (status === 'pending')\n return this.translate.instant('enums.scheduleStatuses.pending');\n if (status === 'paid')\n return this.translate.instant('enums.scheduleStatuses.paid');\n return '';\n }\n\n private formatAmount(amount: number, currency: Currency): string {\n const currencySymbol: Record<Currency, string> = {\n amd: '֏',\n eur: '€',\n usd: '$',\n gel: '₾',\n rub: '₽',\n };\n\n const symbol = currencySymbol[currency] ?? currency.toUpperCase();\n\n try {\n const formatted = new Intl.NumberFormat('hy-AM', {\n maximumFractionDigits: 0,\n }).format(amount);\n\n return `${formatted} ${symbol}`;\n } catch {\n return `${amount} ${symbol}`;\n }\n }\n}\n","<ion-content [fullscreen]=\"true\" class=\"dh-apartment-content\">\n @if (!isLoading()) {\n <div class=\"dh-apartment-container\">\n <section class=\"dh-apartment-section\">\n <div class=\"p-4\">\n <div class=\"dh-apartment-installment-header\">\n <span class=\"dh-apartment-installment-title\">\n {{ 'schedules.paymentsLeft' | translate: { count:\n remainingPaymentsCount() } }}\n </span>\n <span class=\"dh-apartment-installment-subtitle\"\n >{{ installmentSubtitle() }}</span\n >\n </div>\n\n <dh-progress-bar [percentage]=\"installmentProgress()\"></dh-progress-bar>\n\n <div class=\"dh-apartment-installment-items\">\n @if (hasError()) {\n <p class=\"dh-all-schedules-state-text\">\n {{ 'states.scheduleLoadFailed' | translate }}\n </p>\n } @else if (!hasApartmentContext()) {\n <p class=\"dh-all-schedules-state-text\">\n {{ 'states.missingContext' | translate }}\n </p>\n } @else if (scheduleGroups().length > 0) { @for (group of\n scheduleGroups(); track group.year) {\n <p class=\"dh-all-schedules-year-label\">{{ group.year }}</p>\n @for (item of group.items; track item.id) {\n <dh-payment-item\n [step]=\"item.step\"\n [amount]=\"item.amount\"\n [date]=\"item.date\"\n [active]=\"item.isActive\"\n [chipLabel]=\"item.chipLabel ?? ''\"\n [chipBgColor]=\"item.chipBgColor ?? ''\"\n [chipTextColor]=\"item.chipTextColor ?? ''\"\n ></dh-payment-item>\n } } } @else {\n <p class=\"dh-all-schedules-state-text\">\n {{ 'schedules.empty' | translate }}\n </p>\n }\n </div>\n\n @if (formattedPaidAmount() || formattedRemainingAmount()) {\n <div class=\"dh-all-schedules-summary-card\">\n @if (formattedPaidAmount()) {\n <div class=\"dh-all-schedules-summary-row\">\n <span class=\"dh-all-schedules-summary-label\"\n >{{ 'schedules.youPaid' | translate }}</span\n >\n <span class=\"dh-all-schedules-summary-amount\"\n >{{ formattedPaidAmount() }}</span\n >\n </div>\n } @if (formattedRemainingAmount()) {\n <div class=\"dh-all-schedules-summary-divider\"></div>\n <div class=\"dh-all-schedules-summary-row\">\n <span class=\"dh-all-schedules-summary-label\"\n >{{ 'schedules.remaining' | translate }}</span\n >\n <span class=\"dh-all-schedules-summary-amount\"\n >{{ formattedRemainingAmount() }}</span\n >\n </div>\n }\n </div>\n }\n </div>\n </section>\n </div>\n }\n</ion-content>\n\n<dh-loading [isOpen]=\"isLoading()\" />\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const ALL_SCHEDULES_ROUTES = [
|
|
2
|
+
{
|
|
3
|
+
path: '',
|
|
4
|
+
loadComponent: () => import('./dhomie-app-all-schedules.page-Ddzmws9b.mjs').then((m) => m.AllSchedulesPage),
|
|
5
|
+
data: {
|
|
6
|
+
layout: {
|
|
7
|
+
hideHeader: false,
|
|
8
|
+
hideBottomNav: true,
|
|
9
|
+
hideToolbar: true,
|
|
10
|
+
showBack: true,
|
|
11
|
+
title: 'schedules.title',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
export { ALL_SCHEDULES_ROUTES };
|
|
18
|
+
//# sourceMappingURL=dhomie-app-all-schedules.routes-CIQfknrS.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dhomie-app-all-schedules.routes-CIQfknrS.mjs","sources":["../../../projects/dhomie-app/src/lib/pages/all-schedules/all-schedules.routes.ts"],"sourcesContent":["import { Routes } from '@angular/router';\nimport { LayoutConfig } from '../../layout/main-layout/layout-config.model';\n\nexport const ALL_SCHEDULES_ROUTES: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./all-schedules.page').then((m) => m.AllSchedulesPage),\n data: {\n layout: {\n hideHeader: false,\n hideBottomNav: true,\n hideToolbar: true,\n showBack: true,\n title: 'schedules.title',\n } satisfies LayoutConfig,\n },\n },\n];\n"],"names":[],"mappings":"AAGO,MAAM,oBAAoB,GAAW;AAC1C,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,aAAa,EAAE,MACb,OAAO,8CAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;AAChE,QAAA,IAAI,EAAE;AACJ,YAAA,MAAM,EAAE;AACN,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,KAAK,EAAE,iBAAiB;AACF,aAAA;AACzB,SAAA;AACF,KAAA;;;;;"}
|