3 [hasScrollingContent]="true"
4 (overlaySelected)="closeModal()">
5 <cds-modal-header (closeSelect)="closeModal()">
6 <h3 cdsModalHeaderHeading
8 {{ action | titlecase }} {{ resource | upperFirst }}
12 <ng-container *cdFormLoading="loading">
14 <form name="snapScheduleForm"
16 [formGroup]="snapScheduleForm"
19 <div class="form-item">
20 <cds-text-label for="directory"
22 cdRequiredField="Directory"
23 [invalid]="snapScheduleForm.controls.directory.invalid && (snapScheduleForm.controls.directory.dirty)"
24 [invalidText]="directoryError"
25 [skeleton]="directoryStore.isLoading"
27 <ng-container *ngIf="!directoryStore.isLoading">Directory (required)</ng-container>
30 formControlName="directory"
32 [ngbTypeahead]="search"
33 [invalid]="snapScheduleForm.controls.directory.invalid && (snapScheduleForm.controls.directory.dirty)"
34 [placeholder]="directoryStore.isLoading ? '' : 'Directory path'"
35 [skeleton]="directoryStore.isLoading"/>
37 <ng-template #directoryError>
38 <span class="invalid-feedback"
39 *ngIf="snapScheduleForm.showError('directory', formDir, 'required')"
40 i18n>This field is required.</span>
41 <span class="invalid-feedback"
42 *ngIf="snapScheduleForm.showError('directory', formDir, 'notUnique')"
43 i18n>A snapshot schedule for this path already exists.</span>
50 helperText="The time zone is assumed to be UTC"
51 [control]="snapScheduleForm.get('startDate')"
52 [disabled]="isEdit"></cd-date-time-picker>
53 <span class="invalid-feedback"
54 *ngIf="snapScheduleForm.showError('startDate', formDir, 'required')"
55 i18n>This field is required.</span>
57 <!-- Repeat interval -->
58 <div class="form-item form-item-append"
61 <cds-number [id]="'repeatInterval'"
62 [name]="'repeatInterval'"
63 [formControlName]="'repeatInterval'"
66 [invalid]="!snapScheduleForm.controls.repeatInterval.valid && (snapScheduleForm.controls.repeatInterval.dirty)"
67 [invalidText]="repeatIntervalError"
68 cdRequiredField="Schedule"></cds-number>
71 <cds-select id="repeatFrequency"
72 name="repeatFrequency"
73 formControlName="repeatFrequency"
75 [invalid]="!snapScheduleForm.controls.repeatFrequency.valid && (snapScheduleForm.controls.repeatFrequency.dirty)"
76 [invalidText]="repeatFrequencyError"
77 *ngIf="repeatFrequencies">
78 <option *ngFor="let freq of repeatFrequencies"
79 [value]="freq[1]">{{ freq[0] }}
82 <ng-template #repeatFrequencyError>
83 <span class="invalid-feedback"
84 *ngIf="snapScheduleForm.showError('repeatFrequency', formDir, 'notUnique')"
85 i18n>This schedule already exists for the selected directory.</span>
87 <ng-template #repeatIntervalError>
88 <span class="invalid-feedback"
89 *ngIf="snapScheduleForm.showError('repeatInterval', formDir, 'required')"
90 i18n>This field is required.</span>
91 <span class="invalid-feedback"
92 *ngIf="snapScheduleForm.showError('repeatInterval', formDir, 'min')"
93 i18n>Choose a value greater than 0.</span>
98 <!-- Retention policies -->
99 <ng-container formArrayName="retentionPolicies"
100 *ngFor="let retentionPolicy of retentionPolicies.controls; index as i">
101 <ng-container [formGroupName]="i">
103 class="form-item form-item-append">
105 [columnNumbers]="{lg: 8}">
106 <cds-number [id]="'retentionInterval' + i"
107 [name]="'retentionInterval' + i"
108 [formControlName]="'retentionInterval'"
109 [label]="'Retention policy'"
111 [invalid]="snapScheduleForm.controls['retentionPolicies'].controls[i].invalid && snapScheduleForm.controls['retentionPolicies'].dirty"
112 [invalidText]="retentionPolicyError"></cds-number>
115 [columnNumbers]="{lg: 7}">
116 <cds-select id="retentionFrequency"
117 name="retentionFrequency"
118 formControlName="retentionFrequency"
120 *ngIf="retentionFrequencies">
121 <option *ngFor="let freq of retentionFrequencies"
122 [value]="freq[1]">{{ freq[0] }}</option>
127 [columnNumbers]="{lg: 1}"
128 class="item-action-btn">
129 <cds-icon-button kind="tertiary"
131 (click)="removeRetentionPolicy(i)">
132 <svg cdsIcon="trash-can"
134 class="cds--btn__icon"></svg>
138 <ng-template #retentionPolicyError>
139 <span class="invalid-feedback"
140 *ngIf="snapScheduleForm.controls['retentionPolicies'].controls[i].invalid"
141 i18n>This retention policy already exists for the selected directory.</span>
146 <div class="form-item">
147 <button cdsButton="tertiary"
149 (click)="addRetentionPolicy()"
154 class="cds--btn__icon"
160 <cd-form-button-panel (submitActionEvent)="submit()"
161 [form]="snapScheduleForm"
162 [submitText]="(action | titlecase) + ' ' + (resource | upperFirst)"
163 [modalForm]="true"></cd-form-button-panel>