WIP collab/sleary/lp1984007-funds-dropdown-warnings-v2
authorStephanie Leary <stephanie.leary@equinoxoli.org>
Thu, 18 May 2023 14:52:52 +0000 (14:52 +0000)
committerStephanie Leary <stephanie.leary@equinoxoli.org>
Thu, 18 May 2023 14:52:52 +0000 (14:52 +0000)
Signed-off-by: Stephanie Leary <stephanie.leary@equinoxoli.org>
Open-ILS/src/eg2/src/app/share/combobox/combobox.component.html
Open-ILS/src/eg2/src/app/share/combobox/combobox.component.ts
Open-ILS/src/eg2/src/app/staff/acq/po/charges.component.html
Open-ILS/src/eg2/src/app/staff/acq/po/charges.component.ts
Open-ILS/src/eg2/src/app/staff/acq/po/summary.component.css

index c15e26e..81ed248 100644 (file)
@@ -4,7 +4,7 @@
 </ng-template>
 
 <ng-template #acqfTemplate egIdlClass="acqf" let-r="result">
-  <span id="{{domId}}-{{r.id}}" [ngClass]="classNames">{{r.fm.code()}} ({{r.fm.year()}}) ({{getOrgShortname(r.fm.org())}})</span>
+  <span id="{{domId}}-{{r.id}}" class="text-bg-{{ acqfCheckFundBalance(r.id) }}">{{r.fm.code()}} ({{r.fm.year()}}) ({{getOrgShortname(r.fm.org())}})</span>
 </ng-template>
 <ng-template #acplTemplate egIdlClass="acpl" let-r="result">
   <span id="{{domId}}-{{r.id}}" [ngClass]="classNames">
index 971fc72..7325c41 100644 (file)
@@ -15,6 +15,9 @@ import {StoreService} from '@eg/core/store.service';
 import {IdlService, IdlObject} from '@eg/core/idl.service';
 import {PcrudService} from '@eg/core/pcrud.service';
 import {OrgService} from '@eg/core/org.service';
+import { AuthService } from '@eg/core/auth.service';
+import { NetService } from '@eg/core/net.service';
+import { PoService } from '@eg/staff/acq/po/po.service';
 
 export interface ComboboxEntry {
   id: any;
@@ -28,7 +31,7 @@ export interface ComboboxEntry {
 }
 
 @Directive({
-    selector: 'ng-template[egIdlClass]'
+    selector: 'ng-template[egIdlClass]' 
 })
 export class IdlClassTemplateDirective {
   @Input() egIdlClass: string;
@@ -41,6 +44,42 @@ export class IdlClassTemplateDirective {
   styles: [`
     .icons {margin-left:-18px}
     .material-icons {font-size: 16px;font-weight:bold}
+
+    .dropdown-item .text-bg-danger {
+        background-color: #f8d7da;
+        color: #58151c !important;
+        font-weight: 600;
+        padding: 0 1rem 0 .25rem;
+    }
+        
+    .dropdown-item .text-bg-danger::before {
+        content: "\e160";
+        font-family: "Material Icons";
+        font-weight: normal;
+        vertical-align: sub;
+    }
+
+    .dropdown-item.active .text-bg-danger {
+        background-color: #f1aeb5;
+    }
+
+    .dropdown-item .text-bg-warning {
+        background-color: #ffe69c !important;
+        color: #723809;
+        font-weight: 600;
+        padding: 0 1rem 0 .25rem;
+    }
+
+    .dropdown-item .text-bg-warning::before {
+        content: "\e002";
+        font-family: "Material Icons";
+        font-weight: normal;
+        vertical-align: sub;
+    }
+
+    .dropdown-item.active .text-bg-warning {
+        background-color: #ffda6a;
+    }
   `],
   providers: [{
     provide: NG_VALUE_ACCESSOR,
@@ -225,6 +264,9 @@ export class ComboboxComponent
       private idl: IdlService,
       private pcrud: PcrudService,
       private org: OrgService,
+      private net: NetService,
+      private auth: AuthService,
+      public poService: PoService
     ) {
         this.entrylist = [];
         this.asyncIds = {};
@@ -621,6 +663,21 @@ export class ComboboxComponent
         this.propagateTouch = fn;
     }
 
+    acqfCheckFundBalance(fundId: number): any {
+        return this.net.request(
+            'open-ils.acq',
+            'open-ils.acq.fund.check_balance_percentages',
+            this.auth.token(), fundId
+        ).toPromise().then(r => {
+            if (r[0]) {
+                return 'danger';
+            } else if (r[1]) {
+                return 'warning';
+            } else {
+                return 'ok';
+            }
+        });
+    }
 }
 
 
index c8fbf51..e78a8bf 100644 (file)
@@ -30,7 +30,6 @@
       <eg-combobox idlClass="acqf" [selectedId]="charge.fund()"
         (onChange)="charge.fund($event ? $event.id : null)"
         i18n-placeholder placeholder="Fund..."
-        [displayTemplate]="fundTmpl"
         [asyncSupportsEmptyTermClick]="true"
         [required]="true" [readOnly]="!charge.isnew() && !charge.ischanged()"
         [idlQuerySort]="{acqf: 'year DESC, code'}"
         (click)="removeCharge(charge)" *ngIf="canDelete(charge)" i18n>Remove</button>
     </div>
   </div>
-</ng-container>
-
-<!-- r.fm.id() makes sense in copy-attrs.component because there's a lot of setup there, but do we have the fund ID at all in this component?? -->
-<ng-template #fundTmpl let-r="result" i18n>
-  <span id="eg-combobox-{{autoId}}-{{r.id}}" [ngClass]="{'text-bg-danger': checkFundBalance(r.fm.id()) === 'stop',
-    'text-bg-warning': checkFundBalance(r.fm.id()) === 'warning'}">{{r.label}}</span>
-</ng-template>
\ No newline at end of file
+</ng-container>
\ No newline at end of file
index 7e14e08..a3e3ee4 100644 (file)
@@ -53,10 +53,12 @@ export class PoChargesComponent implements OnInit, OnDestroy {
         });
 
         this.owners = this.org.ancestors(this.auth.user().ws_ou(), true);
+        /*
         if (this.po().activationEvent)
             this.classNames.push('text-bg-danger');
         if (this.po().activationWarnings.length)
             this.classNames.push('text-bg-warning');
+        /**/
     }
 
     ngOnDestroy() {
index e7e8b76..8537b5b 100644 (file)
@@ -6,39 +6,3 @@
   vertical-align: sub;
 }
 
-.dropdown-item .text-bg-danger {
-  background-color: #f8d7da;
-  color: #58151c !important;
-  font-weight: 600;
-  padding: 0 1rem 0 .25rem;
-}
-
-.dropdown-item .text-bg-danger::before {
-  content: "\e160";
-  font-family: "Material Icons";
-  font-weight: normal;
-  vertical-align: sub;
-}
-
-.dropdown-item.active .text-bg-danger {
-  background-color: #f1aeb5;
-}
-
-.dropdown-item .text-bg-warning {
-  background-color: #ffe69c !important;
-  color: #723809;
-  font-weight: 600;
-  padding: 0 1rem 0 .25rem;
-}
-
-.dropdown-item .text-bg-warning::before {
-  content: "\e002";
-  font-family: "Material Icons";
-  font-weight: normal;
-  vertical-align: sub;
-}
-
-.dropdown-item.active .text-bg-warning {
-  background-color: #ffda6a;
-}
-