@memberjunction/ng-archive-manager 0.0.1 → 5.29.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.
- package/dist/lib/archive-config/archive-config-admin.component.d.ts +113 -0
- package/dist/lib/archive-config/archive-config-admin.component.d.ts.map +1 -0
- package/dist/lib/archive-config/archive-config-admin.component.js +735 -0
- package/dist/lib/archive-config/archive-config-admin.component.js.map +1 -0
- package/dist/lib/archive-manager.module.d.ts +14 -0
- package/dist/lib/archive-manager.module.d.ts.map +1 -0
- package/dist/lib/archive-manager.module.js +48 -0
- package/dist/lib/archive-manager.module.js.map +1 -0
- package/dist/lib/archive-restore/archive-restore-dialog.component.d.ts +82 -0
- package/dist/lib/archive-restore/archive-restore-dialog.component.d.ts.map +1 -0
- package/dist/lib/archive-restore/archive-restore-dialog.component.js +386 -0
- package/dist/lib/archive-restore/archive-restore-dialog.component.js.map +1 -0
- package/dist/lib/archive-run-viewer/archive-run-viewer.component.d.ts +81 -0
- package/dist/lib/archive-run-viewer/archive-run-viewer.component.d.ts.map +1 -0
- package/dist/lib/archive-run-viewer/archive-run-viewer.component.js +515 -0
- package/dist/lib/archive-run-viewer/archive-run-viewer.component.js.map +1 -0
- package/dist/lib/archive-status/archive-status-badge.component.d.ts +65 -0
- package/dist/lib/archive-status/archive-status-badge.component.d.ts.map +1 -0
- package/dist/lib/archive-status/archive-status-badge.component.js +172 -0
- package/dist/lib/archive-status/archive-status-badge.component.js.map +1 -0
- package/dist/lib/archive-types.d.ts +81 -0
- package/dist/lib/archive-types.d.ts.map +1 -0
- package/dist/lib/archive-types.js +8 -0
- package/dist/lib/archive-types.js.map +1 -0
- package/dist/public-api.d.ts +6 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +11 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +42 -6
- package/README.md +0 -45
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive-config-admin.component.js","sourceRoot":"","sources":["../../../src/lib/archive-config/archive-config-admin.component.ts","../../../src/lib/archive-config/archive-config-admin.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnInit,\n OnDestroy,\n inject,\n} from '@angular/core';\nimport { CompositeKey, Metadata, RunView } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport {\n MJArchiveConfigurationEntity,\n MJArchiveConfigurationEntityEntity,\n MJArchiveConfigurationEntityType,\n MJArchiveConfigurationEntityEntityType,\n} from '@memberjunction/core-entities';\n\ntype ArchiveStatus = MJArchiveConfigurationEntityType['Status'];\ntype ArchiveMode = MJArchiveConfigurationEntityType['DefaultMode'];\ntype EntityMode = MJArchiveConfigurationEntityEntityType['Mode'];\n\n/** Represents an archive configuration record */\nexport interface ArchiveConfig {\n ID: string;\n Name: string;\n Description: string;\n Status: ArchiveStatus;\n StorageAccountID: string;\n StorageAccountName: string;\n RootPath: string;\n DefaultRetentionDays: number;\n DefaultBatchSize: number;\n DefaultMode: ArchiveMode;\n ArchiveRelatedRecordChanges: boolean;\n IsDirty: boolean;\n}\n\n/** Represents an entity within a configuration */\nexport interface ArchiveConfigEntity {\n ID: string;\n ArchiveConfigurationID: string;\n EntityName: string;\n Mode: EntityMode;\n RetentionDays: number;\n BatchSize: number;\n DateField: string;\n IsActive: boolean;\n IsNew: boolean;\n IsDirty: boolean;\n}\n\n/** Storage account option for the dropdown */\nexport interface StorageAccountOption {\n ID: string;\n Name: string;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-archive-config-admin',\n templateUrl: './archive-config-admin.component.html',\n styleUrls: ['./archive-config-admin.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArchiveConfigAdminComponent implements OnInit, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n\n /** All configurations */\n Configs: ArchiveConfig[] = [];\n\n /** Currently selected configuration */\n SelectedConfig: ArchiveConfig | null = null;\n\n /** Entities for the selected configuration */\n ConfigEntities: ArchiveConfigEntity[] = [];\n\n /** Available storage accounts for dropdown */\n StorageAccounts: StorageAccountOption[] = [];\n\n /** Available archive modes */\n ArchiveModes: string[] = ['StripFields', 'SoftDelete', 'HardDelete', 'ArchiveOnly'];\n\n /** Whether the list is loading */\n IsLoading = true;\n\n /** Whether the detail panel is loading */\n IsDetailLoading = false;\n\n /** Whether a save operation is in progress */\n IsSaving = false;\n\n /** Status message for feedback */\n StatusMessage = '';\n\n /** Status type for styling */\n StatusType: 'success' | 'error' | '' = '';\n\n private destroyed = false;\n\n ngOnInit(): void {\n this.loadAllData();\n }\n\n ngOnDestroy(): void {\n this.destroyed = true;\n }\n\n /** Select a configuration and load its entities */\n async SelectConfig(config: ArchiveConfig): Promise<void> {\n this.SelectedConfig = { ...config };\n this.clearStatus();\n await this.loadConfigEntities(config.ID);\n }\n\n /** Check if a config is the currently selected one */\n IsSelectedConfig(config: ArchiveConfig): boolean {\n return UUIDsEqual(this.SelectedConfig?.ID, config.ID);\n }\n\n /** Add a new empty entity row */\n AddEntity(): void {\n if (!this.SelectedConfig) return;\n\n const newEntity: ArchiveConfigEntity = {\n ID: `new-${Date.now()}`,\n ArchiveConfigurationID: this.SelectedConfig.ID,\n EntityName: '',\n Mode: this.SelectedConfig.DefaultMode ?? 'StripFields',\n RetentionDays: this.SelectedConfig.DefaultRetentionDays || 365,\n BatchSize: this.SelectedConfig.DefaultBatchSize || 100,\n DateField: '__mj_CreatedAt',\n IsActive: true,\n IsNew: true,\n IsDirty: true,\n };\n this.ConfigEntities = [...this.ConfigEntities, newEntity];\n this.cdr.markForCheck();\n }\n\n /** Remove an entity row */\n RemoveEntity(entity: ArchiveConfigEntity): void {\n this.ConfigEntities = this.ConfigEntities.filter((e) => !UUIDsEqual(e.ID, entity.ID));\n this.cdr.markForCheck();\n }\n\n /** Mark an entity as dirty when edited */\n OnEntityChanged(entity: ArchiveConfigEntity): void {\n entity.IsDirty = true;\n this.cdr.markForCheck();\n }\n\n /** Mark the selected config as dirty */\n OnConfigFieldChanged(): void {\n if (this.SelectedConfig) {\n this.SelectedConfig.IsDirty = true;\n this.cdr.markForCheck();\n }\n }\n\n /** Save the selected configuration and its entities */\n async Save(): Promise<void> {\n if (!this.SelectedConfig) return;\n\n this.IsSaving = true;\n this.clearStatus();\n this.cdr.markForCheck();\n\n try {\n await this.saveConfiguration();\n await this.saveConfigEntities();\n this.setStatus('Configuration saved successfully.', 'success');\n await this.refreshConfigList();\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : 'Save failed. Please try again.';\n this.setStatus(message, 'error');\n } finally {\n this.IsSaving = false;\n this.markForCheckIfAlive();\n }\n }\n\n /** Cancel changes and reload the selected config */\n async Cancel(): Promise<void> {\n if (!this.SelectedConfig) return;\n\n const configId = this.SelectedConfig.ID;\n this.clearStatus();\n\n const original = this.Configs.find((c) => UUIDsEqual(c.ID, configId));\n if (original) {\n this.SelectedConfig = { ...original };\n await this.loadConfigEntities(configId);\n }\n }\n\n /** Add a new configuration */\n AddConfiguration(): void {\n const newConfig: ArchiveConfig = {\n ID: `new-${Date.now()}`,\n Name: 'New Configuration',\n Description: '',\n Status: 'Disabled',\n StorageAccountID: '',\n StorageAccountName: '',\n RootPath: '/archives',\n DefaultRetentionDays: 365,\n DefaultBatchSize: 100,\n DefaultMode: 'StripFields',\n ArchiveRelatedRecordChanges: false,\n IsDirty: true,\n };\n this.Configs = [newConfig, ...this.Configs];\n this.SelectConfig(newConfig);\n }\n\n /** Get a display label for the status */\n GetStatusLabel(status: string | undefined): string {\n switch (status) {\n case 'Idle': return 'Idle';\n case 'Running': return 'Running';\n case 'Error': return 'Error';\n default: return 'Disabled';\n }\n }\n\n /** Load all initial data using batched RunViews */\n private async loadAllData(): Promise<void> {\n this.IsLoading = true;\n this.cdr.markForCheck();\n\n try {\n const rv = new RunView();\n const [configResult, storageResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Archive Configurations',\n ExtraFilter: '',\n OrderBy: 'Name',\n ResultType: 'simple',\n },\n {\n EntityName: 'MJ: File Storage Accounts',\n ExtraFilter: '',\n OrderBy: 'Name',\n ResultType: 'simple',\n Fields: ['ID', 'Name'],\n },\n ]);\n\n this.Configs = this.mapConfigRecords(configResult);\n this.StorageAccounts = this.mapStorageAccounts(storageResult);\n\n if (this.Configs.length > 0) {\n await this.SelectConfig(this.Configs[0]);\n }\n } catch {\n this.setStatus('Failed to load configurations.', 'error');\n } finally {\n this.IsLoading = false;\n this.markForCheckIfAlive();\n }\n }\n\n /** Map raw config records to typed objects */\n private mapConfigRecords(result: { Success: boolean; Results: Record<string, unknown>[] }): ArchiveConfig[] {\n if (!result.Success) return [];\n return result.Results.map((r) => ({\n ID: String(r['ID'] ?? ''),\n Name: String(r['Name'] ?? ''),\n Description: String(r['Description'] ?? ''),\n Status: (r['Status'] as ArchiveStatus) ?? 'Disabled',\n StorageAccountID: String(r['StorageAccountID'] ?? ''),\n StorageAccountName: String(r['StorageAccount'] ?? ''),\n RootPath: String(r['RootPath'] ?? ''),\n DefaultRetentionDays: Number(r['DefaultRetentionDays'] ?? 365),\n DefaultBatchSize: Number(r['DefaultBatchSize'] ?? 100),\n DefaultMode: (r['DefaultMode'] as ArchiveMode) ?? 'StripFields',\n ArchiveRelatedRecordChanges: Boolean(r['ArchiveRelatedRecordChanges']),\n IsDirty: false,\n }));\n }\n\n /** Map raw storage account records */\n private mapStorageAccounts(result: { Success: boolean; Results: Record<string, unknown>[] }): StorageAccountOption[] {\n if (!result.Success) return [];\n return result.Results.map((r) => ({\n ID: String(r['ID'] ?? ''),\n Name: String(r['Name'] ?? ''),\n }));\n }\n\n /** Load entities for a specific configuration */\n private async loadConfigEntities(configId: string): Promise<void> {\n this.IsDetailLoading = true;\n this.cdr.markForCheck();\n\n try {\n const rv = new RunView();\n const escapedId = configId.replace(/'/g, \"''\");\n const result = await rv.RunView<Record<string, unknown>>({\n EntityName: 'MJ: Archive Configuration Entities',\n ExtraFilter: `ArchiveConfigurationID='${escapedId}'`,\n OrderBy: 'Entity',\n ResultType: 'simple',\n });\n\n this.ConfigEntities = this.mapEntityRecords(result);\n } catch {\n this.ConfigEntities = [];\n } finally {\n this.IsDetailLoading = false;\n this.markForCheckIfAlive();\n }\n }\n\n /** Map raw entity records to typed objects */\n private mapEntityRecords(result: { Success: boolean; Results: Record<string, unknown>[] }): ArchiveConfigEntity[] {\n if (!result.Success) return [];\n return result.Results.map((r) => ({\n ID: String(r['ID'] ?? ''),\n ArchiveConfigurationID: String(r['ArchiveConfigurationID'] ?? ''),\n EntityName: String(r['Entity'] ?? ''),\n Mode: (r['Mode'] as EntityMode) ?? 'StripFields',\n RetentionDays: Number(r['RetentionDays'] ?? 365),\n BatchSize: Number(r['BatchSize'] ?? 100),\n DateField: String(r['DateField'] ?? '__mj_CreatedAt'),\n IsActive: Boolean(r['IsActive']),\n IsNew: false,\n IsDirty: false,\n }));\n }\n\n /** Save the configuration record using strongly-typed entity */\n private async saveConfiguration(): Promise<void> {\n if (!this.SelectedConfig?.IsDirty) return;\n\n const md = new Metadata();\n const entity = await md.GetEntityObject<MJArchiveConfigurationEntity>('MJ: Archive Configurations');\n\n if (!this.SelectedConfig.ID.startsWith('new-')) {\n await entity.InnerLoad(CompositeKey.FromKeyValuePair('ID', this.SelectedConfig.ID));\n } else {\n entity.NewRecord();\n }\n\n entity.Name = this.SelectedConfig.Name;\n entity.Description = this.SelectedConfig.Description;\n entity.Status = this.SelectedConfig.Status ?? 'Disabled';\n if (this.SelectedConfig.StorageAccountID) {\n entity.StorageAccountID = this.SelectedConfig.StorageAccountID;\n }\n entity.RootPath = this.SelectedConfig.RootPath;\n entity.DefaultRetentionDays = this.SelectedConfig.DefaultRetentionDays;\n entity.DefaultBatchSize = this.SelectedConfig.DefaultBatchSize;\n entity.DefaultMode = this.SelectedConfig.DefaultMode ?? 'StripFields';\n entity.ArchiveRelatedRecordChanges = this.SelectedConfig.ArchiveRelatedRecordChanges;\n\n const saved = await entity.Save();\n if (!saved) {\n throw new Error('Failed to save configuration.');\n }\n\n // Update the ID if this was a new record\n if (this.SelectedConfig.ID.startsWith('new-')) {\n this.SelectedConfig.ID = entity.ID;\n }\n this.SelectedConfig.IsDirty = false;\n }\n\n /** Save all dirty/new entity records */\n private async saveConfigEntities(): Promise<void> {\n const dirtyEntities = this.ConfigEntities.filter((e) => e.IsDirty);\n for (const configEntity of dirtyEntities) {\n await this.saveConfigEntity(configEntity);\n }\n }\n\n /** Save a single config entity record using strongly-typed entity */\n private async saveConfigEntity(configEntity: ArchiveConfigEntity): Promise<void> {\n const md = new Metadata();\n const entity = await md.GetEntityObject<MJArchiveConfigurationEntityEntity>('MJ: Archive Configuration Entities');\n\n if (!configEntity.IsNew) {\n await entity.InnerLoad(CompositeKey.FromKeyValuePair('ID', configEntity.ID));\n } else {\n entity.NewRecord();\n }\n\n entity.ArchiveConfigurationID = configEntity.ArchiveConfigurationID;\n entity.Mode = configEntity.Mode ?? null;\n entity.RetentionDays = configEntity.RetentionDays;\n entity.BatchSize = configEntity.BatchSize;\n entity.DateField = configEntity.DateField;\n entity.IsActive = configEntity.IsActive;\n\n const saved = await entity.Save();\n if (!saved) {\n throw new Error(`Failed to save entity \"${configEntity.EntityName}\".`);\n }\n\n configEntity.IsDirty = false;\n configEntity.IsNew = false;\n }\n\n /** Refresh the config list after a save */\n private async refreshConfigList(): Promise<void> {\n const rv = new RunView();\n const result = await rv.RunView<Record<string, unknown>>({\n EntityName: 'MJ: Archive Configurations',\n ExtraFilter: '',\n OrderBy: 'Name',\n ResultType: 'simple',\n });\n this.Configs = this.mapConfigRecords(result);\n }\n\n /** Set a status message */\n private setStatus(message: string, type: 'success' | 'error'): void {\n this.StatusMessage = message;\n this.StatusType = type;\n }\n\n /** Clear status message */\n private clearStatus(): void {\n this.StatusMessage = '';\n this.StatusType = '';\n }\n\n /** Mark for check only if not destroyed */\n private markForCheckIfAlive(): void {\n if (!this.destroyed) {\n this.cdr.markForCheck();\n }\n }\n}\n","<div class=\"config-admin\">\n <!-- Loading state -->\n @if (IsLoading) {\n <div class=\"config-loading\">\n <mj-loading text=\"Loading configurations...\"></mj-loading>\n </div>\n }\n\n @if (!IsLoading) {\n <div class=\"config-layout\">\n <!-- Left panel: Config list -->\n <div class=\"config-list-panel\">\n <div class=\"config-list-header\">\n <h2>Archive Configurations</h2>\n <button class=\"btn btn-primary btn-sm\" (click)=\"AddConfiguration()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Configuration\n </button>\n </div>\n\n <div class=\"config-card-list\">\n @for (config of Configs; track config.ID) {\n <div\n class=\"config-card\"\n [class.selected]=\"IsSelectedConfig(config)\"\n (click)=\"SelectConfig(config)\"\n (keydown.enter)=\"SelectConfig(config)\"\n tabindex=\"0\"\n role=\"button\">\n <div class=\"config-card-header\">\n <span class=\"config-card-name\">{{ config.Name }}</span>\n <span\n class=\"config-status-badge\"\n [class.status-active]=\"config.Status === 'Idle' || config.Status === 'Running'\"\n [class.status-inactive]=\"config.Status === 'Disabled' || config.Status === 'Error'\">\n {{ GetStatusLabel(config.Status) }}\n </span>\n </div>\n <div class=\"config-card-meta\">\n <span><i class=\"fa-solid fa-database\"></i> {{ config.StorageAccountName || 'No storage' }}</span>\n <span><i class=\"fa-solid fa-folder\"></i> {{ config.RootPath }}</span>\n </div>\n <div class=\"config-card-date\">\n <span class=\"config-status-mode\"><i class=\"fa-solid fa-sliders\"></i> {{ config.DefaultMode }}</span>\n </div>\n </div>\n }\n\n @if (Configs.length === 0) {\n <div class=\"config-empty\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <p>No configurations found. Create one to get started.</p>\n </div>\n }\n </div>\n </div>\n\n <!-- Right panel: Detail -->\n <div class=\"config-detail-panel\">\n @if (!SelectedConfig) {\n <div class=\"config-detail-placeholder\">\n <i class=\"fa-solid fa-hand-pointer\"></i>\n <p>Select a configuration to view details</p>\n </div>\n }\n\n @if (SelectedConfig) {\n @if (IsDetailLoading) {\n <div class=\"config-detail-loading\">\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n </div>\n }\n\n @if (!IsDetailLoading) {\n <div class=\"config-detail-content\">\n <!-- Header section -->\n <div class=\"detail-section\">\n <div class=\"detail-field\">\n <label for=\"config-name\">Name</label>\n <input\n id=\"config-name\"\n type=\"text\"\n [(ngModel)]=\"SelectedConfig.Name\"\n (ngModelChange)=\"OnConfigFieldChanged()\"\n class=\"detail-input\" />\n </div>\n <div class=\"detail-field\">\n <label>Active</label>\n <div class=\"detail-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"SelectedConfig.Status === 'Idle'\"\n (change)=\"SelectedConfig.Status = SelectedConfig.Status === 'Idle' ? 'Disabled' : 'Idle'; OnConfigFieldChanged()\" />\n </div>\n </div>\n <div class=\"detail-field\">\n <label for=\"config-desc\">Description</label>\n <textarea\n id=\"config-desc\"\n [(ngModel)]=\"SelectedConfig.Description\"\n (ngModelChange)=\"OnConfigFieldChanged()\"\n class=\"detail-input detail-textarea\"\n rows=\"2\"></textarea>\n </div>\n </div>\n\n <!-- Storage section -->\n <div class=\"detail-section\">\n <h3><i class=\"fa-solid fa-hard-drive\"></i> Storage</h3>\n <div class=\"detail-row\">\n <div class=\"detail-field\">\n <label for=\"config-storage\">Storage Account</label>\n <select\n id=\"config-storage\"\n [(ngModel)]=\"SelectedConfig.StorageAccountID\"\n (ngModelChange)=\"OnConfigFieldChanged()\"\n class=\"detail-input\">\n <option value=\"\">-- Select --</option>\n @for (account of StorageAccounts; track account.ID) {\n <option [value]=\"account.ID\">{{ account.Name }}</option>\n }\n </select>\n </div>\n <div class=\"detail-field\">\n <label for=\"config-path\">Root Path</label>\n <input\n id=\"config-path\"\n type=\"text\"\n [(ngModel)]=\"SelectedConfig.RootPath\"\n (ngModelChange)=\"OnConfigFieldChanged()\"\n class=\"detail-input\" />\n </div>\n </div>\n </div>\n\n <!-- Defaults section -->\n <div class=\"detail-section\">\n <h3><i class=\"fa-solid fa-sliders\"></i> Defaults</h3>\n <div class=\"detail-row\">\n <div class=\"detail-field\">\n <label for=\"config-retention\">Retention Days</label>\n <input\n id=\"config-retention\"\n type=\"number\"\n [(ngModel)]=\"SelectedConfig.DefaultRetentionDays\"\n (ngModelChange)=\"OnConfigFieldChanged()\"\n class=\"detail-input\" />\n </div>\n <div class=\"detail-field\">\n <label for=\"config-batch\">Batch Size</label>\n <input\n id=\"config-batch\"\n type=\"number\"\n [(ngModel)]=\"SelectedConfig.DefaultBatchSize\"\n (ngModelChange)=\"OnConfigFieldChanged()\"\n class=\"detail-input\" />\n </div>\n </div>\n <div class=\"detail-row\">\n <div class=\"detail-field\">\n <label for=\"config-mode\">Archive Mode</label>\n <select\n id=\"config-mode\"\n [(ngModel)]=\"SelectedConfig.DefaultMode\"\n (ngModelChange)=\"OnConfigFieldChanged()\"\n class=\"detail-input\">\n @for (mode of ArchiveModes; track mode) {\n <option [value]=\"mode\">{{ mode }}</option>\n }\n </select>\n </div>\n <div class=\"detail-field\">\n <label>Archive Record Changes</label>\n <div class=\"detail-checkbox\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"SelectedConfig.ArchiveRelatedRecordChanges\"\n (ngModelChange)=\"OnConfigFieldChanged()\" />\n </div>\n </div>\n </div>\n </div>\n\n <!-- Entities section -->\n <div class=\"detail-section\">\n <div class=\"detail-section-header\">\n <h3><i class=\"fa-solid fa-table\"></i> Entities</h3>\n <button class=\"btn btn-sm btn-outline\" (click)=\"AddEntity()\">\n <i class=\"fa-solid fa-plus\"></i> Add Entity\n </button>\n </div>\n\n @if (ConfigEntities.length > 0) {\n <div class=\"entity-table-wrapper\">\n <table class=\"entity-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th>Mode</th>\n <th>Retention</th>\n <th>Batch</th>\n <th>Date Field</th>\n <th>Active</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (entity of ConfigEntities; track entity.ID) {\n <tr>\n <td>\n <input\n type=\"text\"\n [(ngModel)]=\"entity.EntityName\"\n (ngModelChange)=\"OnEntityChanged(entity)\"\n class=\"entity-input\"\n placeholder=\"Entity name\" />\n </td>\n <td>\n <select\n [(ngModel)]=\"entity.Mode\"\n (ngModelChange)=\"OnEntityChanged(entity)\"\n class=\"entity-input\">\n @for (mode of ArchiveModes; track mode) {\n <option [value]=\"mode\">{{ mode }}</option>\n }\n </select>\n </td>\n <td>\n <input\n type=\"number\"\n [(ngModel)]=\"entity.RetentionDays\"\n (ngModelChange)=\"OnEntityChanged(entity)\"\n class=\"entity-input entity-input-sm\" />\n </td>\n <td>\n <input\n type=\"number\"\n [(ngModel)]=\"entity.BatchSize\"\n (ngModelChange)=\"OnEntityChanged(entity)\"\n class=\"entity-input entity-input-sm\" />\n </td>\n <td>\n <input\n type=\"text\"\n [(ngModel)]=\"entity.DateField\"\n (ngModelChange)=\"OnEntityChanged(entity)\"\n class=\"entity-input\"\n placeholder=\"e.g. CreatedAt\" />\n </td>\n <td>\n <input\n type=\"checkbox\"\n [(ngModel)]=\"entity.IsActive\"\n (ngModelChange)=\"OnEntityChanged(entity)\" />\n </td>\n <td>\n <button\n class=\"btn-icon btn-icon-danger\"\n (click)=\"RemoveEntity(entity)\"\n title=\"Remove entity\"\n aria-label=\"Remove entity\">\n <i class=\"fa-solid fa-trash-can\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n\n @if (ConfigEntities.length === 0) {\n <div class=\"entity-empty\">\n <p>No entities configured. Click \"Add Entity\" to add one.</p>\n </div>\n }\n </div>\n\n <!-- Status message -->\n @if (StatusMessage) {\n <div class=\"config-status\" [class.status-success]=\"StatusType === 'success'\" [class.status-error]=\"StatusType === 'error'\">\n @if (StatusType === 'success') {\n <i class=\"fa-solid fa-circle-check\"></i>\n }\n @if (StatusType === 'error') {\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n }\n {{ StatusMessage }}\n </div>\n }\n\n <!-- Action bar (Save on LEFT per MJ convention) -->\n <div class=\"detail-actions\">\n <button\n class=\"btn btn-primary\"\n [disabled]=\"IsSaving\"\n (click)=\"Save()\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n <i class=\"fa-solid fa-floppy-disk\"></i> Save\n }\n </button>\n <button class=\"btn btn-secondary\" [disabled]=\"IsSaving\" (click)=\"Cancel()\">\n Cancel\n </button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n</div>\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./archive-status/archive-status-badge.component";
|
|
3
|
+
import * as i2 from "./archive-restore/archive-restore-dialog.component";
|
|
4
|
+
import * as i3 from "./archive-config/archive-config-admin.component";
|
|
5
|
+
import * as i4 from "./archive-run-viewer/archive-run-viewer.component";
|
|
6
|
+
import * as i5 from "@angular/common";
|
|
7
|
+
import * as i6 from "@angular/forms";
|
|
8
|
+
import * as i7 from "@memberjunction/ng-shared-generic";
|
|
9
|
+
export declare class ArchiveManagerModule {
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ArchiveManagerModule, never>;
|
|
11
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ArchiveManagerModule, [typeof i1.ArchiveStatusBadgeComponent, typeof i2.ArchiveRestoreDialogComponent, typeof i3.ArchiveConfigAdminComponent, typeof i4.ArchiveRunViewerComponent], [typeof i5.CommonModule, typeof i6.FormsModule, typeof i7.SharedGenericModule], [typeof i1.ArchiveStatusBadgeComponent, typeof i2.ArchiveRestoreDialogComponent, typeof i3.ArchiveConfigAdminComponent, typeof i4.ArchiveRunViewerComponent]>;
|
|
12
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<ArchiveManagerModule>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=archive-manager.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive-manager.module.d.ts","sourceRoot":"","sources":["../../src/lib/archive-manager.module.ts"],"names":[],"mappings":";;;;;;;;AAUA,qBAmBa,oBAAoB;yCAApB,oBAAoB;0CAApB,oBAAoB;0CAApB,oBAAoB;CAAG"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { SharedGenericModule } from '@memberjunction/ng-shared-generic';
|
|
5
|
+
import { ArchiveStatusBadgeComponent } from './archive-status/archive-status-badge.component';
|
|
6
|
+
import { ArchiveRestoreDialogComponent } from './archive-restore/archive-restore-dialog.component';
|
|
7
|
+
import { ArchiveConfigAdminComponent } from './archive-config/archive-config-admin.component';
|
|
8
|
+
import { ArchiveRunViewerComponent } from './archive-run-viewer/archive-run-viewer.component';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class ArchiveManagerModule {
|
|
11
|
+
static ɵfac = function ArchiveManagerModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ArchiveManagerModule)(); };
|
|
12
|
+
static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: ArchiveManagerModule });
|
|
13
|
+
static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule,
|
|
14
|
+
FormsModule,
|
|
15
|
+
SharedGenericModule] });
|
|
16
|
+
}
|
|
17
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ArchiveManagerModule, [{
|
|
18
|
+
type: NgModule,
|
|
19
|
+
args: [{
|
|
20
|
+
declarations: [
|
|
21
|
+
ArchiveStatusBadgeComponent,
|
|
22
|
+
ArchiveRestoreDialogComponent,
|
|
23
|
+
ArchiveConfigAdminComponent,
|
|
24
|
+
ArchiveRunViewerComponent,
|
|
25
|
+
],
|
|
26
|
+
imports: [
|
|
27
|
+
CommonModule,
|
|
28
|
+
FormsModule,
|
|
29
|
+
SharedGenericModule,
|
|
30
|
+
],
|
|
31
|
+
exports: [
|
|
32
|
+
ArchiveStatusBadgeComponent,
|
|
33
|
+
ArchiveRestoreDialogComponent,
|
|
34
|
+
ArchiveConfigAdminComponent,
|
|
35
|
+
ArchiveRunViewerComponent,
|
|
36
|
+
],
|
|
37
|
+
}]
|
|
38
|
+
}], null, null); })();
|
|
39
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(ArchiveManagerModule, { declarations: [ArchiveStatusBadgeComponent,
|
|
40
|
+
ArchiveRestoreDialogComponent,
|
|
41
|
+
ArchiveConfigAdminComponent,
|
|
42
|
+
ArchiveRunViewerComponent], imports: [CommonModule,
|
|
43
|
+
FormsModule,
|
|
44
|
+
SharedGenericModule], exports: [ArchiveStatusBadgeComponent,
|
|
45
|
+
ArchiveRestoreDialogComponent,
|
|
46
|
+
ArchiveConfigAdminComponent,
|
|
47
|
+
ArchiveRunViewerComponent] }); })();
|
|
48
|
+
//# sourceMappingURL=archive-manager.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive-manager.module.js","sourceRoot":"","sources":["../../src/lib/archive-manager.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iDAAiD,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,2BAA2B,EAAE,MAAM,iDAAiD,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;;AAqB9F,MAAM,OAAO,oBAAoB;8GAApB,oBAAoB;4DAApB,oBAAoB;gEAX7B,YAAY;YACZ,WAAW;YACX,mBAAmB;;iFASV,oBAAoB;cAnBhC,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,2BAA2B;oBAC3B,6BAA6B;oBAC7B,2BAA2B;oBAC3B,yBAAyB;iBAC1B;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,mBAAmB;iBACpB;gBACD,OAAO,EAAE;oBACP,2BAA2B;oBAC3B,6BAA6B;oBAC7B,2BAA2B;oBAC3B,yBAAyB;iBAC1B;aACF;;wFACY,oBAAoB,mBAjB7B,2BAA2B;QAC3B,6BAA6B;QAC7B,2BAA2B;QAC3B,yBAAyB,aAGzB,YAAY;QACZ,WAAW;QACX,mBAAmB,aAGnB,2BAA2B;QAC3B,6BAA6B;QAC7B,2BAA2B;QAC3B,yBAAyB","sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SharedGenericModule } from '@memberjunction/ng-shared-generic';\n\nimport { ArchiveStatusBadgeComponent } from './archive-status/archive-status-badge.component';\nimport { ArchiveRestoreDialogComponent } from './archive-restore/archive-restore-dialog.component';\nimport { ArchiveConfigAdminComponent } from './archive-config/archive-config-admin.component';\nimport { ArchiveRunViewerComponent } from './archive-run-viewer/archive-run-viewer.component';\n\n@NgModule({\n declarations: [\n ArchiveStatusBadgeComponent,\n ArchiveRestoreDialogComponent,\n ArchiveConfigAdminComponent,\n ArchiveRunViewerComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SharedGenericModule,\n ],\n exports: [\n ArchiveStatusBadgeComponent,\n ArchiveRestoreDialogComponent,\n ArchiveConfigAdminComponent,\n ArchiveRunViewerComponent,\n ],\n})\nexport class ArchiveManagerModule {}\n"]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { EventEmitter, OnDestroy } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/** Represents a single archived version of a record */
|
|
4
|
+
export interface ArchiveVersion {
|
|
5
|
+
/** Archive run detail ID */
|
|
6
|
+
ID: string;
|
|
7
|
+
/** Date the archive was created */
|
|
8
|
+
ArchivedAt: Date;
|
|
9
|
+
/** Number of fields in this archive */
|
|
10
|
+
FieldCount: number;
|
|
11
|
+
/** Size in bytes */
|
|
12
|
+
Bytes: number;
|
|
13
|
+
/** Storage path where archive is stored */
|
|
14
|
+
StoragePath: string;
|
|
15
|
+
/** The archived field data as a JSON string */
|
|
16
|
+
ArchivedData: string;
|
|
17
|
+
}
|
|
18
|
+
/** Result status after a restore attempt */
|
|
19
|
+
export type RestoreStatus = 'idle' | 'loading' | 'restoring' | 'success' | 'error';
|
|
20
|
+
export declare class ArchiveRestoreDialogComponent implements OnDestroy {
|
|
21
|
+
private cdr;
|
|
22
|
+
/** All available versions for this record */
|
|
23
|
+
Versions: ArchiveVersion[];
|
|
24
|
+
/** Currently selected version for preview */
|
|
25
|
+
SelectedVersion: ArchiveVersion | null;
|
|
26
|
+
/** Parsed JSON preview of the selected version */
|
|
27
|
+
PreviewJson: string;
|
|
28
|
+
/** Current operation status */
|
|
29
|
+
Status: RestoreStatus;
|
|
30
|
+
/** Error message if restore fails */
|
|
31
|
+
ErrorMessage: string;
|
|
32
|
+
/** Success message after restore */
|
|
33
|
+
SuccessMessage: string;
|
|
34
|
+
private destroyed;
|
|
35
|
+
private _entityName;
|
|
36
|
+
set EntityName(value: string);
|
|
37
|
+
get EntityName(): string;
|
|
38
|
+
private _recordID;
|
|
39
|
+
set RecordID(value: string);
|
|
40
|
+
get RecordID(): string;
|
|
41
|
+
private _visible;
|
|
42
|
+
set Visible(value: boolean);
|
|
43
|
+
get Visible(): boolean;
|
|
44
|
+
/** Two-way binding support for Visible */
|
|
45
|
+
VisibleChange: EventEmitter<boolean>;
|
|
46
|
+
/** Emitted after a successful restore */
|
|
47
|
+
RestoreCompleted: EventEmitter<void>;
|
|
48
|
+
ngOnDestroy(): void;
|
|
49
|
+
/** Select a version from the timeline */
|
|
50
|
+
SelectVersion(version: ArchiveVersion): void;
|
|
51
|
+
/** Check if a version is the currently selected one */
|
|
52
|
+
IsSelected(version: ArchiveVersion): boolean;
|
|
53
|
+
/** Initiate restore of the selected version */
|
|
54
|
+
RestoreSelectedVersion(): Promise<void>;
|
|
55
|
+
/** Close the dialog */
|
|
56
|
+
Close(): void;
|
|
57
|
+
/** Format bytes into a human-readable string */
|
|
58
|
+
FormatBytes(bytes: number): string;
|
|
59
|
+
/** Format a date for display */
|
|
60
|
+
FormatDate(date: Date): string;
|
|
61
|
+
/** Called when the dialog becomes visible */
|
|
62
|
+
private onDialogOpened;
|
|
63
|
+
/** Called when the dialog is hidden */
|
|
64
|
+
private onDialogClosed;
|
|
65
|
+
/** Load all archived versions for this record */
|
|
66
|
+
private loadVersions;
|
|
67
|
+
/** Fetch version records from the server */
|
|
68
|
+
private fetchVersionRecords;
|
|
69
|
+
/** Map raw records to ArchiveVersion objects */
|
|
70
|
+
private mapVersionRecords;
|
|
71
|
+
/** Auto-select the first (newest) version if available */
|
|
72
|
+
private autoSelectFirstVersion;
|
|
73
|
+
/** Perform the actual restore operation */
|
|
74
|
+
private performRestore;
|
|
75
|
+
/** Format a JSON string for pretty display */
|
|
76
|
+
private formatJson;
|
|
77
|
+
/** Reset all dialog state */
|
|
78
|
+
private resetState;
|
|
79
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ArchiveRestoreDialogComponent, never>;
|
|
80
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ArchiveRestoreDialogComponent, "mj-archive-restore-dialog", never, { "EntityName": { "alias": "EntityName"; "required": false; }; "RecordID": { "alias": "RecordID"; "required": false; }; "Visible": { "alias": "Visible"; "required": false; }; }, { "VisibleChange": "VisibleChange"; "RestoreCompleted": "RestoreCompleted"; }, never, never, false, never>;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=archive-restore-dialog.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive-restore-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/lib/archive-restore/archive-restore-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,YAAY,EACZ,SAAS,EAEV,MAAM,eAAe,CAAC;;AAIvB,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,UAAU,EAAE,IAAI,CAAC;IACjB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,4CAA4C;AAC5C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnF,qBAOa,6BAA8B,YAAW,SAAS;IAC7D,OAAO,CAAC,GAAG,CAA6B;IAExC,6CAA6C;IAC7C,QAAQ,EAAE,cAAc,EAAE,CAAM;IAEhC,6CAA6C;IAC7C,eAAe,EAAE,cAAc,GAAG,IAAI,CAAQ;IAE9C,kDAAkD;IAClD,WAAW,SAAM;IAEjB,+BAA+B;IAC/B,MAAM,EAAE,aAAa,CAAU;IAE/B,qCAAqC;IACrC,YAAY,SAAM;IAElB,oCAAoC;IACpC,cAAc,SAAM;IAEpB,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,WAAW,CAAM;IAEzB,IACI,UAAU,CAAC,KAAK,EAAE,MAAM,EAE3B;IACD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAGD,OAAO,CAAC,SAAS,CAAM;IAEvB,IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEzB;IACD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAGD,OAAO,CAAC,QAAQ,CAAS;IAEzB,IACI,OAAO,CAAC,KAAK,EAAE,OAAO,EASzB;IACD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,0CAA0C;IAChC,aAAa,wBAA+B;IAEtD,yCAAyC;IAC/B,gBAAgB,qBAA4B;IAEtD,WAAW,IAAI,IAAI;IAInB,yCAAyC;IACzC,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAM5C,uDAAuD;IACvD,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO;IAI5C,+CAA+C;IACzC,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB7C,uBAAuB;IACvB,KAAK,IAAI,IAAI;IAKb,gDAAgD;IAChD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IASlC,gCAAgC;IAChC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAU9B,6CAA6C;YAC/B,cAAc;IAK5B,uCAAuC;IACvC,OAAO,CAAC,cAAc;IAItB,iDAAiD;YACnC,YAAY;IAuB1B,4CAA4C;YAC9B,mBAAmB;IAcjC,gDAAgD;IAChD,OAAO,CAAC,iBAAiB;IAczB,0DAA0D;IAC1D,OAAO,CAAC,sBAAsB;IAM9B,2CAA2C;YAC7B,cAAc;IAM5B,8CAA8C;IAC9C,OAAO,CAAC,UAAU;IASlB,6BAA6B;IAC7B,OAAO,CAAC,UAAU;yCApOP,6BAA6B;2CAA7B,6BAA6B;CA4OzC"}
|