]> git.evergreen-ils.org Git - working/Evergreen.git/log
working/Evergreen.git
4 years agoLP#1768869 - Update make_release to add auditor table update
Josh Stompro [Thu, 28 Feb 2019 15:13:58 +0000 (09:13 -0600)]
LP#1768869 - Update make_release to add auditor table update

The auditor.update_auditors() function needs to be called
to update tables that are being auditied with schema
changes made to those tables.  This adds a call to that
funcation at the end of the upgrade scripts.

The function seems to not take that long to run, so it may
be ok to run it more than necessary.  Or it can be removed
by release manager if they know that no schema changes were made.

Signed-off-by: Josh Stompro <stompro@stompro.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP#1831788: (follow-up) quell an ng-lint warning about whitespace
Galen Charlton [Thu, 1 Aug 2019 21:01:21 +0000 (17:01 -0400)]
LP#1831788: (follow-up) quell an ng-lint warning about whitespace

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1837260 Bill Type IDL required fields
Bill Erickson [Mon, 22 Jul 2019 14:22:06 +0000 (10:22 -0400)]
LP1837260 Bill Type IDL required fields

Add oils_obj:required attributes to config.billing_type IDL fields.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1837260 FM Record editor 'inline' display mode
Bill Erickson [Fri, 19 Jul 2019 21:58:19 +0000 (17:58 -0400)]
LP1837260 FM Record editor 'inline' display mode

Adds support for a new @Input() attribute called "displayMode", which
defaults to "dialog".  When the value is set to "inline", the editor
pane will be rendered inline within the page where the
<eg-fm-record-editor/> element resides.

Adds support for success/fail toasts.

Implements the handlers for the previously defined onSave$, onError$,
and onCancel$ EventEmitters, primarly so callers can interact with the
editor in "inline" mode where no "close()" operation occurs.

Sandbox example included.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1813078 Menus are sometimes grayed out based on browser size
Garry Collum [Mon, 20 May 2019 18:41:32 +0000 (14:41 -0400)]
LP1813078 Menus are sometimes grayed out based on browser size

This patch changes a media definition in css from 800px to 768px, the md column
size for bootstrap.css.  Items in the menus font color changed when the browser
was sized between 768px and 800px.

To test.
1. Expand the Circulation menu, and change the browser to a width between
768px and 800px.  Notice that the menu items change to a gray color.
2. Apply the patch, and then change the width of the browser.  Notice that
the menu items do not change color before the menu is collapsed.

Signed-off-by: Garry Collum <gcollum@gmail.com>
Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agodocs: adding index terms 'copy tags' and 'copy status'
Andrea Buntz Neiman [Thu, 1 Aug 2019 18:38:39 +0000 (14:38 -0400)]
docs: adding index terms 'copy tags' and 'copy status'

Signed-off-by: Andrea Buntz Neiman <abneiman@equinoxinitiative.org>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agodocs: updating copy tags to item tags
Andrea Buntz Neiman [Wed, 24 Apr 2019 18:00:42 +0000 (14:00 -0400)]
docs: updating copy tags to item tags

Changed all appropriate references from copy to item.  Included references to a
couple updated screenshots.  Changed the name of the file from
copy_tags_cataloging.adoc to item_tags_cataloging.adoc.

Signed-off-by: Andrea Buntz Neiman <abneiman@equinoxinitiative.org>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoDocs: Adding and updating alt tags, fixing typos
Andrea Buntz Neiman [Wed, 24 Apr 2019 15:03:46 +0000 (11:03 -0400)]
Docs: Adding and updating alt tags, fixing typos

Changes a item -> an item
Also changes image alt tags to reflect the copy -> item language change
Also adds missing alt tags

Signed-off-by: Andrea Buntz Neiman <abneiman@equinoxinitiative.org>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoDocs: Updating Terminology
Cheyenne Jones [Mon, 5 Nov 2018 20:29:18 +0000 (12:29 -0800)]
Docs: Updating Terminology

This updates outdated terms like copy, volume, and copy location with
the up-to-date item, call number, and shelving location.

Signed-off-by: Cheyenne Jones <44786394+Cheyenne-jones@users.noreply.github.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoDocs: LP1826263: Update batch_importing_MARC.adoc
Kristy Bauman [Wed, 24 Apr 2019 20:12:32 +0000 (16:12 -0400)]
Docs: LP1826263: Update batch_importing_MARC.adoc

Signed-off-by: Kristy Bauman <45376827+kraeb@users.noreply.github.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1823367: (follow-up) revert renaming of eg.cat.transfer_target_vol
Galen Charlton [Thu, 1 Aug 2019 18:33:45 +0000 (14:33 -0400)]
LP#1823367: (follow-up) revert renaming of eg.cat.transfer_target_vol

This local storage key is expected by AngularJS interfaces, and
the AngularJS item status page in particular remains relevant for
now. This prevents a regression whereby marking a call number/volume
target in the Angular Holdings View interface would not set a
target that would work when trying to initiate a transfer from the
AngularJS Item Status interface.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1823367 Volume moniker migration continued
Bill Erickson [Thu, 18 Jul 2019 21:30:56 +0000 (17:30 -0400)]
LP1823367 Volume moniker migration continued

Map a server-generated 'volume' field to its local/client equivalent of
'callNum'.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1823367 Move away from "volume" moniker internally
Dan Wells [Thu, 18 Jul 2019 19:20:39 +0000 (15:20 -0400)]
LP1823367 Move away from "volume" moniker internally

It isn't really correct to use "volume" and "call number"
interchangeably.  This code substitutes various forms of the second
for various forms of the first within the internal variable and
function names.  To help contain the change, it tries to only do so
for values which are native to eg2, and not leaking from or into other
interfaces.

Understanding that this change is somewhat disruptive, I still think it
is in our overall best interest, as it will help us from falling into
old habits, and it will help future coders better understand the
relationship between the code and the interface.

Note, this code does not change any filenames.  This is for review
purposes to allow the changes to be more easily observed.  If accepted,
we should change couple of affected filenames as well.

Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1823367 Re-fix Copy to Item name changes
Dan Wells [Thu, 18 Jul 2019 17:53:13 +0000 (13:53 -0400)]
LP1823367 Re-fix Copy to Item name changes

Most of these changes already exist in the AngularJS client, so let's
bring them over to Angular to keep with current practice.  Also, fix two
pesky "Volume" labels which didn't make the previous commit.

Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1823367 Ang catalog replace 'Volume' with 'Call Number'
Bill Erickson [Wed, 17 Jul 2019 16:36:10 +0000 (12:36 -0400)]
LP1823367 Ang catalog replace 'Volume' with 'Call Number'

Update references in the Angular staff catalog for "Volume" with the
preffered "Call Number".

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1823367 Grid toolbar checkbox onChange repairs
Bill Erickson [Tue, 28 May 2019 16:15:34 +0000 (12:15 -0400)]
LP1823367 Grid toolbar checkbox onChange repairs

