Angular6 Base Application

Bug #1775466 reported by Bill Erickson on 2018-06-06
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Evergreen
Wishlist
Unassigned

Bug Description

Build a base application using Angular (currently version 6) that can be used alongside the AngularJS web staff client. The Angular app should have the same look and feel so staff can easily navigate between the two, and it should support the same core service functionality, like grids, printing support, global preferences (e.g. date format), etc.

For base functionality, we need a navigation bar that matches the AngularJS navigation bar. Links in the bar take the user back to the AngularJS version of the UI, except in cases where an Angular version exists. Actions in the navigation bar that perform their own behavior (e.g. change operator) will need to be ported to Angular for full navbar coverage.

Much of this code exists along with a handful of administration UI's in a branch I will note in a follow up comment.

Migration plan wiki:

https://wiki.evergreen-ils.org/doku.php?id=dev:browser_staff:angjs_to_ang_migration#migration_timeline_proposal

Bill Erickson (berick) wrote :

Collab branch in progress:

http://git.evergreen-ils.org/?p=working/Evergreen.git;a=shortlog;h=refs/heads/collab/berick/lp1775466-ang6-base-app

See wiki link above for install steps.

I plan to compile a list of known TODO items shortly for planning the remainder of the development.

Bill Erickson (berick) wrote :

A few updates:

The navigation bar in the Ang6 client is now equivalent to the AngJS client. Most links return the user to the AngJS UI. Links that perform actions have had their actions ported. These include Change Operator and Reprint Last Receipt. (Note reprint-last required a change to AngJS to store the compiled print content and not the AngJS template).

Server and ACQ Admin splash pages have been ported to Ang6. Most of their pages are also ported (mainly via automated grid / fieldmapper-editor pages). Anything more complicated (e.g. modifying the org unit tree) links to the AngJS version.

Ang6 grid is close to reaching parity with the AngJS grid. I've also added support for row/column/cell dynamic CSS classes and row flair (inspired by bug #1635386 and bug #1746824).

A link to the "experimental" Ang6 catalog is included. As time permits, I'm porting bits of functionality over there too. It's using metabib display fields now, too, yay. Presumably we'll hide this before merging, because of the limited functionality, but I'll leave it in place for now.

At this point, the Ang6 code runs alongside the AngJS client without issue. I'm sure there are some things I'm missing, but it's usable as an alternate source of admin UI's at least.

Once bug #1750894 is merged (store settings on server) I'll port those changes and Hatch to Ang6.

Many core services now have unit tests.

ng-lint is happy.

Bill Erickson (berick) wrote :

Putting the finishes touches and doing a bit more testing of this branch now that master has mostly settled down.

TODO:
 * confirm ACQ admin grids have workstation setting types.
 * Add release notes

The branch currently has 186 commits. Most have simple commit messages. The history may be useful, but it's messy. Any preferences on squashing all of these into one commit?

Jason Boyer (jboyer) wrote :

I'm ok with most of them being squashed. If there's an easy way to group them into 3-4 large related chunks that's great but if not it's fine to just plant a flag in the ground and say "we're starting here."

Bill Erickson (berick) wrote :

Thanks, Jason.

Unsquashed, rebased branch pushed:

http://git.evergreen-ils.org/?p=working/Evergreen.git;a=shortlog;h=refs/heads/collab/berick/lp1775466-ang6-base-app-3.2-rebase

Includes workstation settings, doc updates, installer updates for Node v8, and release notes.

Will revisit squashing shortly.

Bill Erickson (berick) wrote :

Added a few more docs and pushed a squashed branch:

http://git.evergreen-ils.org/?p=working/Evergreen.git;a=shortlog;h=refs/heads/collab/berick/lp1775466-ang6-base-app-3.2-squash

I whittled it down to 10 commits. There are individual commits for any changes made to existing code (AngularJS, IDL, API) and doc/install commits. And there's a single commit for the Open-ILS/src/eg2 sub-tree with all of the Angular 6 code.

Key test targets for now are installation, basic navigation alongside the AngularJS client, and confirming the admin UI's under Administration => Acquisitions Administration behave as expected, since some of these UI's will be the only Angular6 UI's staff see for now.

tags: added: pullrequest
Changed in evergreen:
assignee: Bill Erickson (berick) → nobody
Galen Charlton (gmc) on 2018-09-06
Changed in evergreen:
status: New → Confirmed
importance: Undecided → Wishlist
assignee: nobody → Galen Charlton (gmc)
Galen Charlton (gmc) wrote :

I've pushed a signoff branch here: user/gmcharlt/lp177546_ang6_signoff

This branch includes three follow-up patches to address minor issues.

I'm +1 for merging this for inclusion to 3.2-beta. Here are my testing notes:

- old webstaff client builds and passes tests
- eg2 builds and passes tests
- upgrade instructions work (once follow-up patch is noted)
- grids save column configuration
- grids print
- new objects can be added in admin interfaces
- auth cookie path gets promoted
- grids export CSV
- clean transition to conify interfaces
- clean transition to angularjs interfaces
- grid column headings are draggable
- grid column headings can be reset
- grid delete actions work
- OU selector allows type-to-select
- make_release appears to work

And some concerns, none of which I consider a showstopper:

- The translation widget doesn't seem to let you select a row to act on first, meaning a lot of clicking if one wants to tweak the translation for a specific string; the widget may need improvement.
- The navbar has a regression on bug 1709521
- Installing it resulted in a bunch of (apparently innocuous) changes to Open-ILS/src/eg2/package-lock.json; I didn't check them in, but this may be noise that can be avoided?

Changed in evergreen:
assignee: Galen Charlton (gmc) → nobody
tags: added: signedoff
Bill Erickson (berick) wrote :

Thanks, Galen! I'll create bugs for the first two items.

I'm not yet sure how best to leverage package-lock.json and/or whether we really want to keep it in the repo. Will revisit.

Reviewing latest branch in prep for final merge.

Bill Erickson (berick) wrote :

Updates look good. Another round of testing shows all behaves as expected. Thanks for the thorough testing, Galen. Merged to master for 3.2.

Changed in evergreen:
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  Edit
Everyone can see this information.

Other bug subscribers