LP1904036 Grid auto columns label/etc fixes
authorBill Erickson <berickxx@gmail.com>
Tue, 29 Jun 2021 15:42:40 +0000 (11:42 -0400)
committerGalen Charlton <gmc@equinoxOLI.org>
Fri, 28 Oct 2022 00:13:35 +0000 (20:13 -0400)
* Ensure the datatype is propagated to auto columns.
* Display 'class: fieldname' in the column picker, but only display
  field name in the grid header to avoid large column names.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <js7389@princeton.edu>
Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Open-ILS/src/eg2/src/app/share/grid/grid-column.component.ts
Open-ILS/src/eg2/src/app/share/grid/grid-header.component.html
Open-ILS/src/eg2/src/app/share/grid/grid.ts

index 3eda216..4b0a93e 100644 (file)
@@ -90,6 +90,7 @@ export class GridColumnComponent implements OnInit {
         col.dateOnlyIntervalField = this.dateOnlyIntervalField;
         col.idlClass = this.idlClass;
         col.isAuto = false;
+
         this.grid.context.columnSet.add(col);
 
         if (this.cellTemplate &&
index a680765..a3d0a6b 100644 (file)
     class="eg-grid-cell eg-grid-header-cell" [ngStyle]="{flex:col.flex}">
     <a class="sortable label-with-material-icon" *ngIf="col.isSortable"
       (click)="sortOneColumn(col)">
-      <span class="eg-grid-header-cell-sort-label">{{col.label}}</span>
+      <span class="eg-grid-header-cell-sort-label">{{col.headerLabel}}</span>
       <span class="material-icons eg-grid-header-cell-sort-arrow"
         *ngIf="isColumnSorting(col, 'ASC')">arrow_upwards</span>
       <span class="material-icons eg-grid-header-cell-sort-arrow"
         *ngIf="isColumnSorting(col, 'DESC')">arrow_downwards</span>
     </a>
-    <span *ngIf="!col.isSortable">{{col.label}}</span>
+    <span *ngIf="!col.isSortable">{{col.headerLabel}}</span>
   </div>
 </div>
 <div *ngIf="context.isFilterable"
index c573a4b..7fb1efc 100644 (file)
@@ -16,6 +16,7 @@ export class GridColumn {
     name: string;
     path: string;
     label: string;
+    headerLabel: string;
     flex: number;
     align: string;
     hidden: boolean;
@@ -206,6 +207,11 @@ export class GridColumnSet {
             newCol.isAuto = true;
             newCol.path = dotpath ? dotpath + '.' + field.name : field.name;
             newCol.label = dotpath ? classObj.label + ': ' + field.label : field.label;
+            newCol.datatype = field.datatype;
+
+            // Avoid including the class label prefix in the main grid
+            // header display so it doesn't take up so much horizontal space.
+            newCol.headerLabel = field.label;
 
             this.add(newCol);
         });
@@ -347,6 +353,7 @@ export class GridColumnSet {
         if (!col.align) { col.align = 'left'; }
         if (!col.label) { col.label = col.name; }
         if (!col.datatype) { col.datatype = 'text'; }
+        if (!col.isAuto) { col.headerLabel = col.label; }
 
         col.visible = !col.hidden;
     }