Update checkbox onChange handler in the grid toolbar to emit an event
instead of trying to call the handler like a function.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1823367 Catalog ident query improvements
Bill Erickson [Tue, 28 May 2019 15:00:39 +0000 (11:00 -0400)]
LP1823367 Catalog ident query improvements

* Default to ISBN search in the identifier query form.

* Remove the disabled "call number browse" entry from the identifier
  query type selector, since CN browse now has a dedicated tab.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLp 741788: Add marc_stream_importer.pl to .gitignore
Jason Stephenson [Thu, 1 Aug 2019 13:38:43 +0000 (09:38 -0400)]
Lp 741788: Add marc_stream_importer.pl to .gitignore

Add Open-ILS/src/support-scripts/marc_stream_importer.pl to .gitignore
to avoid the following message when updating or changing branches:

error: The following untracked working tree files would be overwritten by checkout:
Open-ILS/src/support-scripts/marc_stream_importer.pl
Please move or remove them before you switch branches.
Aborting

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Jason Boyer <jboyer@library.in.gov>
4 years agoLP#1805895 Bucket grid configuration updates do not save
Dan Briem [Fri, 5 Jul 2019 23:34:13 +0000 (19:34 -0400)]
LP#1805895 Bucket grid configuration updates do not save

Some saved columns stick, but others are ignored. Issue affects eg-grid[s]
that use the auto-fields attr to load all columns on idl-class attr. This
is because saved columns are whitelisted against the initial column config
before the auto fields are loaded.

Patch adds $scope.handleAutoFields() to egCore.hatch.getItem. This happens
after the eg-grid-fields transclude (no collisions) but before the saved
columns are whitelisted. The original call remains to handle cases where
there is no persist-key or saved config.

Test:
1. Go to Circulation->User Buckets
2. Add the Is Deleted column to the grid
3. Save columns and refresh (note Is Deleted is not visible)
4. Apply patch and repeat steps 1-3 (note Is Deleted is now visible)

Signed-off-by: Dan Briem <dbriem@wlsmail.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Jason Boyer <jboyer@library.in.gov>
4 years agoLP1796936: Add aria-labels to the checkboxes in web client grids
Jane Sandberg [Fri, 12 Apr 2019 20:03:46 +0000 (13:03 -0700)]
LP1796936: Add aria-labels to the checkboxes in web client grids

To test:
1) Go to an AngularJs grid interface.  Make sure that the "Select all"
checkbox has an aria-label attribute of "All rows"
2) In the same interface, make sure that each checkbox in the
non-header rows has an aria-label like "Row 15", "Row 23", etc.
3) Repeat steps 1-2 for an Angular grid interface.

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP#1831788: (follow-up) address ng xi18n complaint about nested i18n elements
Galen Charlton [Thu, 1 Aug 2019 15:13:14 +0000 (11:13 -0400)]
LP#1831788: (follow-up) address ng xi18n complaint about nested i18n elements

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1759864: Mark Item Damaged from Holdings View Fails
a. bellenir [Tue, 12 Mar 2019 15:09:02 +0000 (11:09 -0400)]
LP1759864: Mark Item Damaged from Holdings View Fails

"Mark Item Damaged" fails on the holdings view and from the patron profile holds tab.

the javascript console indicates a dependency issue:
Error: [$injector:unpr] Unknown provider: egItemProvider <- egItem

egItem is defined in web/js/ui/default/staff/circ/services/item.js

resolved by including the item.js source in the index.tt2 template files for both screens.

Signed-off-by: a. bellenir <abelleni@grpl.org>
Signed-off-by: Remington Steed <rjs7@calvin.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
4 years agoLP1775920: Improve consistency in item status menus
Jane Sandberg [Thu, 25 Apr 2019 19:49:19 +0000 (15:49 -0400)]
LP1775920: Improve consistency in item status menus

To test:

1) Go into item status and scan in a few barcodes.
2) Select one of the items from the grid.
3) Click on the Actions menu.  Note the list of actions.
4) Click the Detail View button.
5) Click the Actions menu.  Note that several actions from
step 3 are missing.
6) Apply this commit.
7) Repeat step 5.  Make sure that all the actions are now
available on the Detail View actions menu (although some have
slightly different names, to match the clarifying wording
introduced in lp1717551)
8) Make sure that all the actions work correctly.

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Dawn Dale <ddale@georgialibraries.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1681930 fm_IDL.xml billing/paid total column type correction.
Geoff Sams [Thu, 7 Mar 2019 02:54:15 +0000 (20:54 -0600)]
LP1681930 fm_IDL.xml billing/paid total column type correction.

Both xact_billing_totals and xact_paid_totals had incorrect unvoided
sum column types of int, this corrects them both to money instead.

Signed-off-by: Geoff Sams <gsams@roanoketexas.com>
Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1832146: Make sure that comboboxes don't get cut off
Jane Sandberg [Mon, 10 Jun 2019 03:57:49 +0000 (20:57 -0700)]
LP1832146: Make sure that comboboxes don't get cut off

To test:
1) Go to the sandbox and open the accordion.
2) Open the combobox. Note that it isn't cut off.
3) Go to Administration > Acquisitions Administration
> Exchange Rates.
4) Click New Exchange Rate.
5) Go to the "From Currency" and "To Currency" fields.
6) Note that the dropdowns are visible and not cut off.

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1831390: Don't clobber startId of combobox with null values
Jane Sandberg [Fri, 26 Jul 2019 18:28:13 +0000 (11:28 -0700)]
LP1831390: Don't clobber startId of combobox with null values

Also ensures that writeValue accepts only ComboboxEntry values,
so [(ngModel)] both gives and receives ComboboxEntry values, rather
than a confusing mix.

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1831390: Fixing implementation of registerOnTouch
Jane Sandberg [Mon, 8 Jul 2019 13:44:53 +0000 (06:44 -0700)]
LP1831390: Fixing implementation of registerOnTouch

This commit ensures that the onTouch callback is called on the blur
event, per the official Angular documentation.

Also improves the display of default values in the datepicker

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1831390 ControlValueAccessor continued
Bill Erickson [Fri, 28 Jun 2019 19:07:03 +0000 (15:07 -0400)]
LP1831390 ControlValueAccessor continued

Make eg-date-select traffic in Date objects instead of YMD strings.
Added simple combobox [(ngModel)] example.
Added combobox freetext testing
Avoid forcing startIdFiresOnChange for combobox.
Avoid redundant FormsModule import.
Minor lint repairs.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1831390: combobox and date-select implement ControlValueAccessor
Jane Sandberg [Tue, 25 Jun 2019 18:17:07 +0000 (11:17 -0700)]
LP1831390: combobox and date-select implement ControlValueAccessor

This makes both components compatible with [(ngModel)] and
reactive forms.

