Manage Authorities Angular Port

Bug #1879335 reported by Bill Erickson
28
This bug affects 7 people
Affects Status Importance Assigned to Milestone
Evergreen
Fix Released
Wishlist
Unassigned

Bug Description

Evergreen 3.5

Time to port the Manage Authorities interface from Dojo to Angular. Along the way I hope to address these bugs:

https://bugs.launchpad.net/evergreen/+bug/1592848
https://bugs.launchpad.net/evergreen/+bug/1748642

I also hope to address bug #1749296. However, since it's primarily related to the back-end, I'd prefer not to treat it as a requirement for this UI-porting bug.

Plan for now is to use an eg-grid for display and modify the data collection to use the SuperCat browse API instead of the feed, coupled with a new authority API for collecting the data needed specifically for this UI. I hope this will make it a bit more compact and easier to extend.

Bill Erickson (berick)
Changed in evergreen:
importance: Undecided → Wishlist
Revision history for this message
Bill Erickson (berick) wrote :
Changed in evergreen:
status: New → In Progress
Revision history for this message
Bill Erickson (berick) wrote :

As it stands, my branch extracts the heading and thesaurus data the same way the Dojo UI does, by pulling it directly from the MARC record. I wanted to use the already extracted simple_heading data, but I ran into some inconsistencies. I'm wondering if they are configuration related or if I'm missing something.

Concerto authority record #54 has a 100 field like so:

100 $a Handel, George Frideric, 1685-1759. $x Operas

It has a normalized simple heading value (authority.record_entry.simple_heading):

100 a handel george frideric 1685 1759 x operas

However when you look at the authority.simple_heading entries for the record, there are 2 main_entry headings:

evergreen=# select ash.atag, ash.value, acsaf.main_entry, acsaf.name from authority.simple_heading ash join authority.control_set_authority_field acsaf on acsaf.id = ash.atag where ash.record = 54;
 atag | value | main_entry | name
------+------------------------------------+------------+--------------------------
    1 | Handel, George Frideric, 1685-1759 | | Heading -- Personal Name
    5 | Operas | | Heading -- Topical Term

I expected to find a single main entry authority.simple_heading that matched the normalized simple heading that's stored directly on the record (sans normalization). What am I missing?

=====

On another note, is authority.record_entry.source meant to be a reference to config.bib_source? I can't find any code that actually uses it, no IDL refs, foreign key refs, etc.

Revision history for this message
Bill Erickson (berick) wrote :

For reference, I was able to make authority.simple_heading produce the desired results by telling the ingest to in effect use the full 1XX field instead of just (say) the 1XX $a. Something along the lines of:

BEGIN;
UPDATE config.internal_flag SET enabled = TRUE
    WHERE name = 'ingest.reingest.force_on_same_marc';
UPDATE authority.heading_field SET component_xpath = '/*';
UPDATE authority.record_entry set id = id;
SELECT value FROM authority.simple_heading ORDER BY sort_value;
ROLLBACK;

This produces full, sortable headings. However, since I'm not 100% on the purpose of authority.heading_field, I don't know if this is a viable solution.

Revision history for this message
Bill Erickson (berick) wrote :

New branch pushed w/ squashed code and release notes:

https://git.evergreen-ils.org/?p=working/Evergreen.git;a=shortlog;h=refs/heads/user/berick/lp1879335-manage-authorities-angular-1

This branch ports the interface, adds additional authority data to the grid, and makes it possible to jump to the list of linked bib records.

Re: my questions/comments above, I'm leaning toward addressing that in bug #1749296 instead of lumping it in with this UI port, since it's much larger in scope.

tags: added: pullrequest
Changed in evergreen:
assignee: Bill Erickson (berick) → nobody
status: In Progress → New
Revision history for this message
Bill Erickson (berick) wrote :

When I demoed this interface to catalogers, there was a feature request to add a 'View' tab in addition to the Edit tab so staff can see the MARC HTML of the authority record. I may address that here or via alternate LP depending on when this is merged.

Changed in evergreen:
milestone: 3.next → 3.6-beta
Andrea Neiman (aneiman)
Changed in evergreen:
assignee: nobody → Andrea Neiman (aneiman)
Revision history for this message
Andrea Neiman (aneiman) wrote :

Tested as part of Feedback Fest & it's working for me, for the most part. I love the linked bibs list!

However, I can't seem to get any data to display in the grid for the new Source or Owner columns, either for Authorities that were preloaded, for ones I've edited, or for ones I've created.

Withholding my signoff if that's a dealbreaker, but if it's not a dealbreaker, I'll happily give a signoff.

Changed in evergreen:
assignee: Andrea Neiman (aneiman) → nobody
Revision history for this message
Bill Erickson (berick) wrote :

