Skip to content

Commit

Permalink
Merge pull request #6283 from deNBI/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
dweinholz authored Dec 12, 2024
2 parents 1e7852b + 2ff97d8 commit 0b342ec
Show file tree
Hide file tree
Showing 10 changed files with 131 additions and 51 deletions.
73 changes: 52 additions & 21 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@denbi/cloud-portal-webapp",
"version": "4.899.0",
"version": "4.900.0",
"description": "de.NBI Cloud Portal",
"scripts": {
"ng": "ng serve",
Expand Down Expand Up @@ -109,7 +109,7 @@
"less-loader": "12.2.0",
"lint-staged": "15.2.10",
"ngx-spec": "2.1.6",
"npm-run-all2": "6.2.6",
"npm-run-all2": "7.0.1",
"prettier": "3.3.3",
"raw-loader": "4.0.2",
"sass-loader": "16.0.2",
Expand Down
8 changes: 8 additions & 0 deletions src/app/api-connector/applications.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -336,4 +336,12 @@ export class ApplicationsService {
withCredentials: true
})
}

checkForTakenShortname(shortname: string): Observable<any> {
return this.http.get(`${ApiSettings.getApiBaseURL()}project_applications/shortname/`, {
params: { shortname: shortname },
withCredentials: true
});

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,11 @@ <h5 class="col-md-6 form-control-label">General Information</h5>
<font color="red">Umlauts and special characters are prohibited in the shortname.</font>
</strong>
</div>
<div *ngIf="shortNameTaken">
<strong>
<font color="red">Please choose another shortname</font>
</strong>
</div>
<input
required
type="text"
Expand All @@ -160,17 +165,19 @@ <h5 class="col-md-6 form-control-label">General Information</h5>
pattern="[a-zA-Z0-9]+"
[ngClass]="{
'is-invalid':
form.controls.project_application_shortname?.invalid &&
(form.controls.project_application_shortname?.invalid || shortNameTaken) &&
(form.controls.project_application_shortname?.dirty ||
form.controls.project_application_shortname?.touched),
form.controls.project_application_shortname?.touched)
,
'is-valid':
form.controls.project_application_shortname?.valid &&
form.controls.project_application_shortname?.valid && !shortNameTaken &&
(form.controls.project_application_shortname?.dirty ||
form.controls.project_application_shortname?.touched),
}"
/>

<span class="help-block">Enter a short name (between 5 and 15 characters).</span>

</div>
</div>