Also adds sandbox examples.

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1831788: (follow-up) removing small linting errors, unused imports
Jane Sandberg [Wed, 31 Jul 2019 21:19:08 +0000 (14:19 -0700)]
LP1831788: (follow-up) removing small linting errors, unused imports

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP#1831788: (follow-up) properly handle case where filter value is 0
Galen Charlton [Wed, 31 Jul 2019 20:15:21 +0000 (16:15 -0400)]
LP#1831788: (follow-up) properly handle case where filter value is 0

To test
-------
[1] In the sandbox's copy grid, display the status column and filter
    by the 'Available' status (ccs.id = 0).
[2] Verify that the correct rows are returned.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP1831788 Add EgCoreModule for CommonWidgetsModule, etc.
Bill Erickson [Wed, 31 Jul 2019 18:21:18 +0000 (14:21 -0400)]
LP1831788 Add EgCoreModule for CommonWidgetsModule, etc.

Collect core objects into their own module so they may be imported
without requiring task-specific modules to import EgCommonModule, which
provides a lot more than most sub-modules need.

In the case of CommonWidgetsModule, it required access to the
FormatPipe, which is a core object, originally exported from
EgCommonModule.  However, EgCommonModule was overkill for
CommonWidgetsModule and importing it would likely have created other
dependency problems.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP1831788 dialog dismissal and i18n repairs
Bill Erickson [Wed, 31 Jul 2019 18:56:43 +0000 (14:56 -0400)]
LP1831788 dialog dismissal and i18n repairs

Update sandbox dialog error handling to treat all error conditions as
errors.  Dialogs no longer produce an error on dismissal, they just
complete the obvservable.

Add i18n-placeholder attributes to some grid filter placeholder text.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1831788: (follow-up) rename grid method
Galen Charlton [Tue, 30 Jul 2019 20:05:27 +0000 (16:05 -0400)]
LP#1831788: (follow-up) rename grid method

Specifically, reloadSansPagerReset() =>  reloadWithoutPagerReset()

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1831788: (follow-up) update sandbox example
Galen Charlton [Tue, 30 Jul 2019 20:02:49 +0000 (16:02 -0400)]
LP#1831788: (follow-up) update sandbox example

- dialog adjusted for LP#1823041 changes
- typo fixed

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1831788: add user-level release notes
Galen Charlton [Wed, 5 Jun 2019 17:27:43 +0000 (13:27 -0400)]
LP#1831788: add user-level release notes

Sponsored-by: MassLNC
Sponsored-by: Georgia Public Library Service
Sponsored-by: Indiana State Library
Sponsored-by: CW MARS
Sponsored-by: King County Library System
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1813788: add example of grid improvements to sandbox
Galen Charlton [Wed, 5 Jun 2019 15:18:14 +0000 (11:18 -0400)]
LP#1813788: add example of grid improvements to sandbox

This patch adds a new grid to the Angular sandbox page
that demonstrates the following features introduced
in the previous patch:

- grid filtering
- stick grid headers
- grid reloads without losing one's current paging
  location

Sponsored-by: MassLNC
Sponsored-by: Georgia Public Library Service
Sponsored-by: Indiana State Library
Sponsored-by: CW MARS
Sponsored-by: King County Library System
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1831788: add result filtering and other improvements to the Angular eg-grid
Galen Charlton [Wed, 5 Jun 2019 15:19:36 +0000 (11:19 -0400)]
LP#1831788: add result filtering and other improvements to the Angular eg-grid

This patch enables users to filter results in Angular eg-grids that
use PCRUD-based data sources.

Filtering can be enabled in an eg-grid defintion by adding the following
attribute to <eg-grid>:

  [filterable]="true"

If, for some reason, a particular column should not be filterable by the
user, filtering can be disabled by passing false to the [filterable]
attribute of an <eg-grid-column> element like this:

  <eg-grid-column [sortable]="true" [filterable]="false"  path="barcode"></eg-grid-column>

When filtering is enabled, a new section of the grid header is displayed that
includes, for each filterable column:

* A drop-down menu letting the user specify an operator such as
  "is exactly", "exists" (i.e., is not null), "is greater than", and so
  forth. The drop-down also allows the user to clear a filter for a
  specific column or re-apply it after changing the operator.
* An input widget for setting the value to filter on. The type of input
  displayed depend on the IDL type of the column. For example, a text field
  will use a normal text <input>; an OU field will use an eg-org-select,
  a link to another IDL class will use a combobox, a timestamp field
  will use an eg-date-select, and so forth.
* A separate display of the current operator.

When filtering is enabled, the grid will also display a "Remove Filters" button
in the action bar.

Under the hood, the widgets for entering filtering parameters expect
the data source to have a "filters" key that in turn contains a
dictionary of PCRUD-style filtering conditions indexed by column name.
Consequently, a grid data source that wants to use filtering should
look something like this:

    this.acpSource.getRows = (pager: Pager, sort: any[]) => {
        const orderBy: any = {acp: 'id'};
        if (sort.length) {
            orderBy.acp = sort[0].name + ' ' + sort[0].dir;
        }

        // base query to grab everything
        let base: Object = {};
        base[this.idl.classes['acp'].pkey] = {'!=' : null};
        var query: any = new Array();
        query.push(base);

        // and add any filters
        Object.keys(this.acpSource.filters).forEach(key => {
            Object.keys(this.acpSource.filters[key]).forEach(key2 => {
                query.push(this.acpSource.filters[key][key2]);
            });
        });
        return this.pcrud.search('acp',
            query, {
            flesh: 1,
            flesh_fields: {acp: ['location']},
            offset: pager.offset,
            limit: pager.limit,
            order_by: orderBy
        });
    };

This patch also adds two related grid options, sticky headers and the ability
to reload the data source without losing one's current place in page.

Sticky headers are enabled by adding the following attribute to the
<eg-grid> element:

  [stickyHeader]="true"

When this is enabled, as the user scrolls the grid from top to bottom, the
header row, including the filter controls, will continue to remain visible
at the top of the viewport until the user scrolls past the end of the
grid entirely.

Reloading grids without losing the current paging settings can now be
done by a caller (such as code that opens an edit modal)  invoking a new
reloadSansPagerReset() method.

Implementation Notes
--------------------
[1] This patch adds special-case logic for handling the "dob" column,
    which is the sole date column in the Evergreen schema. Longer-term,
    it would be better to define a new "date" IDL field type that's
    distinct from "timestamp".
[2] stickyHeader currently makes only the grid header sticky, not both
    the header and the action bar. This outcome is a result of z-index
    messiness with the ng-bootstrap dropdown menu which I couldn't get
    past. However, the forthcoming grid context menus hopefully will
    be a reasonable amelioration.
[3] During testing it became evident that it would be handy to add
    support for open-ils.fielder as a grid data source at some
    point in the near future.

To test
-------
General testing can be done using the new second grid in the
Angular sandbox page added by the following test. Things to check
include:

