start work on provider details tab
authorGalen Charlton <gmc@equinoxinitiative.org>
Thu, 26 Mar 2020 20:42:52 +0000 (16:42 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Thu, 26 Mar 2020 20:42:52 +0000 (16:42 -0400)
TODO: teach the record editor how to do a two-column layout
TODO: add delete button

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.html
Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.ts
Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.module.ts
Open-ILS/src/eg2/src/app/staff/acq/provider/provider-details.component.html [new file with mode: 0644]
Open-ILS/src/eg2/src/app/staff/acq/provider/provider-details.component.ts [new file with mode: 0644]

index e5a4153..5187113 100644 (file)
@@ -35,7 +35,7 @@
     <ngb-tabset #acqProviderTabs [activeId]="activeTab" (tabChange)="onTabChange($event)">
       <ngb-tab title="Provider" i18n-title id="details" [disabled]="!id">
         <ng-template ngbTabContent>
-          PROVIDER DETAILS TAB
+          <eg-provider-details #providerDetails></eg-provider-details>
         </ng-template>
       </ngb-tab>
       <ngb-tab title="Addresses" i18n-title id="addresses" [disabled]="!id">
index daecf55..1db460e 100644 (file)
@@ -5,6 +5,7 @@ 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';
+import {ProviderDetailsComponent} from './provider-details.component';
 import {ProviderRecordService} from './provider-record.service';
 import {FmRecordEditorComponent} from '@eg/share/fm-editor/fm-editor.component';
 import {StringComponent} from '@eg/share/string/string.component';
@@ -23,6 +24,7 @@ export class AcqProviderComponent implements OnInit, AfterViewInit {
     validTabTypes = ['details', 'addresses', 'contacts', 'attributes', 'holdings', 'edi_accounts', 'purchase_orders', 'invoices'];
     defaultTabType = 'details';
     @ViewChild('acqSearchProviderSummary', { static: true }) providerSummaryPane: AcqProviderSummaryPaneComponent;
+    @ViewChild('providerDetails', { static: false }) providerDetails: ProviderDetailsComponent;
     @ViewChild('createDialog', { static: true }) createDialog: FmRecordEditorComponent;
     @ViewChild('createString', { static: false }) createString: StringComponent;
     @ViewChild('createErrString', { static: false }) createErrString: StringComponent;
@@ -81,6 +83,9 @@ export class AcqProviderComponent implements OnInit, AfterViewInit {
         this.onDesireSummarize = ($event) => {
             // $event is a provider ID
             this.providerSummaryPane.update($event);
+            if (this.providerDetails) {
+                this.providerDetails.refresh();
+            }
             this.id = $event;
             this.providerRecord.fetch(this.id);
             this.showSearchForm = false;
index aa52908..368dc93 100644 (file)
@@ -5,6 +5,7 @@ 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 {ProviderDetailsComponent} from './provider-details.component';
 import {ProviderAddressesComponent} from './provider-addresses.component';
 import {ProviderContactsComponent} from './provider-contacts.component';
 import {ProviderHoldingsComponent} from './provider-holdings.component';
@@ -20,6 +21,7 @@ import {ProviderRecordService} from './provider-record.service';
     AcqProviderSearchFormComponent,
     AcqProviderSummaryPaneComponent,
     ProviderResultsComponent,
+    ProviderDetailsComponent,
     ProviderAddressesComponent,
     ProviderContactsComponent,
     ProviderHoldingsComponent,
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-details.component.html b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-details.component.html
new file mode 100644 (file)
index 0000000..97266f7
--- /dev/null
@@ -0,0 +1,16 @@
+<eg-string #successString i18n-text text="Provider Update Succeeded"></eg-string>
+<eg-string #updateFailedString i18n-text text="Provider Update Failed"></eg-string>
+<eg-string #deleteFailedString i18n-text text="Delete of Provider failed or was not allowed"></eg-string>
+<eg-string #deleteSuccessString i18n-text text="Delete of Provider succeeded"></eg-string>
+
+<eg-fm-record-editor #editDialog
+  idlClass="acqpro"
+  mode="update"
+  [hideBanner]="true" displayMode="inline"
+  [record]="provider"
+  (recordSaved)="updateProvider($event)"
+  readonlyFields="id"
+  hiddenFields="holding_tag"
+  fieldOrder="active,name,code,id,currency_type,default_claim_policy,default_copy_count,edi_default,owner,phone,fax_phone,email,url,san,prepayment_required"
+>
+</eg-fm-record-editor>
diff --git a/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-details.component.ts b/Open-ILS/src/eg2/src/app/staff/acq/provider/provider-details.component.ts
new file mode 100644 (file)
index 0000000..07d3b00
--- /dev/null
@@ -0,0 +1,48 @@
+import {Component, OnInit, Input, ViewChild} from '@angular/core';
+import {empty, throwError, Observable, from} from 'rxjs';
+import {map} from 'rxjs/operators';
+import {Router, ActivatedRoute, ParamMap} from '@angular/router';
+import {IdlService, IdlObject} from '@eg/core/idl.service';
+import {NetService} from '@eg/core/net.service';
+import {AuthService} from '@eg/core/auth.service';
+import {ProviderRecord, ProviderRecordService} from './provider-record.service';
+import {FmRecordEditorComponent} from '@eg/share/fm-editor/fm-editor.component';
+import {StringComponent} from '@eg/share/string/string.component';
+import {ToastService} from '@eg/share/toast/toast.service';
+
+@Component({
+  selector: 'eg-provider-details',
+  templateUrl: 'provider-details.component.html',
+})
+export class ProviderDetailsComponent implements OnInit {
+
+    @ViewChild('successString', { static: true }) successString: StringComponent;
+    @ViewChild('updateFailedString', { static: false }) updateFailedString: StringComponent;
+    @ViewChild('deleteFailedString', { static: true }) deleteFailedString: StringComponent;
+    @ViewChild('deleteSuccessString', { static: true }) deleteSuccessString: StringComponent;
+
+    provider: IdlObject;
+
+    permissions: {[name: string]: boolean};
+
+    constructor(
+        private router: Router,
+        private route: ActivatedRoute,
+        private net: NetService,
+        private idl: IdlService,
+        private auth: AuthService,
+        private providerRecord: ProviderRecordService,
+        private toast: ToastService) {
+    }
+
+    ngOnInit() {
+        this.refresh();
+    }
+
+    refresh() {
+        this.providerRecord.refreshCurrent().then(() => {
+            this.provider = this.providerRecord.current();
+        });
+    }
+
+}