]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/eg2/src/app/staff/circ/patron/summary.component.html
LP1904036 print/copy patron address; summary styling
[Evergreen.git] / Open-ILS / src / eg2 / src / app / staff / circ / patron / summary.component.html
1
2 <div class="patron-summary-container">
3
4   <h3 *ngIf="patron()" class="font-weight-bold" i18n>
5     {{patronService.namePart(patron(), 'family_name')}}, 
6     {{patronService.namePart(patron(), 'first_given_name')}} 
7     {{patronService.namePart(patron(), 'second_given_name')}}
8   </h3>
9
10   <div class="row mb-1 alert alert-danger p-0" 
11     *ngIf="context.alerts.accountExpiresSoon">
12     <div class="col-lg-12" i18n>
13       Patron account will expire soon.  Please renew.
14     </div>
15   </div>
16
17   <div class="row mb-1">
18     <div class="col-lg-5" i18n>Profile</div>
19     <div class="col-lg-7">{{patron().profile().name()}}</div>
20   </div>
21   <div class="row mb-1">
22     <div class="col-lg-5" i18n>Home Library</div>
23     <div class="col-lg-7">{{context.orgSn(patron().home_ou())}}</div>
24   </div>
25   <div class="row mb-1">
26     <div class="col-lg-5" i18n>Net Access</div>
27     <div class="col-lg-7">{{patron().net_access_level().name()}}</div>
28   </div>
29   <div class="row mb-1">
30     <div class="col-lg-5" i18n>Date of Birth</div>
31     <div class="col-lg-7">{{patron().dob() | date:'shortDate'}}</div>
32   </div>
33   <div class="row mb-1">
34     <div class="col-lg-5" i18n>Parent/Guardian</div>
35     <div class="col-lg-7">{{patron().guardian()}}</div>
36   </div>
37   <div class="row mb-1">
38     <div class="col-lg-5" i18n>Last Activity</div>
39     <div class="col-lg-7">
40       <ng-container *ngIf="patron().usr_activity()[0]">
41         {{patron().usr_activity()[0].event_time() | date:'shortDate'}}
42       </ng-container>
43     </div>
44   </div>
45   <div class="row mb-1">
46     <div class="col-lg-5" i18n>Last Updated</div>
47     <div class="col-lg-7">{{patron().last_update_time() | date:'shortDate'}}</div>
48   </div>
49   <div class="row mb-1">
50     <div class="col-lg-5" i18n>Create Date</div>
51     <div class="col-lg-7">{{patron().create_date() | date:'shortDate'}}</div>
52   </div>
53   <div class="row" [ngClass]="{'alert alert-danger p-0': context.alerts.accountExpired}">
54     <div class="col-lg-5" i18n>Expire Date</div>
55     <div class="col-lg-7">{{patron().expire_date() | date:'shortDate'}}</div>
56   </div>
57
58   <hr class="m-1"/>
59
60   <ng-container *ngIf="context.patronStats">
61
62     <div class="row mb-1"
63       [ngClass]="{'alert alert-danger p-0': context.patronStats.fines.total_owed > 0}">
64       <div class="col-lg-5" i18n>Fines Owed</div>
65       <div class="col-lg-7">{{context.patronStats.fines.total_owed | currency}}</div>
66     </div>
67
68     <!-- TODO GROUP FINES -->
69
70     <div class="row mb-1">
71       <div class="col-lg-5" i18n>Items Out</div>
72       <div class="col-lg-7">{{context.patronStats.checkouts.total_out}}</div>
73     </div>
74     <div class="row mb-1"
75       [ngClass]="{'alert alert-danger p-0': context.patronStats.checkouts.overdue > 0}">
76       <div class="col-lg-5" i18n>Overdue</div>
77       <div class="col-lg-7">{{context.patronStats.checkouts.overdue}}</div>
78     </div>
79     <div class="row mb-1"
80       [ngClass]="{'alert alert-danger p-0': context.patronStats.checkouts.long_overdue > 0}">
81       <div class="col-lg-5" i18n>Long Overdue</div>
82       <div class="col-lg-7">{{context.patronStats.checkouts.long_overdue}}</div>
83     </div>
84     <div class="row mb-1"
85       [ngClass]="{'alert alert-danger p-0': context.patronStats.checkouts.claims_returned > 0}">
86       <div class="col-lg-5" i18n>Claimed Returned</div>
87       <div class="col-lg-7">{{context.patronStats.checkouts.claims_returned}}</div>
88     </div>
89     <div class="row mb-1"
90       [ngClass]="{'alert alert-danger p-0': context.patronStats.checkouts.lost > 0}">
91       <div class="col-lg-5" i18n>Lost</div>
92       <div class="col-lg-7">{{context.patronStats.checkouts.lost}}</div>
93     </div>
94     <div class="row mb-1">
95       <div class="col-lg-5" i18n>Non-Cataloged</div>
96       <div class="col-lg-7">{{context.patronStats.checkouts.noncat}}</div>
97     </div>
98     <div class="row">
99       <div class="col-lg-5" i18n>Holds</div>
100       <div class="col-lg-7">
101         {{context.patronStats.holds.ready}} / {{context.patronStats.holds.total}}
102       </div>
103     </div>
104
105     <hr class="m-1"/>
106   </ng-container>
107
108   <div class="row mb-1">
109     <div class="col-lg-5" i18n>Card</div>
110     <div class="col-lg-7">
111       {{patron().card() ? patron().card().barcode() : ''}}
112     </div>
113   </div>
114   <div class="row mb-1">
115     <div class="col-lg-5" i18n>Username</div>
116     <div class="col-lg-7">{{patron().usrname()}}</div>
117   </div>
118   <div class="row mb-1">
119     <div class="col-lg-5" i18n>Day Phone</div>
120     <div class="col-lg-7">{{patron().day_phone()}}</div> 
121   </div>
122   <div class="row mb-1">
123     <div class="col-lg-5" i18n>Evening Phone</div>
124     <div class="col-lg-7">{{patron().evening_phone()}}</div> 
125   </div>
126   <div class="row mb-1">
127     <div class="col-lg-5" i18n>Other Phone</div>
128     <div class="col-lg-7">{{patron().other_phone()}}</div> 
129   </div>
130   <div class="row mb-1">
131     <div class="col-lg-5" i18n>ID1 </div>
132     <div class="col-lg-7">{{patron().ident_value()}}</div> 
133   </div>
134   <div class="row mb-1">
135     <div class="col-lg-5" i18n>ID2</div>
136     <div class="col-lg-7">{{patron().ident_value2()}}</div> 
137   </div>
138   <div class="row mb-1">
139     <div class="col-lg-5" i18n>Email</div>
140     <div class="col-lg-7">
141       <!-- TODO: mailto link -->
142       {{patron().email()}}
143     </div> 
144   </div>
145
146   <hr class="m-1"/>
147
148   <div class="row mb-1" *ngFor="let addr of patron().addresses()">
149     <div class="col-lg-12">
150       <fieldset>
151         <legend class="d-flex" [ngClass]="{'alert alert-danger p-0': addr.valid() == 'f'}">
152           <div class="flex-1">{{addr.address_type()}}</div>
153           <div>
154             <a class="mr-2" href="javascript:;" 
155               (click)="copyAddress(addr)" i18n>copy</a>
156             <a class="mr-2" href="javascript:;" 
157               (click)="printAddress(addr)" i18n>print</a>
158           </div>
159         </legend>
160         <div i18n>{{addr.street1()}} {{addr.street2()}}</div>
161         <div i18n>{{addr.city()}}, {{addr.state()}} {{addr.post_code()}}</div>
162       </fieldset>
163
164       <!-- hidden textare used only for copying the text -->
165       <textarea id="patron-address-copy-{{addr.id()}}" rows="2"              
166         style="visibility:hidden">
167 {{patron().first_given_name()}} {{patron().second_given_name()}} {{patron().family_name()}}
168 {{addr.street1()}} {{addr.street2()}}
169 {{addr.city()}}, {{addr.state()}} {{addr.post_code()}}</textarea>
170     </div>
171   </div>
172 </div>