- grid filter operators are displayed
- hitting enter in text inputs activates the filter
- the grid-level Remove Filters button works
- per-column filter clearing works
- operators have the expected results
- The header of both grids on the sandbox page is sticky. This can
  be tested by increasing the row count in the second grid and
  scrolling.

Sponsored-by: MassLNC
Sponsored-by: Georgia Public Library Service
Sponsored-by: Indiana State Library
Sponsored-by: CW MARS
Sponsored-by: King County Library System
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1831788: create CommonWidgetsModule
Galen Charlton [Mon, 25 Mar 2019 19:27:05 +0000 (15:27 -0400)]
LP#1831788: create CommonWidgetsModule

This patch moves some commonly-shared components off to a separate
module. The immediate motivation is to avoid circular dependencies
when adding filtering widgets to eg-grid.

Components included in CommonWidgetsModule should be "core" in the
sense that they are unlikely to ever need to embed one another.

Sponsored-by: MassLNC
Sponsored-by: Georgia Public Library Service
Sponsored-by: Indiana State Library
Sponsored-by: CW MARS
Sponsored-by: King County Library System
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1634244 - prevent bibs from being deleted when they have on-order, pending-order...
Rogan Hamby [Fri, 19 Apr 2019 19:39:57 +0000 (15:39 -0400)]
LP#1634244 - prevent bibs from being deleted when they have on-order, pending-order or new line items attached to them

Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
4 years agolp1034058 Disable Renewal Due Dates in the Past
Kyle Huckins [Thu, 23 May 2019 20:53:11 +0000 (20:53 +0000)]
lp1034058 Disable Renewal Due Dates in the Past

Apply minimum date and an out of range flag to prevent
selecting or inputting a past date when renewing items from
Circulation->Renew Items or Patron->Items Out->Actions->
Renew With Specific Due Date.

To test
-------
[1] Create a loan.
[2] From the patron's Item Out page, use the Renew With
    Specific Due Date action. Note that the date widget
    will allow you to specify a due date in the past.
[3] From the Circulation -> Renew interface, note that
    the date widget will also let you specify a due
    date in the past.
[4] Apply the patch and repeat steps #2 and #3. This time,
    a due date in the past cannot be entered, both via
    the calendar button and by direct entry in the text
    box.

Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
4 years agoLP#1006466 - remove testing upgrade script
Chris Sharp [Thu, 1 Aug 2019 11:25:37 +0000 (07:25 -0400)]
LP#1006466 - remove testing upgrade script

Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
4 years agoLP#1006466 - Stamping upgrade script
Chris Sharp [Thu, 1 Aug 2019 10:57:31 +0000 (06:57 -0400)]
LP#1006466 - Stamping upgrade script

Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
4 years agoadding fk constraint to hold_type on action.hold_request and reporter class
Rogan Hamby [Tue, 16 Apr 2019 16:49:07 +0000 (12:49 -0400)]
adding fk constraint to hold_type on action.hold_request and reporter class

Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
4 years agoLP1832148 Clear selection for deleted grid rows
Bill Erickson [Tue, 25 Jun 2019 14:44:57 +0000 (10:44 -0400)]
LP1832148 Clear selection for deleted grid rows

Ignore rows which are no longer present in the grid when displaying the
"X selected" rows label along the top of the Angular grid.

Additionally, teach the grid to clear selected indexes for rows that are
no longer present for a bit of low-impact release of memory.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP1834969 Indicate failures in Angular login
Bill Erickson [Wed, 3 Jul 2019 15:05:47 +0000 (11:05 -0400)]
LP1834969 Indicate failures in Angular login

Display a Login Failed message in the Angular staff login form when a
login attempt fails.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP#1837478: stamp DB update
Galen Charlton [Wed, 31 Jul 2019 19:25:28 +0000 (15:25 -0400)]
LP#1837478: stamp DB update

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1837478 Ang catalog recents/templates release notes
Bill Erickson [Thu, 25 Jul 2019 14:24:15 +0000 (10:24 -0400)]
LP1837478 Ang catalog recents/templates release notes

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1837478 Angular Catalog Recent Searches & Templates
Bill Erickson [Mon, 22 Jul 2019 21:50:01 +0000 (17:50 -0400)]
LP1837478 Angular Catalog Recent Searches & Templates

Adds two new dropdowns (below basket actions) for recent searches
(similar to those found in the staff TPAC) and search templates.

Search templates are a new feature which allow staff to save canned
search filters/settings without the query content, so common searches
may be easily recalled.

For UI consistency and to preserve some space, the Basket Actions selector
is now a dropdown instead of a select element.

Adds a new workstation setting 'eg.catalog.search_templates' for storing
templates.

Includes a number of improvements to the underlying Catalog code and a
new ArrayUtil class, which adds a simple equals() function for comparing
arrays.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoDocs: LP#1813225: Adding brief release note
Jane Sandberg [Wed, 31 Jul 2019 19:23:31 +0000 (12:23 -0700)]
Docs: LP#1813225: Adding brief release note

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1813225 Link Billing Location to Library Info
Terran McCanna [Wed, 13 Feb 2019 18:19:35 +0000 (13:19 -0500)]
LP#1813225 Link Billing Location to Library Info

Converts library shortname on billing details page to a
link which opens in a new tab so that staff can easily
get to library contact info.

Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
Signed-off-by: Garry Collum <gcollum@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP1766982 - CSV downloads contain the string 'null' for null values.
Garry Collum [Fri, 18 May 2018 23:57:42 +0000 (19:57 -0400)]
LP1766982 - CSV downloads contain the string 'null' for null values.

Adds a check for null and undefined in the getItemTextContent function
in grid.js which is called by both the code to download grid data as
CSV and for printing grids.

To test
1. Place holds on a couple of titles, one of which has no author. In the
   test data TCN 226, The Crow, has no author data.
2. Pull up the Holds Pull List.
3. Download Full CSV - to download the CSV file and view it in a
   spreadsheet or text editor looking specifically at the Author column.
4. Print Full Grid - to view the data in a printout, since this function
   also affects printing.
5. Go back to the Holds Pull List and click on one of the barcodes under
   the Current Copy column.
6. Click on the List View.
7. Download Full CSV - open the resulting file to inspect the
   Alert Message data.
8. Apply patch and repeat steps 2-7.

Signed-off-by: gcollum <gcollum@gmail.com>
Signed-off-by: Josh Stompro <stompro@stompro.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1779467: Fix bug with charging fees when marking item damaged.
Jason Stephenson [Sun, 3 Feb 2019 16:44:09 +0000 (11:44 -0500)]
LP1779467: Fix bug with charging fees when marking item damaged.

