<div class="container">
<div class="creat-action-container">
- <a class="action-button save" (click)="editBluePrint()">
+ <button class="action-button save" (click)="editBluePrint()" [disabled]="!isSaveEnabled">
<i class="icon-save-sm" aria-hidden="true"></i>
<span>Save</span>
- </a>
- <a class="action-button" (click)="discardChanges()">
+ </button>
+ <button data-target="#discardChangesModal" data-toggle="modal" class="action-button" [disabled]="!isSaveEnabled">
<i class="icon-discard-sm" aria-hidden="true"></i>
<span>Discard Changes</span>
- </a>
+ </button>
<hr>
- <a class="action-button">
+ <button class="action-button">
<i class="icon-clone-sm" aria-hidden="true"></i>
<span>Clone</span>
- </a>
+ </button>
<a href="#" class="action-button">
<i class="icon-archive-sm" aria-hidden="true"></i>
</div>
</div>
</div>
+
+<div class="modal fade" id="discardChangesModal" tabindex="-1" role="dialog" aria-labelledby="discardChangesModalLabel"
+ aria-hidden="true">
+ <div class="modal-dialog" role="document">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h5 class="modal-title" id="discardChangesModalLabel">Discard Changes</h5>
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+ <i class="icon-action-close"></i>
+ </button>
+ </div>
+ <div class="modal-body">
+ <p>Are you sure you want to discard the changes?</p>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
+ <button type="button" (click)="discardChanges()" data-dismiss="modal"
+ class="btn btn-primary">Discard Changes
+ </button>
+ </div>
+ </div>
+ </div>
+</div>
currentBlob = new Blob();
vlbDefinition: VlbDefinition = new VlbDefinition();
+ isSaveEnabled = false;
+ versionPattern = '^(\\d+\\.)?(\\d+\\.)?(\\*|\\d+)$';
constructor(
private route: ActivatedRoute,
this.elementRef.nativeElement.focus();
this.refreshCurrentPackage();
+
+ const regexp = RegExp(this.versionPattern);
+ this.packageCreationStore.state$.subscribe(cbaPackage => {
+ if (cbaPackage && cbaPackage.metaData && cbaPackage.metaData.description
+ && cbaPackage.metaData.name && cbaPackage.metaData.version &&
+ regexp.test(cbaPackage.metaData.version)) {
+ this.isSaveEnabled = true;
+ } else {
+ this.isSaveEnabled = false;
+ }
+ });
}
private refreshCurrentPackage() {
<div class="single-line-model">
<label class="label-name">Name <span>*</span></label>
<div class="label-input">
- <input type="input" [readOnly]="!packageNameAndVersionEnables" (change)="checkRequiredElements()" [(ngModel)]="metaDataTab.name"
+ <input type="input" (change)="checkRequiredElements()" [(ngModel)]="metaDataTab.name"
placeholder="Package name">
</div>
<!--<div class="model-note-container error-message">
<div class="single-line-model">
<label class="label-name">Version <span>*</span></label>
<div class="label-input">
- <input type="input" [readOnly]="!packageNameAndVersionEnables" (change)="checkRequiredElements()" [(ngModel)]="metaDataTab.version"
+ <input type="input" (change)="checkRequiredElements()" [(ngModel)]="metaDataTab.version"
(input)="validatePackageNameAndVersion()" pattern="(\d+)\.(\d+)\.(\d+)" placeholder="Example: 1.0.0">
</div>
<div class="model-note-container error-message">{{errorMessage}}</div>
styleUrls: ['./metadata-tab.component.css']
})
export class MetadataTabComponent implements OnInit {
- packageNameAndVersionEnables = true;
+
counter = 0;
tags = new Set<string>();
customKeysMap = new Map();
modeType = this.modes[0].name;
metaDataTab: MetaDataTabModel = new MetaDataTabModel();
errorMessage: string;
- versionPattern = '(\d+)\.(\d+)\.(\d+)';
+ versionPattern = '^(\\d+\\.)?(\\d+\\.)?(\\*|\\d+)$';
constructor(
private route: ActivatedRoute,
this.metaDataTab.mapOfCustomKey = this.customKeysMap;
this.metaDataTab.mode = this.modeType;
- const id = this.route.snapshot.paramMap.get('id');
- id ? this.packageNameAndVersionEnables = false :
- this.packageNameAndVersionEnables = true;
this.packageCreationStore.state$.subscribe(element => {
if (element && element.metaData) {