add simple sort selectors to staff catalog
authorLlewellyn Marshall <llewellyn.marshall@ncdcr.gov>
Wed, 24 Nov 2021 15:14:23 +0000 (10:14 -0500)
committerLlewellyn Marshall <llewellyn.marshall@ncdcr.gov>
Wed, 1 Dec 2021 14:34:55 +0000 (09:34 -0500)
Open-ILS/src/eg2/src/app/staff/catalog/search-form.component.html
Open-ILS/src/eg2/src/app/staff/catalog/search-form.component.ts

index c63c5e8..ffba619 100644 (file)
@@ -1,8 +1,15 @@
-<ng-template #ccvmOption let-list="list">
-  <option *ngFor="let ccv of list" value="{{ccv.code()}}">
+<ng-template #ccvmOption let-list="list" let-simple="simple">
+  <option *ngFor="let ccv of simple" value="{{ccv.code()}}">
     {{ccv.search_label() || ccv.value()}}
     <ng-container *ngIf="ccv.opac_visible() === 'f'" i18n>(Hidden)</ng-container>
   </option>
+  <option *ngIf="simple.length && list.length" disabled='true'>-----</option>
+  <ng-container *ngFor="let ccv of list">
+    <option  *ngIf="ccv.is_simple()  === 'f'" value="{{ccv.code()}}">
+      {{ccv.search_label() || ccv.value()}}
+      <ng-container *ngIf="ccv.opac_visible() === 'f'" i18n>(Hidden)</ng-container>
+    </option>
+  </ng-container>
 </ng-template>
 
 <div id='staffcat-search-form'>
@@ -34,7 +41,7 @@
                 <select class="form-control" [(ngModel)]="context.termSearch.format">
                   <option i18n value=''>All Formats</option>
                   <ng-container
-                    *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.search_format}">
+                    *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.search_format, simple:ccvmSimpleMap.search_format}">
                   </ng-container> 
                 </select>
               </div>
                 [(ngModel)]="context.termSearch.ccvmFilters.item_type">
                 <option value='' i18n>All Item Types</option>
                 <ng-container
-                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.item_type}">
+                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.item_type, simple:ccvmSimpleMap.item_type}">
                 </ng-container> 
               </select>
             </div>
                 [(ngModel)]="context.termSearch.ccvmFilters.item_form">
                 <option value='' i18n>All Item Forms</option>
                 <ng-container
-                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.item_form}">
+                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.item_form, simple:ccvmSimpleMap.item_form}">
                 </ng-container> 
               </select>
             </div>
                 [(ngModel)]="context.termSearch.ccvmFilters.item_lang" multiple="true">
                 <option value='' i18n>All Languages</option>
                 <ng-container
-                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.item_lang}">
+                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.item_lang, simple:ccvmSimpleMap.item_lang}">
                 </ng-container> 
               </select>
             </div>
                 [(ngModel)]="context.termSearch.ccvmFilters.audience" multiple="true">
                 <option value='' i18n>All Audiences</option>
                 <ng-container
-                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.audience}">
+                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.audience, simple:ccvmSimpleMap.audience}">
                 </ng-container> 
               </select>
             </div>
                 [(ngModel)]="context.termSearch.ccvmFilters.vr_format" multiple="true">
                 <option value='' i18n>All Video Formats</option>
                 <ng-container
-                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.vr_format}">
+                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.vr_format, simple:ccvmSimpleMap.vr_format}">
                 </ng-container> 
               </select>
             </div>
                 [(ngModel)]="context.termSearch.ccvmFilters.bib_level" multiple="true">
                 <option value='' i18n>All Bib Levels</option>
                 <ng-container
-                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.bib_level}">
+                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.bib_level, simple:ccvmSimpleMap.bib_level}">
                 </ng-container> 
               </select>
             </div>
                 [(ngModel)]="context.termSearch.ccvmFilters.lit_form" multiple="true">
                 <option value='' i18n>All Literary Forms</option>
                 <ng-container
-                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.lit_form}">
+                  *ngTemplateOutlet="ccvmOption;context:{list:ccvmMap.lit_form, simple:ccvmSimpleMap.lit_form}">
                 </ng-container> 
               </select>
             </div>
index 16a124d..4e01012 100644 (file)
@@ -30,6 +30,7 @@ export class SearchFormComponent implements OnInit, AfterViewInit {
 
     context: CatalogSearchContext;
     ccvmMap: {[ccvm: string]: IdlObject[]} = {};
+    ccvmSimpleMap: {[ccvm: string]: IdlObject[]} = {};
     cmfMap: {[cmf: string]: IdlObject} = {};
     showSearchFilters = false;
     copyLocations: IdlObject[];
@@ -54,13 +55,16 @@ export class SearchFormComponent implements OnInit, AfterViewInit {
     }
 
     ngOnInit() {
-        this.ccvmMap = this.cat.ccvmMap;
+        this.ccvmMap = this.cat.ccvmMap;       
         this.cmfMap = this.cat.cmfMap;
         this.context = this.staffCat.searchContext;
 
         // Start with advanced search options open
         // if any filters are active.
         this.showSearchFilters = this.filtersActive();
+        
+        //create our simple sort list
+        this.CompileSimpleSelector();
 
         // Some search scenarios, like rendering a search template,
         // will not be searchable and thus not resovle to a specific
@@ -303,6 +307,21 @@ export class SearchFormComponent implements OnInit, AfterViewInit {
     showExcludeElectronic(): boolean {
         return this.staffCat.showExcludeElectronic;
     }
+
+    //filters out CCVMs based on their is_simple attribute
+    CompileSimpleSelector(): void {     
+        Object.keys(this.ccvmMap).forEach(cType => {
+            if (!this.ccvmSimpleMap[cType]) {
+                //creates simple sort list even if there might be no entries
+                this.ccvmSimpleMap[cType] = [];
+            }
+            
+           this.ccvmMap[cType].forEach(ccvm => {
+              if(ccvm.is_simple() === 't'){
+                  this.ccvmSimpleMap[cType].push(ccvm);
+              }});
+        });
+    }
 }