Revert the changes made to the mark_damaged function in the web staff
client code (Open-ILS/web/js/ui/default/staff/circ/services/circ.js)
earlier in this branch.  The new code does not handle the mark damaged
process correctly, but the original code does.

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
4 years agoLP 1779467: Fix Error When Marking Item on Hold as Discard/Weed
Jason Stephenson [Mon, 12 Nov 2018 14:17:11 +0000 (09:17 -0500)]
LP 1779467: Fix Error When Marking Item on Hold as Discard/Weed

Fix the following error when marking an on-hold item as Discard/Weed:

Can't use an undefined value as an ARRAY reference at
/usr/local/share/perl/5.18.2/OpenILS/Application/Circ.pm line 1393.

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
LP#1779467: Fix 'Dicard' typo

Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
4 years agoLP 1779467: Fix SyntaxError: missing ) after argument list
Jason Stephenson [Mon, 5 Nov 2018 21:38:48 +0000 (16:38 -0500)]
LP 1779467: Fix SyntaxError: missing ) after argument list

Missing parenthesis in Open-ILS/web/js/ui/default/staff/cat/catalog/app.js
caused the titular error when searching the catalog.

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
LP 1779467: Fix typo in circ/renew/app.js.

Had copyies for copies in one location and this prevented marking an
item as Discard/Weed from working on the renew item interface.

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
4 years agoLP 1779467: Enhance Mark Items Functionality
Jason Stephenson [Sat, 27 Oct 2018 19:48:54 +0000 (15:48 -0400)]
LP 1779467: Enhance Mark Items Functionality

A new option to "Mark Item as Discard/Weed" is added to many actions
menus in the staff client.  This command is connected to the back end
function open-ils.circ.mark_item_discard.

The back end functionality for the open-ils.circ.mark_item_* family of
functions is altered to provide more consistent behavior and to avoid
some strange situations that have come up in the past, such as items
with the Missing status having active transits or open circulations.

The code for "Mark Item as Damaged" and "Mark Item as Missing" are
altered to take advantage of the back end changes.  NB: These changes
do not affect the "Mark Item as Missing Pieces" function, as that is
handled by different back end code.

Perl live tests are added for the backend functionality changes to
test that certain conditions works.  Like most of our tests these
could be expanded to cover more potential situations.

See the release notes for more detail on changes in functionality.

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
4 years agoLP#1778414: (follow-up) update Angular client menu as well
Galen Charlton [Wed, 31 Jul 2019 15:11:16 +0000 (11:11 -0400)]
LP#1778414: (follow-up) update Angular client menu as well

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP#1778414 Add Item Status to the Catalog menu
Garry Collum [Wed, 27 Jun 2018 20:08:34 +0000 (16:08 -0400)]
LP#1778414 Add Item Status to the Catalog menu

This patch adds Item Status as an option in the Catalog menu.

Signed-off-by: Garry Collum <gcollum@gmail.com>
Signed-off-by: Meg Stroup <mstroup@statelibrary.sc.gov>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP#1831784: fix Angular's formatting of DOB field
Galen Charlton [Mon, 6 May 2019 21:41:31 +0000 (17:41 -0400)]
LP#1831784: fix Angular's formatting of DOB field

Otherwise, depending on the local time zone, the date displayed
could be off a day.

The 'dob' columns are currently the the _only_ database/IDL fields
that are truly dates, not timestamps, hence the hard-coded exception.
However, an alternative approach would be to define a new 'date'
field type in the IDL.

To test
-------
[1] Construct an eg-grid (say, on the Angular sandbox page) that retrieves
    patron records. For users in North America, the birth dates are
    likely off by a day.
[2] Apply the patch and repeat step 1. This time, the birth dates should
    display as entered.

Sponsored-by: MassLNC
Sponsored-by: Georgia Public Library Service
Sponsored-by: Indiana State Library
Sponsored-by: CW MARS
Sponsored-by: King County Library System
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP#1822414: (follow-up) remove au-linked fields sandbox editDialog
Galen Charlton [Wed, 31 Jul 2019 14:55:06 +0000 (10:55 -0400)]
LP#1822414: (follow-up) remove au-linked fields sandbox editDialog

Otherwise, the drop-downs for the User and Capture Staff fields
will attempt to fetch all user IDs from the database, which would
be awkward if attempted on a large database.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1822414 Ang date select readOnly & fixes
Bill Erickson [Sun, 26 May 2019 18:02:44 +0000 (11:02 -0700)]
LP1822414 Ang date select readOnly & fixes

Adds an @Input() readOnly field to eg-date-select.  When set, the date
value will be displayed as plain text - no widget.

Teach the eg-fm-editor to pass the readOnly flag to the eg-date-select.

Includes sandbox example.

Fixes a display issue where the date select calendar button was bigger
than the paired input group adding text input, because the material
icon was too big.

2019-07-31 rebasing note: the style added in the original patch was
moved to data-select.component.css.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1822414 Angular format service formatValue pipe
Bill Erickson [Sun, 26 May 2019 18:01:40 +0000 (11:01 -0700)]
LP1822414 Angular format service formatValue pipe

Create a pipe version of FormatService.transform() function so strings
may be generated from fields directly in templates.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP#1798187 - Support CRLF and LF format for item status import files
Josh Stompro [Wed, 27 Feb 2019 21:07:43 +0000 (15:07 -0600)]
LP#1798187 - Support CRLF and LF format for item status import files

Testing Plan:

Before patch, try to import a file in CRLF end of line format that includes
leading and trailing spaces, empty lines, lines of just spaces or
barcodes with spaces.  The import will fail to load those items and will
stop processing when it hits certain situations.

After patch, try to import a file in CRLF EOL format that includes barcodes
with trailing spaces, leading spaces, barcodes with spaces, and/or
empty lines.  The import will load all barcodes.

Signed-off-by: Josh Stompro <stompro@stompro.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1831780: various improvements to the Angular date-select widget
Galen Charlton [Mon, 25 Mar 2019 19:21:46 +0000 (15:21 -0400)]
LP#1831780: various improvements to the Angular date-select widget

Styling
-------
- the widget is now narrower
- the widget now enables form validation styles; in particular,
  entry of an incorrectly-formatted date is now highlighted
- the calendar drop-down is now allowed to overflow the containing
  element when expanded, making it easier to embed the date
  selector in other controls
- the calendar button (and any material icons button that's part of
  an input group) now has the same default font size as main text,
  making the overall date-select look cleaner

API
---
- add a reset() method
- hitting enter in the text box can now triggers emitting date
  change events
- a new onCleared event is emitted if the suer hits enter on an
  empty input
- onChangeAsYmd() now pads month and day to two digits apiece,
  making the result conform to ISO 8601 and thus more easily
  plugged into queries.
- adds the following methods to retrieve the current date; these
  are meant to be used via local template references in parent
  templates:

  currentAsYmd()
  currentAsIso()
  currentAsDate()