Thanks, Andrea.

The Source and Owner fields both appear to be unused on authority records. I can get values to appear if I manually edit the records in the database, but otherwise they seem to stay empty (as noted by your testing). I'm inclined to hide (remove?) them in the grid by default to avoid confusion.

Revision history for this message
Bill Erickson (berick) wrote :

Here's a rebased branch that hides the 2 fields by default and teaches the Owner column to display the org unit shortname when a value is present instead of the org unit ID.

https://git.evergreen-ils.org/?p=working/Evergreen.git;a=shortlog;h=refs/heads/user/berick/lp1879335-manage-authorities-angular-2

Revision history for this message
Jane Sandberg (sandbergja) wrote :

Quick note: the MARC editor on the Edit tab includes the authority linker, which it should not.

Revision history for this message
Bill Erickson (berick) wrote :

Thanks, Jane. I pushed a commit to the same branch which hides the authority linker buttons when editing authority records.

Galen Charlton (gmc)
Changed in evergreen:
assignee: nobody → Galen Charlton (gmc)
Revision history for this message
Galen Charlton (gmc) wrote :

Overall, looks good, but I have a concern that the way linked bibs are retrieved might cause performance issues when handling authorities that have a lot of linked bibs attached:

To transcribe from IRC:

<gmcharlt> berick: question re the manage authorities branch - in a large database, genre/form headings (and other broad headings) can easily have tens of thousands of linked bibs
<gmcharlt> although open-ils.search.authority.main_entry is returning only the ids of those bibs, I have a concern about the potential performance if the interface tries to fetch or deal with one of those
<gmcharlt> (of course, if change propagation is turned on, you wouldn't want to actually try saving an edit to the main heading of such an authority record)
<gmcharlt> (but that's a separate issue)
<gmcharlt> berick: yeah, the prospect of open-ils.pcrud.search.rmsr "211cac11a4f991dba0f625ef08d9a075",{"id":[{50,000-element array ... gives me pause :)

Also, it strikes me that the table of linked bibs, however it ends up being populated, should have a defined initial sort order, even if only by ID.

Revision history for this message
Bill Erickson (berick) wrote :

Thanks, Galen. Agreed we want to avoid that. Reworking linked bib grid...

Changed in evergreen:
assignee: Galen Charlton (gmc) → Bill Erickson (berick)
Revision history for this message
Bill Erickson (berick) wrote :

Here's a rebased branch that avoids any unbound arrays of linked bib IDs.

The API now reports the count of linked bibs instead of the IDS and the bib list component now renders bibs based on pages of IDs.

Also adds <retrieve /> access to authority.bib_linking for pcrud.

https://git.evergreen-ils.org/?p=working/Evergreen.git;a=shortlog;h=refs/heads/user/berick/lp1879335-manage-authorities-angular-3

Changed in evergreen:
assignee: Bill Erickson (berick) → nobody
Galen Charlton (gmc)
Changed in evergreen:
assignee: nobody → Galen Charlton (gmc)
Revision history for this message
Galen Charlton (gmc) wrote :

Signoff pushed to user/gmcharlt/lp1879335_signoff. This includes a couple follow-ups:

- the bib list can now be sorted properly by bib ID (and only by bib ID for now)
- the thesaurus is now properly extracted when the code resides in the 040 field

tags: added: signedoff
Revision history for this message
Galen Charlton (gmc) wrote :

Also, authority.extract_headings() will split up a main heading into multiple components if it has subdivisions. I think the long term way to address this is to add a new stored procedure called authority.extract_coordinated_heading() or the like that doesn't split off subdivisions.

Changed in evergreen:
assignee: Galen Charlton (gmc) → nobody
status: New → Confirmed
Bill Erickson (berick)
Changed in evergreen:
assignee: nobody → Bill Erickson (berick)
Revision history for this message
Bill Erickson (berick) wrote :

Thanks, Galen.

Sign-off's for Galen's commits pushed.

Adds one more commit to further address the bib list sorting. As it was, the bib IDs were getting sorted, but not the actual records that displayed in the list.

https://git.evergreen-ils.org/?p=working/Evergreen.git;a=shortlog;h=refs/heads/user/berick/lp1879335-manage-authorities-angular-v4

Changed in evergreen:
assignee: Bill Erickson (berick) → nobody
Revision history for this message
Galen Charlton (gmc) wrote :

Pushed to master for inclusion in 3.6. Thanks, Bill!

Changed in evergreen:
assignee: nobody → Galen Charlton (gmc)
assignee: Galen Charlton (gmc) → nobody
status: Confirmed → Fix Committed
Changed in evergreen:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.