From 6ca5ea5842ee936414d0e0fe662afc37572e5830 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Wed, 14 Jul 2021 10:52:44 -0400 Subject: [PATCH] LPLP1929741 Optional experimental Acq; seed data Adds and org setting and a workstation setting to 1) enable display of experimental Angular ACQ UI's and 2) enable display of links to the experimental UI's from search results. Display a new menu entry "Acquisitions (Experimental)" when the org setting is enabled. This menu contains "Create Purchase Order" only for now. Copy seed data from upgrade file to seed data file. Signed-off-by: Bill Erickson Signed-off-by: Galen Charlton --- .../acq/search/acq-search-form.component.html | 10 ++ .../staff/acq/search/acq-search-form.component.ts | 17 ++- .../src/app/staff/acq/search/acq-search.module.ts | 4 +- .../src/app/staff/acq/search/acq-search.service.ts | 16 ++ .../staff/acq/search/invoice-results.component.ts | 3 +- .../acq/search/lineitem-results.component.html | 110 ++++++++++---- .../staff/acq/search/lineitem-results.component.ts | 7 +- .../acq/search/picklist-results.component.html | 14 +- .../staff/acq/search/picklist-results.component.ts | 11 +- .../search/purchase-order-results.component.html | 15 +- .../acq/search/purchase-order-results.component.ts | 6 +- .../src/app/staff/acq/search/resolver.service.ts | 7 +- Open-ILS/src/eg2/src/app/staff/nav.component.html | 15 ++ Open-ILS/src/eg2/src/app/staff/nav.component.ts | 8 + Open-ILS/src/eg2/src/app/staff/resolver.service.ts | 2 + Open-ILS/src/sql/Pg/950.data.seed-values.sql | 169 +++++++++++++++++++++ .../Pg/upgrade/XXXX.data.picklist-po-angular.sql | 18 +++ Open-ILS/src/templates/staff/navbar.tt2 | 16 ++ .../web/js/ui/default/staff/services/navbar.js | 3 + 19 files changed, 406 insertions(+), 45 deletions(-) diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search-form.component.html b/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search-form.component.html index ba724dce33..3e68276f28 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search-form.component.html +++ b/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search-form.component.html @@ -160,6 +160,16 @@ [ngModelOptions]="{standalone: true}" [(ngModel)]="runImmediately"/> +
+
+ + +
+
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search-form.component.ts b/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search-form.component.ts index 19d4a1f9c8..ef5b9214f1 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search-form.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search-form.component.ts @@ -6,7 +6,7 @@ import {IdlService, IdlObject} from '@eg/core/idl.service'; import {PcrudService} from '@eg/core/pcrud.service'; import {StringComponent} from '@eg/share/string/string.component'; import {ToastService} from '@eg/share/toast/toast.service'; -import {AcqSearchTerm, AcqSearch} from './acq-search.service'; +import {AcqSearchService, AcqSearchTerm, AcqSearch} from './acq-search.service'; import {ServerStoreService} from '@eg/core/server-store.service'; @Component({ @@ -51,6 +51,7 @@ export class AcqSearchFormComponent implements OnInit, AfterViewInit, OnChanges private store: ServerStoreService, private idl: IdlService, private toast: ToastService, + private acqSearch: AcqSearchService ) {} ngOnInit() { @@ -245,4 +246,18 @@ export class AcqSearchFormComponent implements OnInit, AfterViewInit, OnChanges saveRunImmediately() { return this.store.setItem(this.runImmediatelySetting, this.runImmediately); } + + showExpAngOptions(): boolean { + return this.acqSearch.angSelectionEnabled; + } + + showExpAngLinks(): boolean { + return this.acqSearch.angSearchLinksEnabled; + } + + toggleExpSearchLinks() { + this.acqSearch.angSearchLinksEnabled = !this.acqSearch.angSearchLinksEnabled; + this.store.setItem('ui.staff.angular_acq_search.enabled', + this.acqSearch.angSearchLinksEnabled); + } } diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search.module.ts b/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search.module.ts index 4dc22517f1..1fea224ec1 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search.module.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search.module.ts @@ -11,6 +11,7 @@ import {PicklistCreateDialogComponent} from './picklist-create-dialog.component' import {PicklistCloneDialogComponent} from './picklist-clone-dialog.component'; import {PicklistDeleteDialogComponent} from './picklist-delete-dialog.component'; import {PicklistMergeDialogComponent} from './picklist-merge-dialog.component'; +import {AcqSearchService} from './acq-search.service'; @NgModule({ declarations: [ @@ -28,7 +29,8 @@ import {PicklistMergeDialogComponent} from './picklist-merge-dialog.component'; imports: [ StaffCommonModule, AcqSearchRoutingModule - ] + ], + providers: [AcqSearchService] }) export class AcqSearchModule { diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search.service.ts b/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search.service.ts index e25495c4fd..b1367dab73 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search.service.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/search/acq-search.service.ts @@ -9,6 +9,7 @@ import {Pager} from '@eg/share/util/pager'; import {IdlObject} from '@eg/core/idl.service'; import {EventService} from '@eg/core/event.service'; import {AttrDefsService} from './attr-defs.service'; +import {ServerStoreService} from '@eg/core/server-store.service'; const baseIdlClass = { lineitem: 'jub', @@ -108,11 +109,15 @@ export class AcqSearchService { _conjunction = 'all'; firstRun = true; + angSelectionEnabled = false; + angSearchLinksEnabled = false; + constructor( private net: NetService, private evt: EventService, private auth: AuthService, private pcrud: PcrudService, + private serverStore: ServerStoreService, private attrDefs: AttrDefsService ) { this.firstRun = true; @@ -281,4 +286,15 @@ export class AcqSearchService { }; return gridSource; } + + loadUiPrefs(): Promise { + return this.serverStore.getItemBatch([ + 'ui.staff.angular_acq_selection.enabled', + 'ui.staff.angular_acq_search.enabled' + ]).then(sets => { + this.angSelectionEnabled = sets['ui.staff.angular_acq_selection.enabled']; + this.angSearchLinksEnabled = + sets['ui.staff.angular_acq_search.enabled'] && this.angSelectionEnabled; + }); + } } diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/invoice-results.component.ts b/Open-ILS/src/eg2/src/app/staff/acq/search/invoice-results.component.ts index e187963710..13c22cf350 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/search/invoice-results.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/search/invoice-results.component.ts @@ -16,8 +16,7 @@ import {AcqSearchFormComponent} from './acq-search-form.component'; @Component({ selector: 'eg-invoice-results', - templateUrl: 'invoice-results.component.html', - providers: [AcqSearchService] + templateUrl: 'invoice-results.component.html' }) export class InvoiceResultsComponent implements OnInit { diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/lineitem-results.component.html b/Open-ILS/src/eg2/src/app/staff/acq/search/lineitem-results.component.html index bfd16526e2..9b39ef3674 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/search/lineitem-results.component.html +++ b/Open-ILS/src/eg2/src/app/staff/acq/search/lineitem-results.component.html @@ -3,32 +3,67 @@ defaultSearchSetting="eg.acq.search.default.lineitems"> - - {{lineitem.id()}} - - - {{lineitem.id()}} - + + + + {{lineitem.id()}} + + + {{lineitem.id()}} + + + + + + {{lineitem.id()}} + + + {{lineitem.id()}} + + - - {{lineitem.purchase_order().name()}} - + + + {{lineitem.purchase_order().name()}} + + + + + {{lineitem.purchase_order().name()}} + + - - {{lineitem.picklist().name()}} - + + + {{lineitem.picklist().name()}} + + + + + + {{lineitem.picklist().name()}} + + @@ -51,11 +86,27 @@
  • Catalog
  • -
  • Worksheet
  • +
  • + + Worksheet + + + Worksheet + +
  • +
  • - Purchase Order
  • + + Purchase Order + + + Purchase Order + +
  • Requests
  • @@ -65,8 +116,15 @@ Queue
  • - Selection List
  • + + Selection List + + + Selection List + +
    diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/lineitem-results.component.ts b/Open-ILS/src/eg2/src/app/staff/acq/search/lineitem-results.component.ts index 044b3e23e2..6c757f8e7d 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/search/lineitem-results.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/search/lineitem-results.component.ts @@ -13,8 +13,7 @@ import {AcqSearchFormComponent} from './acq-search-form.component'; @Component({ selector: 'eg-lineitem-results', - templateUrl: 'lineitem-results.component.html', - providers: [AcqSearchService] + templateUrl: 'lineitem-results.component.html' }) export class LineitemResultsComponent implements OnInit { @@ -71,4 +70,8 @@ export class LineitemResultsComponent implements OnInit { showRow(row: any) { window.open('/eg/staff/acq/legacy/lineitem/worksheet/' + row.id(), '_blank'); } + + showExpAngLinks(): boolean { + return this.acqSearch.angSearchLinksEnabled; + } } diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-results.component.html b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-results.component.html index 612b5a09da..9aaeea048f 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-results.component.html +++ b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-results.component.html @@ -13,9 +13,17 @@ - - {{selectionlist.name()}} - + + + {{selectionlist.name()}} + + + + + {{selectionlist.name()}} + + diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-results.component.ts b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-results.component.ts index 899f0cae80..4fafe8358a 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-results.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/search/picklist-results.component.ts @@ -20,8 +20,7 @@ import {AcqSearchFormComponent} from './acq-search-form.component'; @Component({ selector: 'eg-picklist-results', - templateUrl: 'picklist-results.component.html', - providers: [AcqSearchService] + templateUrl: 'picklist-results.component.html' }) export class PicklistResultsComponent implements OnInit { @@ -86,6 +85,14 @@ export class PicklistResultsComponent implements OnInit { }; } + showExpAngOptions(): boolean { + return this.acqSearch.angSelectionEnabled; + } + + showExpAngLinks(): boolean { + return this.acqSearch.angSearchLinksEnabled; + } + openCreateDialog() { this.picklistCreateDialog.open().subscribe( modified => { diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/purchase-order-results.component.html b/Open-ILS/src/eg2/src/app/staff/acq/search/purchase-order-results.component.html index 7f8a81df50..679870803d 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/search/purchase-order-results.component.html +++ b/Open-ILS/src/eg2/src/app/staff/acq/search/purchase-order-results.component.html @@ -4,10 +4,17 @@ defaultSearchSetting="eg.acq.search.default.purchaseorders"> - - {{purchaseorder.name()}} - + + + {{purchaseorder.name()}} + + + + + {{purchaseorder.name()}} + + diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/purchase-order-results.component.ts b/Open-ILS/src/eg2/src/app/staff/acq/search/purchase-order-results.component.ts index 81e7db51d5..b4556d8136 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/search/purchase-order-results.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/search/purchase-order-results.component.ts @@ -14,7 +14,6 @@ import {AcqSearchFormComponent} from './acq-search-form.component'; @Component({ selector: 'eg-purchase-order-results', templateUrl: 'purchase-order-results.component.html', - providers: [AcqSearchService] }) export class PurchaseOrderResultsComponent implements OnInit { @@ -65,4 +64,9 @@ export class PurchaseOrderResultsComponent implements OnInit { this.purchaseOrderResultsGrid.reload(); }); } + + showExpAngLinks(): boolean { + return this.acqSearch.angSearchLinksEnabled; + } + } diff --git a/Open-ILS/src/eg2/src/app/staff/acq/search/resolver.service.ts b/Open-ILS/src/eg2/src/app/staff/acq/search/resolver.service.ts index d155e52e18..c3b559d266 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/search/resolver.service.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/search/resolver.service.ts @@ -2,6 +2,7 @@ import {Injectable} from '@angular/core'; import {Router, Resolve, RouterStateSnapshot, ActivatedRouteSnapshot} from '@angular/router'; import {AttrDefsService} from './attr-defs.service'; +import {AcqSearchService} from './acq-search.service'; @Injectable() export class AttrDefsResolver implements Resolve> { @@ -11,15 +12,15 @@ export class AttrDefsResolver implements Resolve> { constructor( private router: Router, private attrDefs: AttrDefsService, + private acqSearch: AcqSearchService ) {} resolve( route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise { - return Promise.all([ - this.attrDefs.fetchAttrDefs() - ]); + return this.attrDefs.fetchAttrDefs() + .then(_ => this.acqSearch.loadUiPrefs()); } } diff --git a/Open-ILS/src/eg2/src/app/staff/nav.component.html b/Open-ILS/src/eg2/src/app/staff/nav.component.html index 5f5f613cdb..2e11e914a7 100644 --- a/Open-ILS/src/eg2/src/app/staff/nav.component.html +++ b/Open-ILS/src/eg2/src/app/staff/nav.component.html @@ -316,6 +316,21 @@ + +