Sponsored-by: MassLNC
Sponsored-by: Georgia Public Library Service
Sponsored-by: Indiana State Library
Sponsored-by: CW MARS
Sponsored-by: King County Library System
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
4 years agoLP#1831783: improvements to the Angular org-select widget
Galen Charlton [Tue, 4 Jun 2019 14:01:27 +0000 (10:01 -0400)]
LP#1831783: improvements to the Angular org-select widget

- add reset() method
- add method for retrieve current selected OU. This can be invoked
  from local template references in parent templates like this:

    <button ... (click)="doAction(ousel.selectedOrg())" ...
    ...
    <eg-org-select (onChange)="doAction($event)" #ousel></eg-org-select>

Sponsored-by: MassLNC
Sponsored-by: Georgia Public Library Service
Sponsored-by: Indiana State Library
Sponsored-by: CW MARS
Sponsored-by: King County Library System
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
4 years agoLP#1831907: bump up ng-bootstrap
Galen Charlton [Tue, 30 Jul 2019 18:44:16 +0000 (14:44 -0400)]
LP#1831907: bump up ng-bootstrap

This bumps up ng-bootstrap to ^4.2.0, which as of the date
of this patch resolves to 4.2.1. Also as of the date of this
patch, ng-bootstrap 5.1.0 is available, but cannot be used
prior to upgrading Angular from 7 to 8.

To test
-------
[1] Install the patch.
[2] In the sandbox (/eg2/en-US/staff/sandbox) verify that keyboard
    navigation for the grid action menu's dropdowns works.
[3] Look for other oddities in the Angular client.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
4 years agoLP1683385 AngJS grid avoid dupe auto-fields
Bill Erickson [Wed, 17 Apr 2019 14:51:45 +0000 (10:51 -0400)]
LP1683385 AngJS grid avoid dupe auto-fields

When generating grid fields from an IDL class in the AngJS grid, avoid
adding any fields that match fields already defined in the markup.

An example of such a grid is the Pending Item Buckets page.

To test
-------
[1] Go to Item Buckets and add an item to the Pending Items page.
[2] Note that in the column picker there are two barcode fields,
    one that hyperlinks the item and one that does not.
[3] Apply the patch and repeat steps 1-2.
[4] This time, there is only one barcode column (the one that
    hyperlinks the results).

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1809183: Allow passing template to eg-confirm-dialog
Jane Sandberg [Wed, 19 Dec 2018 23:51:25 +0000 (15:51 -0800)]
LP1809183: Allow passing template to eg-confirm-dialog

Adds an input called dialogBodyTemplate to <eg-confirm-dialog>. This can
be useful when you want to pass ICU messages to <eg-confirm-dialog>
(e.g. "Are you sure you want to cancel these 3 holds?" vs. "Are you sure
you want to cancel this hold?").

If both dialogBody and dialogBodyTemplate are defined, it will show the
dialogBodyTemplate message.

Also adds a sandbox example.

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
4 years agoLP1836962: correcting comments in the Angular client
Jane Sandberg [Wed, 17 Jul 2019 21:24:49 +0000 (14:24 -0700)]
LP1836962: correcting comments in the Angular client

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1830424 Implement Angular "retrieve last bib record"
Bill Erickson [Wed, 29 May 2019 18:03:38 +0000 (14:03 -0400)]
LP1830424 Implement Angular "retrieve last bib record"

Repair the Angular navbar menu entry for "Retrieve Last Bib Record" by
replacing the copy/paste'd ng-click handler with an Angular (click)
handler and local implementation.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP1831785 Combobox pcrud selector and pkey support
Bill Erickson [Mon, 29 Jul 2019 15:36:38 +0000 (11:36 -0400)]
LP1831785 Combobox pcrud selector and pkey support

Teach the PCRUD-driven combobox to use the IDL class' selector field
as the sort and display field when no idlField value is provided.

Teach the async source to use the pkey field of the IDL class instead of
assuming the 'id' field.

Tweak the sandbox example to fetch data for a class which uses a
selector not called "name" and a pkey not called "id".

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP1831785 (follow-up): simplifying static string binding, removing empty else statement
Jane Sandberg [Sat, 27 Jul 2019 17:50:40 +0000 (10:50 -0700)]
LP1831785 (follow-up): simplifying static string binding, removing empty else statement

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
4 years agoLP#1831785: eg-combobox support automatic pcrud-based IDL data sources
Jason Etheridge [Wed, 5 Jun 2019 15:42:29 +0000 (11:42 -0400)]
LP#1831785: eg-combobox support automatic pcrud-based IDL data sources

This patch adds new idlClass and idlField attributes to eg-combobox to
enable it to automatically construct a pcrud-base data source. The
idlClass property specifies which table/class to use as the base
data source, while idlField specifies the label to display. If idlField
is not supplied, the label field defaults to "name".

It also adds an asyncSupportsEmptyTermClick option to specify that an
async data source (whether or not it is automatically built) is
expected to never return more than a couple hundred entries or so;
when supplied, it will allow fetching the entire contents of the
data source when the user clicks on the drop-down.

To test
-------
[1] Apply the patch and exercise the comboboxes on the
     Angular sandbox page (/eg2/en-US/staff/sandbox)

Sponsored-by: MassLNC
Sponsored-by: Georgia Public Library Service
Sponsored-by: Indiana State Library
Sponsored-by: CW MARS
Sponsored-by: King County Library System
Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1796903: (follow-up) disabled the calendar button when the text input is disabled
Galen Charlton [Fri, 24 May 2019 18:04:33 +0000 (14:04 -0400)]
LP#1796903: (follow-up) disabled the calendar button when the text input is disabled

Disabling the calendar button when the datepicker is disabled allows
ChromeVox (at least) to skip past a button that cannot be invoked
until (like is possible in the checkout page) the picker is enabled.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP1796903: Make date picker calendar button more accessible
Jane Sandberg [Tue, 9 Oct 2018 14:37:56 +0000 (07:37 -0700)]
LP1796903: Make date picker calendar button more accessible

To test:

1) After applying this commit, navigate to a place in the Web client
that includes a date picker (such as the checkin screen).
2) Hover over the calendar button with your mouse and confirm that a
tooltip appears.
3) Verify that the button element has an aria-label attribute.
4) Verify that the button element has an aria-pressed attribute that
is false when the date picker is closed; true when it is open.
5) Use a screen reader (like NVDA or ChromeVox).  Verify that when you
tab over to the date picker, the user is informed of the aria-label
and aria-pressed values

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP#1795972: stamp DB update
Galen Charlton [Tue, 30 Jul 2019 14:21:17 +0000 (10:21 -0400)]
LP#1795972: stamp DB update

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP#1795972: Add description for APPLY_WORKSTATION_SETTING permission.
Chris Sharp [Mon, 20 May 2019 19:07:08 +0000 (15:07 -0400)]
LP#1795972: Add description for APPLY_WORKSTATION_SETTING permission.

Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agolp1836229 Disable Edit buttons in Merge Records when Editing
Kyle Huckins [Thu, 11 Jul 2019 16:36:36 +0000 (16:36 +0000)]
lp1836229 Disable Edit buttons in Merge Records when Editing

