LH#21: tweak holding tag form
authorGalen Charlton <gmc@equinoxinitiative.org>
Tue, 1 Sep 2020 01:31:02 +0000 (21:31 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Tue, 1 Sep 2020 01:31:02 +0000 (21:31 -0400)
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/eg2/src/app/staff/acq/provider/provider-holdings.component.html
Open-ILS/src/eg2/src/app/staff/acq/provider/provider-holdings.component.ts

index 57cd3f5..897ddf8 100644 (file)
@@ -4,6 +4,8 @@
 <eg-string #updateFailedString i18n-text text="Provider Holdings Subfield Update Failed"></eg-string>
 <eg-string #deleteFailedString i18n-text text="Delete of Provider Holdings Subfield failed or was not allowed"></eg-string>
 <eg-string #deleteSuccessString i18n-text text="Delete of Provider Holdings Subfield succeeded"></eg-string>
+<eg-string #successTagString i18n-text text="Provider Holdings Tag Update Succeeded"></eg-string>
+<eg-string #updateFailedTagString i18n-text text="Provider Holdings Subfield Update Failed"></eg-string>
 
 <ng-template #nameCellTemplate let-row="row">
   <ng-container [ngSwitch]="row.name()">
   </ng-container>
 </ng-template>
 
-<eg-fm-record-editor #providerTagEdit
-  idlClass="acqpro"
-  mode="update"
-  [hideBanner]="true" displayMode="inline"
-  [record]="provider"
-  (recordSaved)="updateProvider($event)"
-  hiddenFields="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>
+<form *ngIf="provider" #holdingTagForm="ngForm">
+  <div class="form-group row">
+    <label for="holdings-tag" class="col-auto col-form-label" i18n>Holdings Tag</label>
+    <div class="col-auto">
+      <input id="holdings-tag" type="text" [(ngModel)]="provider._holding_tag" name="holding_tag" class="form-control" />
+    </div>
+    <div class="col-auto">
+      <button type="submit" class="btn btn-info"
+        (click)="updateProvider($event) && holdingTagForm.markAsPristine()" 
+        [disabled]="!holdingTagForm.dirty || (provider && provider._holding_tag == provider.holding_tag())" i18n>Save</button>
+    </div>
+  </div>
+</form>
 
 <eg-grid #acqProviderHoldingsGrid
   persistKey="acq.provider.holdings"
@@ -37,7 +44,8 @@
   hideFields="provider"
   [cellTextGenerator]="cellTextGenerator">
 
-  <eg-grid-toolbar-button label="New Holdings Subfield" i18n-label (onClick)="createNew()"></eg-grid-toolbar-button>
+  <eg-grid-toolbar-button label="New Holdings Subfield" i18n-label (onClick)="createNew()"
+    [disabled]="!(provider && provider.holding_tag())"></eg-grid-toolbar-button>
   <eg-grid-toolbar-action label="Edit Selected" i18n-label (onClick)="editSelected($event)"></eg-grid-toolbar-action>
   <eg-grid-toolbar-action label="Delete Selected" i18n-label (onClick)="deleteSelected($event)"></eg-grid-toolbar-action>
 
index 699b200..d79a954 100644 (file)
@@ -33,6 +33,8 @@ export class ProviderHoldingsComponent implements OnInit, AfterViewInit {
     @ViewChild('updateFailedString', { static: false }) updateFailedString: StringComponent;
     @ViewChild('deleteFailedString', { static: true }) deleteFailedString: StringComponent;
     @ViewChild('deleteSuccessString', { static: true }) deleteSuccessString: StringComponent;
+    @ViewChild('successTagString', { static: true }) successTagString: StringComponent;
+    @ViewChild('updateFailedTagString', { static: false }) updateFailedTagString: StringComponent;
 
     cellTextGenerator: GridCellTextGenerator;
     provider: IdlObject;
@@ -101,9 +103,23 @@ export class ProviderHoldingsComponent implements OnInit, AfterViewInit {
     }
 
     updateProvider(providerId: any) {
-        this.providerRecord.refreshCurrent().then(() => {
-            this.provider = this.providerRecord.current();
-        });
+        this.provider.holding_tag(this.provider._holding_tag);
+        this.provider.ischanged(true);
+        this.providerRecord.batchUpdate([this.provider]).subscribe(
+            val => {
+                this.successTagString.current()
+                    .then(str => this.toast.success(str));
+            },
+            err => {
+                this.updateFailedTagString.current()
+                    .then(str => this.toast.danger(str));
+            },
+            ()  => {
+                this.providerRecord.refreshCurrent().then(
+                    () => { this.provider = this.providerRecord.current(); }
+                );
+            }
+        );
     }
 
     getDataSource(): GridDataSource {