LP2000482 Angular 15 and Bootstrap 5 upgrade
[evergreen-equinox.git] / Open-ILS / src / eg2 / src / app / staff / admin / server / org-unit.component.html
1 <eg-staff-banner bannerText="Org Unit Configuration" i18n-bannerText>
2 </eg-staff-banner>
3
4 <ng-template #editStrTmpl i18n>Update Succeeded</ng-template>
5 <eg-string #editString [template]="editStrTmpl"></eg-string>
6
7 <ng-template #errorStrTmpl i18n>Update Failed</ng-template>
8 <eg-string #errorString [template]="errorStrTmpl"></eg-string>
9
10 <eg-confirm-dialog #delConfirm 
11   i18n-dialogTitle i18n-dialogBody
12   dialogTitle="Confirm Delete"
13   dialogBody="Delete Org Unit {{selected ? selected.label : ''}}?">
14 </eg-confirm-dialog>
15
16 <ng-template #treeNodeLabelTmpl let-org="org">
17   <span *ngIf="org" i18n>{{org.name()}} -- {{org.shortname()}}</span>
18 </ng-template>
19 <eg-string #treeNodeLabel key='admin.server.org_unit.treenode' 
20   [template]="treeNodeLabelTmpl"></eg-string>
21
22 <div class="row org-unit-types-row">
23   <div class="col-lg-4 org-unit-types-col-aside">
24     <h3 i18n>Org Units</h3>
25     <div class="border rounded p-1" >
26       <eg-tree [tree]="tree" (nodeClicked)="nodeClicked($event)"></eg-tree>
27     </div>
28   </div>
29   <div class="col-lg-8 org-unit-types-col-main">
30     <div class="alert alert-info">
31       <div *ngIf="currentOrg()">
32         <span *ngIf="currentOrg().name()" i18n>
33           {{currentOrg().name()}} ({{currentOrg().shortname()}})
34         </span>
35         <span *ngIf="!currentOrg().name()" class="fst-italic" i18n>
36           Add Name
37         </span>
38       </div>
39     </div>
40
41     <div class="ngbNav-wrapper" *ngIf="currentOrg()"> 
42     <ul ngbNav #rootTabs="ngbNav" [(activeId)]="orgUnitTab" (navChange)="navChanged($event)" [disabled]="currentOrg().isnew()" [keyboard]="true" [roles]="false" role="tablist" class="nav-tabs">
43       <li role="presentation" [ngbNavItem]="'main'">
44         <a i18n ngbNavLink role="tab">Main Settings</a>
45         <ng-template ngbNavContent>
46           <div class="mt-2">
47             <eg-fm-record-editor *ngIf="currentOrg()" #editDialog idlClass="aou" 
48               [mode]="currentOrg().isnew() ? 'create': 'update'" [hideBanner]="true" 
49               (recordSaved)="orgSaved($event)" displayMode="inline" 
50               (recordDeleted)="orgDeleted()"
51               readonlyFields="parent,parent_ou" [preloadLinkedValues]="true"
52               [fieldOptions]="{ou_type: {customValues: orgTypeOptions()}}"
53               [record]="currentOrg().isnew() ? currentOrg() : null"
54               [recordId]="currentOrg().isnew() ? null : currentOrg().id()"
55               [showDelete]="!orgHasChildren()"
56               fieldOrder="parent_ou,ou_type,name,shortname,phone,email,opac_visible,fiscal_calendar"
57               hiddenFields="id,billing_address,mailing_address,holds_address,ill_address">
58               <eg-fm-record-editor-action label="Add Child" i18n-label 
59                 [disabled]="orgChildTypes().length === 0 || currentOrg().isnew()"
60                 buttonCss="btn-outline-info"
61                 (actionClick)="addChild()"></eg-fm-record-editor-action>
62             </eg-fm-record-editor>
63           </div>
64         </ng-template>
65       </li>
66       <li role="presentation" [ngbNavItem]="'hours'">
67         <a i18n ngbNavLink role="tab">Hours of Operation</a>
68         <ng-template ngbNavContent>
69           <div class="mt-2 common-form striped-even">
70             <div class="row fw-bold mb-2">
71               <div class="col-lg-3 offset-lg-2" i18n>Open Time</div>
72               <div class="col-lg-3" i18n>Close Time</div>
73               <div class="col-lg-2 offset-lg-2" i18n>Edit Note Field?</div>
74             </div>
75             <div class="row mb-2" *ngFor="let dow of [0,1,2,3,4,5,6]">
76               <div class="col-lg-2" [ngSwitch]="dow">
77                 <span *ngSwitchCase="0" i18n>Monday</span>
78                 <span *ngSwitchCase="1" i18n>Tuesday</span>
79                 <span *ngSwitchCase="2" i18n>Wednesday</span>
80                 <span *ngSwitchCase="3" i18n>Thursday</span>
81                 <span *ngSwitchCase="4" i18n>Friday</span>
82                 <span *ngSwitchCase="5" i18n>Saturday</span>
83                 <span *ngSwitchCase="6" i18n>Sunday</span>
84               </div>
85               <div class="col-lg-3">
86                 <input class="form-control" type='time' step="60" 
87                   [ngModel]="hours(dow, 'open')" min="00:00:00" max="23:59:59"
88                   (ngModelChange)="hours(dow, 'open', $event)"/>
89               </div>
90               <div class="col-lg-3">
91                 <input  class="form-control" type='time' step="60"
92                   [ngModel]="hours(dow, 'close')" min="00:00:00" max="23:59:59"
93                   (ngModelChange)="hours(dow, 'close', $event)"/>
94               </div>
95               <div class="col-lg-2">
96                 <button class="btn btn-outline-dark" (click)="closedOn(dow)" 
97                   [disabled]="isClosed(dow)" i18n>Closed</button>
98               </div>
99               <div class="col-lg-2">
100                  <input type="checkbox" [(ngModel)]="editNote"/>
101               </div>
102               <div class="col-lg-6 offset-lg-6" *ngIf="editNote">
103                 <div class="row">
104                   <div class="col-lg-12">
105                     <div class="input-group">
106                       <div class="input-group-text" i18n>Note: </div>
107                       <input class="form-control" type='text'
108                         [ngModel]="getNote(dow)" 
109                         (ngModelChange)="setNote(dow, $event)"
110                         placeholder="e.g. 'Closed for lunch from Noon to 1PM'" i18n-placeholder />
111                     </div>
112                   </div>
113                 </div>
114               </div>
115             </div>
116             <div class="row d-flex justify-content-end">
117               <div class="alert alert-warning me-2 p-1" 
118                 *ngIf="currentOrg().hours_of_operation().isnew()">
119                 Hours of Operation Have Not Yet Been Saved.
120               </div>
121               <div class="me-2">
122                 <button class="btn btn-warning" (click)="deleteHours()" i18n>
123                   Clear Hours of Operation
124                 </button>
125               </div>
126               <div>
127                 <button class="btn btn-info" (click)="saveHours()" i18n>
128                   Apply Changes
129                 </button>
130               </div>
131               <div class="col-lg-2"><!-- alignment --></div>
132             </div>
133           </div>
134         </ng-template>
135       </li>
136       <li role="presentation" [ngbNavItem]="'addresses'" [disabled]="currentOrg().isnew()">
137         <a i18n ngbNavLink role="tab">Addresses</a>
138         <ng-template ngbNavContent>
139           <div class="mt-2">
140             <eg-admin-org-address [orgId]="currentOrg().id()" (addrChange)="addressChanged($event)">
141             </eg-admin-org-address>
142           </div>
143         </ng-template>
144       </li>
145     </ul>
146
147     <div [ngbNavOutlet]="rootTabs" class="mt-2"></div>
148     </div>
149
150   </div>
151 </div>