- Apply disabled attribute to Edit buttons rather than just the class,
preventing users from clicking buttons that appear disabled in the Merge UI.

Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
 Changes to be committed:
modified:   Open-ILS/src/templates/staff/cat/bucket/record/t_merge_records.tt2

Signed-off-by: Garry Collum <gcollum@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
4 years agoLP#1776003: show codes throughout the Physical Characteristics Wizard
Galen Charlton [Wed, 22 May 2019 18:57:52 +0000 (14:57 -0400)]
LP#1776003: show codes throughout the Physical Characteristics Wizard

This patch extends on the previous one to show the code (as well as the
label) in all drop-downs used in the Physical Characteristics Wizard. It
also makes the drop-down text accessible for translations, in case there
are any locales where "code: label" is not preferred.

This patch also adds release notes.

To test
-------
[1] Apply the patches and use the web staff MARC editor to edit or
    create an 007 field, then use the Physical Characteristics Wizard.
[2] Verify that the drop-downs now display both the code and the label
    for each value.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1776003: Show MARC Code in 'Category of Material' in Physical Characteristics...
a. bellenir [Thu, 23 Aug 2018 19:42:28 +0000 (15:42 -0400)]
LP#1776003: Show MARC Code in 'Category of Material' in Physical Characteristics Wizard

display the ptype_key from the marc21_physical_characteristic_type_map (cmpctm)
alongside the label in the physical characteristics wizard

Signed-off-by: a. bellenir <ab@grpl.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#741788: install the MARC stream importer better
Galen Charlton [Wed, 22 Apr 2015 17:37:29 +0000 (17:37 +0000)]
LP#741788: install the MARC stream importer better

This patch ensures that marc_stream_importer.pl gets
installed in the Evergreen binary directory and that an
example configuration file gets installed in the appropriate
configuration directory (rather than, as in the past,
the Evergreen bindir).

This patch also causes `oils_header.pl`, which is used by
other command-line scripts, to be installed in the bin
directory
by default.

To test
-------
[1] Run a normal Evergreen installation. Verify that
    marc_stream_importer.pl is installed in /openils/bin
    (or the equivalent if you've chosen a non-default installation
    directory) and that marc_stream_importer.conf is
    installed in /openils/conf (or its equivalent)
[2] (optional) If you have access to OCLC Connexion, verify that you
    can run the MARC stream importer and use it to push records into
    Evergreen.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Josh Stompro <stomproj@larl.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Jason Stephenson <jason@sigio.com>
4 years agoLP#1835458: Add install support for Debian 10 Buster user/dyrcona/lp1835458-debian10-signoff
Ben Shum [Thu, 4 Jul 2019 19:53:35 +0000 (15:53 -0400)]
LP#1835458: Add install support for Debian 10 Buster

Signed-off-by: Ben Shum <ben@evergreener.net>
Signed-off-by: Jason Stephenson <jason@sigio.com>
4 years agoLP#1834208: Use X-Forwarded-For in example Apache configuration
Jason Stephenson [Tue, 2 Jul 2019 16:53:16 +0000 (12:53 -0400)]
LP#1834208: Use X-Forwarded-For in example Apache configuration

Change X-Real-IP to X-Fowarded-For in Open-ILS/examples/apache_24/
eg_vhost.conf.in to match changes in the OpenSRF example proxy
configurations for nginx and haproxy.

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Ben Shum <ben@evergreener.net>
4 years agoLP1837067: Fixing unsubscribed Observable in Replace Barcodes dialog
Jane Sandberg [Thu, 18 Jul 2019 15:22:35 +0000 (08:22 -0700)]
LP1837067: Fixing unsubscribed Observable in Replace Barcodes dialog

To test:
1) In the experimental Angular staff catalog, open up a bib record.
2) Open the Holdings View tab.
3) Select several items.
4) Use the Actions for Selected Rows menu to Replace Barcodes
5) Change the first barcode to something recognizable. Click the
Replace Barcode button.
6) Note that the dialog opens again to ask you to replace the
barcode you just added.
7) Apply this patch.
8) Repeat steps 1-5.
9) Note that the dialog opens again to ask you to replace the next
barcode.

Also removes some unused imports, and consolidates two RxJS pipes that
were next to one another.

Bill's Additions:

Removes an unnecessary throwError which was called every time the dialog
completed.

NOTE: the source of the bug was that the Observable returned by
pcrud.search(...) was never subscribed-to, so it never fired.  Calling
.toPromise() forces the observable to execute.

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
4 years agoLP#1823367 Make search bar area neutral
Dan Wells [Wed, 29 May 2019 19:17:31 +0000 (15:17 -0400)]
LP#1823367 Make search bar area neutral

Though the color had started to grow on me, let's go back to neutral for
the top seach area, for now.

It both makes sense and would be useful to have a secondary decorative
color, but if we go that route, we probably want just one for the whole
application, so we will want to tread carefully there.

Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1823367 Add place to collect style guidelines
Dan Wells [Wed, 29 May 2019 17:32:49 +0000 (13:32 -0400)]
LP#1823367 Add place to collect style guidelines

Let's start a place to collect some of the reasoning behind EG2 style
choices.  This will help us be more consistent, and to recall why things
are as they are.

This commit does nothing groundbreaking, but rather tries mainly to
capture what is already being done.

Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1823367 De-encapsulate holdings grid styles to fix row highlighting
Dan Wells [Wed, 29 May 2019 17:06:50 +0000 (13:06 -0400)]
LP#1823367 De-encapsulate holdings grid styles to fix row highlighting

By default, Angular will encapsulate CSS styles at the component level,
applying them only to the component who loads them.  The encapsulation
is helpful in some circumstances, a burden in others, and can be worked
around in at least two ways.

One way is the use of ':host /deep/' in the style declaration.  This
will in effect apply the style to all child components of the current
component's host, and is what we were doing here to style the grid rows
internal to the holdings component.  This worked, but the encapsulated
style is created in such a way that it overrides any global styles. In
addition, /deep/ is deprecated (although with no clear replacement).

A second way to work around CSS encapsulation is to simply disable it.
Right now, our grid styles are all at the global level, as encapsulation
is disabled in the grid.  Combined with the facts above, the end result
is that our new row styles always trump the grid highlight style, and
the rows no longer highlight.

There are a number of ways to work around this, but none seemed
obviously better than the others at this stage of development.  This
commit does both the simplest option and the one which matches the
existing grid practice.  That is, it disables CSS encapsulation for the
holdings component so that the holdings styles can coexist with, and be
overridden by, the grid styles (as needed in this case).

Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1823367 Tone down org unit row coloring
Dan Wells [Wed, 29 May 2019 16:55:48 +0000 (12:55 -0400)]
LP#1823367 Tone down org unit row coloring

