Mike Risher [Tue, 17 Sep 2019 21:33:04 +0000 (21:33 +0000)]
lp1844169-search-filter-groups
Port search filter groups admin from DOJO UI to Angular. Each search
filter group has its own edit page, from which you can edit search
filter group entries.
Signed-off-by: Mike Risher <mrisher@catalyte.io>
Changes to be committed:
modified: eg2/src/app/staff/admin/local/admin-local-splash.component.html
modified: eg2/src/app/staff/admin/local/routing.module.ts
new file: eg2/src/app/staff/admin/local/search-filter/search-filter-group-entries.component.html
new file: eg2/src/app/staff/admin/local/search-filter/search-filter-group-entries.component.ts
new file: eg2/src/app/staff/admin/local/search-filter/search-filter-group-routing.module.ts
new file: eg2/src/app/staff/admin/local/search-filter/search-filter-group.component.html
new file: eg2/src/app/staff/admin/local/search-filter/search-filter-group.component.ts
new file: eg2/src/app/staff/admin/local/search-filter/search-filter-group.module.ts
modified: Open-ILS/examples/fm_IDL.xml
Mike Risher [Thu, 19 Dec 2019 17:56:41 +0000 (17:56 +0000)]
lp1855780 Notification Action Triggers
Port Notification Action Triggers from DOJO to Angular. This consists of 4 grids, each
navigated to by its corresponding tab. The Trigger Event Definitions grid allows
cloning of records.
Signed-off-by: Mike Risher <mrisher@catalyte.io>
Changes to be committed:
modified: Open-ILS/src/eg2/src/app/staff/admin/local/admin-local-splash.component.html
modified: Open-ILS/src/eg2/src/app/staff/admin/local/routing.module.ts
new file: Open-ILS/src/eg2/src/app/staff/admin/local/triggers/triggers.component.html
new file: Open-ILS/src/eg2/src/app/staff/admin/local/triggers/triggers.component.ts
new file: Open-ILS/src/eg2/src/app/staff/admin/local/triggers/triggers.module.ts
new file: Open-ILS/src/eg2/src/app/staff/admin/local/triggers/triggers_routing.module.ts
Bill Erickson [Fri, 28 Aug 2020 16:11:39 +0000 (12:11 -0400)]
LP1885767 Staff catalog exclude electronic option
Adds support for the 'Exclude Electronic Resources' checkbox in the
staff catalog, consistent with the TPAC option.
Adds a workstation setting, 'Staff Catalog "Exclude Electronic
Resources" Option' to control the behavior and an option to
toggle the preference in the staff catalog preferences page.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Mary Llewellyn <mllewell@biblio.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Simplifies an i18n structure that was leading to this error when
expanding the staff catalog filters section:
ERROR DOMException: Failed to execute 'appendChild' on
'Node': The new child element contains the parent.
at EmulatedEncapsulationDomRenderer2.appendChild
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Mary Llewellyn <mllewell@biblio.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Bill Erickson [Mon, 21 Sep 2020 19:38:26 +0000 (15:38 -0400)]
LP1896512 Angular retrieve record by ID/TCN
Ports the retrieve records by ID/TCN to Angular. Note this version of
the form confirms a record exists by both ID and TCN before directing
the user to the record detail page in the Angular staff catalog.
Updates the navigation bars to use the Angular port for each.
Chris Sharp [Tue, 21 Aug 2018 18:22:05 +0000 (14:22 -0400)]
LP#1788260 - Break out in-house-use non-cat circulations.
Previously, all non-cataloged circulations were grouped
together, causing problems for libraries who need to
exclude in-house circulations from circ counts.
The UrlMatcher function used by the provider interface needs
to spelled slighly differently to avoid the AOT compiler
used by "npm run export-strings" from failing with the following error:
ERROR in Error during template compile of 'AcqProviderRoutingModule'
Function expressions are not supported in decorators in 'ɵ0'
'ɵ0' contains the error at app/staff/acq/provider/routing.module.ts(7,14)
Consider changing the function expression into an exported function
Jason Boyer [Wed, 16 Sep 2020 17:03:20 +0000 (13:03 -0400)]
Remove Extraneous Permissions from Course Reserves
According to the release notes and seed data the MANAGE_RESERVES
permission is intended to be granted to the Circulation Administrator
group rather than Serials and System / Global Administrators.
Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
Jason Boyer [Wed, 16 Sep 2020 18:22:15 +0000 (14:22 -0400)]
Correct typo in seed data
Rather than causing an error, forgetting a comma between 2 strings
concatenates them, and we don't have a permission called
VIEW_MERGE_PROFILEVIEW_REPORT_OUTPUT.
Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
fix some warnings reported by Launchpad's translation import
This patch fixes POT syntax errors in two cases and checks
in the results of xml2po for another. None of the files involved
(nowadays) are visible to users, so this patch is strictly
about keeping LP happy.
Refactor the code checking for curbside-available current-pickup
libraries so that it is checked for all of MyOPAC, allowing us to hide
the Curbside Pickup top-level tab when there are no holds ready at
curbside pickup enabled locations. The tab will always be at the end of
the list if it is visible.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Mike Rylander [Thu, 25 Jun 2020 16:45:15 +0000 (12:45 -0400)]
LP#1879983: Allow different granularities for the same date
The times available for each date were unintentionally limited to just
one org unit. This commit removes that restriction by storing the times
available for a date as passed to the template separately for each org
unit that has a curbside object, or is now requesting one.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Mike Rylander [Fri, 29 May 2020 16:17:54 +0000 (12:17 -0400)]
LP#1879983: Add curbside subtab to the My Account holds UI
This updates the public catalog My Account holds tab to add
a subtab for curbside appointments. This subtab is displayed
only when the patron has available holds on the shelf at pickup
libraries that have enabled the circ.curbside library setting.
From this subtab, patrons can:
* Set times for curbside appointments and specify notes.
* Modify and cancel appointments.
* Mark themselves has having arrived at the library.
In addition to Mike Rylander, significant contributions to this
patch were made by Galen Charlton.
Sponsored-by: PaILS Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Galen Charlton [Tue, 2 Jun 2020 18:51:35 +0000 (14:51 -0400)]
LP#1879983: add Curbside Pickup to the Angular navbar
For both the Angular and AngularJS staff interfaces, the
Curbside Pickup option in the Circulation menu is displayed
only if circ.curbside has been enabled for the workstation
library.
Sponsored-by: PaILS Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Galen Charlton [Tue, 26 May 2020 21:17:48 +0000 (17:17 -0400)]
LP#1879983: AngularJS staff interface for curbside pickup
This adds a new AngularJS page for curbside appointment management. The
page has several tabs:
* To Be Staged appointments. This displays upcoming appointments; from
here, staff can mark appointments as "staged". Depending on the
library's curbside workflow, that may mean that the staff member
places the items in a bag or on a delivery table.
This tab also allows a staff member to claim (or unclaim)
responsibility for staging items for an appointment.
* Staged and Ready. This displays staged appointments; from here, staff
can mark that the patron has arrived, check out the items and mark
the appointment delivered, or un-stage the appointment.
* Patron Is Outside: from here, staff can check out the items and
mark the appointment delivered.
* Delivered Today: This displays appointments that were marked as
delivered.
* Schedule Pickup: This allows staff members to create and modify
curbside appointments on behalf of a patron.
AngularJS was chosen for this interface to permit backporting the
feature to older versions of Evergreen without having to deal with
variations in the version of Angular that is supported in past
releases. It also better meshes with the patron and circulation staff
interfaces that have not yet been rewritten in Angular.
The curbside pickup page only handles appointments at the workstation
library of the current staff user, as it assumes that the curbside
process is not centralized.
In addition to Galen Charlton, significant contributions to this
patch were made by Mike Rylander.
Sponsored-by: PaILS Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
This commit adds a reactor and validator for automating parts of the
basic Curbside workflows:
* Curbside validator: check whether curbside is enabled at the org unit
applicable an A/T event's target, which could be a user, org unit,
curbside appointment, or hold request.
* CurbsideSlot reactor: Creates a curbside appointment slot at the hold
pickup library when a hold becomes ready for pickup, if one does not
exist. This is meant to be triggered by the hold.available hook.
Appointments created by this reactor do not have an appointment time
set, as that is meant to be supplied by the patron or a staff member
acting on behalf of the patron.
In addition to Mike Rylander, significant contributions to this
patch were made by Jason Boyer.
Sponsored-by: PaILS Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Jason Boyer <jboyer@equinoxinitiative.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
This commit adds the Curbside OpenSRF application, open-ils.curbside,
which provides all the business logic and data retrieval APIs. The
open-ils.curbside service must be registered with the public routeri
in order for the feature to function.
The methods in this service are:
* open-ils.curbside.fetch_mine: retrieve the active appointments
for the current login session; this is meant for OPAC use.
* open-ils.curbside.open_user_appointments_at_lib: retrieve
appointments for the specified user at a given library.
* open-ils.curbside.patron.ready_holds_at_lib.count: count
available holds for a patron at a specified library; this is
needed because there is no other single method that provides
this.
This commit defines events that might be sent to UIs in the case of
exceptional circumstances:
* CURBSIDE_NOT_ALLOWED (i.e., if the circ.curbside library setting is
not enabled for a given pickup library.)
* CURBSIDE_MAX_FOR_TIME (i.e., if all of the available slots for
a given appointment time have been scheduled.)
* CURBSIDE_EXISTS (i.e., if one is attempting to create a new
open curbside appointment for a patron and pickup library when
one already exists.)
Sponsored-by: PaILS Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
This patch adds a new database table, action.curbside, for
tracking appointments to pick up on-shelf hold requests:
id - ID
patron - patron that the appoint is for
org - pickup library that the appointment is for
slot - date and time of appointment
staged - whethers for appointment have been staged
stage_staff - staff member responsible for staging the items
arrival - whether patron has arrived to pick up the items
delivered - whether items have been checked out to patron
delivery_staff - staff member responsible for checking out the items
notes - notes about the appointment, e.g., the color
of the patron's vehicle
It also adds four new library settings:
* circ.curbside: whether to enable curbside appointments for
picking up available hold requests. This default to off.
* circ.curbside.granularity: interval between appointment slots. This
defaults to 15 minutes.
* circ.curbside.max_concurrent: how many appointments to permit per
time slot. This defaults to 10.
* circ.curbside.disable_patron_input: if turned on, display scheduled
and pending appointments in My Account in the public catalog but
do not give the patron the ability to change them from My Account.
This defaults to false, i.e., allowing patrons to modify appointments
from My Account.
It also adds two Action Trigger hooks:
* hold.offer_curbside: to trigger notifications offering a patron the
opportunity to set an appointment time; this is invoked if the
CurbsideSlot A/T reactor is used to create appointment slots when
holds become available.
* hold.confim_curbside: fired when a curbside pickup appointment is
created or updated.
It also adds seed data for the Curbside A/T validator and CurbsideSlot A/T
reactor.
This is in the first patch in a series for a new feature in
Evergreen called Curbside Pickup.
The Curbside Pickup features in Evergreen provides an interface to help
facilitate contact free pickup of library materials. It provides a dedicated
interface in the staff client for library staff to track and manage curbside
pickup appointments and materials through the various stages of the process.
Staff can also schedule pickup appointments on behalf of patrons. This feature
also allows patrons to schedule their own curbside pickup appointments in their
OPAC account, as well as inform the library when they have arrived and are
waiting for their materials.
To test
-------
(Testing notes were contributed by Andrea Neiman)
In order to test Curbside, you will need to place and capture holds at the
respective location you’re testing. This work does not interfere with existing
hold rules or parameters, except to force checkout override in certain
circumstances.
In addition, the circ.curbside library setting must be enabled. These testing
suggestions assume that the A/T event definitions included in this patch
series have been enabled.
Things to test:
* MyAccount correctly reflects scheduling/scheduled options
* Alert staff on my arrival should move batch to the Patron is Outside
tab
* Update appointment/cancel appointment options should move or remove
the batch appropriately
* If a patron has pickups at multiple locations, they should be able
to schedule separate pickups per location
* Email notices at various steps of the way are firing correctly
* Patron should get email for hold pickup, including scheduling
curbside.
* Patron should get email confirming curbside pickup
* Patron should get email with checked out items, if email receipts
are enabled
* Correct “batching” of items for pickup
* Batch moving correctly through tabs
* Batch is physically collocated - i.e. not containing pickups for
other OUs
* Checkouts are performed correctly
* Check against patrons with blocks - force override should be in effect
* Settings are being respected with regard to pickup scheduling & time
constraints
* Can’t create pickups in the past
* Pickups respect library open hours as set in Org Unit Administration
* Can’t create pickups if the 15-minute block is filled
Sponsored-by: PaILS Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Each call to oils_i18n_gettext should have a unique id per class,
this patch adjusts the call for acmr so translations (and tests)
will work correctly.
Signed-off-by: Jason Boyer <JBoyer@equinoxinitiative.org>
Jason Boyer [Fri, 11 Sep 2020 16:43:20 +0000 (12:43 -0400)]
LP1849212: Correct upgrade script
Re-align permission ids and correct syntax errors in the course reserves upgrade script.
I'm not convinced the boolean_facet metabib class should exist simply to add "course reserves, Y/N?"
and in any case can not function as is because adding metabib field classes requires additional
field_entry tables which are missing from the seed data and upgrade script.
Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Jane Sandberg [Wed, 26 Aug 2020 22:51:32 +0000 (15:51 -0700)]
LP1849212: Improvements to the Simplified Marc Editor
* Templates can now set multiple subfields for the same field
* Templates can now set indicator values
* Editor now allows user to choose a MARC Form and Type
* Improvements to the course associate brief record interface
to use these improvements
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Jane Sandberg [Wed, 26 Aug 2020 18:30:02 +0000 (11:30 -0700)]
LP1849212: Grid improvements
- Correcting some grid column labels
- Correcting ViewChild static flags, allowing grid refresh
- Also, remove the static: false flag, since it is no longer necessary
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Jane Sandberg [Mon, 10 Aug 2020 03:03:26 +0000 (20:03 -0700)]
LP1849212: Improvements to course materials admin UI
- Better order for acmc fm-editor
- Add original item attributes to the course materials list
- trim whitespace from barcodes
- accessible labels in the course page
- refactor course users
- fix incorrect paths in course materials grid columns
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
- Apply Course Users functionality to Angular Course Page
Admin UI.
- Condense Course User functionality into its own component,
usable as a dialog and inline.
- Condense Course Material functionality into its own component,
usable as a dialog and inline.
- Add Return to Course List button
- Move Archive Course button above tabs
- Allow Editing of Course Users and Materials
- Set datatype of is_public on Course User to 'bool' from 'boolean'
- Relabel is_public on Course User to "OPAC Viewable?"
- Undo removal of fm-editor in Course List
- Users with the MANAGE_RESERVES permission who are opted
into the course module can view a new Course Info tab on
the item record.
- Course Info tab displays a list of all courses(with link
to the Admin Course Page) item is associated with, and a
list of all instructors associated with those courses.
- Improvements to open-ils.circ.course_users.retrieve.
- Improve visuals when logged in as administrator.
- Implement Course Search OPAC page, based on Advanced Catalog
Search
- Edit Searchbar to include entry for Course Search
Signed-off-by: Kyle Huckins <khuckins@catalyte.io> Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Kyle Huckins [Fri, 6 Dec 2019 07:17:53 +0000 (07:17 +0000)]
lp1849212: Course Admin Page and OPAC improvements
- Double-clicking on a course in the Course Reserves List will
up a dedicated admin page for an individual course, featuring
tabs for Editing and managing Course Materials.
- Add bannerStyle and bannerIcon parameters to
eg-staff-banner to improve eg-staff-banner
accessability
- Improve UX of Course Page
- Properly disable inputs and buttons when course
is already archived.
- Change links in Angular Catalog to navigate the user to the
Admin Course Page.
- Prevent users from associating duplicate items to a
course.
- Remove unnecessary artifact from course page html
- Implement Course column to view Course Numbers of classes associated
with individual copies.
- Add a record column to course_module_course_materials
to improve efficiency of API and service methods.
- Add previous circ_modifier adjustments to upgrade script
- Provide Associated Course names and numbers on
OPAC Catalog search results.
- Fixed typo for User Role field, now matcheing DB column, usr_role
- Added boolean "is_public" to differentiate between a role that
should be viewable by anyone on the OPAC.
- Perl Module and Course Page displaying name and course
number of course, as well as names/roles of publicly viewable
members, course details, and a table of all materials associated
with the course.
- URL listed as eg/opac/course/[COURSE_ID]
- Ensure Shelving Location input checkbox
ticks when selecting a value.
- Ensure temporary value inputs are not
cleared when entering a new item.
- Fully select contents of Barcode input
field when selected.
- Clear bBarcode input upon hitting enter.
- Add a new tab for managing Users associated with
the course, in preparation for the User Dialog code.
- Remove excess whitespace on OPAC course page.
Signed-off-by: Kyle Huckins <khuckins@catalyte.io> Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Kyle Huckins [Mon, 25 Nov 2019 22:06:04 +0000 (22:06 +0000)]
lp1849212 Angular Catalog Course integration
- Add a column retrieving the names of courses linked to materials
when opted into the Course Reserves functionality.
- Expand the bib record summary when opted in to display all courses
associated with an item.
- Display associated courses on Search Results UI
- Move bulk of Associate Item funcitonality into Course Service
Signed-off-by: Kyle Huckins <khuckins@catalyte.io> Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu> Signed-off-by: Michele Morgan <mmorgan@noblenet.org> Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>