<eg-fm-record-editor #newDialog
idlClass="bresv"
datetimeFields="start_time,end_time"
- [fieldOptions]="{usr:{customTemplate:{template:patronTemplate}},start_time:{customTemplate:{template:datetimeWithDefaults}},end_time:{customTemplate:{template:datetimeWithDefaults}}}"
+ [fieldOptions]="{usr:{customTemplate:{template:patronTemplate}},start_time:{customTemplate:{template:datetimeWithDefaults}},end_time:{customTemplate:{template:datetimeWithDefaults}},pickup_lib:{customTemplate:{template:pickupLibrary}}}"
hiddenFields="id,xact_start,request_time,capture_time,pickup_time,return_time,capture_staff,xact_finish,cancel_time,booking_interval,target_resource,unrecovered,request_lib,fine_interval,fine_amount,max_fine">
</eg-fm-record-editor>
</div>
</ng-template>
<ng-template #datetimeWithDefaults let-record="record" let-field="field">
- <input type="hidden" value="{{record[field.name](defaultTimes[field.name].toIsoString()}}">
+ <input type="hidden" value="{{record[field.name](defaultTimes[field.name].toISOString())}}">
<eg-datetime-select
[showTZ]="true"
[minuteStep]="minuteStep()"
- timezone="{{format.wsOrgTimezone}}"
+ [timezone]="pickupLibUsesDifferentTz ? pickupLibUsesDifferentTz : format.wsOrgTimezone"
(onChangeAsIso)="record[field.name]($event)"
[initialMoment]="defaultTimes[field.name]">
</eg-datetime-select>
</ng-template>
+<ng-template #pickupLibrary let-record="record" let-field="field">
+ <input type="hidden" value="{{record.pickup_lib(auth.user().ws_ou())}}">
+ <eg-org-select
+ [initialOrgId]="auth.user().ws_ou()"
+ (onChange)="handlePickupLibChange($event)">
+ </eg-org-select>
+ <div *ngIf="pickupLibUsesDifferentTz" class="alert alert-primary" i18n>Pickup library uses a different timezone than your library does. Please choose times in the pickup library's timezone.</div>
+</ng-template>
import {GridDataSource, GridRowFlairEntry} from '@eg/share/grid/grid';
import {IdlObject} from '@eg/core/idl.service';
import {NetService} from '@eg/core/net.service';
+import {OrgService} from '@eg/core/org.service';
import {PatronService} from '@eg/staff/share/patron.service';
import {PcrudService} from '@eg/core/pcrud.service';
import {ResourceTypeComboboxComponent} from './resource-type-combobox.component';
resourceId: number;
resourceTypeId: number;
+ pickupLibUsesDifferentTz: string;
+
startOfDay: NgbTimeStruct = {hour: 9, minute: 0, second: 0};
endOfDay: NgbTimeStruct = {hour: 17, minute: 0, second: 0};
granularity: 15 | 30 | 60 | 1440 = 30; // 1440 minutes = 24 hours
handleMultiDayReservation: () => void;
handleSingleDayReservation: () => void;
changeGranularity: ($event: ComboboxEntry) => void;
+ handlePickupLibChange: ($event: IdlObject) => void;
@ViewChildren('dateLimiter') dateLimiters: QueryList<DateSelectComponent>;
@ViewChildren('dateRangeLimiter') dateRangeLimiters: QueryList<DateRangeSelectComponent>;
private auth: AuthService,
private format: FormatService,
private net: NetService,
+ private org: OrgService,
private patron: PatronService,
private pcrud: PcrudService,
private route: ActivatedRoute,
this.fetchData();
};
+ this.handlePickupLibChange = ($event) => {
+ this.newDialog.record.pickup_lib($event);
+ this.org.settings('lib.timezone', $event.id()).then((tz) => {
+ if (tz['lib.timezone'] && (this.format.wsOrgTimezone !== tz['lib.timezone'])) {
+ this.pickupLibUsesDifferentTz = tz['lib.timezone']
+ } else {
+ this.pickupLibUsesDifferentTz = null;
+ }
+ });
+ };
+
this.useCurrentResourceBarcode = () => {
if (this.resourceBarcode) {
this.router.navigate(['/staff', 'booking', 'create_reservation', 'for_resource', this.resourceBarcode]);