LP1953181 Acq funds year dropdown
authorTiffany Little <tlittle@georgialibraries.org>
Thu, 29 Dec 2022 21:03:08 +0000 (16:03 -0500)
committerChris Sharp <csharp@georgialibraries.org>
Wed, 4 Jan 2023 15:21:27 +0000 (10:21 -0500)
Returns the fiscal year to a dropdown on the Funds screen, and removes the autofilter on the Year column.

Signed-off-by: Tiffany Little <tlittle@georgialibraries.org>
Open-ILS/src/eg2/src/app/staff/admin/acq/funds/funds-manager.component.html
Open-ILS/src/eg2/src/app/staff/admin/acq/funds/funds-manager.component.ts

index dfc85b5..0b678a8 100644 (file)
         </eg-org-family-select>
       </ng-container>
     </div>
+    <ng-container>
+      <eg-combobox domId="acq-fiscal-year" name="acq-fiscal-year"
+      i18n-labelText labelText="Year"
+      [asyncSupportsEmptyTermClick]="true"
+      [selectedId]="selectedYear"
+      (onChange)="yearChange($event.id)"
+      [entries]="fiscalYears"></eg-combobox>
+  </ng-container>
   </div>
   <hr/>
 </ng-container>
@@ -70,7 +78,7 @@
   </ng-template>
   <eg-grid-column path="name" [cellTemplate]="nameTmpl"></eg-grid-column>
   <eg-grid-column path="code"></eg-grid-column>
-  <eg-grid-column path="year" initialFilterOperator="=" [initialFilterValue]="getDefaultYear()"></eg-grid-column>
+  <eg-grid-column path="year"></eg-grid-column>
   <eg-grid-column path="org"></eg-grid-column>
   <eg-grid-column path="currency_type"></eg-grid-column>
   <eg-grid-column path="active"></eg-grid-column>
index 5d5df0f..9cd317a 100644 (file)
@@ -13,9 +13,11 @@ import {OrgService} from '@eg/core/org.service';
 import {PermService} from '@eg/core/perm.service';
 import {AuthService} from '@eg/core/auth.service';
 import {NetService} from '@eg/core/net.service';
+import {StoreService} from '@eg/core/store.service';
 import {StringComponent} from '@eg/share/string/string.component';
 import {FundDetailsDialogComponent} from './fund-details-dialog.component';
 import {FundRolloverDialogComponent} from './fund-rollover-dialog.component';
+import {ComboboxEntry} from '@eg/share/combobox/combobox.component';
 
 @Component({
     selector: 'eg-funds-manager',
@@ -34,6 +36,8 @@ export class FundsManagerComponent extends AdminPageComponent implements OnInit,
 
     cellTextGenerator: GridCellTextGenerator;
     canRollover = false;
+    selectedYear: number;
+    fiscalYears: ComboboxEntry[];
 
     constructor(
         route: ActivatedRoute,
@@ -47,13 +51,36 @@ export class FundsManagerComponent extends AdminPageComponent implements OnInit,
         private perm2: PermService, // need copy because perm is private to base
                                     // component
         toast: ToastService,
-        private net: NetService
+        private net: NetService,
+        private localStore: StoreService
     ) {
         super(route, ngLocation, format, idl, org, auth, pcrud, perm, toast);
         this.dataSource = new GridDataSource();
     }
 
     ngOnInit() {
+
+        this.selectedYear = this.localStore.getLocalItem('eg.acq.fiscal_year');
+
+        this.fiscalYears = null;
+        let maxYear = 0;
+        this.net.request(
+            'open-ils.acq',
+            'open-ils.acq.fund.org.years.retrieve',
+            this.auth.token(),
+            {},
+            { limit_perm: 'VIEW_FUND' }
+        ).subscribe(
+            years => {
+                this.fiscalYears = years.map(y => {
+                    if (this.selectedYear === null) {
+                        if (maxYear < y) { this.selectedYear = y; }
+                    }
+                    return { id: y, label: y };
+                });
+            }
+        );
+        
         this.cellTextGenerator = {
             name: row => row.name()
         };
@@ -113,6 +140,10 @@ export class FundsManagerComponent extends AdminPageComponent implements OnInit,
                 search.push(orgFilter);
             }
 
+            if (this.selectedYear) {
+                search.push({year: this.selectedYear});
+            }
+
             Object.keys(this.dataSource.filters).forEach(key => {
                 Object.keys(this.dataSource.filters[key]).forEach(key2 => {
                     search.push(this.dataSource.filters[key][key2]);
@@ -174,4 +205,10 @@ export class FundsManagerComponent extends AdminPageComponent implements OnInit,
             () => this.grid.reload()
         );
     }
+
+    yearChange(year: number) {
+        this.selectedYear = year;
+        this.localStore.setLocalItem('eg.acq.fiscal_year', this.selectedYear);
+        this.grid.reload();
+    }
 }