Some of the text was a little hard to see, and the overall effect of
the many colors, while attractive, was also a little distracting. In
addition, the lighter blue colors were not obviously different from
our standard selected-row-highlight blue.

This commit tries a different direction, using some mild green shades
based on the standard Evergreen green color base.  They are easy to
read and still accomplish the overall goal of bringing out the org
units (a little) and the call numbers (a little more).

Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP#1777207: teach egGrid how to prepend rows more efficiently
Galen Charlton [Wed, 3 Jul 2019 21:53:01 +0000 (17:53 -0400)]
LP#1777207: teach egGrid how to prepend rows more efficiently

The checkin and checkout grids in the AngularJS client have
been doing full grid refreshes when adding a checkin or
checkout to their respective grids. While this does not
result in re-fetching data for the loans that were already
processed, as more entries get added to the grid the time
it takes to do a full digest of the grid contents during a
egGrid.collect() (which empties the list of displayed rows,
then refills it), gets progressively longer. Grids that have
only ~40 entries have been observed to take several seconds
purely on the AngularJS rendering phase.

This patch teaches egGrid a new prepend() method that
takes the first element from the underlying data source and
unshifts it onto the list of displayed grid rows, saving much
rendering time. The prepend() method will also force the
grid offset back to 0 if it isn't already. Note that if
an item that would be added via prepend() might duplicate an
existing row entry, prepend() will do a full collect() instead.

If the data source has sort options set, the prepend() will
remove them. For arrayNotifier-based data sources, as are used
in the checkin and checkout grids, this means that if the user
sorts the contents of the grid, then does a circ transaction,
the new transaction will still appear at the top of the list.
Due to the way arrayNotifier currently works, the remaining
entries will retain their previous ordering.

As an implementation note, prepend() is likely going to work
/only/ for arrayNotifier grid data sources.

To test
-------
[1] In the checkin grid, check in a large number of items.
    Note that the time it takes to each each item gets
    progressively longer.
[2] Apply the patch and repeat step 1. This time, the time
    for each checkin should not significantly vary.
[3] Verify that column sorting works as expected.
[4] Upon sorting the grid, do more checkins and note that
    the new transactions show up at the top.
[5] Verify that the checkout grid continues to behave as expected.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
4 years agoLP#1777207: have eg-grid generate DOM nodes only for visible columns
Galen Charlton [Tue, 9 Jul 2019 18:43:18 +0000 (14:43 -0400)]
LP#1777207: have eg-grid generate DOM nodes only for visible columns

This patch changes an ng-show to an ng-if to generate DOM nodes
for grid cells only for visible columns. Prior to this patch, all
grid cells were generated, but the ones that corresponded to hidden
columns would simply be set as hidden.

By not generating the cells unless they're meant to be visible, grid
refreshes for wide grids (like the checkin table) render much more
quickly for a couple reasons:

- simply that there are fewer DOM nodes to process
- probably more importantly, fewer AngularJS watches get
  created

To test
-------
[1] In the checkin grid, check in a large number of items, then
    observe/profile timing as you change the number of visible rows.
[2] Apply the patch and repeat step 1. This time, the grid
    refreshe should be measurably (and visibly) faster.
[3] Test other AngularJS grids and verify that grid display and
    grid actions are normal.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
4 years agoLP1828840: Option to hide grid save settings button in angular grid
Jane Sandberg [Sun, 26 May 2019 01:46:03 +0000 (18:46 -0700)]
LP1828840: Option to hide grid save settings button in angular grid

To test:

1) Apply this commit.
2) Create an eg-grid in the Angular staff client without a persistKey
attribute (or use the one in the sandbox).
3) Compile the client and open the grid in your browser.  Open the
column picker menu.  Note that the Save button does not display.
4) Add an arbitrary value to the persistKey attribute.
5) Repeat step 3.  Note that the Save button does display.
6) Change the value of the persistKey attribute to "disabled".
7) Repeat step 3.  Note that the Save button does not display.

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
4 years agoLP1835990: remove i18n inside i18n element
Jane Sandberg [Wed, 10 Jul 2019 04:33:41 +0000 (21:33 -0700)]
LP1835990: remove i18n inside i18n element

Angular doesn't allow an i18n element within another i18n element.  This
commit allows xi18n to run successfully again.

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
4 years agoLP1830432 Org family renders checkboxes horizontally
Bill Erickson [Tue, 9 Jul 2019 15:46:02 +0000 (11:46 -0400)]
LP1830432 Org family renders checkboxes horizontally

Consistent with the original layout of the org-select + checkboxes,
render the org family selector with checkboxes stacked vertically
along the right of the selector instead of below it.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP1830432: Use a stub callback with registerOnTouched
Jane Sandberg [Mon, 8 Jul 2019 14:03:50 +0000 (07:03 -0700)]
LP1830432: Use a stub callback with registerOnTouched

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
4 years agoLP1830432 Uniqify reported org IDs / sandbox tweaks
Bill Erickson [Fri, 5 Jul 2019 15:18:59 +0000 (11:18 -0400)]
LP1830432 Uniqify reported org IDs / sandbox tweaks

Err on the side of caution and ensure the org family selector always
reports a unique list of org unit IDs.

Sandbox language tweaks.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
4 years agoLP1830432: Make sure that unit tests have an org unit selected
Jane Sandberg [Wed, 3 Jul 2019 16:46:04 +0000 (09:46 -0700)]
LP1830432: Make sure that unit tests have an org unit selected

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
4 years agoLP1830432: Make the org-family-select reusable
Jane Sandberg [Sun, 23 Jun 2019 17:22:20 +0000 (10:22 -0700)]
LP1830432: Make the org-family-select reusable

This commit removes Bill Erickson's automagic org unit select with
+Ancestors and +Descendants checkboxes from the admin-page component,
and gives it a component of its own, called <eg-org-family-select>.

This commit also makes it compatible with [(ngModel)], reactive forms,
and any custom Angular validators you might want to throw at it.
Examples of all three are available in the sandbox.

Also includes some component tests.

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
4 years agoForward-port 3.3.2 upgrade script
Dan Wells [Wed, 3 Jul 2019 15:49:47 +0000 (11:49 -0400)]
Forward-port 3.3.2 upgrade script

Signed-off-by: Dan Wells <dbw2@calvin.edu>
4 years agoForward-port 3.2.7 upgrade script
Dan Wells [Wed, 3 Jul 2019 15:47:51 +0000 (11:47 -0400)]
Forward-port 3.2.7 upgrade script

Signed-off-by: Dan Wells <dbw2@calvin.edu>
4 years agoForward-port 3.1.13 upgrade script
Dan Wells [Wed, 3 Jul 2019 15:33:10 +0000 (11:33 -0400)]
Forward-port 3.1.13 upgrade script

Signed-off-by: Dan Wells <dbw2@calvin.edu>