--- /dev/null
+{{dataSource | json }}
+<eg-staff-banner bannerText="Booking Pull List" i18n-bannerText>
+</eg-staff-banner>
+<div class="row">
+ <div class="col-md-4">
+ <label for="ou" i18n>Library:</label>
+ <eg-org-select id="ou" [applyDefault]="true" (onChange)="fill_grid()">
+ </eg-org-select>
+ </div>
+ <div class="col-md-4">
+ <label for="days-hence" i18n>Number of days to fetch:</label>
+ <input type="number" class="form-control" id="days-hence" [(ngModel)]="daysHence" (ngModelChange)="fill_grid()">
+ </div>
+</div>
+<eg-grid [dataSource]="dataSource"
+ [sortable]="true" persistKey="booking.pull_list" >
+ <eg-grid-column name="id" [hidden]="true" [index]="true" i18n-label label="ID" path="id"></eg-grid-column>
+ <eg-grid-column name="barcode" label="Barcode" i18n-label path="current_resource.barcode"></eg-grid-column>
+ <eg-grid-column name="title" label="Title or name" i18n-label path="target_resource_type.name"></eg-grid-column>
+ <eg-grid-column label="Reservation start time" path="reservations.0.start_time" i18n-label></eg-grid-column>
+ <eg-grid-column label="Reservation end time" path="reservations.0.end_time" i18n-label></eg-grid-column>
+ <eg-grid-column label="Reservation end time" path="reservations.0.end_time" i18n-label></eg-grid-column>
+ <eg-grid-column label="Patron first name" path="reservations.0.usr.first_given_name" i18n-label></eg-grid-column>
+ <eg-grid-column label="Patron last name" path="reservations.0.usr.family_name" i18n-label></eg-grid-column>
+
+</eg-grid>
--- /dev/null
+import { Component, Input, OnInit } from '@angular/core';
+import { GridDataSource } from '@eg/share/grid/grid';
+import { NetRequest, NetService } from '@eg/core/net.service';
+import { Pager } from '@eg/share/util/pager';
+import { AuthService } from '@eg/core/auth.service';
+
+@Component({
+ selector: 'eg-pull-list',
+ templateUrl: './pull-list.component.html'
+})
+
+export class PullListComponent implements OnInit {
+ @Input( ) daysHence: number;
+
+ public dataSource: GridDataSource;
+ private auth: AuthService;
+
+ constructor(
+ private net: NetService,
+ egAuth: AuthService
+ ){
+ this.auth = egAuth;
+ this.daysHence = 5;
+ }
+
+ fill_grid () {
+ this.net.request(
+ 'open-ils.booking', 'open-ils.booking.reservations.get_pull_list',
+ this.auth.token(), null,
+ (86400 * this.daysHence), // convert seconds to days
+ 4
+ ).subscribe( data => {
+ this.dataSource.data = data;
+ })
+ }
+
+ ngOnInit() {
+ this.dataSource = new GridDataSource();
+ this.fill_grid();
+ }
+}
--- /dev/null
+import {NgModule} from '@angular/core';
+import {StaffCommonModule} from '@eg/staff/common.module';
+import {BookingRoutingModule} from '../routing.module';
+import {PullListComponent} from './pull-list.component';
+
+@NgModule({
+ declarations: [
+ PullListComponent
+ ],
+ imports: [
+ StaffCommonModule,
+ BookingRoutingModule,
+ ],
+ providers: [
+ ]
+})
+
+export class PullListModule {
+
+}
--- /dev/null
+import {NgModule} from '@angular/core';
+import {RouterModule, Routes} from '@angular/router';
+import {PullListComponent} from './pull-list/pull-list.component';
+
+const routes: Routes = [
+ {
+ path: 'pull_list',
+ component: PullListComponent
+ }
+
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule],
+ providers: []
+})
+
+export class BookingRoutingModule {}
path: 'sandbox',
loadChildren : '@eg/staff/sandbox/sandbox.module#SandboxModule'
}, {
+ path: 'booking',
+ loadChildren : '@eg/staff/booking/routing.module#BookingRoutingModule'
+ }, {
path: 'admin',
loadChildren : '@eg/staff/admin/routing.module#AdminRoutingModule'
}]