@noatgnu/cupcake-vanilla 1.3.12 → 1.3.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { OnInit, EventEmitter, OnDestroy, ElementRef } from '@angular/core';
|
|
2
|
+
import { OnInit, EventEmitter, OnChanges, SimpleChanges, OnDestroy, ElementRef, AfterViewInit, Renderer2 } from '@angular/core';
|
|
3
3
|
import { Observable, OperatorFunction } from 'rxjs';
|
|
4
|
-
import { BaseApiService,
|
|
4
|
+
import { BaseApiService, NotificationService as NotificationService$1, AsyncTaskQueryParams, PaginatedResponse as PaginatedResponse$1, AsyncTaskStatus, DownloadUrlResponse, MetadataExportRequest, AsyncTaskCreateResponse, BulkExportRequest, BulkExcelExportRequest, MetadataImportRequest, ValidationSchema, MetadataValidationRequest, SdrfFileValidationRequest, ChunkedImportRequest, WebSocketService, WebSocketMessage, DesktopRuntime, User, AuthService, LabGroupService, LabGroup, MetadataValidationConfig, TaskType, TaskStatus, LabGroupQueryResponse, ToastService, ResourceVisibility } from '@noatgnu/cupcake-core';
|
|
5
5
|
export { WebSocketMessage } from '@noatgnu/cupcake-core';
|
|
6
6
|
import * as _angular_forms from '@angular/forms';
|
|
7
7
|
import { FormGroup, FormBuilder } from '@angular/forms';
|
|
@@ -19,9 +19,15 @@ interface PaginatedResponse<T> {
|
|
|
19
19
|
previous?: string;
|
|
20
20
|
results: T[];
|
|
21
21
|
}
|
|
22
|
-
interface
|
|
22
|
+
interface ApiError {
|
|
23
|
+
message?: string;
|
|
24
|
+
code?: string;
|
|
25
|
+
details?: Record<string, string[]>;
|
|
26
|
+
[key: string]: unknown;
|
|
27
|
+
}
|
|
28
|
+
interface ApiResponse<T = unknown> {
|
|
23
29
|
data?: T;
|
|
24
|
-
error?:
|
|
30
|
+
error?: ApiError;
|
|
25
31
|
status: number;
|
|
26
32
|
success: boolean;
|
|
27
33
|
}
|
|
@@ -49,7 +55,9 @@ declare enum OntologyType {
|
|
|
49
55
|
CHEBI = "chebi",
|
|
50
56
|
CELL_ONTOLOGY = "cell_ontology",
|
|
51
57
|
MS_UNIQUE_VOCABULARIES = "ms_unique_vocabularies",
|
|
52
|
-
PSI_MS = "psi_ms"
|
|
58
|
+
PSI_MS = "psi_ms",
|
|
59
|
+
BTO = "bto",
|
|
60
|
+
DOID = "doid"
|
|
53
61
|
}
|
|
54
62
|
declare const OntologyTypeLabels: Record<OntologyType, string>;
|
|
55
63
|
declare enum TemplatePermissionLevel {
|
|
@@ -66,6 +74,125 @@ declare enum ColumnType {
|
|
|
66
74
|
SPECIAL = "special"
|
|
67
75
|
}
|
|
68
76
|
|
|
77
|
+
type ColumnInputType = 'text' | 'select' | 'number_with_unit' | 'pattern' | 'ontology' | 'semver' | 'accession' | 'identifier';
|
|
78
|
+
interface ColumnValidator {
|
|
79
|
+
type: string;
|
|
80
|
+
params: {
|
|
81
|
+
values?: string[];
|
|
82
|
+
units?: string[];
|
|
83
|
+
pattern?: string;
|
|
84
|
+
ontologies?: string[];
|
|
85
|
+
examples?: (string | number)[];
|
|
86
|
+
description?: string;
|
|
87
|
+
error_level?: string;
|
|
88
|
+
format?: string;
|
|
89
|
+
special_values?: string[];
|
|
90
|
+
[key: string]: unknown;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
interface MetadataColumnTemplate extends BaseTimestampedModel {
|
|
94
|
+
id: number;
|
|
95
|
+
name: string;
|
|
96
|
+
description?: string;
|
|
97
|
+
columnName: string;
|
|
98
|
+
columnType: string;
|
|
99
|
+
defaultValue?: string;
|
|
100
|
+
defaultPosition?: number;
|
|
101
|
+
ontologyType?: string;
|
|
102
|
+
customOntologyFilters?: any;
|
|
103
|
+
enableTypeahead: boolean;
|
|
104
|
+
notApplicable: boolean;
|
|
105
|
+
notAvailable: boolean;
|
|
106
|
+
excelValidation?: any;
|
|
107
|
+
customValidationRules?: any;
|
|
108
|
+
apiEnhancements?: any;
|
|
109
|
+
visibility: string;
|
|
110
|
+
owner?: number;
|
|
111
|
+
ownerUsername?: string;
|
|
112
|
+
labGroup?: number;
|
|
113
|
+
labGroupName?: string;
|
|
114
|
+
schema?: number;
|
|
115
|
+
schemaName?: string;
|
|
116
|
+
sourceSchema?: string;
|
|
117
|
+
isSystemTemplate: boolean;
|
|
118
|
+
isActive: boolean;
|
|
119
|
+
usageCount?: number;
|
|
120
|
+
tags?: string[];
|
|
121
|
+
category?: string;
|
|
122
|
+
lastUsedAt?: string;
|
|
123
|
+
canEdit?: boolean;
|
|
124
|
+
canDelete?: boolean;
|
|
125
|
+
validators?: ColumnValidator[];
|
|
126
|
+
inputType?: ColumnInputType;
|
|
127
|
+
units?: string[];
|
|
128
|
+
possibleDefaultValues?: (string | number)[];
|
|
129
|
+
ontologyOptions?: string[];
|
|
130
|
+
baseColumn?: boolean;
|
|
131
|
+
}
|
|
132
|
+
interface MetadataColumnTemplateShare extends BaseTimestampedModel {
|
|
133
|
+
id: number;
|
|
134
|
+
template: number;
|
|
135
|
+
templateName?: string;
|
|
136
|
+
sharedWith: number;
|
|
137
|
+
sharedWithUsername?: string;
|
|
138
|
+
sharedBy: number;
|
|
139
|
+
sharedByUsername?: string;
|
|
140
|
+
canEdit: boolean;
|
|
141
|
+
}
|
|
142
|
+
interface MetadataColumnTemplateCreateRequest {
|
|
143
|
+
name: string;
|
|
144
|
+
description?: string;
|
|
145
|
+
columnName: string;
|
|
146
|
+
columnType: string;
|
|
147
|
+
defaultValue?: string;
|
|
148
|
+
defaultPosition?: number;
|
|
149
|
+
ontologyType?: string;
|
|
150
|
+
customOntologyFilters?: any;
|
|
151
|
+
enableTypeahead?: boolean;
|
|
152
|
+
notApplicable?: boolean;
|
|
153
|
+
notAvailable?: boolean;
|
|
154
|
+
excelValidation?: any;
|
|
155
|
+
customValidationRules?: any;
|
|
156
|
+
apiEnhancements?: any;
|
|
157
|
+
visibility?: string;
|
|
158
|
+
labGroup?: number;
|
|
159
|
+
tags?: string[];
|
|
160
|
+
category?: string;
|
|
161
|
+
}
|
|
162
|
+
interface MetadataColumnTemplateUpdateRequest {
|
|
163
|
+
name?: string;
|
|
164
|
+
description?: string;
|
|
165
|
+
columnName?: string;
|
|
166
|
+
columnType?: string;
|
|
167
|
+
defaultValue?: string;
|
|
168
|
+
defaultPosition?: number;
|
|
169
|
+
ontologyType?: string;
|
|
170
|
+
customOntologyFilters?: any;
|
|
171
|
+
enableTypeahead?: boolean;
|
|
172
|
+
notApplicable?: boolean;
|
|
173
|
+
notAvailable?: boolean;
|
|
174
|
+
excelValidation?: any;
|
|
175
|
+
customValidationRules?: any;
|
|
176
|
+
apiEnhancements?: any;
|
|
177
|
+
visibility?: string;
|
|
178
|
+
isActive?: boolean;
|
|
179
|
+
tags?: string[];
|
|
180
|
+
category?: string;
|
|
181
|
+
}
|
|
182
|
+
interface MetadataColumnTemplateShareCreateRequest {
|
|
183
|
+
template: number;
|
|
184
|
+
sharedWith: number;
|
|
185
|
+
canEdit?: boolean;
|
|
186
|
+
}
|
|
187
|
+
interface GroupedColumnTemplate {
|
|
188
|
+
columnName: string;
|
|
189
|
+
columnType: string;
|
|
190
|
+
schemaCount: number;
|
|
191
|
+
schemas: string[];
|
|
192
|
+
templateIds: number[];
|
|
193
|
+
sampleTemplate?: MetadataColumnTemplate;
|
|
194
|
+
}
|
|
195
|
+
|
|
69
196
|
interface MetadataColumnModifier {
|
|
70
197
|
samples: string;
|
|
71
198
|
value: string;
|
|
@@ -96,6 +223,12 @@ interface MetadataColumn extends BaseTimestampedModel {
|
|
|
96
223
|
possibleDefaultValues: any[];
|
|
97
224
|
staffOnly: boolean;
|
|
98
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* A synthetic MetadataColumn with id=0 derived from a template, used for ontology search
|
|
228
|
+
* in sheet mode where no backend table is loaded. id=0 is falsy so column-specific
|
|
229
|
+
* endpoints are not used; only the ontologyType and customOntologyFilters matter.
|
|
230
|
+
*/
|
|
231
|
+
declare function createSyntheticColumnFromTemplate(header: string, template: MetadataColumnTemplate): MetadataColumn;
|
|
99
232
|
interface MetadataColumnCreateRequest {
|
|
100
233
|
metadataTable: number;
|
|
101
234
|
template?: number;
|
|
@@ -314,91 +447,72 @@ interface AdvancedAutofillResponse {
|
|
|
314
447
|
variationsCombinations: number;
|
|
315
448
|
strategy: string;
|
|
316
449
|
}
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
name: string;
|
|
321
|
-
description?: string;
|
|
322
|
-
columnName: string;
|
|
323
|
-
columnType: string;
|
|
324
|
-
defaultValue?: string;
|
|
325
|
-
defaultPosition?: number;
|
|
326
|
-
ontologyType?: string;
|
|
327
|
-
customOntologyFilters?: any;
|
|
328
|
-
enableTypeahead: boolean;
|
|
329
|
-
notApplicable: boolean;
|
|
330
|
-
notAvailable: boolean;
|
|
331
|
-
excelValidation?: any;
|
|
332
|
-
customValidationRules?: any;
|
|
333
|
-
apiEnhancements?: any;
|
|
334
|
-
visibility: string;
|
|
335
|
-
owner?: number;
|
|
336
|
-
ownerUsername?: string;
|
|
337
|
-
labGroup?: number;
|
|
338
|
-
labGroupName?: string;
|
|
339
|
-
isSystemTemplate: boolean;
|
|
340
|
-
isActive: boolean;
|
|
341
|
-
usageCount?: number;
|
|
342
|
-
tags?: string[];
|
|
343
|
-
category?: string;
|
|
344
|
-
lastUsedAt?: string;
|
|
345
|
-
canEdit?: boolean;
|
|
346
|
-
canDelete?: boolean;
|
|
450
|
+
interface ColumnOverrideMappingEntry {
|
|
451
|
+
fileColIndex: number;
|
|
452
|
+
columnId: number | null;
|
|
347
453
|
}
|
|
348
|
-
interface
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
sharedWith: number;
|
|
353
|
-
sharedWithUsername?: string;
|
|
354
|
-
sharedBy: number;
|
|
355
|
-
sharedByUsername?: string;
|
|
356
|
-
canEdit: boolean;
|
|
454
|
+
interface ColumnOverrideImportOptions {
|
|
455
|
+
updateValue: boolean;
|
|
456
|
+
updateModifiers: boolean;
|
|
457
|
+
normalizeOntology?: boolean;
|
|
357
458
|
}
|
|
358
|
-
interface
|
|
359
|
-
|
|
360
|
-
|
|
459
|
+
interface ColumnOverrideSuggestResult {
|
|
460
|
+
fileHeaders: {
|
|
461
|
+
fileColIndex: number;
|
|
462
|
+
header: string;
|
|
463
|
+
}[];
|
|
464
|
+
tableColumns: {
|
|
465
|
+
columnId: number;
|
|
466
|
+
columnName: string;
|
|
467
|
+
columnPosition: number;
|
|
468
|
+
}[];
|
|
469
|
+
suggestedMapping: ColumnOverrideMappingEntry[];
|
|
470
|
+
fileRowCount: number;
|
|
471
|
+
tableSampleCount: number;
|
|
472
|
+
}
|
|
473
|
+
interface ColumnOverrideMatchedColumn {
|
|
474
|
+
columnId: number;
|
|
361
475
|
columnName: string;
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
tags?: string[];
|
|
376
|
-
category?: string;
|
|
476
|
+
fileHeader: string;
|
|
477
|
+
fileColIndex: number;
|
|
478
|
+
currentValue: string | null;
|
|
479
|
+
newValue: string | null;
|
|
480
|
+
currentModifiers: {
|
|
481
|
+
samples: string;
|
|
482
|
+
value: string;
|
|
483
|
+
}[];
|
|
484
|
+
newModifiers: {
|
|
485
|
+
samples: string;
|
|
486
|
+
value: string;
|
|
487
|
+
}[];
|
|
488
|
+
rowsChanged: number;
|
|
377
489
|
}
|
|
378
|
-
interface
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
isActive?: boolean;
|
|
395
|
-
tags?: string[];
|
|
396
|
-
category?: string;
|
|
490
|
+
interface ColumnOverridePreviewResult {
|
|
491
|
+
columnsMatched: ColumnOverrideMatchedColumn[];
|
|
492
|
+
columnsToAdd: {
|
|
493
|
+
fileHeader: string;
|
|
494
|
+
fileColIndex: number;
|
|
495
|
+
columnType: string;
|
|
496
|
+
newValue: string | null;
|
|
497
|
+
newModifiers: {
|
|
498
|
+
samples: string;
|
|
499
|
+
value: string;
|
|
500
|
+
}[];
|
|
501
|
+
warning: string;
|
|
502
|
+
}[];
|
|
503
|
+
warnings: string[];
|
|
504
|
+
sampleCountMismatch: boolean;
|
|
505
|
+
fileRowCount: number;
|
|
397
506
|
}
|
|
398
|
-
interface
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
507
|
+
interface ColumnOverrideCommitResult {
|
|
508
|
+
message: string;
|
|
509
|
+
columnsUpdated: number;
|
|
510
|
+
columnsAdded: number;
|
|
511
|
+
warnings: string[];
|
|
512
|
+
updatedColumns: {
|
|
513
|
+
id: number;
|
|
514
|
+
name: string;
|
|
515
|
+
}[];
|
|
402
516
|
}
|
|
403
517
|
|
|
404
518
|
interface MetadataTableTemplate extends BaseTimestampedModel {
|
|
@@ -438,6 +552,19 @@ interface MetadataTableTemplateQueryResponse {
|
|
|
438
552
|
previous?: string;
|
|
439
553
|
results: MetadataTableTemplate[];
|
|
440
554
|
}
|
|
555
|
+
interface MetadataTableTemplateSyncRequest {
|
|
556
|
+
add_new?: boolean;
|
|
557
|
+
update_existing?: boolean;
|
|
558
|
+
remove_orphans?: boolean;
|
|
559
|
+
}
|
|
560
|
+
interface MetadataTableTemplateSyncResponse {
|
|
561
|
+
message: string;
|
|
562
|
+
added: number;
|
|
563
|
+
updated: number;
|
|
564
|
+
removed: number;
|
|
565
|
+
errors: string[];
|
|
566
|
+
schemas: string[];
|
|
567
|
+
}
|
|
441
568
|
|
|
442
569
|
interface FavouriteMetadataOption extends BaseTimestampedModel {
|
|
443
570
|
id: number;
|
|
@@ -544,6 +671,21 @@ interface CellOntology {
|
|
|
544
671
|
synonyms?: any;
|
|
545
672
|
crossReferences?: any;
|
|
546
673
|
}
|
|
674
|
+
interface BTOTerm {
|
|
675
|
+
identifier: string;
|
|
676
|
+
name: string;
|
|
677
|
+
synonyms?: any;
|
|
678
|
+
definition?: string;
|
|
679
|
+
xrefs?: any;
|
|
680
|
+
}
|
|
681
|
+
interface DiseaseOntologyTerm {
|
|
682
|
+
identifier: string;
|
|
683
|
+
name: string;
|
|
684
|
+
synonyms?: any;
|
|
685
|
+
definition?: string;
|
|
686
|
+
xrefs?: any;
|
|
687
|
+
}
|
|
688
|
+
type SchemaLayer = 'technology' | 'sample' | 'experiment' | '';
|
|
547
689
|
interface Schema {
|
|
548
690
|
id: number;
|
|
549
691
|
name: string;
|
|
@@ -551,9 +693,36 @@ interface Schema {
|
|
|
551
693
|
description?: string;
|
|
552
694
|
category?: string;
|
|
553
695
|
version?: string;
|
|
696
|
+
extends?: string;
|
|
697
|
+
usableAlone?: boolean;
|
|
698
|
+
layer?: SchemaLayer;
|
|
699
|
+
requires?: any[];
|
|
700
|
+
excludes?: any;
|
|
701
|
+
tags?: string[];
|
|
554
702
|
url?: string;
|
|
555
703
|
isActive: boolean;
|
|
704
|
+
isBuiltin: boolean;
|
|
705
|
+
isPublic?: boolean;
|
|
706
|
+
creator?: number;
|
|
707
|
+
creatorUsername?: string;
|
|
556
708
|
columnsCount?: number;
|
|
709
|
+
usageCount?: number;
|
|
710
|
+
}
|
|
711
|
+
interface SchemaColumn {
|
|
712
|
+
id: number;
|
|
713
|
+
columnName: string;
|
|
714
|
+
columnType: string;
|
|
715
|
+
name: string;
|
|
716
|
+
ontologyType: string | null;
|
|
717
|
+
ontologyOptions: string[];
|
|
718
|
+
customOntologyFilters: Record<string, unknown>;
|
|
719
|
+
enableTypeahead: boolean;
|
|
720
|
+
inputType: string;
|
|
721
|
+
possibleDefaultValues: string[];
|
|
722
|
+
units: string[];
|
|
723
|
+
notApplicable: boolean;
|
|
724
|
+
notAvailable: boolean;
|
|
725
|
+
validators: unknown[];
|
|
557
726
|
}
|
|
558
727
|
interface OntologySuggestion {
|
|
559
728
|
id: string;
|
|
@@ -685,6 +854,12 @@ interface ChunkedUploadRequest {
|
|
|
685
854
|
metadataTableId?: number;
|
|
686
855
|
createPools?: boolean;
|
|
687
856
|
replaceExisting?: boolean;
|
|
857
|
+
overrideSampleCount?: boolean;
|
|
858
|
+
validateOnly?: boolean;
|
|
859
|
+
schemaNames?: string[];
|
|
860
|
+
skipOntology?: boolean;
|
|
861
|
+
useOlsCacheOnly?: boolean;
|
|
862
|
+
applySchemaTemplates?: boolean;
|
|
688
863
|
}
|
|
689
864
|
interface ChunkedUploadResponse {
|
|
690
865
|
id: string;
|
|
@@ -699,6 +874,12 @@ interface ChunkedUploadCompletionRequest {
|
|
|
699
874
|
metadataTableId?: number;
|
|
700
875
|
createPools?: boolean;
|
|
701
876
|
replaceExisting?: boolean;
|
|
877
|
+
overrideSampleCount?: boolean;
|
|
878
|
+
validateOnly?: boolean;
|
|
879
|
+
schemaNames?: string[];
|
|
880
|
+
skipOntology?: boolean;
|
|
881
|
+
useOlsCacheOnly?: boolean;
|
|
882
|
+
applySchemaTemplates?: boolean;
|
|
702
883
|
}
|
|
703
884
|
interface ChunkedUploadCompletionResponse {
|
|
704
885
|
message?: string;
|
|
@@ -708,6 +889,31 @@ interface ChunkedUploadCompletionResponse {
|
|
|
708
889
|
taskId?: string;
|
|
709
890
|
}
|
|
710
891
|
|
|
892
|
+
interface ExcelLaunchRequest {
|
|
893
|
+
tableId: number;
|
|
894
|
+
tableName?: string;
|
|
895
|
+
}
|
|
896
|
+
interface ExcelLaunchCode {
|
|
897
|
+
code: string;
|
|
898
|
+
tableId: number;
|
|
899
|
+
tableName?: string;
|
|
900
|
+
expiresIn: number;
|
|
901
|
+
}
|
|
902
|
+
interface ExcelLaunchClaimRequest {
|
|
903
|
+
code: string;
|
|
904
|
+
}
|
|
905
|
+
interface ExcelLaunchClaimResponse {
|
|
906
|
+
accessToken: string;
|
|
907
|
+
refreshToken: string;
|
|
908
|
+
tableId: number;
|
|
909
|
+
tableName?: string;
|
|
910
|
+
user: {
|
|
911
|
+
id: number;
|
|
912
|
+
username: string;
|
|
913
|
+
email: string;
|
|
914
|
+
};
|
|
915
|
+
}
|
|
916
|
+
|
|
711
917
|
interface MetadataTableQueryParams {
|
|
712
918
|
search?: string;
|
|
713
919
|
ownerId?: number;
|
|
@@ -718,6 +924,10 @@ interface MetadataTableQueryParams {
|
|
|
718
924
|
limit?: number;
|
|
719
925
|
offset?: number;
|
|
720
926
|
ordering?: string;
|
|
927
|
+
columnName?: string;
|
|
928
|
+
columnValue?: string;
|
|
929
|
+
columnType?: string;
|
|
930
|
+
columnMatch?: 'contains' | 'exact';
|
|
721
931
|
}
|
|
722
932
|
declare class MetadataTableService extends BaseApiService {
|
|
723
933
|
/**
|
|
@@ -797,6 +1007,18 @@ declare class MetadataTableService extends BaseApiService {
|
|
|
797
1007
|
* Search metadata tables
|
|
798
1008
|
*/
|
|
799
1009
|
searchMetadataTables(query: string): Observable<MetadataTableQueryResponse>;
|
|
1010
|
+
/**
|
|
1011
|
+
* Find tables that contain a column matching the given name and/or value
|
|
1012
|
+
*/
|
|
1013
|
+
findByColumnContent(params: {
|
|
1014
|
+
columnName?: string;
|
|
1015
|
+
columnValue?: string;
|
|
1016
|
+
columnType?: string;
|
|
1017
|
+
columnMatch?: 'contains' | 'exact';
|
|
1018
|
+
showShared?: boolean;
|
|
1019
|
+
limit?: number;
|
|
1020
|
+
offset?: number;
|
|
1021
|
+
}): Observable<MetadataTableQueryResponse>;
|
|
800
1022
|
/**
|
|
801
1023
|
* Get metadata tables by owner
|
|
802
1024
|
*/
|
|
@@ -888,6 +1110,9 @@ declare class MetadataTableService extends BaseApiService {
|
|
|
888
1110
|
staffOnly: boolean;
|
|
889
1111
|
}>;
|
|
890
1112
|
advancedAutofill(id: number, request: AdvancedAutofillRequest): Observable<AdvancedAutofillResponse>;
|
|
1113
|
+
suggestColumnMapping(tableId: number, file: File, algorithm: 'name' | 'position' | 'none'): Observable<ColumnOverrideSuggestResult>;
|
|
1114
|
+
previewColumnOverride(tableId: number, file: File, mapping: ColumnOverrideMappingEntry[], options: ColumnOverrideImportOptions): Observable<ColumnOverridePreviewResult>;
|
|
1115
|
+
commitColumnOverride(tableId: number, file: File, mapping: ColumnOverrideMappingEntry[], options: ColumnOverrideImportOptions): Observable<ColumnOverrideCommitResult>;
|
|
891
1116
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MetadataTableService, never>;
|
|
892
1117
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<MetadataTableService>;
|
|
893
1118
|
}
|
|
@@ -1229,6 +1454,9 @@ declare class MetadataTableTemplateService extends BaseApiService {
|
|
|
1229
1454
|
schemaIds: number[];
|
|
1230
1455
|
name: string;
|
|
1231
1456
|
description?: string;
|
|
1457
|
+
labGroup?: number | null;
|
|
1458
|
+
visibility?: string;
|
|
1459
|
+
isDefault?: boolean;
|
|
1232
1460
|
}): Observable<{
|
|
1233
1461
|
message: string;
|
|
1234
1462
|
template: MetadataTableTemplate;
|
|
@@ -1241,6 +1469,7 @@ declare class MetadataTableTemplateService extends BaseApiService {
|
|
|
1241
1469
|
name: string;
|
|
1242
1470
|
description?: string;
|
|
1243
1471
|
sampleCount: number;
|
|
1472
|
+
labGroup?: number;
|
|
1244
1473
|
}): Observable<MetadataTable>;
|
|
1245
1474
|
/**
|
|
1246
1475
|
* Create a new metadata table directly from schema definitions
|
|
@@ -1280,6 +1509,11 @@ declare class MetadataTableTemplateService extends BaseApiService {
|
|
|
1280
1509
|
}>;
|
|
1281
1510
|
staffOnly: boolean;
|
|
1282
1511
|
}>;
|
|
1512
|
+
/**
|
|
1513
|
+
* Sync template columns from linked schemas.
|
|
1514
|
+
* Updates existing columns with latest ontology settings and optionally adds new columns.
|
|
1515
|
+
*/
|
|
1516
|
+
syncFromSchemas(id: number, request?: MetadataTableTemplateSyncRequest): Observable<MetadataTableTemplateSyncResponse>;
|
|
1283
1517
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MetadataTableTemplateService, never>;
|
|
1284
1518
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<MetadataTableTemplateService>;
|
|
1285
1519
|
}
|
|
@@ -1334,10 +1568,20 @@ interface MetadataColumnTemplateQueryParams {
|
|
|
1334
1568
|
labGroupId?: number;
|
|
1335
1569
|
visibility?: string;
|
|
1336
1570
|
isActive?: boolean;
|
|
1571
|
+
isSystemTemplate?: boolean;
|
|
1572
|
+
schemaId?: number;
|
|
1573
|
+
sourceSchema?: string;
|
|
1574
|
+
inputType?: string;
|
|
1337
1575
|
limit?: number;
|
|
1338
1576
|
offset?: number;
|
|
1339
1577
|
ordering?: string;
|
|
1340
1578
|
}
|
|
1579
|
+
interface GroupedColumnTemplateQueryParams {
|
|
1580
|
+
search?: string;
|
|
1581
|
+
isSystemTemplate?: boolean;
|
|
1582
|
+
limit?: number;
|
|
1583
|
+
offset?: number;
|
|
1584
|
+
}
|
|
1341
1585
|
declare class MetadataColumnTemplateService extends BaseApiService {
|
|
1342
1586
|
/**
|
|
1343
1587
|
* Get all metadata column templates with optional filtering
|
|
@@ -1416,6 +1660,14 @@ declare class MetadataColumnTemplateService extends BaseApiService {
|
|
|
1416
1660
|
customFilters: any;
|
|
1417
1661
|
hasMore: boolean;
|
|
1418
1662
|
}>;
|
|
1663
|
+
/**
|
|
1664
|
+
* Get column templates grouped by (column_name, column_type)
|
|
1665
|
+
*/
|
|
1666
|
+
getGroupedColumnTemplates(params?: GroupedColumnTemplateQueryParams): Observable<PaginatedResponse<GroupedColumnTemplate>>;
|
|
1667
|
+
/**
|
|
1668
|
+
* Get all templates for a specific column name and type
|
|
1669
|
+
*/
|
|
1670
|
+
getTemplatesByColumnNameAndType(columnName: string, columnType: string): Observable<MetadataColumnTemplate[]>;
|
|
1419
1671
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MetadataColumnTemplateService, never>;
|
|
1420
1672
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<MetadataColumnTemplateService>;
|
|
1421
1673
|
}
|
|
@@ -1481,14 +1733,6 @@ declare class MetadataManagementService extends BaseApiService {
|
|
|
1481
1733
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<MetadataManagementService>;
|
|
1482
1734
|
}
|
|
1483
1735
|
|
|
1484
|
-
declare class Websocket extends WebSocketService {
|
|
1485
|
-
constructor(authService: AuthService);
|
|
1486
|
-
getMetadataTableUpdates(): Observable<WebSocketMessage>;
|
|
1487
|
-
getLabGroupUpdates(): Observable<WebSocketMessage>;
|
|
1488
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Websocket, never>;
|
|
1489
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<Websocket>;
|
|
1490
|
-
}
|
|
1491
|
-
|
|
1492
1736
|
declare enum NotificationType {
|
|
1493
1737
|
SYSTEM = "system",
|
|
1494
1738
|
METADATA_TABLE = "metadata_table",
|
|
@@ -1502,7 +1746,7 @@ declare class NotificationService extends NotificationService$1 {
|
|
|
1502
1746
|
private websocketService;
|
|
1503
1747
|
private isConnected;
|
|
1504
1748
|
readonly isWebSocketConnected: _angular_core.Signal<boolean>;
|
|
1505
|
-
constructor(
|
|
1749
|
+
constructor();
|
|
1506
1750
|
private initializeWebSocket;
|
|
1507
1751
|
private setupNotificationHandlers;
|
|
1508
1752
|
private handleWebSocketMessage;
|
|
@@ -1567,6 +1811,8 @@ interface SchemaQueryParams {
|
|
|
1567
1811
|
search?: string;
|
|
1568
1812
|
category?: string;
|
|
1569
1813
|
isActive?: boolean;
|
|
1814
|
+
isBuiltin?: boolean;
|
|
1815
|
+
isPublic?: boolean;
|
|
1570
1816
|
limit?: number;
|
|
1571
1817
|
offset?: number;
|
|
1572
1818
|
ordering?: string;
|
|
@@ -1584,6 +1830,10 @@ declare class SchemaService extends BaseApiService {
|
|
|
1584
1830
|
* Get list of available schemas for creating templates
|
|
1585
1831
|
*/
|
|
1586
1832
|
getAvailableSchemas(): Observable<Schema[]>;
|
|
1833
|
+
/**
|
|
1834
|
+
* Get columns for a schema by its integer ID
|
|
1835
|
+
*/
|
|
1836
|
+
getSchemaColumns(id: number): Observable<SchemaColumn[]>;
|
|
1587
1837
|
/**
|
|
1588
1838
|
* Sync builtin schemas from sdrf-pipelines package (admin only)
|
|
1589
1839
|
*/
|
|
@@ -1668,6 +1918,98 @@ declare class SDRFDefaultsService extends BaseApiService {
|
|
|
1668
1918
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SDRFDefaultsService>;
|
|
1669
1919
|
}
|
|
1670
1920
|
|
|
1921
|
+
interface ColumnConfig {
|
|
1922
|
+
columnName: string;
|
|
1923
|
+
inputType: ColumnInputType;
|
|
1924
|
+
validators: ColumnValidator[];
|
|
1925
|
+
units: string[];
|
|
1926
|
+
possibleValues: (string | number)[];
|
|
1927
|
+
description: string;
|
|
1928
|
+
schemaName?: string;
|
|
1929
|
+
}
|
|
1930
|
+
declare class OfficialColumnCacheService {
|
|
1931
|
+
private columnTemplateService;
|
|
1932
|
+
private columnsByName;
|
|
1933
|
+
private columnsBySchema;
|
|
1934
|
+
private columnsByKey;
|
|
1935
|
+
private isLoaded;
|
|
1936
|
+
private isLoading;
|
|
1937
|
+
readonly loaded: _angular_core.Signal<boolean>;
|
|
1938
|
+
readonly loading: _angular_core.Signal<boolean>;
|
|
1939
|
+
readonly columnCount: _angular_core.Signal<number>;
|
|
1940
|
+
readonly uniqueColumnNames: _angular_core.Signal<number>;
|
|
1941
|
+
constructor(columnTemplateService: MetadataColumnTemplateService);
|
|
1942
|
+
/**
|
|
1943
|
+
* Initialize the cache by loading all official (system) column templates.
|
|
1944
|
+
* Call this on app initialization or when first needed.
|
|
1945
|
+
*/
|
|
1946
|
+
initialize(): Observable<boolean>;
|
|
1947
|
+
private fetchAllSystemTemplates;
|
|
1948
|
+
/**
|
|
1949
|
+
* Get all column templates with a given name (may exist in multiple schemas).
|
|
1950
|
+
*/
|
|
1951
|
+
getColumns(columnName: string): MetadataColumnTemplate[];
|
|
1952
|
+
/**
|
|
1953
|
+
* Get column template by name and schema.
|
|
1954
|
+
* Use this when you need the exact configuration for a specific schema.
|
|
1955
|
+
*/
|
|
1956
|
+
getColumn(columnName: string, schemaName?: string): MetadataColumnTemplate | undefined;
|
|
1957
|
+
/**
|
|
1958
|
+
* Get column configuration with a simplified interface.
|
|
1959
|
+
* If schema is specified, returns that specific config.
|
|
1960
|
+
* Otherwise returns the first found (typically base schema).
|
|
1961
|
+
*/
|
|
1962
|
+
getColumnConfig(columnName: string, schemaName?: string): ColumnConfig | undefined;
|
|
1963
|
+
/**
|
|
1964
|
+
* Get merged configuration from all schemas for a column.
|
|
1965
|
+
* Combines possible values and units from all schema variants.
|
|
1966
|
+
*/
|
|
1967
|
+
getMergedColumnConfig(columnName: string): ColumnConfig | undefined;
|
|
1968
|
+
/**
|
|
1969
|
+
* Get all columns for a specific schema.
|
|
1970
|
+
*/
|
|
1971
|
+
getColumnsBySchema(schemaName: string): MetadataColumnTemplate[];
|
|
1972
|
+
/**
|
|
1973
|
+
* Get all available schema names.
|
|
1974
|
+
*/
|
|
1975
|
+
getSchemaNames(): string[];
|
|
1976
|
+
/**
|
|
1977
|
+
* Search for columns by partial name match.
|
|
1978
|
+
* Returns all variants across all schemas.
|
|
1979
|
+
*/
|
|
1980
|
+
searchColumns(query: string): MetadataColumnTemplate[];
|
|
1981
|
+
/**
|
|
1982
|
+
* Get columns filtered by input type.
|
|
1983
|
+
*/
|
|
1984
|
+
getColumnsByInputType(inputType: ColumnInputType): MetadataColumnTemplate[];
|
|
1985
|
+
/**
|
|
1986
|
+
* Check if a column exists in official schemas.
|
|
1987
|
+
*/
|
|
1988
|
+
hasColumn(columnName: string): boolean;
|
|
1989
|
+
/**
|
|
1990
|
+
* Get all schemas that define a specific column.
|
|
1991
|
+
*/
|
|
1992
|
+
getSchemasForColumn(columnName: string): string[];
|
|
1993
|
+
/**
|
|
1994
|
+
* Get possible values for a column, merged from all schemas.
|
|
1995
|
+
*/
|
|
1996
|
+
getPossibleValues(columnName: string): (string | number)[];
|
|
1997
|
+
/**
|
|
1998
|
+
* Get units for a number_with_unit column, merged from all schemas.
|
|
1999
|
+
*/
|
|
2000
|
+
getUnits(columnName: string): string[];
|
|
2001
|
+
/**
|
|
2002
|
+
* Clear the cache (useful for testing or forced refresh).
|
|
2003
|
+
*/
|
|
2004
|
+
clear(): void;
|
|
2005
|
+
/**
|
|
2006
|
+
* Force refresh the cache.
|
|
2007
|
+
*/
|
|
2008
|
+
refresh(): Observable<boolean>;
|
|
2009
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OfficialColumnCacheService, never>;
|
|
2010
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<OfficialColumnCacheService>;
|
|
2011
|
+
}
|
|
2012
|
+
|
|
1671
2013
|
declare class AsyncTaskService extends BaseApiService {
|
|
1672
2014
|
/**
|
|
1673
2015
|
* Get all async tasks for the current user with optional filtering
|
|
@@ -1704,7 +2046,26 @@ declare class AsyncExportService extends BaseApiService {
|
|
|
1704
2046
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AsyncExportService>;
|
|
1705
2047
|
}
|
|
1706
2048
|
|
|
2049
|
+
declare class AsyncImportService extends BaseApiService {
|
|
2050
|
+
private chunkedUploadService;
|
|
2051
|
+
constructor();
|
|
2052
|
+
sdrfFile(request: MetadataImportRequest): Observable<AsyncTaskCreateResponse>;
|
|
2053
|
+
excelFile(request: MetadataImportRequest): Observable<AsyncTaskCreateResponse>;
|
|
2054
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AsyncImportService, never>;
|
|
2055
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AsyncImportService>;
|
|
2056
|
+
}
|
|
2057
|
+
|
|
2058
|
+
declare class AsyncValidationService extends BaseApiService {
|
|
2059
|
+
private chunkedUploadService;
|
|
2060
|
+
getAvailableSchemas(): Observable<ValidationSchema[]>;
|
|
2061
|
+
metadataTable(request: MetadataValidationRequest): Observable<AsyncTaskCreateResponse>;
|
|
2062
|
+
sdrfFile(request: SdrfFileValidationRequest): Observable<AsyncTaskCreateResponse>;
|
|
2063
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AsyncValidationService, never>;
|
|
2064
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AsyncValidationService>;
|
|
2065
|
+
}
|
|
2066
|
+
|
|
1707
2067
|
declare class ChunkedUploadService extends BaseApiService {
|
|
2068
|
+
private siteConfigService;
|
|
1708
2069
|
/**
|
|
1709
2070
|
* Initialize or continue a chunked upload
|
|
1710
2071
|
*/
|
|
@@ -1728,39 +2089,30 @@ declare class ChunkedUploadService extends BaseApiService {
|
|
|
1728
2089
|
/**
|
|
1729
2090
|
* Helper method to upload a file in chunks with progress tracking
|
|
1730
2091
|
*/
|
|
1731
|
-
uploadFileInChunks(file: File, chunkSize?: number,
|
|
1732
|
-
options?: {
|
|
2092
|
+
uploadFileInChunks(file: File, chunkSize?: number, options?: {
|
|
1733
2093
|
metadataTableId?: number;
|
|
1734
2094
|
createPools?: boolean;
|
|
1735
2095
|
replaceExisting?: boolean;
|
|
2096
|
+
overrideSampleCount?: boolean;
|
|
1736
2097
|
uploadSessionId?: string;
|
|
2098
|
+
validateOnly?: boolean;
|
|
2099
|
+
schemaNames?: string[];
|
|
2100
|
+
skipOntology?: boolean;
|
|
2101
|
+
useOlsCacheOnly?: boolean;
|
|
2102
|
+
applySchemaTemplates?: boolean;
|
|
1737
2103
|
onProgress?: (progress: number) => void;
|
|
1738
2104
|
}): Observable<ChunkedUploadCompletionResponse>;
|
|
1739
2105
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChunkedUploadService, never>;
|
|
1740
2106
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ChunkedUploadService>;
|
|
1741
2107
|
}
|
|
1742
2108
|
|
|
1743
|
-
declare class AsyncImportService extends BaseApiService {
|
|
1744
|
-
private chunkedUploadService;
|
|
1745
|
-
constructor(chunkedUploadService: ChunkedUploadService);
|
|
1746
|
-
sdrfFile(request: MetadataImportRequest): Observable<AsyncTaskCreateResponse>;
|
|
1747
|
-
excelFile(request: MetadataImportRequest): Observable<AsyncTaskCreateResponse>;
|
|
1748
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AsyncImportService, never>;
|
|
1749
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AsyncImportService>;
|
|
1750
|
-
}
|
|
1751
|
-
|
|
1752
|
-
declare class AsyncValidationService extends BaseApiService {
|
|
1753
|
-
metadataTable(request: MetadataValidationRequest): Observable<AsyncTaskCreateResponse>;
|
|
1754
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AsyncValidationService, never>;
|
|
1755
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AsyncValidationService>;
|
|
1756
|
-
}
|
|
1757
|
-
|
|
1758
2109
|
interface ChunkedFileImportRequest {
|
|
1759
2110
|
file: File;
|
|
1760
2111
|
metadataTableId: number;
|
|
1761
2112
|
replaceExisting?: boolean;
|
|
1762
2113
|
validateOntologies?: boolean;
|
|
1763
2114
|
createPools?: boolean;
|
|
2115
|
+
applySchemaTemplates?: boolean;
|
|
1764
2116
|
}
|
|
1765
2117
|
interface ChunkedImportProgress {
|
|
1766
2118
|
uploadProgress: number;
|
|
@@ -1769,7 +2121,7 @@ interface ChunkedImportProgress {
|
|
|
1769
2121
|
}
|
|
1770
2122
|
declare class ChunkedImportService extends BaseApiService {
|
|
1771
2123
|
private chunkedUploadService;
|
|
1772
|
-
constructor(
|
|
2124
|
+
constructor();
|
|
1773
2125
|
/**
|
|
1774
2126
|
* Import SDRF file using chunked upload for better performance with large files
|
|
1775
2127
|
*/
|
|
@@ -1899,9 +2251,23 @@ declare class SdrfSyntaxService {
|
|
|
1899
2251
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SdrfSyntaxService>;
|
|
1900
2252
|
}
|
|
1901
2253
|
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
2254
|
+
declare class Websocket extends WebSocketService {
|
|
2255
|
+
constructor();
|
|
2256
|
+
getMetadataTableUpdates(): Observable<WebSocketMessage>;
|
|
2257
|
+
getLabGroupUpdates(): Observable<WebSocketMessage>;
|
|
2258
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Websocket, never>;
|
|
2259
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<Websocket>;
|
|
2260
|
+
}
|
|
2261
|
+
|
|
2262
|
+
/**
|
|
2263
|
+
* @deprecated Use DesktopService instead. ElectronService is kept for backwards compatibility.
|
|
2264
|
+
*/
|
|
2265
|
+
declare class ElectronService {
|
|
2266
|
+
private desktop;
|
|
2267
|
+
get isElectron(): boolean;
|
|
2268
|
+
get isWails(): boolean;
|
|
2269
|
+
get isDesktop(): boolean;
|
|
2270
|
+
get platform(): string;
|
|
1905
2271
|
getAppVersion(): Promise<string>;
|
|
1906
2272
|
getElectronVersion(): Promise<string>;
|
|
1907
2273
|
minimize(): void;
|
|
@@ -1914,21 +2280,30 @@ interface ElectronAPI {
|
|
|
1914
2280
|
downloadFile(url: string, filename?: string): Promise<string>;
|
|
1915
2281
|
getBackendPort(): Promise<number>;
|
|
1916
2282
|
isBackendReady(): Promise<boolean>;
|
|
1917
|
-
onBackendStatusChange(
|
|
1918
|
-
onWindowStateChange(
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
interface Window {
|
|
1922
|
-
electronAPI?: ElectronAPI;
|
|
1923
|
-
}
|
|
2283
|
+
onBackendStatusChange(): Observable<any>;
|
|
2284
|
+
onWindowStateChange(): Observable<'maximized' | 'unmaximized'>;
|
|
2285
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ElectronService, never>;
|
|
2286
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ElectronService>;
|
|
1924
2287
|
}
|
|
1925
|
-
|
|
1926
|
-
|
|
2288
|
+
|
|
2289
|
+
declare class DesktopService {
|
|
2290
|
+
private ngZone;
|
|
2291
|
+
private readonly _runtime;
|
|
2292
|
+
private backendStatusSubject;
|
|
2293
|
+
private windowStateSubject;
|
|
2294
|
+
private wailsRuntime;
|
|
1927
2295
|
constructor();
|
|
2296
|
+
private loadWailsRuntime;
|
|
2297
|
+
private hasElectron;
|
|
2298
|
+
private hasWails;
|
|
2299
|
+
get runtime(): DesktopRuntime;
|
|
2300
|
+
get isDesktop(): boolean;
|
|
1928
2301
|
get isElectron(): boolean;
|
|
2302
|
+
get isWails(): boolean;
|
|
1929
2303
|
get platform(): string;
|
|
2304
|
+
private setupWailsListeners;
|
|
1930
2305
|
getAppVersion(): Promise<string>;
|
|
1931
|
-
|
|
2306
|
+
getRuntimeVersion(): Promise<string>;
|
|
1932
2307
|
minimize(): void;
|
|
1933
2308
|
maximize(): void;
|
|
1934
2309
|
close(): void;
|
|
@@ -1941,8 +2316,16 @@ declare class ElectronService {
|
|
|
1941
2316
|
isBackendReady(): Promise<boolean>;
|
|
1942
2317
|
onBackendStatusChange(): Observable<any>;
|
|
1943
2318
|
onWindowStateChange(): Observable<'maximized' | 'unmaximized'>;
|
|
1944
|
-
|
|
1945
|
-
static
|
|
2319
|
+
logToFile(message: string): Promise<void>;
|
|
2320
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DesktopService, never>;
|
|
2321
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<DesktopService>;
|
|
2322
|
+
}
|
|
2323
|
+
|
|
2324
|
+
declare class ExcelLaunchService extends BaseApiService {
|
|
2325
|
+
createLaunchCode(request: ExcelLaunchRequest): Observable<ExcelLaunchCode>;
|
|
2326
|
+
claimLaunchCode(code: string): Observable<ExcelLaunchClaimResponse>;
|
|
2327
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ExcelLaunchService, never>;
|
|
2328
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ExcelLaunchService>;
|
|
1946
2329
|
}
|
|
1947
2330
|
|
|
1948
2331
|
declare class SdrfAgeInput implements OnInit {
|
|
@@ -1952,6 +2335,7 @@ declare class SdrfAgeInput implements OnInit {
|
|
|
1952
2335
|
private sdrfSyntax;
|
|
1953
2336
|
ageForm: FormGroup;
|
|
1954
2337
|
isRange: boolean;
|
|
2338
|
+
constructor();
|
|
1955
2339
|
ngOnInit(): void;
|
|
1956
2340
|
private parseAndSetValue;
|
|
1957
2341
|
private updateValue;
|
|
@@ -1980,6 +2364,7 @@ declare class SdrfModificationInput implements OnInit {
|
|
|
1980
2364
|
showSpecifications: _angular_core.WritableSignal<boolean>;
|
|
1981
2365
|
showHiddenSpecifications: _angular_core.WritableSignal<boolean>;
|
|
1982
2366
|
hiddenSpecificationCount: _angular_core.WritableSignal<number>;
|
|
2367
|
+
constructor();
|
|
1983
2368
|
ngOnInit(): void;
|
|
1984
2369
|
private parseAndSetValue;
|
|
1985
2370
|
private getStringValue;
|
|
@@ -2009,6 +2394,7 @@ declare class SdrfSpikedCompoundInput implements OnInit {
|
|
|
2009
2394
|
private sdrfSyntax;
|
|
2010
2395
|
spikedForm: FormGroup;
|
|
2011
2396
|
compoundTypes: string[];
|
|
2397
|
+
constructor();
|
|
2012
2398
|
ngOnInit(): void;
|
|
2013
2399
|
private parseAndSetValue;
|
|
2014
2400
|
private getStringValue;
|
|
@@ -2030,6 +2416,7 @@ declare class SdrfCleavageInput implements OnInit {
|
|
|
2030
2416
|
private metadataColumnService;
|
|
2031
2417
|
private metadataColumnTemplateService;
|
|
2032
2418
|
cleavageForm: FormGroup;
|
|
2419
|
+
constructor();
|
|
2033
2420
|
ngOnInit(): void;
|
|
2034
2421
|
private parseAndSetValue;
|
|
2035
2422
|
private getStringValue;
|
|
@@ -2042,6 +2429,45 @@ declare class SdrfCleavageInput implements OnInit {
|
|
|
2042
2429
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdrfCleavageInput, "ccv-sdrf-cleavage-input", never, { "value": { "alias": "value"; "required": false; }; "templateId": { "alias": "templateId"; "required": false; }; "columnId": { "alias": "columnId"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
2043
2430
|
}
|
|
2044
2431
|
|
|
2432
|
+
declare class SdrfNumberWithUnitInput implements OnInit, OnChanges {
|
|
2433
|
+
private fb;
|
|
2434
|
+
value: string;
|
|
2435
|
+
units: string[];
|
|
2436
|
+
placeholder: string;
|
|
2437
|
+
description: string;
|
|
2438
|
+
examples: (string | number)[];
|
|
2439
|
+
valueChange: EventEmitter<string>;
|
|
2440
|
+
form: FormGroup;
|
|
2441
|
+
constructor(fb: FormBuilder);
|
|
2442
|
+
ngOnInit(): void;
|
|
2443
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
2444
|
+
private parseAndSetValue;
|
|
2445
|
+
private updateValue;
|
|
2446
|
+
selectExample(example: string | number): void;
|
|
2447
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdrfNumberWithUnitInput, never>;
|
|
2448
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdrfNumberWithUnitInput, "ccv-sdrf-number-with-unit-input", never, { "value": { "alias": "value"; "required": false; }; "units": { "alias": "units"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "description": { "alias": "description"; "required": false; }; "examples": { "alias": "examples"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
2449
|
+
}
|
|
2450
|
+
|
|
2451
|
+
declare class SdrfSelectInput implements OnInit, OnChanges {
|
|
2452
|
+
value: string;
|
|
2453
|
+
options: string[];
|
|
2454
|
+
placeholder: string;
|
|
2455
|
+
description: string;
|
|
2456
|
+
allowCustom: boolean;
|
|
2457
|
+
valueChange: EventEmitter<string>;
|
|
2458
|
+
selectedValue: _angular_core.WritableSignal<string>;
|
|
2459
|
+
isCustomMode: _angular_core.WritableSignal<boolean>;
|
|
2460
|
+
customValue: _angular_core.WritableSignal<string>;
|
|
2461
|
+
ngOnInit(): void;
|
|
2462
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
2463
|
+
private initializeValue;
|
|
2464
|
+
onSelectionChange(value: string): void;
|
|
2465
|
+
onCustomValueChange(value: string): void;
|
|
2466
|
+
toggleCustomMode(): void;
|
|
2467
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdrfSelectInput, never>;
|
|
2468
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdrfSelectInput, "ccv-sdrf-select-input", never, { "value": { "alias": "value"; "required": false; }; "options": { "alias": "options"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "description": { "alias": "description"; "required": false; }; "allowCustom": { "alias": "allowCustom"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
2469
|
+
}
|
|
2470
|
+
|
|
2045
2471
|
interface MetadataValueEditConfig {
|
|
2046
2472
|
columnId?: number;
|
|
2047
2473
|
columnName: string;
|
|
@@ -2063,6 +2489,10 @@ interface MetadataValueEditConfig {
|
|
|
2063
2489
|
maxSampleCount?: number;
|
|
2064
2490
|
allowNotApplicable?: boolean;
|
|
2065
2491
|
allowNotAvailable?: boolean;
|
|
2492
|
+
inputType?: ColumnInputType;
|
|
2493
|
+
validators?: ColumnValidator[];
|
|
2494
|
+
units?: string[];
|
|
2495
|
+
possibleDefaultValues?: (string | number)[];
|
|
2066
2496
|
}
|
|
2067
2497
|
declare class MetadataValueEditModal implements OnInit {
|
|
2068
2498
|
private fb;
|
|
@@ -2094,10 +2524,17 @@ declare class MetadataValueEditModal implements OnInit {
|
|
|
2094
2524
|
specialSyntaxType: _angular_core.WritableSignal<SyntaxType | null>;
|
|
2095
2525
|
showSpecialInput: _angular_core.WritableSignal<boolean>;
|
|
2096
2526
|
specialInputValue: _angular_core.WritableSignal<string>;
|
|
2527
|
+
validatorInputType: _angular_core.WritableSignal<ColumnInputType | null>;
|
|
2528
|
+
validatorUnits: _angular_core.WritableSignal<string[]>;
|
|
2529
|
+
validatorOptions: _angular_core.WritableSignal<string[]>;
|
|
2530
|
+
validatorDescription: _angular_core.WritableSignal<string>;
|
|
2531
|
+
validatorExamples: _angular_core.WritableSignal<(string | number)[]>;
|
|
2097
2532
|
selectedSampleIndices: _angular_core.WritableSignal<Set<number>>;
|
|
2098
2533
|
showSamplePanel: _angular_core.WritableSignal<boolean>;
|
|
2099
2534
|
constructor(fb: FormBuilder, activeModal: NgbActiveModal, authService: AuthService, favouriteMetadataOptionService: FavouriteMetadataOptionService, metadataColumnService: MetadataColumnService, metadataColumnTemplateService: MetadataColumnTemplateService, labGroupService: LabGroupService, ontologySearchService: OntologySearchService);
|
|
2100
2535
|
ngOnInit(): void;
|
|
2536
|
+
private initializeValidatorInputType;
|
|
2537
|
+
onValidatorInputChange(value: string): void;
|
|
2101
2538
|
onCancel(): void;
|
|
2102
2539
|
onClose(): void;
|
|
2103
2540
|
get title(): string;
|
|
@@ -2187,17 +2624,29 @@ declare class ValidationResultsModal {
|
|
|
2187
2624
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ValidationResultsModal, "ccv-validation-results-modal", never, { "results": { "alias": "results"; "required": false; }; }, {}, never, never, true, never>;
|
|
2188
2625
|
}
|
|
2189
2626
|
|
|
2190
|
-
declare class MetadataValidationModal {
|
|
2627
|
+
declare class MetadataValidationModal implements OnInit {
|
|
2191
2628
|
config?: MetadataValidationConfig;
|
|
2192
2629
|
private fb;
|
|
2193
2630
|
private asyncTaskService;
|
|
2631
|
+
private asyncValidationService;
|
|
2194
2632
|
private toastService;
|
|
2195
2633
|
activeModal: NgbActiveModal;
|
|
2196
2634
|
isValidating: _angular_core.WritableSignal<boolean>;
|
|
2635
|
+
isLoadingSchemas: _angular_core.WritableSignal<boolean>;
|
|
2197
2636
|
validationError: _angular_core.WritableSignal<string | null>;
|
|
2637
|
+
availableSchemas: _angular_core.WritableSignal<ValidationSchema[]>;
|
|
2638
|
+
selectedSchemas: _angular_core.WritableSignal<Set<string>>;
|
|
2198
2639
|
validationForm: _angular_forms.FormGroup<{
|
|
2199
2640
|
validate_sdrf_format: _angular_forms.FormControl<boolean | null>;
|
|
2641
|
+
skip_ontology: _angular_forms.FormControl<boolean | null>;
|
|
2642
|
+
include_pools: _angular_forms.FormControl<boolean | null>;
|
|
2200
2643
|
}>;
|
|
2644
|
+
ngOnInit(): void;
|
|
2645
|
+
loadAvailableSchemas(): void;
|
|
2646
|
+
toggleSchema(schemaName: string): void;
|
|
2647
|
+
isSchemaSelected(schemaName: string): boolean;
|
|
2648
|
+
selectAllSchemas(): void;
|
|
2649
|
+
clearAllSchemas(): void;
|
|
2201
2650
|
onSubmit(): void;
|
|
2202
2651
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MetadataValidationModal, never>;
|
|
2203
2652
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MetadataValidationModal, "ccv-metadata-validation-modal", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, true, never>;
|
|
@@ -2250,9 +2699,9 @@ declare class AsyncTaskUIService implements OnDestroy {
|
|
|
2250
2699
|
private toastService;
|
|
2251
2700
|
private asyncTaskMonitor;
|
|
2252
2701
|
private modalService;
|
|
2253
|
-
private
|
|
2254
|
-
tasks
|
|
2255
|
-
activeTasks
|
|
2702
|
+
private desktopService;
|
|
2703
|
+
tasks: _angular_core.Signal<AsyncTaskStatus[]>;
|
|
2704
|
+
activeTasks: _angular_core.Signal<AsyncTaskStatus[]>;
|
|
2256
2705
|
metadataTableRefresh$: Observable<number>;
|
|
2257
2706
|
taskCompleted$: Observable<AsyncTaskStatus>;
|
|
2258
2707
|
exportTaskCompleted$: Observable<AsyncTaskStatus>;
|
|
@@ -2350,6 +2799,11 @@ declare class MetadataTableTemplates implements OnInit {
|
|
|
2350
2799
|
* Perform the actual template column reordering with async task monitoring
|
|
2351
2800
|
*/
|
|
2352
2801
|
private performTemplateColumnReorder;
|
|
2802
|
+
/**
|
|
2803
|
+
* Sync template columns from linked schemas.
|
|
2804
|
+
* Updates columns with latest ontology settings and adds new columns from schemas.
|
|
2805
|
+
*/
|
|
2806
|
+
syncTemplateFromSchemas(template: MetadataTableTemplate): void;
|
|
2353
2807
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MetadataTableTemplates, never>;
|
|
2354
2808
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MetadataTableTemplates, "ccv-metadata-table-templates", never, {}, {}, never, never, true, never>;
|
|
2355
2809
|
}
|
|
@@ -2414,7 +2868,9 @@ declare class ColumnEditModal implements OnInit {
|
|
|
2414
2868
|
private activeModal;
|
|
2415
2869
|
private modalService;
|
|
2416
2870
|
private metadataColumnTemplateService;
|
|
2871
|
+
private schemaService;
|
|
2417
2872
|
private sdrfSyntaxService;
|
|
2873
|
+
private officialColumnCache;
|
|
2418
2874
|
column: MetadataColumn | null;
|
|
2419
2875
|
templateId: number | null;
|
|
2420
2876
|
isEdit: boolean;
|
|
@@ -2435,13 +2891,13 @@ declare class ColumnEditModal implements OnInit {
|
|
|
2435
2891
|
totalTemplates: number;
|
|
2436
2892
|
totalTemplatePages: number;
|
|
2437
2893
|
Math: Math;
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2894
|
+
showSystemTemplatesOnly: boolean;
|
|
2895
|
+
selectedSchemaFilter: string;
|
|
2896
|
+
availableSchemas: Schema[];
|
|
2897
|
+
validationError: _angular_core.WritableSignal<string | null>;
|
|
2442
2898
|
showTemplateSwap: boolean;
|
|
2443
2899
|
showCreateCustomTemplate: boolean;
|
|
2444
|
-
constructor(fb: FormBuilder, activeModal: NgbActiveModal, modalService: NgbModal, metadataColumnTemplateService: MetadataColumnTemplateService, sdrfSyntaxService: SdrfSyntaxService);
|
|
2900
|
+
constructor(fb: FormBuilder, activeModal: NgbActiveModal, modalService: NgbModal, metadataColumnTemplateService: MetadataColumnTemplateService, schemaService: SchemaService, sdrfSyntaxService: SdrfSyntaxService, officialColumnCache: OfficialColumnCacheService);
|
|
2445
2901
|
ngOnInit(): void;
|
|
2446
2902
|
private populateForm;
|
|
2447
2903
|
private getOntologyTypeIndex;
|
|
@@ -2456,17 +2912,15 @@ declare class ColumnEditModal implements OnInit {
|
|
|
2456
2912
|
openValueEditModal(): void;
|
|
2457
2913
|
setDefaultValue(value: string): void;
|
|
2458
2914
|
private loadColumnTemplates;
|
|
2915
|
+
private loadAvailableSchemas;
|
|
2916
|
+
toggleSystemTemplatesFilter(systemOnly: boolean): void;
|
|
2917
|
+
onSchemaFilterChange(schema: string): void;
|
|
2459
2918
|
onTemplateFilterChange(): void;
|
|
2460
2919
|
clearTemplateFilter(): void;
|
|
2461
2920
|
onTemplatePageChange(page: number): void;
|
|
2462
2921
|
onTemplateSelectionChange(): void;
|
|
2463
2922
|
clearTemplate(): void;
|
|
2464
2923
|
getOntologyTypeLabel(ontologyType: string): string;
|
|
2465
|
-
toggleOfficialColumns(): void;
|
|
2466
|
-
selectOfficialColumn(column: SdrfColumnConfig): void;
|
|
2467
|
-
private filterOfficialColumns;
|
|
2468
|
-
private getOntologyConfigForColumn;
|
|
2469
|
-
private isColumnMandatory;
|
|
2470
2924
|
showTemplateSwapOptions(): void;
|
|
2471
2925
|
swapToTemplate(template: MetadataColumnTemplate): void;
|
|
2472
2926
|
showCreateCustomTemplateOption(): void;
|
|
@@ -2475,6 +2929,7 @@ declare class ColumnEditModal implements OnInit {
|
|
|
2475
2929
|
toggleAdvancedMode(): void;
|
|
2476
2930
|
onOntologyTypeChange(event: Event): void;
|
|
2477
2931
|
private getCorrectedColumnType;
|
|
2932
|
+
private getOntologyConfigForColumn;
|
|
2478
2933
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColumnEditModal, never>;
|
|
2479
2934
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColumnEditModal, "ccv-column-edit-modal", never, { "column": { "alias": "column"; "required": false; }; "templateId": { "alias": "templateId"; "required": false; }; "isEdit": { "alias": "isEdit"; "required": false; }; }, { "columnSaved": "columnSaved"; }, never, never, true, never>;
|
|
2480
2935
|
}
|
|
@@ -2483,26 +2938,48 @@ interface TemplateSchemaSelectionResult {
|
|
|
2483
2938
|
name: string;
|
|
2484
2939
|
description: string;
|
|
2485
2940
|
schemaIds: number[];
|
|
2486
|
-
|
|
2941
|
+
labGroup?: number;
|
|
2487
2942
|
visibility: ResourceVisibility;
|
|
2488
2943
|
isDefault: boolean;
|
|
2489
2944
|
}
|
|
2490
|
-
|
|
2945
|
+
interface SchemasByLayer {
|
|
2946
|
+
technology: Schema[];
|
|
2947
|
+
sample: Schema[];
|
|
2948
|
+
experiment: Schema[];
|
|
2949
|
+
other: Schema[];
|
|
2950
|
+
}
|
|
2951
|
+
declare class TemplateSchemaSelectionModal implements OnInit {
|
|
2491
2952
|
private fb;
|
|
2492
2953
|
activeModal: NgbActiveModal;
|
|
2493
|
-
|
|
2954
|
+
private _availableSchemas;
|
|
2955
|
+
set availableSchemas(value: Schema[]);
|
|
2956
|
+
get availableSchemas(): Schema[];
|
|
2494
2957
|
labGroups: any[];
|
|
2495
2958
|
templateCreated: EventEmitter<TemplateSchemaSelectionResult>;
|
|
2496
2959
|
templateForm: FormGroup;
|
|
2497
2960
|
selectedSchemas: _angular_core.WritableSignal<Set<number>>;
|
|
2961
|
+
schemasByLayer: _angular_core.WritableSignal<SchemasByLayer>;
|
|
2962
|
+
layerInfo: Record<string, {
|
|
2963
|
+
label: string;
|
|
2964
|
+
icon: string;
|
|
2965
|
+
description: string;
|
|
2966
|
+
color: string;
|
|
2967
|
+
}>;
|
|
2498
2968
|
selectedSchemasCount: _angular_core.Signal<number>;
|
|
2499
2969
|
constructor(fb: FormBuilder, activeModal: NgbActiveModal);
|
|
2970
|
+
ngOnInit(): void;
|
|
2971
|
+
private groupSchemasByLayer;
|
|
2972
|
+
getLayerKeys(): string[];
|
|
2973
|
+
hasLayerSchemas(layer: string): boolean;
|
|
2974
|
+
getLayerSchemas(layer: string): Schema[];
|
|
2500
2975
|
toggleSchema(schemaId: number): void;
|
|
2501
2976
|
onSchemaCheckChange(event: Event, schemaId: number): void;
|
|
2502
2977
|
isSchemaSelected(schemaId: number): boolean;
|
|
2503
2978
|
getSelectedSchemas(): number[];
|
|
2504
2979
|
removeSchema(schemaId: number): void;
|
|
2980
|
+
getSchemaById(schemaId: number): Schema | undefined;
|
|
2505
2981
|
getSchemaDisplayName(schemaId: number): string;
|
|
2982
|
+
getSchemaLayer(schemaId: number): string;
|
|
2506
2983
|
private updateDescription;
|
|
2507
2984
|
canCreateTemplate(): boolean;
|
|
2508
2985
|
onCreateTemplate(): void;
|
|
@@ -2516,14 +2993,14 @@ interface TableCreationData {
|
|
|
2516
2993
|
templateId: number;
|
|
2517
2994
|
sampleCount?: number;
|
|
2518
2995
|
description?: string;
|
|
2519
|
-
|
|
2996
|
+
labGroup?: number;
|
|
2520
2997
|
}
|
|
2521
2998
|
declare class TableCreationModalComponent implements OnInit {
|
|
2522
2999
|
private fb;
|
|
2523
3000
|
activeModal: NgbActiveModal;
|
|
2524
3001
|
template: MetadataTableTemplate;
|
|
2525
3002
|
labGroups: LabGroup[];
|
|
2526
|
-
|
|
3003
|
+
selectedLabGroup?: number;
|
|
2527
3004
|
tableCreated: EventEmitter<TableCreationData>;
|
|
2528
3005
|
tableForm: FormGroup;
|
|
2529
3006
|
isCreating: boolean;
|
|
@@ -2537,7 +3014,7 @@ declare class TableCreationModalComponent implements OnInit {
|
|
|
2537
3014
|
getFieldError(fieldName: string): string | null;
|
|
2538
3015
|
private getFieldLabel;
|
|
2539
3016
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableCreationModalComponent, never>;
|
|
2540
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableCreationModalComponent, "ccv-table-creation-modal", never, { "template": { "alias": "template"; "required": false; }; "labGroups": { "alias": "labGroups"; "required": false; }; "
|
|
3017
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableCreationModalComponent, "ccv-table-creation-modal", never, { "template": { "alias": "template"; "required": false; }; "labGroups": { "alias": "labGroups"; "required": false; }; "selectedLabGroup": { "alias": "selectedLabGroup"; "required": false; }; }, { "tableCreated": "tableCreated"; }, never, never, true, never>;
|
|
2541
3018
|
}
|
|
2542
3019
|
|
|
2543
3020
|
interface SchemaSelectionResult {
|
|
@@ -2574,6 +3051,7 @@ declare class ColumnTemplates implements OnInit {
|
|
|
2574
3051
|
private fb;
|
|
2575
3052
|
private metadataColumnTemplateService;
|
|
2576
3053
|
private labGroupService;
|
|
3054
|
+
private schemaService;
|
|
2577
3055
|
private modalService;
|
|
2578
3056
|
searchForm: FormGroup;
|
|
2579
3057
|
private searchParams;
|
|
@@ -2589,19 +3067,46 @@ declare class ColumnTemplates implements OnInit {
|
|
|
2589
3067
|
columnFilter: _angular_core.WritableSignal<string>;
|
|
2590
3068
|
sortField: _angular_core.WritableSignal<string>;
|
|
2591
3069
|
sortDirection: _angular_core.WritableSignal<"asc" | "desc">;
|
|
3070
|
+
viewMode: _angular_core.WritableSignal<"flat" | "grouped">;
|
|
2592
3071
|
templatesData: _angular_core.WritableSignal<{
|
|
2593
3072
|
count: number;
|
|
2594
3073
|
results: MetadataColumnTemplate[];
|
|
2595
3074
|
}>;
|
|
2596
3075
|
labGroupsData: _angular_core.WritableSignal<LabGroupQueryResponse>;
|
|
3076
|
+
schemasData: _angular_core.WritableSignal<PaginatedResponse<Schema>>;
|
|
3077
|
+
selectedSchema: _angular_core.WritableSignal<Schema | null>;
|
|
3078
|
+
schemaSearchText: string;
|
|
3079
|
+
schemaTypeFilter: _angular_core.WritableSignal<"user" | "all" | "builtin">;
|
|
3080
|
+
groupedTemplatesData: _angular_core.WritableSignal<{
|
|
3081
|
+
count: number;
|
|
3082
|
+
results: GroupedColumnTemplate[];
|
|
3083
|
+
}>;
|
|
3084
|
+
expandedGroups: _angular_core.WritableSignal<Set<string>>;
|
|
3085
|
+
groupTemplatesCache: _angular_core.WritableSignal<Map<string, MetadataColumnTemplate[]>>;
|
|
3086
|
+
loadingGroups: _angular_core.WritableSignal<Set<string>>;
|
|
3087
|
+
isLoadingGrouped: _angular_core.WritableSignal<boolean>;
|
|
3088
|
+
groupedCurrentPage: _angular_core.WritableSignal<number>;
|
|
3089
|
+
groupedPageSize: _angular_core.WritableSignal<number>;
|
|
2597
3090
|
hasTemplates: _angular_core.Signal<boolean>;
|
|
2598
3091
|
hasLabGroups: _angular_core.Signal<boolean>;
|
|
3092
|
+
hasSchemas: _angular_core.Signal<boolean>;
|
|
2599
3093
|
showTemplatesPagination: _angular_core.Signal<boolean>;
|
|
2600
3094
|
showLabGroupsPagination: _angular_core.Signal<boolean>;
|
|
3095
|
+
hasGroupedTemplates: _angular_core.Signal<boolean>;
|
|
3096
|
+
showGroupedPagination: _angular_core.Signal<boolean>;
|
|
2601
3097
|
filteredTemplates: _angular_core.Signal<MetadataColumnTemplate[]>;
|
|
2602
|
-
constructor(fb: FormBuilder, metadataColumnTemplateService: MetadataColumnTemplateService, labGroupService: LabGroupService, modalService: NgbModal);
|
|
3098
|
+
constructor(fb: FormBuilder, metadataColumnTemplateService: MetadataColumnTemplateService, labGroupService: LabGroupService, schemaService: SchemaService, modalService: NgbModal);
|
|
2603
3099
|
ngOnInit(): void;
|
|
2604
3100
|
private loadInitialData;
|
|
3101
|
+
private loadSchemas;
|
|
3102
|
+
private getSchemaQueryParams;
|
|
3103
|
+
searchSchemas: OperatorFunction<string, readonly Schema[]>;
|
|
3104
|
+
onSchemaTypeFilterChange(type: 'all' | 'builtin' | 'user'): void;
|
|
3105
|
+
formatSchema: (schema: Schema) => string;
|
|
3106
|
+
onSchemaSelected: (event: any) => void;
|
|
3107
|
+
clearSchemaFilter(): void;
|
|
3108
|
+
filterBySchema(template: MetadataColumnTemplate): void;
|
|
3109
|
+
filterBySourceSchema(sourceSchema: string): void;
|
|
2605
3110
|
private loadLabGroupsWithParams;
|
|
2606
3111
|
private setupSearch;
|
|
2607
3112
|
private loadTemplatesWithParams;
|
|
@@ -2623,6 +3128,17 @@ declare class ColumnTemplates implements OnInit {
|
|
|
2623
3128
|
deleteTemplate(template: MetadataColumnTemplate): void;
|
|
2624
3129
|
duplicateTemplate(template: MetadataColumnTemplate): void;
|
|
2625
3130
|
private refreshTemplates;
|
|
3131
|
+
setViewMode(mode: 'flat' | 'grouped'): void;
|
|
3132
|
+
private loadGroupedTemplates;
|
|
3133
|
+
onGroupedPageChange(page: number): void;
|
|
3134
|
+
getGroupKey(group: GroupedColumnTemplate): string;
|
|
3135
|
+
isGroupExpanded(group: GroupedColumnTemplate): boolean;
|
|
3136
|
+
isGroupLoading(group: GroupedColumnTemplate): boolean;
|
|
3137
|
+
toggleGroup(group: GroupedColumnTemplate): void;
|
|
3138
|
+
private loadGroupTemplates;
|
|
3139
|
+
getGroupTemplates(group: GroupedColumnTemplate): MetadataColumnTemplate[];
|
|
3140
|
+
collapseAllGroups(): void;
|
|
3141
|
+
expandAllGroups(): void;
|
|
2626
3142
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColumnTemplates, never>;
|
|
2627
3143
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColumnTemplates, "ccv-column-templates", never, {}, {}, never, never, true, never>;
|
|
2628
3144
|
}
|
|
@@ -2670,13 +3186,6 @@ declare class ColumnTemplateEditModal implements OnInit {
|
|
|
2670
3186
|
}
|
|
2671
3187
|
|
|
2672
3188
|
declare class FavoriteManagement implements OnInit {
|
|
2673
|
-
private fb;
|
|
2674
|
-
private favouriteMetadataOptionService;
|
|
2675
|
-
private metadataColumnTemplateService;
|
|
2676
|
-
private labGroupService;
|
|
2677
|
-
private toastService;
|
|
2678
|
-
private modalService;
|
|
2679
|
-
private authService;
|
|
2680
3189
|
Math: Math;
|
|
2681
3190
|
isLoading: _angular_core.WritableSignal<boolean>;
|
|
2682
3191
|
favorites: _angular_core.WritableSignal<FavouriteMetadataOption[]>;
|
|
@@ -2696,10 +3205,17 @@ declare class FavoriteManagement implements OnInit {
|
|
|
2696
3205
|
editingFavorite: _angular_core.WritableSignal<FavouriteMetadataOption | null>;
|
|
2697
3206
|
showEditModal: _angular_core.WritableSignal<boolean>;
|
|
2698
3207
|
private sdrfSyntaxService;
|
|
3208
|
+
private fb;
|
|
3209
|
+
private favouriteMetadataOptionService;
|
|
3210
|
+
private metadataColumnTemplateService;
|
|
3211
|
+
private labGroupService;
|
|
3212
|
+
private toastService;
|
|
3213
|
+
private modalService;
|
|
3214
|
+
private authService;
|
|
2699
3215
|
specialSyntaxType: _angular_core.WritableSignal<SyntaxType | null>;
|
|
2700
3216
|
showSpecialInput: _angular_core.WritableSignal<boolean>;
|
|
2701
3217
|
specialInputValue: _angular_core.WritableSignal<string>;
|
|
2702
|
-
currentUser: _angular_core.
|
|
3218
|
+
currentUser: _angular_core.Signal<User | null>;
|
|
2703
3219
|
isAdmin: _angular_core.Signal<boolean>;
|
|
2704
3220
|
currentUserId: _angular_core.Signal<number | null>;
|
|
2705
3221
|
userLabGroups: _angular_core.WritableSignal<LabGroup[]>;
|
|
@@ -2719,7 +3235,7 @@ declare class FavoriteManagement implements OnInit {
|
|
|
2719
3235
|
value: string;
|
|
2720
3236
|
label: string;
|
|
2721
3237
|
}[];
|
|
2722
|
-
constructor(
|
|
3238
|
+
constructor();
|
|
2723
3239
|
ngOnInit(): void;
|
|
2724
3240
|
loadFavorites(): void;
|
|
2725
3241
|
canEditFavorite(favorite: FavouriteMetadataOption): boolean;
|
|
@@ -2822,6 +3338,7 @@ declare class MetadataTableDetails implements OnInit, OnDestroy {
|
|
|
2822
3338
|
private toastService;
|
|
2823
3339
|
private asyncTaskService;
|
|
2824
3340
|
private modalService;
|
|
3341
|
+
private officialColumnCache;
|
|
2825
3342
|
private destroy$;
|
|
2826
3343
|
fileInput: ElementRef<HTMLInputElement>;
|
|
2827
3344
|
excelInput: ElementRef<HTMLInputElement>;
|
|
@@ -2834,6 +3351,8 @@ declare class MetadataTableDetails implements OnInit, OnDestroy {
|
|
|
2834
3351
|
getSortIcon(field: string): string;
|
|
2835
3352
|
isSorted(field: string): boolean;
|
|
2836
3353
|
isLoading: _angular_core.WritableSignal<boolean>;
|
|
3354
|
+
overrideSampleCount: _angular_core.WritableSignal<boolean>;
|
|
3355
|
+
applySchemaTemplates: _angular_core.WritableSignal<boolean>;
|
|
2837
3356
|
table: _angular_core.WritableSignal<MetadataTable | null>;
|
|
2838
3357
|
tableId: _angular_core.WritableSignal<number | null>;
|
|
2839
3358
|
viewMode: _angular_core.WritableSignal<"list" | "table">;
|
|
@@ -2851,7 +3370,7 @@ declare class MetadataTableDetails implements OnInit, OnDestroy {
|
|
|
2851
3370
|
poolTableRows: _angular_core.Signal<any[]>;
|
|
2852
3371
|
paginatedRows: _angular_core.Signal<any[]>;
|
|
2853
3372
|
totalPages: _angular_core.Signal<number>;
|
|
2854
|
-
constructor(route: ActivatedRoute, router: Router, metadataTableService: MetadataTableService, asyncExportService: AsyncExportService, chunkedUploadService: ChunkedUploadService, samplePoolService: SamplePoolService, metadataColumnService: MetadataColumnService, toastService: ToastService, asyncTaskService: AsyncTaskUIService, modalService: NgbModal);
|
|
3373
|
+
constructor(route: ActivatedRoute, router: Router, metadataTableService: MetadataTableService, asyncExportService: AsyncExportService, chunkedUploadService: ChunkedUploadService, samplePoolService: SamplePoolService, metadataColumnService: MetadataColumnService, toastService: ToastService, asyncTaskService: AsyncTaskUIService, modalService: NgbModal, officialColumnCache: OfficialColumnCacheService);
|
|
2855
3374
|
ngOnInit(): void;
|
|
2856
3375
|
ngOnDestroy(): void;
|
|
2857
3376
|
private setupAsyncTaskRefreshListener;
|
|
@@ -2896,6 +3415,7 @@ declare class MetadataTableDetails implements OnInit, OnDestroy {
|
|
|
2896
3415
|
viewColumnDetails(column: MetadataColumn): void;
|
|
2897
3416
|
editColumnSettings(column: MetadataColumn): void;
|
|
2898
3417
|
openColumnHistory(column: MetadataColumn): void;
|
|
3418
|
+
openColumnOverrideImportModal(): void;
|
|
2899
3419
|
private updateColumnSettings;
|
|
2900
3420
|
editPoolColumnValue(pool: SamplePool, column: any): void;
|
|
2901
3421
|
editSampleColumnValue(column: MetadataColumn, sampleIndex: number): void;
|
|
@@ -3068,18 +3588,17 @@ interface ColumnHistoryModalConfig {
|
|
|
3068
3588
|
columnName: string;
|
|
3069
3589
|
}
|
|
3070
3590
|
declare class MetadataColumnHistoryModal implements OnInit {
|
|
3071
|
-
activeModal: NgbActiveModal;
|
|
3072
|
-
private columnService;
|
|
3073
3591
|
config: ColumnHistoryModalConfig;
|
|
3074
3592
|
closed: EventEmitter<void>;
|
|
3075
|
-
history: MetadataColumnHistoryRecord[]
|
|
3076
|
-
loading: boolean
|
|
3077
|
-
error: string | null
|
|
3078
|
-
totalCount: number
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3593
|
+
readonly history: _angular_core.WritableSignal<MetadataColumnHistoryRecord[]>;
|
|
3594
|
+
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
3595
|
+
readonly error: _angular_core.WritableSignal<string | null>;
|
|
3596
|
+
readonly totalCount: _angular_core.WritableSignal<number>;
|
|
3597
|
+
readonly hasMore: _angular_core.WritableSignal<boolean>;
|
|
3598
|
+
private limit;
|
|
3599
|
+
private offset;
|
|
3600
|
+
readonly activeModal: NgbActiveModal;
|
|
3601
|
+
private columnService;
|
|
3083
3602
|
ngOnInit(): void;
|
|
3084
3603
|
loadHistory(): void;
|
|
3085
3604
|
loadMore(): void;
|
|
@@ -3091,10 +3610,88 @@ declare class MetadataColumnHistoryModal implements OnInit {
|
|
|
3091
3610
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MetadataColumnHistoryModal, "ccv-metadata-column-history-modal", never, { "config": { "alias": "config"; "required": false; }; }, { "closed": "closed"; }, never, never, true, never>;
|
|
3092
3611
|
}
|
|
3093
3612
|
|
|
3613
|
+
declare class OpenInExcel {
|
|
3614
|
+
private launchService;
|
|
3615
|
+
readonly tableId: _angular_core.InputSignal<number>;
|
|
3616
|
+
readonly tableName: _angular_core.InputSignal<string>;
|
|
3617
|
+
readonly buttonClass: _angular_core.InputSignal<string>;
|
|
3618
|
+
readonly showIcon: _angular_core.InputSignal<boolean>;
|
|
3619
|
+
readonly buttonText: _angular_core.InputSignal<string>;
|
|
3620
|
+
readonly launched: _angular_core.OutputEmitterRef<ExcelLaunchCode>;
|
|
3621
|
+
readonly error: _angular_core.OutputEmitterRef<string>;
|
|
3622
|
+
readonly isLoading: _angular_core.WritableSignal<boolean>;
|
|
3623
|
+
readonly launchCode: _angular_core.WritableSignal<ExcelLaunchCode | null>;
|
|
3624
|
+
readonly showModal: _angular_core.WritableSignal<boolean>;
|
|
3625
|
+
readonly copySuccess: _angular_core.WritableSignal<boolean>;
|
|
3626
|
+
createLaunchCode(): void;
|
|
3627
|
+
copyCode(): void;
|
|
3628
|
+
closeModal(): void;
|
|
3629
|
+
getExpiryTime(): string;
|
|
3630
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OpenInExcel, never>;
|
|
3631
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OpenInExcel, "ccv-open-in-excel", never, { "tableId": { "alias": "tableId"; "required": true; "isSignal": true; }; "tableName": { "alias": "tableName"; "required": false; "isSignal": true; }; "buttonClass": { "alias": "buttonClass"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "buttonText": { "alias": "buttonText"; "required": false; "isSignal": true; }; }, { "launched": "launched"; "error": "error"; }, never, never, true, never>;
|
|
3632
|
+
}
|
|
3633
|
+
|
|
3634
|
+
interface ColumnOverrideImportModalConfig {
|
|
3635
|
+
tableId: number;
|
|
3636
|
+
tableName: string;
|
|
3637
|
+
sampleCount: number;
|
|
3638
|
+
}
|
|
3639
|
+
type Step = 'upload' | 'map' | 'preview' | 'confirming' | 'done';
|
|
3640
|
+
declare class ColumnOverrideImportModal {
|
|
3641
|
+
config: ColumnOverrideImportModalConfig;
|
|
3642
|
+
private activeModal;
|
|
3643
|
+
private tableService;
|
|
3644
|
+
private fb;
|
|
3645
|
+
readonly step: _angular_core.WritableSignal<Step>;
|
|
3646
|
+
readonly selectedFile: _angular_core.WritableSignal<File | null>;
|
|
3647
|
+
readonly isLoading: _angular_core.WritableSignal<boolean>;
|
|
3648
|
+
readonly error: _angular_core.WritableSignal<string | null>;
|
|
3649
|
+
readonly suggestResult: _angular_core.WritableSignal<ColumnOverrideSuggestResult | null>;
|
|
3650
|
+
readonly userMapping: _angular_core.WritableSignal<ColumnOverrideMappingEntry[]>;
|
|
3651
|
+
readonly previewResult: _angular_core.WritableSignal<ColumnOverridePreviewResult | null>;
|
|
3652
|
+
readonly commitResult: _angular_core.WritableSignal<ColumnOverrideCommitResult | null>;
|
|
3653
|
+
readonly optionsForm: FormGroup;
|
|
3654
|
+
readonly mappedColumnIds: _angular_core.Signal<Set<number>>;
|
|
3655
|
+
readonly newColumnCount: _angular_core.Signal<number>;
|
|
3656
|
+
onFileChange(event: Event): void;
|
|
3657
|
+
generateMapping(): void;
|
|
3658
|
+
updateMappingEntry(fileColIndex: number, value: string): void;
|
|
3659
|
+
removeMappingEntry(fileColIndex: number): void;
|
|
3660
|
+
restoreMappingEntry(fileColIndex: number): void;
|
|
3661
|
+
isIgnored(fileColIndex: number): boolean;
|
|
3662
|
+
getColumnIdForFileCol(fileColIndex: number): string;
|
|
3663
|
+
reapplyAlgorithm(): void;
|
|
3664
|
+
preview(): void;
|
|
3665
|
+
confirm(): void;
|
|
3666
|
+
backToUpload(): void;
|
|
3667
|
+
backToMap(): void;
|
|
3668
|
+
close(): void;
|
|
3669
|
+
dismiss(): void;
|
|
3670
|
+
private buildOptions;
|
|
3671
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ColumnOverrideImportModal, never>;
|
|
3672
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ColumnOverrideImportModal, "ccv-column-override-import-modal", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, true, never>;
|
|
3673
|
+
}
|
|
3674
|
+
|
|
3094
3675
|
declare class CupcakeVanilla {
|
|
3095
3676
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CupcakeVanilla, never>;
|
|
3096
3677
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CupcakeVanilla, "ccv-cupcake-vanilla", never, {}, {}, never, never, true, never>;
|
|
3097
3678
|
}
|
|
3098
3679
|
|
|
3099
|
-
|
|
3100
|
-
|
|
3680
|
+
declare class DualScrollDirective implements AfterViewInit, OnDestroy {
|
|
3681
|
+
private el;
|
|
3682
|
+
private renderer;
|
|
3683
|
+
private topBar;
|
|
3684
|
+
private topBarInner;
|
|
3685
|
+
private resizeObserver;
|
|
3686
|
+
private readonly onHostScroll;
|
|
3687
|
+
private readonly onTopScroll;
|
|
3688
|
+
constructor(el: ElementRef<HTMLElement>, renderer: Renderer2);
|
|
3689
|
+
ngAfterViewInit(): void;
|
|
3690
|
+
private syncWidth;
|
|
3691
|
+
ngOnDestroy(): void;
|
|
3692
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DualScrollDirective, never>;
|
|
3693
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DualScrollDirective, "[appDualScroll]", never, {}, {}, never, never, true, never>;
|
|
3694
|
+
}
|
|
3695
|
+
|
|
3696
|
+
export { AsyncExportService, AsyncImportService, AsyncTaskService, AsyncTaskUIService, AsyncValidationService, COLUMN_TYPE_CONFIGS, ChunkedImportService, ChunkedUploadService, ColumnEditModal, ColumnOverrideImportModal, ColumnTemplateEditModal, ColumnTemplates, ColumnType, CupcakeVanilla, DesktopService, DualScrollDirective, ElectronService, ExcelExportModalComponent, ExcelLaunchService, FavoriteManagement, FavouriteMetadataOptionService, MSTermType, MetadataColumnAutofillModal, MetadataColumnHistoryModal, MetadataColumnService, MetadataColumnTemplateService, MetadataColumnTemplateShareService, MetadataManagementService, MetadataTableDetails, MetadataTableEditModal, MetadataTableService, MetadataTableTemplateEditModal, MetadataTableTemplateService, MetadataTableTemplates, MetadataValidationModal, MetadataValueEditModal, NotificationService, NotificationType, OFFICIAL_SDRF_COLUMNS, ONTOLOGY_TYPE_CONFIGS, OfficialColumnCacheService, OntologySearchService, OntologyType, OntologyTypeLabels, OntologyUtils, OpenInExcel, SDRFDefaultsService, SamplePoolCreateModal, SamplePoolDetailsModal, SamplePoolEditModal, SamplePoolService, SchemaSelectionModal, SchemaService, SdrfAgeInput, SdrfCleavageInput, SdrfColumnCategory, SdrfModificationInput, SdrfNumberWithUnitInput, SdrfSelectInput, SdrfSpikedCompoundInput, SdrfSyntaxService, SearchReplaceModal, TableCreationModalComponent, TemplatePermissionLabels, TemplatePermissionLevel, TemplateSchemaSelectionModal, ValidationResultsModal, Websocket, createSyntheticColumnFromTemplate, getRequiredSdrfColumns, getSdrfColumnByName, getSdrfColumnsByCategory, isSdrfColumnRequired, isUnimodFullData };
|
|
3697
|
+
export type { AdvancedAutofillRequest, AdvancedAutofillResponse, AgeFormat, ApiError, ApiResponse, BTOTerm, BaseTimestampedModel, CellOntology, ChEBICompound, ChunkedFileImportRequest, ChunkedImportProgress, ChunkedUploadCompletionRequest, ChunkedUploadCompletionResponse, ChunkedUploadRequest, ChunkedUploadResponse, ChunkedUploadStatus, CleavageAgentDetails, ColumnConfig, ColumnHistoryModalConfig, ColumnInputType, ColumnOverrideCommitResult, ColumnOverrideImportModalConfig, ColumnOverrideImportOptions, ColumnOverrideMappingEntry, ColumnOverrideMatchedColumn, ColumnOverridePreviewResult, ColumnOverrideSuggestResult, ColumnTypeConfig, ColumnValidator, DiseaseOntologyTerm, ExcelExportOptions, ExcelLaunchClaimRequest, ExcelLaunchClaimResponse, ExcelLaunchCode, ExcelLaunchRequest, FavouriteMetadataOption, FavouriteMetadataOptionCreateRequest, FavouriteMetadataOptionQueryParams, FavouriteMetadataOptionUpdateRequest, GroupedColumnTemplate, GroupedColumnTemplateQueryParams, HumanDisease, MSUniqueVocabularies, MetadataColumn, MetadataColumnAutofillConfig, MetadataColumnCreateRequest, MetadataColumnHistoryChange, MetadataColumnHistoryRecord, MetadataColumnHistoryResponse, MetadataColumnHistorySnapshot, MetadataColumnModifier, MetadataColumnQueryParams, MetadataColumnTemplate, MetadataColumnTemplateCreateRequest, MetadataColumnTemplateQueryParams, MetadataColumnTemplateShare, MetadataColumnTemplateShareCreateRequest, MetadataColumnTemplateShareQueryParams, MetadataColumnTemplateUpdateRequest, MetadataColumnUpdateRequest, MetadataQueryParams, MetadataTable, MetadataTableCreateRequest, MetadataTableQueryParams, MetadataTableQueryResponse, MetadataTableTemplate, MetadataTableTemplateCreateRequest, MetadataTableTemplateQueryParams, MetadataTableTemplateQueryResponse, MetadataTableTemplateSyncRequest, MetadataTableTemplateSyncResponse, MetadataTableTemplateUpdateRequest, MetadataTableUpdateRequest, MetadataValueEditConfig, ModificationParameters, MondoDisease, NCBITaxonomy, OntologyCustomFilter, OntologySuggestParams, OntologySuggestResponse, OntologySuggestion, OntologyTypeConfig, PSIMSOntology, PaginatedResponse, PooledSample, SampleCountConfirmationError, SampleCountValidationRequest, SampleCountValidationResponse, SampleCountValidationResult, SamplePool, SamplePoolCreateRequest, SamplePoolQueryParams, SamplePoolUpdateRequest, Schema, SchemaColumn, SchemaLayer, SchemaQueryParams, SchemaSelectionResult, SchemasByLayer, SdrfColumnConfig, SearchReplaceConfig, Species, SpikedCompound, SubcellularLocation, SyntaxType, SyntheticPeptide, TableCreationData, TemplateSchemaSelectionResult, Tissue, UberonAnatomy, Unimod, UnimodFullData, UnimodSpecification, ValidationResult, ValidationResults, VariationSpec, VariationSpecList, VariationSpecPattern, VariationSpecRange };
|