From: Jason Etheridge Date: Wed, 11 Mar 2020 06:05:35 +0000 (-0400) Subject: toward summary pane X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=de3620dbfec2fd20f03a69a4028338c28095f693;p=working%2FEvergreen.git toward summary pane Signed-off-by: Jason Etheridge Signed-off-by: Galen Charlton --- diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.html b/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.html index 84a2c3fb2f..aa185abdbe 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.html +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.html @@ -1,6 +1,15 @@ +
+ +
+ + +
+ +
@@ -10,7 +19,7 @@ PROVIDER DETAILS TAB
- +
@@ -38,3 +47,6 @@
+
+ +
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.ts b/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.ts index 961c3aa3cc..c38b7848af 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.ts @@ -1,9 +1,10 @@ -import {Component, OnInit, AfterViewInit} from '@angular/core'; +import {Component, OnInit, AfterViewInit, ViewChild} from '@angular/core'; import {NgbTabset, NgbTabChangeEvent} from '@ng-bootstrap/ng-bootstrap'; import {Router, ActivatedRoute, ParamMap, RouterEvent, NavigationEnd} from '@angular/router'; import {StaffCommonModule} from '@eg/staff/common.module'; import {IdlService, IdlObject} from '@eg/core/idl.service'; import {PcrudService} from '@eg/core/pcrud.service'; +import {AcqProviderSummaryPaneComponent} from './summary-pane.component'; @Component({ templateUrl: './acq-provider.component.html' @@ -16,9 +17,12 @@ export class AcqProviderComponent implements OnInit, AfterViewInit { id = null; validTabTypes = ['details', 'addresses', 'contacts', 'attributes', 'holdings', 'edi_accounts', 'purchase_orders', 'invoices']; defaultTabType = 'details'; + @ViewChild('acqSearchProviderSummary', { static: true }) providerSummaryPane: AcqProviderSummaryPaneComponent; onTabChange: ($event: NgbTabChangeEvent) => void; + onDesireSummarize: ($event: number) => void; + constructor( private router: Router, private route: ActivatedRoute, @@ -61,6 +65,10 @@ export class AcqProviderComponent implements OnInit, AfterViewInit { this.router.navigate(['/staff', 'acq', 'provider', this.id, $event.nextId]); } }; + + this.onDesireSummarize = ($event) => { + this.providerSummaryPane.update($event); + }; } ngAfterViewInit() {} diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.module.ts b/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.module.ts index e4641f4fe8..fd43b6f65d 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.module.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.module.ts @@ -3,6 +3,7 @@ import {StaffCommonModule} from '@eg/staff/common.module'; import {AcqProviderRoutingModule} from './routing.module'; import {AcqProviderComponent} from './acq-provider.component'; import {AcqProviderSearchFormComponent} from './acq-provider-search-form.component'; +import {AcqProviderSummaryPaneComponent} from './summary-pane.component'; import {ProviderResultsComponent} from './provider-results.component'; import {OrgFamilySelectModule} from '@eg/share/org-family-select/org-family-select.module'; @@ -10,6 +11,7 @@ import {OrgFamilySelectModule} from '@eg/share/org-family-select/org-family-sele declarations: [ AcqProviderComponent, AcqProviderSearchFormComponent, + AcqProviderSummaryPaneComponent, ProviderResultsComponent ], imports: [ diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-results.component.html b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-results.component.html index f89149ac9f..f4ca739678 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-results.component.html +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-results.component.html @@ -12,6 +12,8 @@ [stickyHeader]="true" [filterable]="true" [sortable]="true" + (onRowClick)="previewRow($event)" + (onRowActivate)="previewRow($event)" [cellTextGenerator]="cellTextGenerator"> diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-results.component.ts b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-results.component.ts index 206d4898f6..102948ee32 100644 --- a/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-results.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-results.component.ts @@ -1,4 +1,4 @@ -import {Component, OnInit, Input, ViewChild} from '@angular/core'; +import {Component, OnInit, Input, Output, EventEmitter, ViewChild} from '@angular/core'; import {Observable} from 'rxjs'; import {map} from 'rxjs/operators'; import {Router, ActivatedRoute, ParamMap} from '@angular/router'; @@ -22,6 +22,8 @@ export class ProviderResultsComponent implements OnInit { @ViewChild('acqSearchProviderGrid', { static: true }) providerResultsGrid: GridComponent; cellTextGenerator: GridCellTextGenerator; + previewRow: (row: any) => void; + @Output('desireSummarize') summarize: EventEmitter = new EventEmitter(); constructor( private router: Router, @@ -38,6 +40,10 @@ export class ProviderResultsComponent implements OnInit { provider: row => row.provider().code(), name: row => row.name(), }; + + this.previewRow = (row: any) => { + this.summarize.emit(row.id()); + } } doSearch(search: AcqProviderSearch) { diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/summary-pane.component.css b/Open-ILS/src/eg2/src/app/staff/acq/provider/summary-pane.component.css new file mode 100644 index 0000000000..6a1ebc3d2e --- /dev/null +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/summary-pane.component.css @@ -0,0 +1,25 @@ +#acq-provider-summary-pane { + border-radius: 0px 0px 7px 7px; + background-color: rgb(247, 247, 247); + box-shadow: 1px 2px 3px -1px rgba(0, 0, 0, .2); +} +.row { border-bottom: dotted thin; } +.row.provider_id { } +.row.provider_name { } +.row.provider_code { } +.row.provider_owner { } +.row.provider_currency_type { } +.row.provider_holding_tag { display: none; } +.row.provider_addresses { display: none; } +.row.provider_san { } +.row.provider_edi_default { } +.row.provider_active { display: none; } +.row.provider_prepayment_required { display: none; } +.row.provider_url { } +.row.provider_email { display: none; } +.row.provider_phone { display: none; } +.row.provider_fax_phone { display: none; } +.row.provider_default_claim_policy { display: none; } +.row.provider_default_copy_count { display: none; } +.row.provider_contacts { } +.row.provider_provider_notes { display: none; } diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/summary-pane.component.html b/Open-ILS/src/eg2/src/app/staff/acq/provider/summary-pane.component.html new file mode 100644 index 0000000000..ebf0d005d5 --- /dev/null +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/summary-pane.component.html @@ -0,0 +1,111 @@ +
+ +Provider Deletion Failed + + + + + +
+
{{provider_name_label}}
+
{{provider_name}}
+
+ +
+
{{provider_code_label}}
+
{{provider_code}}
+
+ +
+
{{provider_owner_label}}
+
{{provider_owner}}
+
+ +
+
{{provider_id_label}}
+
{{provider_id}}
+
+ +
+
{{provider_currency_type_label}}
+
{{provider_currency_type}}
+
+ +
+
{{provider_contacts_label}}
+
+
{{contact.role()}} : {{contact.name()}}
+
+
+ +
+
{{provider_san_label}}
+
{{provider_san}}
+
+ +
+
{{provider_edi_default_label}}
+
{{provider_edi_default}}
+
+ +
+
{{provider_url_label}}
+
{{provider_url}}
+
+ +
+
{{provider_holding_tag_label}}
+
{{provider_holding_tag}}
+
+ +
+
{{provider_addresses_label}}
+
{{provider_addresses}}
+
+ +
+
{{provider_active_label}}
+
{{provider_active}}
+
+ +
+
{{provider_prepayment_required_label}}
+
{{provider_prepayment_required}}
+
+ +
+
{{provider_email_label}}
+
{{provider_email}}
+
+ +
+
{{provider_phone_label}}
+
{{provider_phone}}
+
+ +
+
{{provider_fax_phone_label}}
+
{{provider_fax_phone}}
+
+ +
+
{{provider_default_claim_policy_label}}
+
{{provider_default_claim_policy}}
+
+ +
+
{{provider_default_copy_count_label}}
+
{{provider_default_copy_count}}
+
+ +
+
{{provider_provider_notes_label}}
+
{{provider_provider_notes}}
+
+ +
+ + diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/summary-pane.component.ts b/Open-ILS/src/eg2/src/app/staff/acq/provider/summary-pane.component.ts new file mode 100644 index 0000000000..436a2cd806 --- /dev/null +++ b/Open-ILS/src/eg2/src/app/staff/acq/provider/summary-pane.component.ts @@ -0,0 +1,185 @@ +import {Component, OnInit, AfterViewInit, Input, ViewChild} from '@angular/core'; +import {StaffCommonModule} from '@eg/staff/common.module'; +import {IdlService, IdlObject} from '@eg/core/idl.service'; +import {OrgService} from '@eg/core/org.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 {ConfirmDialogComponent} from '@eg/share/dialog/confirm.component'; +import {AuthService} from '@eg/core/auth.service'; + +@Component({ + selector: 'eg-acq-provider-summary-pane', + styleUrls: ['summary-pane.component.css'], + templateUrl: './summary-pane.component.html' +}) + +export class AcqProviderSummaryPaneComponent implements OnInit, AfterViewInit { + + provider_id = ''; + provider_name = ''; + provider_code = ''; + provider_owner = ''; + provider_currency_type = ''; + provider_holding_tag = ''; + provider_addresses = ''; + provider_san = ''; + provider_edi_default = ''; + provider_active = ''; + provider_prepayment_required = ''; + provider_url = ''; + provider_email = ''; + provider_phone = ''; + provider_fax_phone = ''; + provider_default_claim_policy = ''; + provider_default_copy_count = ''; + provider_contacts = ''; + provider_provider_notes = ''; + + provider_id_label; + provider_name_label; + provider_code_label; + provider_owner_label; + provider_currency_type_label; + provider_holding_tag_label; + provider_addresses_label; + provider_san_label; + provider_edi_default_label; + provider_active_label; + provider_prepayment_required_label; + provider_url_label; + provider_email_label; + provider_phone_label; + provider_fax_phone_label; + provider_default_claim_policy_label; + provider_default_copy_count_label; + provider_contacts_label; + provider_provider_notes_label; + + @Input() providerId: any; + @ViewChild('errorString', { static: true }) errorString: StringComponent; + @ViewChild('delConfirm', { static: true }) delConfirm: ConfirmDialogComponent; + + provider: IdlObject; + + constructor( + private pcrud: PcrudService, + private idl: IdlService, + private org: OrgService, + private toast: ToastService, + private auth: AuthService, + ) {} + + ngOnInit() { + this.provider_id_label = this.idl.classes['acqpro'].field_map['id'].label; + this.provider_name_label = this.idl.classes['acqpro'].field_map['name'].label; + this.provider_code_label = this.idl.classes['acqpro'].field_map['code'].label; + this.provider_owner_label = this.idl.classes['acqpro'].field_map['owner'].label; + this.provider_currency_type_label = this.idl.classes['acqpro'].field_map['currency_type'].label; + this.provider_holding_tag_label = this.idl.classes['acqpro'].field_map['holding_tag'].label; + this.provider_addresses_label = this.idl.classes['acqpro'].field_map['addresses'].label; + this.provider_san_label = this.idl.classes['acqpro'].field_map['san'].label; + this.provider_edi_default_label = this.idl.classes['acqpro'].field_map['edi_default'].label; + this.provider_active_label = this.idl.classes['acqpro'].field_map['active'].label; + this.provider_prepayment_required_label = this.idl.classes['acqpro'].field_map['prepayment_required'].label; + this.provider_url_label = this.idl.classes['acqpro'].field_map['url'].label; + this.provider_email_label = this.idl.classes['acqpro'].field_map['email'].label; + this.provider_phone_label = this.idl.classes['acqpro'].field_map['phone'].label; + this.provider_fax_phone_label = this.idl.classes['acqpro'].field_map['fax_phone'].label; + this.provider_default_claim_policy_label = this.idl.classes['acqpro'].field_map['default_claim_policy'].label; + this.provider_default_copy_count_label = this.idl.classes['acqpro'].field_map['default_copy_count'].label; + this.provider_contacts_label = this.idl.classes['acqpro'].field_map['contacts'].label; + this.provider_provider_notes_label = this.idl.classes['acqpro'].field_map['provider_notes'].label; + } + + ngAfterViewInit() { + if (this.providerId) { + this.update(this.providerId); + } + } + + update(newProvider: any) { + function no_provider() { + // FIXME: empty the pane or keep last summarized view? + this.provider_id = ''; + this.provider_name = ''; + this.provider_code = ''; + this.provider_owner = ''; + this.provider_currency_type = ''; + this.provider_holding_tag = ''; + this.provider_addresses = ''; + this.provider_san = ''; + this.provider_edi_default = ''; + this.provider_active = ''; + this.provider_prepayment_required = ''; + this.provider_url = ''; + this.provider_email = ''; + this.provider_phone = ''; + this.provider_fax_phone = ''; + this.provider_default_claim_policy = ''; + this.provider_default_copy_count = ''; + this.provider_contacts = ''; + this.provider_provider_notes = ''; + } + + if (newProvider) { + this.pcrud.retrieve('acqpro', newProvider, { + flesh: 1, flesh_fields: {acqpro: ['contacts','edi_default']}}).toPromise().then(provider => { + if (provider) { + this.provider = provider; + this.provider_id = provider.id(); + this.provider_name = provider.name(); + this.provider_code = provider.code(); + this.provider_owner = this.org.get(provider.owner()).shortname(); + this.provider_currency_type = provider.currency_type(); + this.provider_holding_tag = provider.holding_tag(); + this.provider_addresses = provider.addresses(); + this.provider_san = provider.san(); + if (provider.edi_default()) { + this.provider_edi_default = provider.edi_default().label(); + } else { + this.provider_edi_default = ''; + } + this.provider_active = provider.active(); + this.provider_prepayment_required = provider.prepayment_required(); + this.provider_url = provider.url(); + this.provider_email = provider.email(); + this.provider_phone = provider.phone(); + this.provider_fax_phone = provider.fax_phone(); + this.provider_default_claim_policy = provider.default_claim_policy(); + this.provider_default_copy_count = provider.default_copy_count(); + this.provider_contacts = provider.contacts(); + this.provider_provider_notes = provider.provider_notes(); + } else { + this.provider = null; + no_provider(); + } + }); + } else { + no_provider(); + } + } + + deleteProvider() { + this.delConfirm.open().subscribe(confirmed => { + if (!confirmed) { return; } + + this.pcrud.remove(this.provider) + .subscribe( + ok2 => { + console.log('deleteProvider, ok2'); + }, + err => { + console.log('deleteProvider, err'); + this.errorString.current() + .then(str => this.toast.danger(str)); + }, + () => { + console.log('deleteProvider, what is this?'); + } + ); + }); + + } + +}