@noatgnu/cupcake-vanilla 1.0.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noatgnu-cupcake-vanilla.mjs","sources":["../../../projects/cupcake-vanilla/src/lib/models/enums.ts","../../../projects/cupcake-vanilla/src/lib/models/ontology-utils.ts","../../../projects/cupcake-vanilla/src/lib/models/async-task.ts","../../../projects/cupcake-vanilla/src/lib/services/metadata-table.ts","../../../projects/cupcake-vanilla/src/lib/services/metadata-column.ts","../../../projects/cupcake-vanilla/src/lib/services/sample-pool.ts","../../../projects/cupcake-vanilla/src/lib/services/metadata-table-template.ts","../../../projects/cupcake-vanilla/src/lib/services/favourite-metadata-option.ts","../../../projects/cupcake-vanilla/src/lib/services/metadata-column-template.ts","../../../projects/cupcake-vanilla/src/lib/services/metadata-column-template-share.ts","../../../projects/cupcake-vanilla/src/lib/services/metadata-management.ts","../../../projects/cupcake-vanilla/src/lib/services/ontology-search.ts","../../../projects/cupcake-vanilla/src/lib/services/schema.ts","../../../projects/cupcake-vanilla/src/lib/services/sdrf-defaults.ts","../../../projects/cupcake-vanilla/src/lib/services/async-task.ts","../../../projects/cupcake-vanilla/src/lib/services/async-export.ts","../../../projects/cupcake-vanilla/src/lib/services/async-import.ts","../../../projects/cupcake-vanilla/src/lib/services/async-validation.ts","../../../projects/cupcake-vanilla/src/lib/services/chunked-upload.ts","../../../projects/cupcake-vanilla/src/lib/cupcake-vanilla.ts","../../../projects/cupcake-vanilla/src/public-api.ts","../../../projects/cupcake-vanilla/src/noatgnu-cupcake-vanilla.ts"],"sourcesContent":["export enum OntologyType {\r\n SPECIES = 'species',\r\n TISSUE = 'tissue',\r\n HUMAN_DISEASE = 'human_disease',\r\n SUBCELLULAR_LOCATION = 'subcellular_location',\r\n UNIMOD = 'unimod',\r\n NCBI_TAXONOMY = 'ncbi_taxonomy',\r\n MONDO = 'mondo',\r\n UBERON = 'uberon',\r\n CHEBI = 'chebi',\r\n CELL_ONTOLOGY = 'cell_ontology',\r\n MS_UNIQUE_VOCABULARIES = 'ms_unique_vocabularies',\r\n PSI_MS = 'psi_ms'\r\n}\r\n\r\nexport const OntologyTypeLabels: Record<OntologyType, string> = {\r\n [OntologyType.SPECIES]: 'Species',\r\n [OntologyType.TISSUE]: 'Tissue',\r\n [OntologyType.HUMAN_DISEASE]: 'Human Disease',\r\n [OntologyType.SUBCELLULAR_LOCATION]: 'Subcellular Location',\r\n [OntologyType.UNIMOD]: 'Unimod Modifications',\r\n [OntologyType.NCBI_TAXONOMY]: 'NCBI Taxonomy',\r\n [OntologyType.MONDO]: 'MONDO Disease',\r\n [OntologyType.UBERON]: 'UBERON Anatomy',\r\n [OntologyType.CHEBI]: 'ChEBI',\r\n [OntologyType.CELL_ONTOLOGY]: 'Cell Ontology',\r\n [OntologyType.MS_UNIQUE_VOCABULARIES]: 'MS Unique Vocabularies',\r\n [OntologyType.PSI_MS]: 'PSI-MS Controlled Vocabulary'\r\n};\r\n\r\nexport enum TemplatePermissionLevel {\r\n READ = 'read',\r\n WRITE = 'write',\r\n ADMIN = 'admin'\r\n}\r\n\r\nexport const TemplatePermissionLabels: Record<TemplatePermissionLevel, string> = {\r\n [TemplatePermissionLevel.READ]: 'Read Only',\r\n [TemplatePermissionLevel.WRITE]: 'Read & Write',\r\n [TemplatePermissionLevel.ADMIN]: 'Administrator'\r\n};","export interface UnimodSpecification {\r\n accession: string;\r\n name: string;\r\n definition: string;\r\n additional_data: Array<{id: string; description: string}>;\r\n general_properties: Record<string, string>;\r\n specifications: Record<string, UnimodSpecification>;\r\n delta_mono_mass: string;\r\n delta_avge_mass: string;\r\n delta_composition: string;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface UnimodFullData {\r\n accession: string;\r\n name: string;\r\n definition: string;\r\n additional_data: Array<{id: string; description: string}>;\r\n general_properties: Record<string, string>;\r\n specifications: Record<string, UnimodSpecification>;\r\n delta_mono_mass: string;\r\n delta_avge_mass: string;\r\n delta_composition: string;\r\n [key: string]: any;\r\n}\r\n\r\nexport function isUnimodFullData(suggestion: any): suggestion is { full_data: UnimodFullData } {\r\n return suggestion && \r\n suggestion.ontology_type === 'unimod' && \r\n !!suggestion.full_data;\r\n}\r\n\r\nexport class OntologyUtils {\r\n static getUnimodSpecifications(suggestion: any): (UnimodSpecification & { specNumber: string })[] {\r\n if (!isUnimodFullData(suggestion)) return [];\r\n \r\n return Object.entries(suggestion.full_data.specifications).map(([specNum, spec]) => ({\r\n ...spec,\r\n specNumber: specNum\r\n }));\r\n }\r\n\r\n static getActiveUnimodSpecifications(suggestion: any): (UnimodSpecification & { specNumber: string })[] {\r\n return this.getUnimodSpecifications(suggestion).filter(spec => !spec['hidden']);\r\n }\r\n\r\n static formatUnimodName(data: UnimodFullData): string {\r\n return `${data.name} (${data.accession})`;\r\n }\r\n}","// Task status and type definitions\r\nexport type TaskStatus = 'QUEUED' | 'STARTED' | 'SUCCESS' | 'FAILURE' | 'CANCELLED';\r\n\r\nexport type TaskType = \r\n | 'EXPORT_EXCEL' \r\n | 'EXPORT_SDRF' \r\n | 'IMPORT_SDRF' \r\n | 'IMPORT_EXCEL'\r\n | 'EXPORT_MULTIPLE_SDRF'\r\n | 'EXPORT_MULTIPLE_EXCEL'\r\n | 'VALIDATE_TABLE';\r\n\r\nexport interface AsyncTaskStatus {\r\n id: string;\r\n taskType: TaskType;\r\n status: TaskStatus;\r\n user: number;\r\n userUsername?: string;\r\n metadataTable?: number;\r\n metadataTableName?: string;\r\n taskTypeDisplay?: string;\r\n statusDisplay?: string;\r\n parameters?: any;\r\n result?: any;\r\n errorMessage?: string;\r\n traceback?: string;\r\n createdAt: string;\r\n startedAt?: string;\r\n completedAt?: string;\r\n rqJobId?: string;\r\n queueName?: string;\r\n progressCurrent?: number;\r\n progressTotal?: number;\r\n progressDescription?: string;\r\n duration?: number;\r\n progressPercentage?: number;\r\n}\r\n\r\nexport interface TaskListItem {\r\n id: string;\r\n taskType: TaskType;\r\n taskTypeDisplay: string;\r\n status: TaskStatus;\r\n statusDisplay: string;\r\n user: number;\r\n userUsername: string;\r\n metadataTable: number | null;\r\n metadataTableName: string | null;\r\n progressPercentage: number;\r\n progressDescription: string;\r\n createdAt: string;\r\n startedAt: string | null;\r\n completedAt: string | null;\r\n duration: number | null;\r\n errorMessage: string | null;\r\n}\r\n\r\nexport interface TaskResult {\r\n id: number;\r\n task: string;\r\n file?: string;\r\n fileName?: string;\r\n contentType?: string;\r\n fileSize?: number;\r\n expiresAt: string;\r\n downloadCount?: number;\r\n lastDownloadedAt?: string;\r\n createdAt: string;\r\n}\r\n\r\n// Async Task Request/Response Interfaces\r\nexport interface MetadataExportRequest {\r\n metadataTableId: number;\r\n includePools?: boolean;\r\n metadataColumnIds?: number[];\r\n sampleNumber?: number;\r\n exportFormat?: string;\r\n labGroupIds?: number[];\r\n}\r\n\r\nexport interface BulkExportRequest {\r\n metadataTableIds: number[];\r\n includePools?: boolean;\r\n validateSdrf?: boolean;\r\n}\r\n\r\nexport interface BulkExcelExportRequest extends BulkExportRequest {\r\n metadataColumnIds?: number[];\r\n labGroupIds?: number[];\r\n}\r\n\r\nexport interface MetadataImportRequest {\r\n metadataTableId: number;\r\n file: File;\r\n replaceExisting?: boolean;\r\n validateOntologies?: boolean;\r\n}\r\n\r\nexport interface MetadataValidationRequest {\r\n metadataTableId: number;\r\n validateSdrfFormat?: boolean;\r\n includePools?: boolean;\r\n}\r\n\r\nexport interface MetadataValidationConfig {\r\n metadataTableId: number;\r\n metadataTableName: string;\r\n}\r\n\r\nexport interface AsyncTaskCreateResponse {\r\n taskId: string;\r\n message: string;\r\n}\r\n\r\nexport interface DownloadUrlResponse {\r\n downloadUrl: string;\r\n filename: string;\r\n contentType: string;\r\n fileSize: number;\r\n expiresAt: string;\r\n expiresInHours: number;\r\n}\r\n\r\n// Query parameters for async tasks\r\nexport interface AsyncTaskQueryParams {\r\n taskType?: string;\r\n status?: string;\r\n metadataTable?: number;\r\n search?: string;\r\n limit?: number;\r\n offset?: number;\r\n ordering?: string;\r\n}\r\n\r\n// Helper constants\r\nexport const TASK_TYPE_LABELS: Record<TaskType, string> = {\r\n 'EXPORT_EXCEL': 'Export Excel Template',\r\n 'EXPORT_SDRF': 'Export SDRF File',\r\n 'IMPORT_SDRF': 'Import SDRF File',\r\n 'IMPORT_EXCEL': 'Import Excel File',\r\n 'EXPORT_MULTIPLE_SDRF': 'Export Multiple SDRF Files',\r\n 'EXPORT_MULTIPLE_EXCEL': 'Export Multiple Excel Templates',\r\n 'VALIDATE_TABLE': 'Validate Metadata Table',\r\n};\r\n\r\nexport const TASK_STATUS_LABELS: Record<TaskStatus, string> = {\r\n 'QUEUED': 'Queued',\r\n 'STARTED': 'In Progress',\r\n 'SUCCESS': 'Completed',\r\n 'FAILURE': 'Failed',\r\n 'CANCELLED': 'Cancelled',\r\n};\r\n\r\nexport const TASK_STATUS_COLORS: Record<TaskStatus, string> = {\r\n 'QUEUED': 'secondary',\r\n 'STARTED': 'primary',\r\n 'SUCCESS': 'success',\r\n 'FAILURE': 'danger',\r\n 'CANCELLED': 'warning',\r\n};","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n MetadataTable,\r\n MetadataTableCreateRequest,\r\n MetadataTableUpdateRequest,\r\n MetadataTableQueryResponse,\r\n MetadataColumn,\r\n PaginatedResponse\r\n} from '../models';\r\n\r\nexport interface MetadataTableQueryParams {\r\n search?: string;\r\n ownerId?: number;\r\n labGroupId?: number;\r\n isPublished?: boolean;\r\n isLocked?: boolean;\r\n showShared?: boolean;\r\n limit?: number;\r\n offset?: number;\r\n ordering?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MetadataTableService extends BaseApiService {\r\n\r\n /**\r\n * Get all metadata tables with optional filtering\r\n */\r\n getMetadataTables(params?: MetadataTableQueryParams): Observable<MetadataTableQueryResponse> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<MetadataTableQueryResponse>(`${this.apiUrl}/metadata-tables/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get a single metadata table by ID\r\n */\r\n getMetadataTable(id: number): Observable<MetadataTable> {\r\n return this.get<MetadataTable>(`${this.apiUrl}/metadata-tables/${id}/`);\r\n }\r\n\r\n /**\r\n * Create a new metadata table\r\n */\r\n createMetadataTable(table: MetadataTableCreateRequest): Observable<MetadataTable> {\r\n return this.post<MetadataTable>(`${this.apiUrl}/metadata-tables/`, table);\r\n }\r\n\r\n /**\r\n * Update an existing metadata table\r\n */\r\n updateMetadataTable(id: number, table: MetadataTableUpdateRequest): Observable<MetadataTable> {\r\n return this.put<MetadataTable>(`${this.apiUrl}/metadata-tables/${id}/`, table);\r\n }\r\n\r\n /**\r\n * Partially update a metadata table\r\n */\r\n patchMetadataTable(id: number, table: Partial<MetadataTableUpdateRequest>): Observable<MetadataTable> {\r\n return this.patch<MetadataTable>(`${this.apiUrl}/metadata-tables/${id}/`, table);\r\n }\r\n\r\n /**\r\n * Delete a metadata table\r\n */\r\n deleteMetadataTable(id: number): Observable<void> {\r\n return this.delete<void>(`${this.apiUrl}/metadata-tables/${id}/`);\r\n }\r\n\r\n /**\r\n * Add a column to the metadata table\r\n */\r\n addColumn(id: number, columnData: any, position?: number): Observable<{ message: string; column: MetadataColumn }> {\r\n return this.post<{ message: string; column: MetadataColumn }>(`${this.apiUrl}/metadata-tables/${id}/add_column/`, {\r\n column_data: columnData,\r\n position\r\n });\r\n }\r\n\r\n /**\r\n * Add a column with automatic reordering\r\n */\r\n addColumnWithAutoReorder(id: number, request: { columnData: any }): Observable<{ message: string; column: MetadataColumn; reordered: boolean; schemaIdsUsed: number[] }> {\r\n return this.post<{ message: string; column: MetadataColumn; reordered: boolean; schemaIdsUsed: number[] }>(`${this.apiUrl}/metadata-tables/${id}/add_column_with_auto_reorder/`, request);\r\n }\r\n\r\n /**\r\n * Remove a column from the metadata table\r\n */\r\n removeColumn(id: number, columnId: number): Observable<{ message: string }> {\r\n return this.post<{ message: string }>(`${this.apiUrl}/metadata-tables/${id}/remove_column/`, {\r\n column_id: columnId\r\n });\r\n }\r\n\r\n /**\r\n * Reorder a column in the metadata table\r\n */\r\n reorderColumn(id: number, columnId: number, newPosition: number): Observable<{ message: string }> {\r\n return this.post<{ message: string }>(`${this.apiUrl}/metadata-tables/${id}/reorder_column/`, {\r\n column_id: columnId,\r\n new_position: newPosition\r\n });\r\n }\r\n\r\n /**\r\n * Normalize column positions\r\n */\r\n normalizeColumnPositions(id: number): Observable<{ message: string }> {\r\n return this.post<{ message: string }>(`${this.apiUrl}/metadata-tables/${id}/normalize_column_positions/`, {});\r\n }\r\n\r\n /**\r\n * Get all tables (admin only)\r\n */\r\n getAdminAllTables(): Observable<MetadataTable[]> {\r\n return this.get<MetadataTable[]>(`${this.apiUrl}/metadata-tables/admin_all_tables/`);\r\n }\r\n\r\n /**\r\n * Search metadata tables\r\n */\r\n searchMetadataTables(query: string): Observable<MetadataTableQueryResponse> {\r\n return this.getMetadataTables({ search: query });\r\n }\r\n\r\n /**\r\n * Get metadata tables by owner\r\n */\r\n getMetadataTablesByOwner(ownerId: number): Observable<MetadataTableQueryResponse> {\r\n return this.getMetadataTables({ ownerId: ownerId });\r\n }\r\n\r\n /**\r\n * Get shared metadata tables\r\n */\r\n getSharedMetadataTables(): Observable<MetadataTableQueryResponse> {\r\n return this.getMetadataTables({ showShared: true });\r\n }\r\n\r\n /**\r\n * Combine columns column-wise\r\n */\r\n combineColumnwise(request: { columnIds: number[] }): Observable<{ message: string; combinedColumn: any }> {\r\n return this.post<{ message: string; combinedColumn: any }>(`${this.apiUrl}/metadata-tables/combine_columnwise/`, request);\r\n }\r\n\r\n /**\r\n * Combine columns row-wise\r\n */\r\n combineRowwise(request: { columnIds: number[] }): Observable<{ message: string; combinedColumn: any }> {\r\n return this.post<{ message: string; combinedColumn: any }>(`${this.apiUrl}/metadata-tables/combine_rowwise/`, request);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n MetadataColumn,\r\n MetadataColumnCreateRequest,\r\n MetadataColumnUpdateRequest,\r\n PaginatedResponse,\r\n OntologySuggestion\r\n} from '../models';\r\n\r\nexport interface MetadataColumnQueryParams {\r\n search?: string;\r\n metadataTableId?: number;\r\n type?: string;\r\n name?: string;\r\n hidden?: boolean;\r\n mandatory?: boolean;\r\n limit?: number;\r\n offset?: number;\r\n ordering?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MetadataColumnService extends BaseApiService {\r\n\r\n /**\r\n * Get all metadata columns with optional filtering\r\n */\r\n getMetadataColumns(params?: MetadataColumnQueryParams): Observable<PaginatedResponse<MetadataColumn>> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<PaginatedResponse<MetadataColumn>>(`${this.apiUrl}/metadata-columns/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get a single metadata column by ID\r\n */\r\n getMetadataColumn(id: number): Observable<MetadataColumn> {\r\n return this.get<MetadataColumn>(`${this.apiUrl}/metadata-columns/${id}/`);\r\n }\r\n\r\n /**\r\n * Create a new metadata column\r\n */\r\n createMetadataColumn(column: MetadataColumnCreateRequest): Observable<MetadataColumn> {\r\n return this.post<MetadataColumn>(`${this.apiUrl}/metadata-columns/`, column);\r\n }\r\n\r\n /**\r\n * Update an existing metadata column\r\n */\r\n updateMetadataColumn(id: number, column: MetadataColumnUpdateRequest): Observable<MetadataColumn> {\r\n return this.put<MetadataColumn>(`${this.apiUrl}/metadata-columns/${id}/`, column);\r\n }\r\n\r\n /**\r\n * Partially update a metadata column\r\n */\r\n patchMetadataColumn(id: number, column: Partial<MetadataColumnUpdateRequest>): Observable<MetadataColumn> {\r\n return this.patch<MetadataColumn>(`${this.apiUrl}/metadata-columns/${id}/`, column);\r\n }\r\n\r\n /**\r\n * Delete a metadata column\r\n */\r\n deleteMetadataColumn(id: number): Observable<void> {\r\n return this.delete<void>(`${this.apiUrl}/metadata-columns/${id}/`);\r\n }\r\n\r\n /**\r\n * Bulk create metadata columns\r\n */\r\n bulkCreate(request: { columns: MetadataColumnCreateRequest[] }): Observable<MetadataColumn[]> {\r\n return this.post<MetadataColumn[]>(`${this.apiUrl}/metadata-columns/bulk_create/`, request);\r\n }\r\n\r\n /**\r\n * Validate SDRF data\r\n */\r\n validateSdrfData(request: { metadataIds: number[]; sampleNumber?: number }): Observable<{ valid: boolean; errors: any[]; sampleCount: number }> {\r\n return this.post<{ valid: boolean; errors: any[]; sampleCount: number }>(`${this.apiUrl}/metadata-columns/validate_sdrf_data/`, request);\r\n }\r\n\r\n /**\r\n * Get ontology suggestions for a column\r\n */\r\n getOntologySuggestions(params: { \r\n columnId: number; \r\n search?: string; \r\n limit?: number; \r\n searchType?: 'icontains' | 'istartswith' | 'exact';\r\n }): Observable<{\r\n ontologyType: string;\r\n suggestions: OntologySuggestion[];\r\n searchTerm: string;\r\n searchType: string;\r\n limit: number;\r\n count: number;\r\n customFilters: any;\r\n hasMore: boolean;\r\n }> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get(`${this.apiUrl}/metadata-columns/ontology_suggestions/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Validate value against column's ontology\r\n */\r\n validateValue(id: number, request: { value: string }): Observable<{ valid: boolean; value: string; ontologyType: string; suggestions?: any[] }> {\r\n return this.post(`${this.apiUrl}/metadata-columns/${id}/validate_value/`, request);\r\n }\r\n\r\n /**\r\n * Update column value with automatic modifier calculation\r\n */\r\n updateColumnValue(id: number, request: { \r\n value: string; \r\n sampleIndices?: number[]; \r\n valueType?: 'default' | 'sample_specific' | 'replace_all';\r\n }): Observable<{\r\n message: string;\r\n column: MetadataColumn;\r\n changes: any;\r\n valueType: string;\r\n }> {\r\n return this.post(`${this.apiUrl}/metadata-columns/${id}/update_column_value/`, request);\r\n }\r\n\r\n /**\r\n * Apply automatic ontology mapping to a column\r\n */\r\n applyOntologyMapping(id: number): Observable<{ applied: boolean; ontologyType: string; message: string }> {\r\n return this.post(`${this.apiUrl}/metadata-columns/${id}/apply_ontology_mapping/`, {});\r\n }\r\n\r\n /**\r\n * Detect ontology type for given column name and type\r\n */\r\n detectOntologyType(params: { name: string; type: string }): Observable<{ columnName: string; columnType: string; detectedOntologyType: string }> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get(`${this.apiUrl}/metadata-columns/detect_ontology_type/`, { params: httpParams });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n SamplePool,\r\n SamplePoolCreateRequest,\r\n SamplePoolUpdateRequest,\r\n MetadataColumn,\r\n PaginatedResponse\r\n} from '../models';\r\n\r\nexport interface SamplePoolQueryParams {\r\n search?: string;\r\n metadataTable?: number;\r\n isReference?: boolean;\r\n limit?: number;\r\n offset?: number;\r\n ordering?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SamplePoolService extends BaseApiService {\r\n\r\n /**\r\n * Get all sample pools with optional filtering\r\n */\r\n getSamplePools(params?: SamplePoolQueryParams): Observable<PaginatedResponse<SamplePool>> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<PaginatedResponse<SamplePool>>(`${this.apiUrl}/sample-pools/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get a single sample pool by ID\r\n */\r\n getSamplePool(id: number): Observable<SamplePool> {\r\n return this.get<SamplePool>(`${this.apiUrl}/sample-pools/${id}/`);\r\n }\r\n\r\n /**\r\n * Create a new sample pool\r\n */\r\n createSamplePool(pool: SamplePoolCreateRequest): Observable<SamplePool> {\r\n return this.post<SamplePool>(`${this.apiUrl}/sample-pools/`, pool);\r\n }\r\n\r\n /**\r\n * Update an existing sample pool\r\n */\r\n updateSamplePool(id: number, pool: SamplePoolUpdateRequest): Observable<SamplePool> {\r\n return this.put<SamplePool>(`${this.apiUrl}/sample-pools/${id}/`, pool);\r\n }\r\n\r\n /**\r\n * Partially update a sample pool\r\n */\r\n patchSamplePool(id: number, pool: Partial<SamplePoolUpdateRequest>): Observable<SamplePool> {\r\n return this.patch<SamplePool>(`${this.apiUrl}/sample-pools/${id}/`, pool);\r\n }\r\n\r\n /**\r\n * Delete a sample pool\r\n */\r\n deleteSamplePool(id: number): Observable<void> {\r\n return this.delete<void>(`${this.apiUrl}/sample-pools/${id}/`);\r\n }\r\n\r\n /**\r\n * Get metadata columns associated with this pool\r\n */\r\n getMetadataColumns(id: number): Observable<MetadataColumn[]> {\r\n return this.get<MetadataColumn[]>(`${this.apiUrl}/sample-pools/${id}/metadata_columns/`);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n MetadataTableTemplate,\r\n MetadataTableTemplateCreateRequest,\r\n MetadataTableTemplateUpdateRequest,\r\n MetadataTableTemplateQueryResponse,\r\n MetadataTable,\r\n MetadataColumn,\r\n Schema,\r\n PaginatedResponse\r\n} from '../models';\r\n\r\nexport interface MetadataTableTemplateQueryParams {\r\n search?: string;\r\n ownerId?: number;\r\n labGroupId?: number;\r\n visibility?: string;\r\n isDefault?: boolean;\r\n limit?: number;\r\n offset?: number;\r\n ordering?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MetadataTableTemplateService extends BaseApiService {\r\n\r\n /**\r\n * Get all metadata table templates with optional filtering\r\n */\r\n getMetadataTableTemplates(params?: MetadataTableTemplateQueryParams): Observable<MetadataTableTemplateQueryResponse> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<MetadataTableTemplateQueryResponse>(`${this.apiUrl}/metadata-table-templates/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get a single metadata table template by ID\r\n */\r\n getMetadataTableTemplate(id: number): Observable<MetadataTableTemplate> {\r\n return this.get<MetadataTableTemplate>(`${this.apiUrl}/metadata-table-templates/${id}/`);\r\n }\r\n\r\n /**\r\n * Create a new metadata table template\r\n */\r\n createMetadataTableTemplate(template: MetadataTableTemplateCreateRequest): Observable<MetadataTableTemplate> {\r\n return this.post<MetadataTableTemplate>(`${this.apiUrl}/metadata-table-templates/`, template);\r\n }\r\n\r\n /**\r\n * Update an existing metadata table template\r\n */\r\n updateMetadataTableTemplate(id: number, template: MetadataTableTemplateUpdateRequest): Observable<MetadataTableTemplate> {\r\n return this.put<MetadataTableTemplate>(`${this.apiUrl}/metadata-table-templates/${id}/`, template);\r\n }\r\n\r\n /**\r\n * Partially update a metadata table template\r\n */\r\n patchMetadataTableTemplate(id: number, template: Partial<MetadataTableTemplateUpdateRequest>): Observable<MetadataTableTemplate> {\r\n return this.patch<MetadataTableTemplate>(`${this.apiUrl}/metadata-table-templates/${id}/`, template);\r\n }\r\n\r\n /**\r\n * Delete a metadata table template\r\n */\r\n deleteMetadataTableTemplate(id: number): Observable<void> {\r\n return this.delete<void>(`${this.apiUrl}/metadata-table-templates/${id}/`);\r\n }\r\n\r\n /**\r\n * Add a column to the template\r\n */\r\n addColumn(id: number, request: { column_data: any; position?: number }): Observable<{ message: string; column: MetadataColumn }> {\r\n return this.post<{ message: string; column: MetadataColumn }>(`${this.apiUrl}/metadata-table-templates/${id}/add_column/`, request);\r\n }\r\n\r\n /**\r\n * Remove a column from the template\r\n */\r\n removeColumn(id: number, request: { column_id: number }): Observable<{ message: string }> {\r\n return this.post<{ message: string }>(`${this.apiUrl}/metadata-table-templates/${id}/remove_column/`, request);\r\n }\r\n\r\n /**\r\n * Reorder a column within the template\r\n */\r\n reorderColumn(id: number, request: { column_id: number; new_position: number }): Observable<{ message: string }> {\r\n return this.post<{ message: string }>(`${this.apiUrl}/metadata-table-templates/${id}/reorder_column/`, request);\r\n }\r\n\r\n /**\r\n * Add a column with automatic reordering\r\n */\r\n addColumnWithAutoReorder(id: number, request: { columnData: any }): Observable<{ message: string; column: MetadataColumn; reordered: boolean; schemaIdsUsed: number[] }> {\r\n return this.post<{ message: string; column: MetadataColumn; reordered: boolean; schemaIdsUsed: number[] }>(`${this.apiUrl}/metadata-table-templates/${id}/add_column_with_auto_reorder/`, request);\r\n }\r\n\r\n /**\r\n * Duplicate a column within the template\r\n */\r\n duplicateColumn(id: number, request: { column_id: number }): Observable<{ message: string; duplicated_column: MetadataColumn }> {\r\n return this.post<{ message: string; duplicated_column: MetadataColumn }>(`${this.apiUrl}/metadata-table-templates/${id}/duplicate_column/`, request);\r\n }\r\n\r\n /**\r\n * Normalize column positions\r\n */\r\n normalizeColumnPositions(id: number): Observable<{ message: string }> {\r\n return this.post<{ message: string }>(`${this.apiUrl}/metadata-table-templates/${id}/normalize_column_positions/`, {});\r\n }\r\n\r\n /**\r\n * Apply this template to a metadata table\r\n */\r\n applyToMetadataTable(id: number, request: { metadata_table_id: number }): Observable<{ message: string; applied_columns: MetadataColumn[] }> {\r\n return this.post<{ message: string; applied_columns: MetadataColumn[] }>(`${this.apiUrl}/metadata-table-templates/${id}/apply_to_metadata_table/`, request);\r\n }\r\n\r\n /**\r\n * Update field mask for template\r\n */\r\n updateFieldMask(id: number, request: { field_mask: any }): Observable<{ message: string; field_mask: any }> {\r\n return this.post<{ message: string; field_mask: any }>(`${this.apiUrl}/metadata-table-templates/${id}/update_field_mask/`, request);\r\n }\r\n\r\n /**\r\n * Get field mask for template\r\n */\r\n getFieldMask(id: number): Observable<{ field_mask: any }> {\r\n return this.get<{ field_mask: any }>(`${this.apiUrl}/metadata-table-templates/${id}/get_field_mask/`);\r\n }\r\n\r\n /**\r\n * Get columns with field masks\r\n */\r\n getColumnsWithFieldMasks(id: number): Observable<{ columns: any[] }> {\r\n return this.get<{ columns: any[] }>(`${this.apiUrl}/metadata-table-templates/${id}/get_columns_with_field_masks/`);\r\n }\r\n\r\n /**\r\n * Get available schemas for creating templates\r\n */\r\n getAvailableSchemas(): Observable<Schema[]> {\r\n return this.get<Schema[]>(`${this.apiUrl}/metadata-table-templates/available_schemas/`);\r\n }\r\n\r\n /**\r\n * Create a new template from schema definitions\r\n */\r\n createFromSchema(request: { schemaIds: number[]; name: string; description?: string }): Observable<{ message: string; template: MetadataTableTemplate }> {\r\n return this.post<{ message: string; template: MetadataTableTemplate }>(`${this.apiUrl}/metadata-table-templates/create_from_schema/`, request);\r\n }\r\n\r\n /**\r\n * Create a new metadata table from an existing template\r\n */\r\n createTableFromTemplate(request: { templateId: number; name: string; description?: string; sampleCount: number }): Observable<{ message: string; table: MetadataTable }> {\r\n return this.post<{ message: string; table: MetadataTable }>(`${this.apiUrl}/metadata-table-templates/create_table_from_template/`, request);\r\n }\r\n\r\n /**\r\n * Create a new metadata table directly from schema definitions\r\n */\r\n createTableFromSchemas(request: { schemaIds: number[]; name: string; description?: string; sampleCount: number }): Observable<{ message: string; table: MetadataTable }> {\r\n return this.post<{ message: string; table: MetadataTable }>(`${this.apiUrl}/metadata-table-templates/create_table_from_schemas/`, request);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n FavouriteMetadataOption,\r\n FavouriteMetadataOptionCreateRequest,\r\n FavouriteMetadataOptionUpdateRequest,\r\n PaginatedResponse\r\n} from '../models';\r\n\r\nexport interface FavouriteMetadataOptionQueryParams {\r\n search?: string;\r\n type?: string;\r\n userId?: number;\r\n labGroupId?: number;\r\n isGlobal?: boolean;\r\n limit?: number;\r\n offset?: number;\r\n ordering?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FavouriteMetadataOptionService extends BaseApiService {\r\n\r\n /**\r\n * Get all favourite metadata options with optional filtering\r\n */\r\n getFavouriteMetadataOptions(params?: FavouriteMetadataOptionQueryParams): Observable<PaginatedResponse<FavouriteMetadataOption>> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<PaginatedResponse<FavouriteMetadataOption>>(`${this.apiUrl}/favourite-metadata-options/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get a single favourite metadata option by ID\r\n */\r\n getFavouriteMetadataOption(id: number): Observable<FavouriteMetadataOption> {\r\n return this.get<FavouriteMetadataOption>(`${this.apiUrl}/favourite-metadata-options/${id}/`);\r\n }\r\n\r\n /**\r\n * Create a new favourite metadata option\r\n */\r\n createFavouriteMetadataOption(option: FavouriteMetadataOptionCreateRequest): Observable<FavouriteMetadataOption> {\r\n return this.post<FavouriteMetadataOption>(`${this.apiUrl}/favourite-metadata-options/`, option);\r\n }\r\n\r\n /**\r\n * Update an existing favourite metadata option\r\n */\r\n updateFavouriteMetadataOption(id: number, option: FavouriteMetadataOptionUpdateRequest): Observable<FavouriteMetadataOption> {\r\n return this.put<FavouriteMetadataOption>(`${this.apiUrl}/favourite-metadata-options/${id}/`, option);\r\n }\r\n\r\n /**\r\n * Partially update a favourite metadata option\r\n */\r\n patchFavouriteMetadataOption(id: number, option: Partial<FavouriteMetadataOptionUpdateRequest>): Observable<FavouriteMetadataOption> {\r\n return this.patch<FavouriteMetadataOption>(`${this.apiUrl}/favourite-metadata-options/${id}/`, option);\r\n }\r\n\r\n /**\r\n * Delete a favourite metadata option\r\n */\r\n deleteFavouriteMetadataOption(id: number): Observable<void> {\r\n return this.delete<void>(`${this.apiUrl}/favourite-metadata-options/${id}/`);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n MetadataColumnTemplate,\r\n MetadataColumnTemplateCreateRequest,\r\n MetadataColumnTemplateUpdateRequest,\r\n MetadataColumn,\r\n OntologySuggestion,\r\n PaginatedResponse\r\n} from '../models';\r\n\r\nexport interface MetadataColumnTemplateQueryParams {\r\n search?: string;\r\n type?: string;\r\n ontologyType?: string;\r\n isRequired?: boolean;\r\n isPublic?: boolean;\r\n ownerId?: number;\r\n labGroupId?: number;\r\n visibility?: string;\r\n isActive?: boolean;\r\n limit?: number;\r\n offset?: number;\r\n ordering?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MetadataColumnTemplateService extends BaseApiService {\r\n\r\n /**\r\n * Get all metadata column templates with optional filtering\r\n */\r\n getMetadataColumnTemplates(params?: MetadataColumnTemplateQueryParams): Observable<PaginatedResponse<MetadataColumnTemplate>> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<PaginatedResponse<MetadataColumnTemplate>>(`${this.apiUrl}/metadata-column-templates/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get a single metadata column template by ID\r\n */\r\n getMetadataColumnTemplate(id: number): Observable<MetadataColumnTemplate> {\r\n return this.get<MetadataColumnTemplate>(`${this.apiUrl}/metadata-column-templates/${id}/`);\r\n }\r\n\r\n /**\r\n * Create a new metadata column template\r\n */\r\n createMetadataColumnTemplate(template: MetadataColumnTemplateCreateRequest): Observable<MetadataColumnTemplate> {\r\n return this.post<MetadataColumnTemplate>(`${this.apiUrl}/metadata-column-templates/`, template);\r\n }\r\n\r\n /**\r\n * Update an existing metadata column template\r\n */\r\n updateMetadataColumnTemplate(id: number, template: MetadataColumnTemplateUpdateRequest): Observable<MetadataColumnTemplate> {\r\n return this.put<MetadataColumnTemplate>(`${this.apiUrl}/metadata-column-templates/${id}/`, template);\r\n }\r\n\r\n /**\r\n * Partially update a metadata column template\r\n */\r\n patchMetadataColumnTemplate(id: number, template: Partial<MetadataColumnTemplateUpdateRequest>): Observable<MetadataColumnTemplate> {\r\n return this.patch<MetadataColumnTemplate>(`${this.apiUrl}/metadata-column-templates/${id}/`, template);\r\n }\r\n\r\n /**\r\n * Delete a metadata column template\r\n */\r\n deleteMetadataColumnTemplate(id: number): Observable<void> {\r\n return this.delete<void>(`${this.apiUrl}/metadata-column-templates/${id}/`);\r\n }\r\n\r\n /**\r\n * Create a MetadataColumn from this template\r\n */\r\n createMetadataColumn(id: number, request: { metadataTableId: number; columnPosition?: number }): Observable<{ message: string; column: MetadataColumn }> {\r\n return this.post<{ message: string; column: MetadataColumn }>(`${this.apiUrl}/metadata-column-templates/${id}/create_metadata_column/`, request);\r\n }\r\n\r\n /**\r\n * Share this template with another user\r\n */\r\n shareTemplate(id: number, request: { userId: number; canEdit?: boolean }): Observable<{ message: string }> {\r\n return this.post<{ message: string }>(`${this.apiUrl}/metadata-column-templates/${id}/share_template/`, request);\r\n }\r\n\r\n /**\r\n * Remove template sharing for a user\r\n */\r\n unshareTemplate(id: number, request: { userId: number }): Observable<{ message: string }> {\r\n return this.delete<{ message: string }>(`${this.apiUrl}/metadata-column-templates/${id}/unshare_template/`, { body: request });\r\n }\r\n\r\n /**\r\n * Get templates created by the current user\r\n */\r\n getMyTemplates(): Observable<MetadataColumnTemplate[]> {\r\n return this.get<MetadataColumnTemplate[]>(`${this.apiUrl}/metadata-column-templates/my_templates/`);\r\n }\r\n\r\n /**\r\n * Get most popular public templates\r\n */\r\n getPopularTemplates(): Observable<MetadataColumnTemplate[]> {\r\n return this.get<MetadataColumnTemplate[]>(`${this.apiUrl}/metadata-column-templates/popular_templates/`);\r\n }\r\n\r\n /**\r\n * Get ontology suggestions for this column template\r\n */\r\n getOntologySuggestions(params?: { \r\n search?: string; \r\n templateId?: number;\r\n limit?: number;\r\n searchType?: 'icontains' | 'istartswith' | 'exact';\r\n }): Observable<{\r\n ontologyType: string;\r\n suggestions: OntologySuggestion[];\r\n searchTerm: string;\r\n searchType: string;\r\n limit: number;\r\n count: number;\r\n customFilters: any;\r\n hasMore: boolean;\r\n }> {\r\n const httpParams = this.buildHttpParams({\r\n template_id: params?.templateId,\r\n search: params?.search,\r\n limit: params?.limit,\r\n search_type: params?.searchType\r\n });\r\n return this.get<{\r\n ontologyType: string;\r\n suggestions: OntologySuggestion[];\r\n searchTerm: string;\r\n searchType: string;\r\n limit: number;\r\n count: number;\r\n customFilters: any;\r\n hasMore: boolean;\r\n }>(`${this.apiUrl}/metadata-column-templates/ontology_suggestions/`, { params: httpParams });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n MetadataColumnTemplateShare,\r\n MetadataColumnTemplateShareCreateRequest,\r\n PaginatedResponse\r\n} from '../models';\r\n\r\nexport interface MetadataColumnTemplateShareQueryParams {\r\n template?: number;\r\n sharedWith?: number;\r\n sharedBy?: number;\r\n canEdit?: boolean;\r\n limit?: number;\r\n offset?: number;\r\n ordering?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MetadataColumnTemplateShareService extends BaseApiService {\r\n\r\n /**\r\n * Get all template shares with optional filtering\r\n */\r\n getMetadataColumnTemplateShares(params?: MetadataColumnTemplateShareQueryParams): Observable<PaginatedResponse<MetadataColumnTemplateShare>> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<PaginatedResponse<MetadataColumnTemplateShare>>(`${this.apiUrl}/metadata-column-template-shares/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get a single template share by ID\r\n */\r\n getMetadataColumnTemplateShare(id: number): Observable<MetadataColumnTemplateShare> {\r\n return this.get<MetadataColumnTemplateShare>(`${this.apiUrl}/metadata-column-template-shares/${id}/`);\r\n }\r\n\r\n /**\r\n * Create a new template share\r\n */\r\n createMetadataColumnTemplateShare(share: MetadataColumnTemplateShareCreateRequest): Observable<MetadataColumnTemplateShare> {\r\n return this.post<MetadataColumnTemplateShare>(`${this.apiUrl}/metadata-column-template-shares/`, share);\r\n }\r\n\r\n /**\r\n * Update an existing template share\r\n */\r\n updateMetadataColumnTemplateShare(id: number, share: { canEdit?: boolean }): Observable<MetadataColumnTemplateShare> {\r\n return this.put<MetadataColumnTemplateShare>(`${this.apiUrl}/metadata-column-template-shares/${id}/`, share);\r\n }\r\n\r\n /**\r\n * Delete a template share\r\n */\r\n deleteMetadataColumnTemplateShare(id: number): Observable<void> {\r\n return this.delete<void>(`${this.apiUrl}/metadata-column-template-shares/${id}/`);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MetadataManagementService extends BaseApiService {\r\n\r\n /**\r\n * Export metadata as Excel template (matching original CUPCAKE)\r\n */\r\n exportExcelTemplate(request: any): Observable<Blob> {\r\n return this.post(`${this.apiUrl}/metadata-management/export_excel_template/`, request, { responseType: 'blob' });\r\n }\r\n\r\n /**\r\n * Import metadata from SDRF file with intelligent column matching and schema organization\r\n */\r\n importSdrfFile(file: File, additionalData?: any): Observable<any> {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n if (additionalData) {\r\n Object.keys(additionalData).forEach(key => {\r\n formData.append(key, additionalData[key]);\r\n });\r\n }\r\n return this.post<any>(`${this.apiUrl}/metadata-management/import_sdrf_file/`, formData);\r\n }\r\n\r\n /**\r\n * Import metadata from Excel file (matching original CUPCAKE)\r\n */\r\n importExcelFile(file: File, additionalData?: any): Observable<any> {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n if (additionalData) {\r\n Object.keys(additionalData).forEach(key => {\r\n formData.append(key, additionalData[key]);\r\n });\r\n }\r\n return this.post<any>(`${this.apiUrl}/metadata-management/import_excel_file/`, formData);\r\n }\r\n\r\n /**\r\n * Collect metadata from metadata table\r\n */\r\n collectMetadata(params: any): Observable<any> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<any>(`${this.apiUrl}/metadata-management/collect_metadata/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Export metadata as SDRF file (matching original CUPCAKE)\r\n */\r\n exportSdrfFile(request: any): Observable<Blob> {\r\n return this.post(`${this.apiUrl}/metadata-management/export_sdrf_file/`, request, { responseType: 'blob' });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n OntologySuggestion\r\n} from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class OntologySearchService extends BaseApiService {\r\n\r\n /**\r\n * Get ontology suggestions across all sources for SDRF validation\r\n */\r\n suggest(params?: { query?: string; sources?: string[] }): Observable<OntologySuggestion[]> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<OntologySuggestion[]>(`${this.apiUrl}/ontology-search/suggest/`, { params: httpParams });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n Schema,\r\n PaginatedResponse\r\n} from '../models';\r\n\r\nexport interface SchemaQueryParams {\r\n search?: string;\r\n category?: string;\r\n isActive?: boolean;\r\n limit?: number;\r\n offset?: number;\r\n ordering?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SchemaService extends BaseApiService {\r\n\r\n /**\r\n * Get all schemas with optional filtering\r\n */\r\n getSchemas(params?: SchemaQueryParams): Observable<PaginatedResponse<Schema>> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<PaginatedResponse<Schema>>(`${this.apiUrl}/schemas/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get a single schema by ID\r\n */\r\n getSchema(id: number): Observable<Schema> {\r\n return this.get<Schema>(`${this.apiUrl}/schemas/${id}/`);\r\n }\r\n\r\n /**\r\n * Get list of available schemas for creating templates\r\n */\r\n getAvailableSchemas(): Observable<Schema[]> {\r\n return this.get<Schema[]>(`${this.apiUrl}/schemas/available/`);\r\n }\r\n\r\n /**\r\n * Sync builtin schemas from sdrf-pipelines package (admin only)\r\n */\r\n syncBuiltin(): Observable<{ message: string; synced_count: number }> {\r\n return this.post<{ message: string; synced_count: number }>(`${this.apiUrl}/schemas/sync_builtin/`, {});\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SDRFDefaultsService extends BaseApiService {\r\n\r\n /**\r\n * Get all available SDRF columns with their default values\r\n */\r\n getColumns(): Observable<any[]> {\r\n return this.get<any[]>(`${this.apiUrl}/sdrf-defaults/columns/`);\r\n }\r\n\r\n /**\r\n * Get default values for a specific column\r\n */\r\n getColumnValues(params: { column: string }): Observable<any[]> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<any[]>(`${this.apiUrl}/sdrf-defaults/column_values/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Search for columns containing the query string\r\n */\r\n searchColumns(params: { query: string }): Observable<any[]> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<any[]>(`${this.apiUrl}/sdrf-defaults/search/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get options for structured fields (key-value pairs)\r\n */\r\n getStructuredOptions(params: { field: string }): Observable<any[]> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<any[]>(`${this.apiUrl}/sdrf-defaults/structured_options/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get all label options (TMT, SILAC, label-free)\r\n */\r\n getLabels(): Observable<any[]> {\r\n return this.get<any[]>(`${this.apiUrl}/sdrf-defaults/labels/`);\r\n }\r\n\r\n /**\r\n * Get protein modification options (fixed and variable)\r\n */\r\n getModifications(): Observable<any[]> {\r\n return this.get<any[]>(`${this.apiUrl}/sdrf-defaults/modifications/`);\r\n }\r\n\r\n /**\r\n * Get list of common instrument models\r\n */\r\n getInstruments(): Observable<any[]> {\r\n return this.get<any[]>(`${this.apiUrl}/sdrf-defaults/instruments/`);\r\n }\r\n\r\n /**\r\n * Get cleavage agent options\r\n */\r\n getCleavageAgents(): Observable<any[]> {\r\n return this.get<any[]>(`${this.apiUrl}/sdrf-defaults/cleavage_agents/`);\r\n }\r\n\r\n /**\r\n * Get all compound fields that require special handling\r\n */\r\n getCompoundFields(): Observable<any[]> {\r\n return this.get<any[]>(`${this.apiUrl}/sdrf-defaults/compound_fields/`);\r\n }\r\n\r\n /**\r\n * Get schema for a specific compound field\r\n */\r\n getCompoundSchema(params: { field: string }): Observable<any> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<any>(`${this.apiUrl}/sdrf-defaults/compound_schema/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Validate a compound field value against its schema\r\n */\r\n validateCompound(request: { field: string; value: any }): Observable<{ valid: boolean; errors?: string[] }> {\r\n return this.post<{ valid: boolean; errors?: string[] }>(`${this.apiUrl}/sdrf-defaults/validate_compound/`, request);\r\n }\r\n\r\n /**\r\n * Get column name suggestions based on partial input\r\n */\r\n getSuggestions(params: { query: string }): Observable<string[]> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<string[]>(`${this.apiUrl}/sdrf-defaults/suggestions/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get quick access to commonly used value categories\r\n */\r\n getQuickValues(): Observable<any> {\r\n return this.get<any>(`${this.apiUrl}/sdrf-defaults/quick_values/`);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n AsyncTaskStatus,\r\n AsyncTaskQueryParams,\r\n AsyncTaskCreateResponse,\r\n DownloadUrlResponse,\r\n PaginatedResponse\r\n} from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AsyncTaskService extends BaseApiService {\r\n\r\n /**\r\n * Get all async tasks for the current user with optional filtering\r\n */\r\n getAsyncTasks(params?: AsyncTaskQueryParams): Observable<PaginatedResponse<AsyncTaskStatus>> {\r\n const httpParams = this.buildHttpParams(params);\r\n return this.get<PaginatedResponse<AsyncTaskStatus>>(`${this.apiUrl}/async-tasks/`, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Get a specific async task by ID\r\n */\r\n getAsyncTask(id: string): Observable<AsyncTaskStatus> {\r\n return this.get<AsyncTaskStatus>(`${this.apiUrl}/async-tasks/${id}/`);\r\n }\r\n\r\n /**\r\n * Cancel a queued or running task\r\n */\r\n cancelTask(id: string): Observable<{ message: string }> {\r\n return this.delete<{ message: string }>(`${this.apiUrl}/async-tasks/${id}/cancel/`);\r\n }\r\n\r\n /**\r\n * Generate a signed download URL for task result file\r\n */\r\n getDownloadUrl(id: string): Observable<DownloadUrlResponse> {\r\n return this.get<DownloadUrlResponse>(`${this.apiUrl}/async-tasks/${id}/download_url/`);\r\n }\r\n\r\n /**\r\n * Direct download endpoint (returns blob for file download)\r\n */\r\n downloadTaskFile(id: string, token: string): Observable<Blob> {\r\n const httpParams = this.buildHttpParams({ token });\r\n return this.get(`${this.apiUrl}/async-tasks/${id}/download/`, { params: httpParams, responseType: 'blob' });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n MetadataExportRequest,\r\n BulkExportRequest,\r\n BulkExcelExportRequest,\r\n AsyncTaskCreateResponse\r\n} from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AsyncExportService extends BaseApiService {\r\n\r\n excelTemplate(request: MetadataExportRequest): Observable<AsyncTaskCreateResponse> {\r\n return this.post<AsyncTaskCreateResponse>(`${this.apiUrl}/async-export/excel_template/`, request);\r\n }\r\n\r\n sdrfFile(request: MetadataExportRequest): Observable<AsyncTaskCreateResponse> {\r\n return this.post<AsyncTaskCreateResponse>(`${this.apiUrl}/async-export/sdrf_file/`, request);\r\n }\r\n\r\n multipleSdrfFiles(request: BulkExportRequest): Observable<AsyncTaskCreateResponse> {\r\n return this.post<AsyncTaskCreateResponse>(`${this.apiUrl}/async-export/multiple_sdrf_files/`, request);\r\n }\r\n\r\n multipleExcelTemplates(request: BulkExcelExportRequest): Observable<AsyncTaskCreateResponse> {\r\n return this.post<AsyncTaskCreateResponse>(`${this.apiUrl}/async-export/multiple_excel_templates/`, request);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable, from } from 'rxjs';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n MetadataImportRequest,\r\n AsyncTaskCreateResponse\r\n} from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AsyncImportService extends BaseApiService {\r\n\r\n /**\r\n * Calculate SHA256 hash of a file\r\n */\r\n private async calculateSHA256(file: File): Promise<string> {\r\n const buffer = await file.arrayBuffer();\r\n const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);\r\n const hashArray = Array.from(new Uint8Array(hashBuffer));\r\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\r\n return hashHex;\r\n }\r\n\r\n sdrfFile(request: MetadataImportRequest): Observable<AsyncTaskCreateResponse> {\r\n return from(this.calculateSHA256(request.file)).pipe(\r\n switchMap(sha256Hash => {\r\n const formData = new FormData();\r\n formData.append('metadata_table_id', request.metadataTableId.toString());\r\n formData.append('file', request.file);\r\n formData.append('sha256', sha256Hash);\r\n \r\n if (request.replaceExisting !== undefined) {\r\n formData.append('replace_existing', request.replaceExisting.toString());\r\n }\r\n if (request.validateOntologies !== undefined) {\r\n formData.append('validate_ontologies', request.validateOntologies.toString());\r\n }\r\n\r\n return this.post<AsyncTaskCreateResponse>(`${this.apiUrl}/async-import/sdrf_file/`, formData);\r\n })\r\n );\r\n }\r\n\r\n excelFile(request: MetadataImportRequest): Observable<AsyncTaskCreateResponse> {\r\n const formData = new FormData();\r\n formData.append('metadata_table_id', request.metadataTableId.toString());\r\n formData.append('file', request.file);\r\n \r\n if (request.replaceExisting !== undefined) {\r\n formData.append('replace_existing', request.replaceExisting.toString());\r\n }\r\n if (request.validateOntologies !== undefined) {\r\n formData.append('validate_ontologies', request.validateOntologies.toString());\r\n }\r\n\r\n return this.post<AsyncTaskCreateResponse>(`${this.apiUrl}/async-import/excel_file/`, formData);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseApiService } from '@cupcake/core';\r\n\r\nimport {\r\n MetadataValidationRequest,\r\n AsyncTaskCreateResponse\r\n} from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AsyncValidationService extends BaseApiService {\r\n\r\n metadataTable(request: MetadataValidationRequest): Observable<AsyncTaskCreateResponse> {\r\n return this.post<AsyncTaskCreateResponse>(`${this.apiUrl}/async-validation/metadata_table/`, request);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable, from } from 'rxjs';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { BaseApiService } from '@cupcake/core';\r\nimport jsSHA from 'jssha';\r\n\r\nimport {\r\n ChunkedUploadStatus,\r\n ChunkedUploadRequest,\r\n ChunkedUploadResponse,\r\n ChunkedUploadCompletionRequest,\r\n ChunkedUploadCompletionResponse\r\n} from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChunkedUploadService extends BaseApiService {\r\n\r\n\r\n /**\r\n * Initialize or continue a chunked upload\r\n */\r\n uploadChunk(\r\n request: ChunkedUploadRequest, \r\n uploadId?: string,\r\n offset?: number,\r\n totalSize?: number\r\n ): Observable<ChunkedUploadResponse> {\r\n const formData = new FormData();\r\n formData.append('file', request.file);\r\n \r\n if (request.filename) {\r\n formData.append('filename', request.filename);\r\n }\r\n if (request.uploadSessionId) {\r\n formData.append('upload_session_id', request.uploadSessionId);\r\n }\r\n if (request.metadataTableId) {\r\n formData.append('metadata_table_id', request.metadataTableId.toString());\r\n }\r\n if (request.createPools !== undefined) {\r\n formData.append('create_pools', request.createPools.toString());\r\n }\r\n if (request.replaceExisting !== undefined) {\r\n formData.append('replace_existing', request.replaceExisting.toString());\r\n }\r\n\r\n const url = uploadId \r\n ? `${this.apiUrl}/chunked-upload/${uploadId}/`\r\n : `${this.apiUrl}/chunked-upload/`;\r\n\r\n // Add Content-Range header for chunked uploads\r\n const headers: any = {};\r\n if (offset !== undefined && totalSize !== undefined) {\r\n const chunkEnd = offset + request.file.size - 1;\r\n headers['Content-Range'] = `bytes ${offset}-${chunkEnd}/${totalSize}`;\r\n }\r\n\r\n // Use POST for first chunk, PUT for subsequent chunks\r\n if (uploadId) {\r\n return this.put<ChunkedUploadResponse>(url, formData, { headers });\r\n } else {\r\n return this.post<ChunkedUploadResponse>(url, formData, { headers });\r\n }\r\n }\r\n\r\n /**\r\n * Get chunked upload status\r\n */\r\n getUploadStatus(uploadId: string): Observable<ChunkedUploadStatus> {\r\n return this.get<ChunkedUploadStatus>(`${this.apiUrl}/chunked-upload/${uploadId}/`);\r\n }\r\n\r\n /**\r\n * Complete the chunked upload and process the file\r\n */\r\n completeUpload(uploadId: string, request?: ChunkedUploadCompletionRequest): Observable<ChunkedUploadCompletionResponse> {\r\n const formData = new FormData();\r\n \r\n if (request?.sha256) {\r\n formData.append('sha256', request.sha256);\r\n }\r\n if (request?.metadataTableId) {\r\n formData.append('metadata_table_id', request.metadataTableId.toString());\r\n }\r\n if (request?.createPools !== undefined) {\r\n formData.append('create_pools', request.createPools.toString());\r\n }\r\n if (request?.replaceExisting !== undefined) {\r\n formData.append('replace_existing', request.replaceExisting.toString());\r\n }\r\n\r\n return this.post<ChunkedUploadCompletionResponse>(`${this.apiUrl}/chunked-upload/${uploadId}/`, formData);\r\n }\r\n\r\n /**\r\n * Delete/cancel a chunked upload\r\n */\r\n cancelUpload(uploadId: string): Observable<void> {\r\n return this.delete<void>(`${this.apiUrl}/chunked-upload/${uploadId}/`);\r\n }\r\n\r\n /**\r\n * Helper method to upload a file in chunks with progress tracking\r\n */\r\n uploadFileInChunks(\r\n file: File, \r\n chunkSize: number = 1024 * 1024, // 1MB chunks by default\r\n options?: {\r\n metadataTableId?: number;\r\n createPools?: boolean;\r\n replaceExisting?: boolean;\r\n uploadSessionId?: string;\r\n onProgress?: (progress: number) => void;\r\n }\r\n ): Observable<ChunkedUploadCompletionResponse> {\r\n return new Observable(subscriber => {\r\n let uploadId: string | undefined;\r\n let offset = 0;\r\n const totalSize = file.size;\r\n const sha256 = new jsSHA('SHA-256', 'ARRAYBUFFER');\r\n \r\n const uploadNextChunk = () => {\r\n if (offset >= totalSize) {\r\n // Upload complete, finalize with calculated hash\r\n if (uploadId) {\r\n const calculatedHash = sha256.getHash('HEX');\r\n this.completeUpload(uploadId, {\r\n sha256: calculatedHash,\r\n metadataTableId: options?.metadataTableId,\r\n createPools: options?.createPools,\r\n replaceExisting: options?.replaceExisting\r\n }).subscribe({\r\n next: (result) => {\r\n subscriber.next(result);\r\n subscriber.complete();\r\n },\r\n error: (error) => subscriber.error(error)\r\n });\r\n } else {\r\n subscriber.error(new Error('Upload failed: No upload ID'));\r\n }\r\n return;\r\n }\r\n\r\n const end = Math.min(offset + chunkSize, totalSize);\r\n const chunk = file.slice(offset, end);\r\n const chunkFile = new File([chunk], file.name, { type: file.type });\r\n\r\n // Add chunk to hash calculation\r\n chunk.arrayBuffer().then(arrayBuffer => {\r\n sha256.update(arrayBuffer);\r\n \r\n this.uploadChunk({\r\n file: chunkFile,\r\n filename: file.name,\r\n uploadSessionId: options?.uploadSessionId,\r\n metadataTableId: options?.metadataTableId,\r\n createPools: options?.createPools,\r\n replaceExisting: options?.replaceExisting\r\n }, uploadId, offset, totalSize).subscribe({\r\n next: (response) => {\r\n uploadId = response.id;\r\n offset = response.offset;\r\n \r\n // Report progress\r\n const progress = (offset / totalSize) * 100;\r\n if (options?.onProgress) {\r\n options.onProgress(progress);\r\n }\r\n\r\n // Upload next chunk\r\n uploadNextChunk();\r\n },\r\n error: (error) => subscriber.error(error)\r\n });\r\n }).catch(error => subscriber.error(error));\r\n };\r\n\r\n uploadNextChunk();\r\n });\r\n }\r\n}","export * from './models';\nexport * from './services';\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'ccv-cupcake-vanilla',\n imports: [],\n template: `\n <p>\n cupcake-vanilla works!\n </p>\n `,\n styles: ``\n})\nexport class CupcakeVanilla {\n\n}\n","/*\n * Public API Surface of cupcake-vanilla\n */\n\nexport * from './lib/cupcake-vanilla';\nexport * from './lib/models';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}