Expand Down Expand Up @@ -490,7 +497,7 @@ <h5 class="col-md-12 form-control-label">Resources</h5>
/>
<div class="input-group-append"><span class="input-group-text"> GB </span></div>
</div>
<span class="help-block">How much total extra storage do you need for your VMs?</span>
<span class="help-block">How much total storage do you need for your VMs in form of Volumes?</span>
</div>
</div>
<div class="form-group row" *ngIf="openstack_project">
Expand Down Expand Up @@ -1792,6 +1799,7 @@ <h6><strong>Platforms</strong></h6>
data-test-id="submit_application_btn"
[disabled]="
submitting ||
shortNameTaken ||
form.invalid ||
(!unknownPiAffiliationsConfirmation &&
!valid_pi_affiliations &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ import { UserService } from '../../api-connector/user.service'
import { Userinfo } from '../../userinfo/userinfo.model'
import { User } from '../application.model/user.model'
import { NotificationModalComponent } from '../../shared/modal/notification-modal'
import { Subject, Subscription } from 'rxjs';
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
import { thresholdScott } from 'd3'

/**
* Application formular component.
Expand Down Expand Up @@ -87,6 +90,9 @@ export class ApplicationFormularComponent extends ApplicationBaseClassComponent
WIKI_BACKUP_LINK: string = WIKI_BACKUP_LINK
GDPR_LINK: string = GDPR_LINK
survey_link_visible: boolean = false
private nameCheckPipe = new Subject<string>();
shortnameChecking: boolean = false;
shortNameTaken: boolean = false;

MAX_LIFETIME_DEFAULT: number = 6
max_lifetime: number = this.MAX_LIFETIME_DEFAULT
Expand Down Expand Up @@ -119,6 +125,7 @@ export class ApplicationFormularComponent extends ApplicationBaseClassComponent
this.getListOfFlavors()
this.getListOfTypes()
this.is_vo_admin = is_vo
this.nameCheckPipe.pipe(debounceTime(600), distinctUntilChanged()).subscribe(value => {this.checkIfNameIsTaken(value)});

if (this.openstack_project) {
this.simple_vm_min_vm = true
Expand All @@ -138,6 +145,16 @@ export class ApplicationFormularComponent extends ApplicationBaseClassComponent
}
}

checkIfNameIsTaken(shortname: string): void {
this.shortnameChecking = true;
this.applicationsService.checkForTakenShortname(shortname).subscribe((result: boolean): void => {
let nameExists: boolean = result['exists'];
this.shortnameChecking = false;
this.shortNameTaken = nameExists;
});

}

checkValidityComment(): boolean {
if (this.extraResourceCommentRequired) {
if (this.application.project_application_comment?.length < 50) {
Expand Down Expand Up @@ -238,6 +255,11 @@ export class ApplicationFormularComponent extends ApplicationBaseClassComponent
*/
public checkShortname(shortname: string): void {
this.invalid_shortname = !/^[a-zA-Z0-9\s]*$/.test(shortname)
if (!this.invalid_shortname) {
this.shortnameChecking = true;
this.nameCheckPipe.next(shortname);
}

}

public checkLongname(longname: string): void {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ <h4>Adjust application for {{ application?.project_application_shortname }}</h4>
[ngStyle]="{
'background-color': adjustedApplication.project_application_openstack_project
? '#FF0000'
: '#00adef'
: '#00adef',
}"
></span>
</label>
Expand Down Expand Up @@ -78,7 +78,7 @@ <h4>Adjust application for {{ application?.project_application_shortname }}</h4>
appInteger
[ngClass]="{
'is-invalid': resourceAdjustmentForm.controls.granted_lifetime_counter?.invalid,
'is-valid': resourceAdjustmentForm.controls.granted_lifetime_counter?.valid
'is-valid': resourceAdjustmentForm.controls.granted_lifetime_counter?.valid,
}"
/>
</div>
Expand Down Expand Up @@ -109,7 +109,7 @@ <h6 class="col-md-8 form-control-label">
style="font-size: 25px"
[ngClass]="{
'icon-arrow-up': groupval.isOpen,
'icon-arrow-down': !groupval.isOpen
'icon-arrow-down': !groupval.isOpen,
}"
></i>
</div>
Expand Down Expand Up @@ -163,7 +163,7 @@ <h6 class="col-md-8 form-control-label">
appIntegerOrNull
[ngClass]="{
'is-invalid': name?.invalid,
'is-valid': name?.valid
'is-valid': name?.valid,
}"
/>
<div class="input-group-append"><span class="input-group-text"> VMs</span></div>
Expand Down Expand Up @@ -217,7 +217,7 @@ <h6 class="col-md-8 form-control-label">
appInteger
[ngClass]="{
'is-invalid': resourceAdjustmentForm.controls.granted_volume_counter?.invalid,
'is-valid': resourceAdjustmentForm.controls.grated_volume_counter?.valid
'is-valid': resourceAdjustmentForm.controls.grated_volume_counter?.valid,
}"
/>
</div>
Expand Down Expand Up @@ -247,7 +247,7 @@ <h6 class="col-md-8 form-control-label">
/>
<div class="input-group-append"><span class="input-group-text"> GB </span></div>
</div>
<span class="help-block">Requested extra storage</span>
<span class="help-block">Requested volume storage</span>
</div>
<div class="col">
<div class="input-group">
Expand All @@ -264,13 +264,13 @@ <h6 class="col-md-8 form-control-label">
appInteger
[ngClass]="{
'is-invalid': resourceAdjustmentForm.controls.granted_volume_limit?.invalid,
'is-valid': resourceAdjustmentForm.controls.granted_volume_limit?.valid
'is-valid': resourceAdjustmentForm.controls.granted_volume_limit?.valid,
}"
[disabled]="resourceAdjustmentForm.controls.granted_volume_counter?.value === 0"
/>
<div class="input-group-append"><span class="input-group-text"> GB </span></div>
</div>
<span class="help-block">Amount of extra storage you want to grant</span>
<span class="help-block">Amount of volume storage you want to grant</span>
</div>
</div>

Expand Down Expand Up @@ -316,7 +316,7 @@ <h6 class="col-md-8 form-control-label">
required
[ngClass]="{
'is-invalid': resourceAdjustmentForm.controls.granted_object_storage?.invalid,
'is-valid': resourceAdjustmentForm.controls.granted_object_storage?.valid
'is-valid': resourceAdjustmentForm.controls.granted_object_storage?.valid,
}"
/>
<div class="input-group-append"><span class="input-group-text"> GB </span></div>
Expand Down
Loading

0 comments on commit 0b342ec

Please sign in to comment.