2 TODO focus search input
4 <div id='staffcat-search-form' class='pb-2 mb-3'>
6 *ngFor="let q of searchContext.query; let idx = index; trackBy:trackByIdx">
7 <div class="col-lg-9 d-flex">
10 <select class="form-control" [(ngModel)]="searchContext.format">
11 <option i18n value=''>All Formats</option>
12 <option *ngFor="let fmt of ccvmMap.search_format"
13 value="{{fmt.code()}}">{{fmt.value()}}</option>
17 <select class="form-control"
18 [(ngModel)]="searchContext.joinOp[idx]">
19 <option i18n value='&&'>And</option>
20 <option i18n value='||'>Or</option>
24 <div class="flex-1 pl-1">
25 <select class="form-control"
26 [(ngModel)]="searchContext.fieldClass[idx]">
27 <option i18n value='keyword'>Keyword</option>
28 <option i18n value='title'>Title</option>
29 <option i18n value='jtitle'>Journal Title</option>
30 <option i18n value='author'>Author</option>
31 <option i18n value='subject'>Subject</option>
32 <option i18n value='series'>Series</option>
35 <div class="flex-1 pl-1">
36 <select class="form-control"
37 [(ngModel)]="searchContext.matchOp[idx]">
38 <option i18n value='contains'>Contains</option>
39 <option i18n value='nocontains'>Does not contain</option>
40 <option i18n value='phrase'>Contains phrase</option>
41 <option i18n value='exact'>Matches exactly</option>
42 <option i18n value='starts'>Starts with</option>
45 <div class="flex-2 pl-1">
46 <div class="form-group">
47 <div *ngIf="idx == 0">
48 <input type="text" class="form-control"
49 id='first-query-input'
50 [(ngModel)]="searchContext.query[idx]"
51 (keyup.enter)="formEnter('query')"
52 placeholder="Query..."/>
55 <input type="text" class="form-control"
56 [(ngModel)]="searchContext.query[idx]"
57 (keyup.enter)="formEnter('query')"
58 placeholder="Query..."/>
62 <div class="flex-1 pl-1">
63 <button class="btn btn-sm material-icon-button"
64 (click)="addSearchRow(idx + 1)">
65 <span class="material-icons">add_circle_outline</span>
67 <button class="btn btn-sm material-icon-button"
68 [disabled]="searchContext.query.length < 2"
69 (click)="delSearchRow(idx)">
70 <span class="material-icons">remove_circle_outline</span>
74 <div class="col-lg-3">
75 <div *ngIf="idx == 0" class="float-right">
76 <button class="btn btn-success mr-1" type="button"
77 [disabled]="searchIsActive()"
78 (click)="searchContext.pager.offset=0;searchByForm()">
81 <button class="btn btn-warning mr-1" type="button"
82 [disabled]="searchIsActive()"
83 (click)="searchContext.reset()">
86 <button class="btn btn-outline-secondary" type="button"
87 *ngIf="!showAdvanced()"
88 [disabled]="searchIsActive()"
89 (click)="showAdvancedSearch=true">
92 <button class="btn btn-outline-secondary" type="button"
93 *ngIf="showAdvanced()"
94 (click)="showAdvancedSearch=false">
102 <div class="col-lg-9 d-flex">
105 (onChange)="orgOnChange($event)"
106 [initialOrg]="searchContext.searchOrg"
107 [placeholder]="'Library'" >
110 <div class="flex-3 pl-1">
111 <select class="form-control" [(ngModel)]="searchContext.sort">
112 <option value='' i18n>Sort by Relevance</option>
113 <optgroup label="Sort by Title" i18n-label>
114 <option value='titlesort' i18n>Title: A to Z</option>
115 <option value='titlesort.descending' i18n>Title: Z to A</option>
117 <optgroup label="Sort by Author" i18n-label>
118 <option value='authorsort' i18n>Author: A to Z</option>
119 <option value='authorsort.descending' i18n>Author: Z to A</option>
121 <optgroup label="Sort by Publication Date" i18n-label>
122 <option value='pubdate' i18n>Date: A to Z</option>
123 <option value='pubdate.descending' i18n>Date: Z to A</option>
125 <optgroup label="Sort by Popularity" i18n-label>
126 <option value='popularity' i18n>Most Popular</option>
127 <option value='poprel' i18n>Popularity Adjusted Relevance</option>
131 <div class="flex-2 pl-2 align-self-end">
132 <div class="checkbox">
134 <input type="checkbox" [(ngModel)]="searchContext.available"/>
135 <span i18n>Limit to Available</span>
139 <div class="flex-4 pl-2 align-self-end">
140 <div class="checkbox">
142 <input type="checkbox" [(ngModel)]="searchContext.global"/>
143 <span i18n>Show Results from All Libraries</span>
147 <div class="flex-2 pl-1">
151 <div class="col-lg-3">
152 <div *ngIf="searchIsActive()">
153 <div class="progress">
154 <div class="progress-bar progress-bar-striped active w-100"
155 role="progressbar" aria-valuenow="100"
156 aria-valuemin="0" aria-valuemax="100">
157 <span class="sr-only" i18n>Searching..</span>
163 <div class="row pt-2" *ngIf="showAdvanced()">
164 <div class="col-lg-2">
165 <select class="form-control" multiple="true"
166 [(ngModel)]="searchContext.ccvmFilters.item_type">
167 <option value='' i18n>All Item Types</option>
168 <option *ngFor="let itemType of ccvmMap.item_type"
169 value="{{itemType.code()}}">{{itemType.value()}}</option>
172 <div class="col-lg-2">
173 <select class="form-control" multiple="true"
174 [(ngModel)]="searchContext.ccvmFilters.item_form">
175 <option value='' i18n>All Item Forms</option>
176 <option *ngFor="let itemForm of ccvmMap.item_form"
177 value="{{itemForm.code()}}">{{itemForm.value()}}</option>
180 <div class="col-lg-2">
181 <select class="form-control"
182 [(ngModel)]="searchContext.ccvmFilters.item_lang" multiple="true">
183 <option value='' i18n>All Languages</option>
184 <option *ngFor="let lang of ccvmMap.item_lang"
185 value="{{lang.code()}}">{{lang.value()}}</option>
188 <div class="col-lg-2">
189 <select class="form-control"
190 [(ngModel)]="searchContext.ccvmFilters.audience" multiple="true">
191 <option value='' i18n>All Audiences</option>
192 <option *ngFor="let audience of ccvmMap.audience"
193 value="{{audience.code()}}">{{audience.value()}}</option>
196 <div class="col-lg-2">
197 <select class="form-control"
198 [(ngModel)]="searchContext.identQueryType">
199 <option i18n value="identifier|isbn">ISBN</option>
200 <option i18n value="identifier|issn">ISSN</option>
201 <option i18n disabled value="cnbrowse">Call Number (Shelf Browse)</option>
202 <option i18n value="identifier|lccn">LCCN</option>
203 <option i18n value="identifier|tcn">TCN</option>
204 <option i18n disabled value="item_barcode">Item Barcode</option>
207 <div class="col-lg-2">
208 <input id='ident-query-input' type="text" class="form-control"
209 [(ngModel)]="searchContext.identQuery"
210 (keyup.enter)="formEnter('ident')"
211 placeholder="Numeric Query..."/>
214 <div class="row pt-2" *ngIf="showAdvanced()">
215 <div class="col-lg-2">
216 <select class="form-control"
217 [(ngModel)]="searchContext.ccvmFilters.vr_format" multiple="true">
218 <option value='' i18n>All Video Formats</option>
219 <option *ngFor="let vrFormat of ccvmMap.vr_format"
220 value="{{vrFormat.code()}}">{{vrFormat.value()}}</option>
223 <div class="col-lg-2">
224 <select class="form-control"
225 [(ngModel)]="searchContext.ccvmFilters.bib_level" multiple="true">
226 <option value='' i18n>All Bib Levels</option>
227 <option *ngFor="let bibLevel of ccvmMap.bib_level"
228 value="{{bibLevel.code()}}">{{bibLevel.value()}}</option>
231 <div class="col-lg-2">
232 <select class="form-control"
233 [(ngModel)]="searchContext.ccvmFilters.lit_form" multiple="true">
234 <option value='' i18n>All Literary Forms</option>
235 <option *ngFor="let litForm of ccvmMap.lit_form"
236 value="{{litForm.code()}}">{{litForm.value()}}</option>
239 <div class="col-lg-2">
240 <i>Copy location filter goes here...</i>