2 <form ng-submit="submitBarcode(args)" role="form" class="form-inline" name="patronLookup">
3 <div class="input-group">
5 <label class="input-group-addon"
6 for="patron-curbside-barcode" >[% l('Patron Barcode') %]</label>
8 <input select-me="selectMe" class="form-control"
9 ng-model="args.barcode"
10 placeholder="[% l('Patron Barcode') %]"
11 id="patron-curbside-barcode" type="text"/>
14 <input class="btn btn-primary" type="submit" value="[% l('Submit') %]"/>
15 <button ng-click="patron_search()" class="btn btn-success">[% l('Patron Search') %]</button>
16 <button ng-click="clear()" class="btn btn-default">[% l('Clear') %]</button>
21 <div class="alert alert-warning" ng-show="bcNotFound">
22 [% l('Barcode Not Found: [_1]', '{{bcNotFound}}') %]
24 <div class="alert alert-warning" ng-show="optInRestricted">
25 [% l("This patron's record is not viewable at your library.") %]
28 <span ng-if="user_id">
31 [% l('Patron: [_1] [_2], [_3] [_4] [_5]',
32 '{{patron().pref_prefix() || patron().prefix()}}',
33 '{{patron().pref_family_name() || patron().family_name()}}',
34 '{{patron().pref_first_given_name() || patron().first_given_name()}}',
35 '{{patron().pref_second_given_name() || patron().second_given_name()}}',
36 '{{patron().pref_suffix() || patron().suffix()}}')
40 [% l('Patron has [_1] ready holds at this location.', '{{readyHolds}}') %]
44 <button ng-disabled="openAppointments.length > 0" ng-click="startNewAppointment()" class="btn btn-success">[% l('Make New Appointment') %]</button>
47 <div class="form-inline" ng-repeat="appt in openAppointments">
48 <ng-form name="forms['curbside' + appt.id]">
50 <div class="col-md-1">
51 <label for="appointment-id">[% l('Appointment') %]</label>
52 <div id="appointment-id">{{appt.id}}</div>
54 <div class="col-md-2">
55 <label for="appointment-day">[% l('Date') %]</label>
56 <eg-date-input id="appointment-day" hide-time-picker ng-model="appt.slot_date"
57 required min-date="minDate">
60 <div class="col-md-2">
61 <label for="appointment-time">[% l('Time') %]</label>
62 <select class="form-control" id="appointment-time" ng-model="appt.slot_time"
63 name="slot_time" style="display: block;"
64 required ng-focus="refreshAvailableTimes(appt)">
65 <option value=""></option>
66 <option ng-repeat="t in appt.available_times track by t.time" value="{{t.time}}"
67 ng-disabled="t.available === 0 && appt.original_slot_time !== t.time">
68 [% l('[_1] (Available: [_2])', '{{t.time_fmt}}', '{{t.available}}') %]
72 <div class="col-md-2">
73 <label for="appointment-notes">[% l('Notes') %]</label>
74 <input class="form-control" type="text" id="appointment-notes" ng-model="appt.notes" style="display: block;"></input>
76 <div class="col-md-2">
77 <label for="appointment-actions">[% l('Actions') %]</label>
78 <div id="appointment-actions">
79 <button ng-click="updateAppointment(appt)" ng-disabled="!forms['curbside' + appt.id].$valid" class="btn btn-primary">[% l('Save') %]</button>
80 <button ng-click="cancelAppointment(appt.id)" ng-disabled="!appt.id" class="btn btn-danger">[% l('Cancel Appointment') %]</button>
84 <div class="row pad-vert">
85 <div ng-if="appt.is_past" class="col-md-offset-1 col-md-4 alert alert-warning">
86 [% l('Appointment is in the past and may need to be rescheduled.') %]