1 <div class="row mb-3" *ngIf="importSelection()">
2 <div class="col-lg-2" *ngIf="selectedQueue">
3 <button class="btn btn-info label-with-material-icon"
4 routerLink="/staff/cat/vandelay/queue/{{recordType}}/{{selectedQueue.id}}">
5 <span class="material-icons">arrow_back</span>
6 <span i18n>Return to Queue</span>
11 <eg-alert-dialog #dupeQueueAlert i18n-dialogBody
12 dialogBody="A queue with the requested name already exists.">
15 <h2 i18n>MARC File Upload</h2>
16 <div class="common-form striped-odd form-validated ml-3 mr-3">
18 <div class="col-lg-3">
19 <label for="template-select" i18n>Apply/Create Form Template</label>
21 <div class="col-lg-3">
22 <eg-combobox #formTemplateSelector
24 (onChange)="templateSelectorChange($event)"
25 [allowFreeText]="true"
26 [startId]="selectedTemplate"
27 [startIdFiresOnChange]="true"
28 [entries]="formatTemplateEntries()"
29 placeholder="Apply or Create Form Template..." i18n-placeholder>
32 <div class="col-lg-6">
33 <button class="btn btn-success"
34 [disabled]="!selectedTemplate"
35 (click)="saveTemplate()" i18n>Save As New Template</button>
36 <button class="btn btn-outline-primary ml-3"
37 [disabled]="!selectedTemplate"
38 (click)="markTemplateDefault()" i18n>Mark Template as Default</button>
39 <button class="btn btn-danger ml-3"
40 [disabled]="!selectedTemplate"
41 (click)="deleteTemplate()" i18n>Delete Template</button>
46 <div class="col-lg-3">
47 <label for="type-select" i18n>Record Type</label>
49 <div class="col-lg-3">
50 <eg-combobox #recordTypeSelector
52 (onChange)="selectEntry($event, 'recordType')"
53 [disabled]="importSelection()" [required]="true"
54 [startId]="recordType" placeholder="Record Type..." i18n-placeholder>
55 <eg-combobox-entry entryId="bib" entryLabel="Bibliographic Records"
56 i18n-entryLabel></eg-combobox-entry>
57 <eg-combobox-entry entryId="authority" entryLabel="Authority Records"
58 i18n-entryLabel></eg-combobox-entry>
59 <eg-combobox-entry entryId="bib-acq" entryLabel="Acquisitions Records"
60 i18n-entryLabel></eg-combobox-entry>
63 <div class="col-lg-3">
64 <label for="source-select" i18n>Select a Record Source</label>
66 <div class="col-lg-3">
67 <eg-combobox #bibSourceSelector
69 [entries]="formatEntries('bibSources')"
70 (onChange)="selectEntry($event, 'bibSources')"
71 [startId]="selectedBibSource"
72 placeholder="Record Source..." i18n-placeholder>
77 <div class="col-lg-3">
78 <label for="queue-select" i18n>Select or Create a Queue</label>
80 <div class="col-lg-3">
81 <eg-combobox [entries]="formatEntries('activeQueues')"
83 [startId]="startQueueId"
84 [startIdFiresOnChange]="true"
85 [disabled]="startQueueId"
86 (onChange)="selectedQueue=$event" i18n-placeholder
88 [allowFreeText]="true" placeholder="Select or Create a Queue...">
91 <div class="col-lg-3">
92 <label for="bucket-select" i18n>Limit Matches to Bucket</label>
94 <div class="col-lg-3">
95 <eg-combobox [entries]="formatEntries('bibBuckets')"
97 [startId]="selectedBucket"
98 [disabled]="(selectedQueue && !selectedQueue.freetext) || importSelection()"
99 (onChange)="selectEntry($event, 'bibBuckets')"
100 placeholder="Buckets..." i18n-placeholder></eg-combobox>
104 <div class="col-lg-3">
105 <label for="match-set-select" i18n>Record Match Set</label>
107 <div class="col-lg-3">
108 <eg-combobox #matchSetSelector
109 id="match-set-select"
110 [entries]="formatEntries('matchSets')"
111 [disabled]="(selectedQueue && !selectedQueue.freetext) || importSelection()"
112 [startId]="selectedMatchSet || defaultMatchSet"
113 (onChange)="selectEntry($event, 'matchSets')"
114 placeholder="Match Set..." i18n-placeholder></eg-combobox>
116 <div class="col-lg-3">
117 <label for="import-non-matching" i18n>Import Non-Matching Records</label>
119 <div class="col-lg-3">
120 <input class="form-check-input" type="checkbox"
121 id="import-non-matching"
122 [(ngModel)]="importNonMatching">
126 <div class="col-lg-3">
127 <label for="item-import-def" i18n>Holdings Import Profile</label>
129 <div class="col-lg-3"> <!-- TODO disable for authority -->
130 <eg-combobox #holdingsProfileSelector
132 [entries]="formatEntries('importItemDefs')"
133 [startId]="selectedHoldingsProfile"
134 [disabled]="(selectedQueue && !selectedQueue.freetext) || importSelection()"
135 (onChange)="selectEntry($event, 'importItemDefs')"
136 placeholder="Holdings Import Profile..." i18n-placeholder>
139 <div class="col-lg-3">
140 <label for="merge-on-exact" i18n>Merge On Exact Match (901c)</label>
142 <div class="col-lg-3">
143 <input class="form-check-input" type="checkbox"
144 id="merge-on-exact" [(ngModel)]="mergeOnExact">
148 <div class="col-lg-3">
149 <label for="merge-profiles" i18n>Merge Profile</label>
151 <div class="col-lg-3">
152 <eg-combobox #mergeProfileSelector
154 [entries]="formatEntries('mergeProfiles')"
155 (onChange)="selectEntry($event, 'mergeProfiles')"
156 placeholder="Merge Profile..." i18n-placeholder>
159 <div class="col-lg-3">
160 <label for="merge-on-single" i18n>Merge On Single Match</label>
162 <div class="col-lg-3">
163 <input class="form-check-input" type="checkbox"
164 id="merge-on-single" [(ngModel)]="mergeOnSingleMatch">
168 <div class="col-lg-3">
169 <label for="insuff-merge-profiles" i18n>
170 Insufficient Quality Fall-Through Profile
173 <div class="col-lg-3">
174 <eg-combobox #fallThruMergeProfileSelector
175 id="insuff-merge-profiles"
176 [entries]="formatEntries('mergeProfiles')"
177 (onChange)="selectEntry($event, 'FallThruMergeProfile')"
178 placeholder="Fall-Through Merge Profile..." i18n-placeholder>
181 <div class="col-lg-3">
182 <label for="merge-on-best" i18n>Merge On Best Match</label>
184 <div class="col-lg-3">
185 <input class="form-check-input" type="checkbox"
186 id="merge-on-best" [(ngModel)]="mergeOnBestMatch">
190 <div class="col-lg-3">
191 <label for="min-quality-ratio" i18n>
192 Best/Single Match Minimum Quality Ratio
195 <div class="col-lg-3">
196 <input type="number" step="0.1" id="min-quality-ratio"
197 class="form-control" [(ngModel)]="minQualityRatio">
199 <div class="col-lg-3">
200 <label for="auto-overlay-acq-copies" i18n>
201 Auto-overlay In-process Acquisitions Copies
204 <div class="col-lg-3">
205 <input class="form-check-input" type="checkbox"
206 id="auto-overlay-acq-copies"
207 [disabled]="recordType == 'authority'"
208 [(ngModel)]="autoOverlayAcqCopies">
212 <div class="col-lg-3">
213 <label for="session-name" i18n>Optional Session Name:</label>
215 <div class="col-lg-3">
216 <input [(ngModel)]="sessionName" class="form-control" type="text"
217 name="session-name" i18n-placeholder placeholder="Session Name..."/>
219 <div class="col-lg-3">
220 <label for="marc-remove-groups" i18n>Remove MARC Field Groups</label>
222 <ng-container *ngIf="recordType != 'authority'">
223 <div class="col-lg-3" *ngIf="bibTrashGroups.length == 0">
224 <span i18n class="font-italic">No Groups Configured</span>
226 <div class="col-lg-3" *ngIf="bibTrashGroups.length">
227 <select multiple [(ngModel)]="selectedTrashGroups"
228 id="marc-remove-groups" class="form-control" size="3">
229 <option *ngFor="let grp of bibTrashGroups"
230 value="{{grp.id()}}">{{grp.label()}}</option>
235 <div class="row" *ngIf="!importSelection()">
236 <div class="col-lg-3">
237 <label for="upload-file" i18n>File to Upload:</label>
239 <div class="col-lg-3">
240 <input #fileSelector (change)="fileSelected($event)"
241 id="upload-file" required class="form-control" type="file"/>
244 <div class="row" *ngIf="importSelection()">
245 <div class="col-lg-3">
246 <label>Import Selected</label>
248 <div class="col-lg-3">
249 <span *ngIf="!importSelection().importQueue" i18n>
250 Importing {{importSelection().recordIds.length}} Record(s)</span>
251 <span *ngIf="importSelection().importQueue" i18n>
252 Importing Queue {{importSelection().queue.name()}}</span>
254 <div class="col-lg-3">
255 <button class="btn btn-outline-info ml-2" (click)="clearSelection()" i18n>
261 <div class="col-lg-6 offset-lg-3">
262 <button class="btn btn-success btn-lg btn-block font-weight-bold"
263 [disabled]="isUploading || !hasNeededData()"
264 (click)="upload()" i18n>Upload</button>
267 <!-- hide instead of *ngIf so ViewChild can find the progress bars -->
268 <div class="row" [hidden]="!showProgress || importSelection()">
269 <div class="col-lg-3">
270 <label i18n>Upload Progress</label>
272 <div class="col-lg-6">
273 <eg-progress-inline #uploadProgress></eg-progress-inline>
276 <div class="row" [hidden]="!showProgress || importSelection()">
277 <div class="col-lg-3">
278 <label i18n>Enqueue Progress</label>
280 <div class="col-lg-6">
281 <eg-progress-inline #enqueueProgress></eg-progress-inline>
284 <div class="row" [hidden]="!showProgress">
285 <div class="col-lg-3">
286 <label i18n>Import Progress</label>
288 <div class="col-lg-6">
289 <eg-progress-inline #importProgress></eg-progress-inline>
292 <div class="row" [hidden]="!uploadComplete">
293 <div class="col-lg-6 offset-lg-3">
294 <button class="btn btn-info btn-lg btn-block font-weight-bold"
295 routerLink="/staff/cat/vandelay/queue/{{recordType}}/{{activeQueueId}}"
296 i18n>Go To Queue</button>