delint
authorJason Etheridge <phasefx@gmail.com>
Fri, 12 May 2023 18:02:15 +0000 (14:02 -0400)
committerJason Etheridge <phasefx@gmail.com>
Sun, 14 May 2023 13:04:51 +0000 (09:04 -0400)
Open-ILS/src/eg2/src/app/share/grid/grid.ts

index e0852f3..16c9a04 100644 (file)
@@ -1,8 +1,8 @@
 /**
  * Collection of grid related classses and interfaces.
  */
-import {TemplateRef, EventEmitter, QueryList, ViewChild} from '@angular/core';
-import {Observable, Subscription, empty} from 'rxjs';
+import {TemplateRef, EventEmitter, QueryList} from '@angular/core';
+import {Observable, Subscription} from 'rxjs';
 import {IdlService, IdlObject} from '@eg/core/idl.service';
 import {OrgService} from '@eg/core/org.service';
 import {ServerStoreService} from '@eg/core/server-store.service';
@@ -78,7 +78,7 @@ export class GridColumn {
         this.filterIncludeOrgDescendants = false;
     }
 
-    loadFilter(f) {
+    loadFilter(f:any) {
         this.isFiltered = f.isFiltered;
         this.filterValue = f.filterValue;
         this.filterOperator = f.filterOperator;
@@ -178,7 +178,7 @@ export class GridColumnSet {
     generateWildcardColumns(col: GridColumn) {
 
         const dotpath = col.path.replace(/\.?\*$/, '');
-        let classObj, idlField;
+        let classObj:IdlObject, idlField:any;
 
         if (col.idlClass) {
             classObj = this.idl.classes[col.idlClass];
@@ -189,13 +189,13 @@ export class GridColumnSet {
         if (!classObj) { return; }
 
         const pathParts = dotpath.split(/\./);
-        let oldField;
+        //let oldField;
 
         // find the IDL class definition for the last element in the
         // path before the .*
         // An empty pathParts means expand the root class
         pathParts.forEach((part, pathIdx) => {
-            oldField = idlField;
+            //oldField = idlField;
             idlField = classObj.field_map[part];
 
             // unless we're at the end of the list, this field should
@@ -219,7 +219,7 @@ export class GridColumnSet {
             return;
         }
 
-        classObj.fields.forEach(field => {
+        classObj.fields.forEach((field:any) => {
 
             // Only show wildcard fields where we have data to show
             // Virtual and un-fleshed links will not have any data.
@@ -309,9 +309,9 @@ export class GridColumnSet {
     idlInfoFromDotpath(dotpath: string): any {
         if (!dotpath || !this.idlClass) { return null; }
 
-        let idlParent;
-        let idlField;
-        let idlClass;
+        let idlParent:any;
+        let idlField:any;
+        let idlClass:any;
         let nextIdlClass = this.idl.classes[this.idlClass];
 
         const pathParts = dotpath.split(/\./);
@@ -452,7 +452,7 @@ export class GridColumnSet {
     }
 
     moveColumn(col: GridColumn, diff: number) {
-        let srcIdx, targetIdx;
+        let srcIdx:number, targetIdx:number;
 
         this.columns.forEach((c, i) => {
           if (c.name === col.name) { srcIdx = i; }
@@ -739,31 +739,34 @@ export class GridContext {
     // Load initial settings and data.
     initData() {
         this.applyGridConfig()
-        .then(ok => this.dataSource.requestPage(this.pager))
-        .then(ok => this.listenToPager());
+        .then(() => this.dataSource.requestPage(this.pager))
+        .then(() => this.listenToPager());
     }
 
     destroy() {
         this.ignorePager();
     }
 
-    applyGridConfig(): Promise<void> {
-        return this.getGridConfig(this.persistKey)
-        .then(conf => {
-            let columns = [];
-            if (conf) {
-                columns = conf.columns;
-                if (conf.limit && !this.disablePaging) {
-                    this.pager.limit = conf.limit;
-                }
-                this.applyToolbarActionVisibility(conf.hideToolbarActions);
-            }
+       async applyGridConfig(): Promise<void> {
+               try {
+                       const conf = await this.getGridConfig(this.persistKey);
+                       let columns = [];
+                       if (conf) {
+                               columns = conf.columns;
+                               if (conf.limit && !this.disablePaging) {
+                                       this.pager.limit = conf.limit;
+                               }
+                               this.applyToolbarActionVisibility(conf.hideToolbarActions);
+                       }
+
+                       // This is called regardless of the presence of saved
+                       // settings so defaults can be applied.
+                       this.columnSet.applyColumnSettings(columns);
+               } catch (error) {
+                       console.error('Error applying grid config:', error);
+               }
+       }
 
-            // This is called regardless of the presence of saved
-            // settings so defaults can be applied.
-            this.columnSet.applyColumnSettings(columns);
-        });
-    }
 
     applyToolbarActionVisibility(hidden: string[]) {
         if (!hidden || hidden.length === 0) { return; }
@@ -821,7 +824,7 @@ export class GridContext {
     listenToPager() {
         if (this.pageChanges) { return; }
         this.pageChanges = this.pager.onChange$.subscribe(
-            val => this.dataSource.requestPage(this.pager));
+            () => this.dataSource.requestPage(this.pager));
     }
 
     ignorePager() {
@@ -964,7 +967,7 @@ export class GridContext {
             return val;
         }
 
-        let interval;
+        let interval:any;
         const intField = col.dateOnlyIntervalField;
         if (intField) {
             const intCol =
@@ -995,8 +998,8 @@ export class GridContext {
 
     nestedItemFieldValue(obj: any, col: GridColumn): string {
 
-        let idlField;
-        let idlClassDef;
+        let idlField:any;
+        let idlClassDef:any;
         const original = obj;
         const steps = col.path.split('.');
 
@@ -1092,7 +1095,7 @@ export class GridContext {
         if (!this.lastSelectedIndex) { return; }
         const pos = this.getRowPosition(this.lastSelectedIndex);
         if (pos === this.pager.offset) {
-            this.toPrevPage().then(ok => this.selectLastRow(), err => {});
+            this.toPrevPage().then(() => this.selectLastRow(), err => { console.log('grid: in selectPreviousRow',err); });
         } else {
             this.selectRowByPos(pos - 1);
         }
@@ -1102,7 +1105,7 @@ export class GridContext {
         if (!this.lastSelectedIndex) { return; }
         const pos = this.getRowPosition(this.lastSelectedIndex);
         if (pos === (this.pager.offset + this.pager.limit - 1)) {
-            this.toNextPage().then(ok => this.selectFirstRow(), err => {});
+            this.toNextPage().then(() => this.selectFirstRow(), err => { console.log('grid: in selectNextRow',err); });
         } else {
             this.selectRowByPos(pos + 1);
         }
@@ -1121,7 +1124,7 @@ export class GridContext {
             (pos === this.pager.offset) ? this.toPrevPage() : Promise.resolve();
 
         promise.then(
-            ok => {
+            () => {
                 const row = this.dataSource.data[pos - 1];
                 const newIndex = this.getRowIndex(row);
                 if (selectedIndexes.filter(i => i === newIndex).length > 0) {
@@ -1132,7 +1135,7 @@ export class GridContext {
                     this.selectMultipleRows(selectedIndexes.concat(newIndex));
                 }
             },
-            err => {}
+            err => { console.log('grid: inside selectMultiRowsPrevious',err); }
         );
     }
 
@@ -1175,7 +1178,7 @@ export class GridContext {
             this.toNextPage() : Promise.resolve();
 
         promise.then(
-            ok => {
+            () => {
                 const row = this.dataSource.data[pos + 1];
                 const newIndex = this.getRowIndex(row);
                 if (selectedIndexes.filter(i => i === newIndex).length > 0) {
@@ -1186,7 +1189,7 @@ export class GridContext {
                     this.selectMultipleRows(selectedIndexes.concat(newIndex));
                 }
             },
-            err => {}
+            err => { console.log('grid: inside selectMultiRowsNext',err); }
         );
     }
 
@@ -1252,16 +1255,16 @@ export class GridContext {
         return flatRow;
     }
 
-    getAllRowsAsText(): Observable<any> {
-        return Observable.create(observer => {
-            this.getAllRows().then(ok => {
-                this.dataSource.data.forEach(row => {
-                    observer.next(this.getRowAsFlatText(row));
-                });
-                observer.complete();
-            });
-        });
-    }
+       getAllRowsAsText(): Observable<any> {
+               return new Observable((observer: any) => {
+                       this.getAllRows().then(() => {
+                               this.dataSource.data.forEach(row => {
+                                       observer.next(this.getRowAsFlatText(row));
+                               });
+                               observer.complete();
+                       });
+               });
+       }
 
     removeFilters(): void {
         this.dataSource.filters = {};
@@ -1275,12 +1278,12 @@ export class GridContext {
             'controls' : Object.fromEntries(new Map( this.columnSet.columns.map( c => [c.name, c.getFilter()] ) ))
         }
         this.store.getItem('eg.grid.filters.' + this.persistKey).then( setting => {
-            console.log('saveFilters, setting = ', setting);
+            console.log('grid: saveFilters, setting = ', setting);
             setting ||= {};
             setting[asName] = obj;
-            console.log('saving ' + asName, JSON.stringify(obj));
+            console.log('grid: saving ' + asName, JSON.stringify(obj));
             this.store.setItem('eg.grid.filters.' + this.persistKey, setting).then( res => {
-                console.log('save toast here',res);
+                console.log('grid: save toast here',res);
             });
         });
     }
@@ -1294,7 +1297,7 @@ export class GridContext {
                     console.warn('Could not find ' + withName + ' in eg.grid.filters.' + this.persistKey,setting);
                 }
                 this.store.setItem('eg.grid.filters.' + this.persistKey, setting).then( res => {
-                    console.log('delete toast here',res);
+                    console.log('grid: delete toast here',res);
                 });
             } else {
                 console.warn('Could not find setting eg.grid.filters.' + this.persistKey, setting);
@@ -1302,7 +1305,7 @@ export class GridContext {
         });
     }
     loadFilters(fromName: string): void {
-        console.log('fromName',fromName);
+        console.log('grid: fromName',fromName);
         this.store.getItem('eg.grid.filters.' + this.persistKey).then( setting => {
             if (setting) {
                 const obj = setting[fromName];
@@ -1341,17 +1344,17 @@ export class GridContext {
         csvStr = csvStr.replace(/,$/, '\n');
 
         return new Promise(resolve => {
-            this.getAllRowsAsText().subscribe(
-                row => {
+            this.getAllRowsAsText().subscribe({
+                next: row => {
                     columns.forEach(col => {
                         csvStr += this.valueToCsv(row[col.name]);
                         csvStr += ',';
                     });
                     csvStr = csvStr.replace(/,$/, '\n');
                 },
-                err => {},
-                ()  => resolve(csvStr)
-            );
+                error: err => { console.log('grid: in gridToCsv',err); },
+                complete: ()  => resolve(csvStr)
+            });
         });
     }
 
@@ -1373,18 +1376,18 @@ export class GridContext {
         if (!this.columnSet.idlClass) { return; }
 
         const pkeyField = this.idl.classes[this.columnSet.idlClass].pkey;
-        const specifiedColumnOrder = this.autoGeneratedColumnOrder ?
-            this.autoGeneratedColumnOrder.split(/,/) : [];
+        //const specifiedColumnOrder = this.autoGeneratedColumnOrder ?
+        //    this.autoGeneratedColumnOrder.split(/,/) : [];
 
         // generate columns for all non-virtual fields on the IDL class
         const fields = this.idl.classes[this.columnSet.idlClass].fields
-            .filter(field => !field.virtual);
+            .filter((field:any) => !field.virtual);
 
         const sortedFields = this.autoGeneratedColumnOrder ?
             this.idl.sortIdlFields(fields, this.autoGeneratedColumnOrder.split(/,/)) :
             fields;
 
-        sortedFields.forEach(field => {
+        sortedFields.forEach((field:any) => {
             if (!this.ignoredFields.filter(ignored => ignored === field.name).length) {
                 const col = new GridColumn();
                 col.name = field.name;
@@ -1522,26 +1525,26 @@ export class GridDataSource {
 
         return new Promise((resolve, reject) => {
             let idx = pager.offset;
-            return this.getRows(pager, this.sort).subscribe(
-                row => {
+            return this.getRows(pager, this.sort).subscribe({
+                next: row => {
                     this.data[idx++] = row;
                     // not updating this.requestingData, as having
                     // retrieved one row doesn't mean we're done
                     this.retrievalError = false;
                 },
-                err => {
+                error: err => {
                     console.error(`grid getRows() error ${err}`);
                     this.requestingData = false;
                     this.retrievalError = true;
                     reject(err);
                 },
-                ()  => {
+                complete: ()  => {
                     this.checkAllRetrieved(pager, idx);
                     this.requestingData = false;
                     this.retrievalError = false;
                     resolve(null);
                 }
-            );
+            });
         });
     }