This is an automated email from the ASF dual-hosted git repository. dgnatyshyn pushed a commit to branch DLAB-1925 in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
commit 20a3f412b30f23b326cbb5d0619a77122bcfbd09 Author: Dmytro_Gnatyshyn <di1...@ukr.net> AuthorDate: Wed Jul 8 17:48:14 2020 +0300 [DLAB-1925] Change total instance number for EMR, fixed billing on resource --- .../app/administration/project/project-data.service.ts | 13 +++++++++---- .../project/project-list/project-list.component.html | 4 ++-- .../cluster-details/cluster-details.component.html | 5 ++++- .../resources-grid/resources-grid.component.html | 2 +- .../src/app/resources/scheduler/scheduler.component.html | 16 ++++++++-------- .../src/app/resources/scheduler/scheduler.component.ts | 9 +++++---- .../notification-dialog/notification-dialog.component.ts | 2 +- 7 files changed, 30 insertions(+), 21 deletions(-) diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-data.service.ts b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-data.service.ts index 014c89b..a461686 100644 --- a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-data.service.ts +++ b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-data.service.ts @@ -47,11 +47,16 @@ export class ProjectDataService { if (response && this.endpointsList.length) { response.forEach(project => project.endpoints.forEach(endpoint => { const filtredEndpoints = this.endpointsList.filter(v => v.name === endpoint.name); - if (filtredEndpoints.length) { - endpoint.endpointStatus = this.endpointsList.filter(v => v.name === endpoint.name)[0].status; - } else { - endpoint.endpointStatus = 'N/A'; + const idx = this.endpointsList.findIndex(v => v.name === endpoint.name); + // console.log('IDX ', idx); + // if (filtredEndpoints.length) { + if (idx >= 0) { + endpoint.endpointStatus = this.endpointsList[idx].status; } + + // } else { + // endpoint.endpointStatus = 'N/A'; + // } })); } return of(response); diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html index 04f525b..ef03098 100644 --- a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html @@ -51,12 +51,12 @@ </div> <div class="resource-status"> <span [ngClass]="{'active' : endpoint.endpointStatus === 'ACTIVE', 'failed': endpoint.endpointStatus === 'INACTIVE'}"> - {{ endpoint.endpointStatus | titlecase }} + {{ (endpoint.endpointStatus | titlecase) || 'N/A'}} </span> </div> <span class="status resource-status" - ngClass="{{endpoint.status.toLowerCase() || ''}}">{{ endpoint.status.toLowerCase() }}</span> + [ngClass]="endpoint?.status.toLowerCase() || ''">{{ endpoint?.status.toLowerCase() }}</span> </div> </ng-template> </td> diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.html index 58ec39f..25f41d9 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.html @@ -71,7 +71,10 @@ <p>Total instance number:</p> </div> </ng-template> - <div class="col"><span>{{ resource[DICTIONARY[PROVIDER][resource.image].total_instance_number] || 1}}</span></div> + <div class="col"> + <span *ngIf="DICTIONARY[PROVIDER].cloud_provider === 'aws'">{{ resource.totalInstanceCount > 0 ? resource.totalInstanceCount : resource.dataengine_instance_count}}</span> + <span *ngIf="DICTIONARY[PROVIDER].cloud_provider === 'gcp'">1</span> + </div> </div> <div class="row-wrap" *ngIf="DICTIONARY[PROVIDER].cloud_provider === 'gcp' && resource.image === 'docker.dlab-dataengine-service'"> diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html index 2f9088c..0edb5e7 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html @@ -137,7 +137,7 @@ </computational-resources-list> </td> <td *ngIf="healthStatus?.billingEnabled" class="cost-col"> - <span class="total_cost">{{ element.cost || 'N/A' }} {{ element.currency_code || '' }}</span> + <span class="total_cost">{{ element.billing.report_lines.length ? element.cost : 'N/A' }} {{ element.currency_code || '' }}</span> <span (click)="element.billing && printCostDetails(element)" class="currency_details" [ngClass]="{ 'not-allowed' : !element.billing.report_lines.length }"> <i class="material-icons">help_outline</i> diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.html index 304c511..c49628e 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.html @@ -64,7 +64,7 @@ <mat-form-field> <input matInput [matDatepicker]="startDate" placeholder="Choose start date" formControlName="startDate"> <mat-datepicker-toggle - [ngClass]="{'not-allowed' : destination.type === 'СOMPUTATIONAL' && inherit || !enableSchedule }" + matSuffix [for]="startDate"></mat-datepicker-toggle> <mat-datepicker #startDate></mat-datepicker> </mat-form-field> @@ -72,9 +72,9 @@ <div class="col-3"> <mat-form-field> <input matInput [matDatepicker]="finishDate" placeholder="Choose finish date" - formControlName="finishDate" [disabled]="destination.type === 'СOMPUTATIONAL' && inherit ||!enableSchedule"> - <mat-datepicker-toggle matSuffix [for]="finishDate" [disabled]="destination.type === 'СOMPUTATIONAL' && inherit ||!enableSchedule"></mat-datepicker-toggle> - <mat-datepicker #finishDate [disabled]="destination.type === 'СOMPUTATIONAL' && inherit ||!enableSchedule"></mat-datepicker> + formControlName="finishDate"> + <mat-datepicker-toggle matSuffix [for]="finishDate" [ngClass]="{'not-allowed' : destination.type === 'СOMPUTATIONAL' && inherit || !enableSchedule }"></mat-datepicker-toggle> + <mat-datepicker #finishDate ></mat-datepicker> </mat-form-field> </div> <div class="col-3" *ngIf="destination.type === 'СOMPUTATIONAL'; else timezone"> @@ -103,11 +103,11 @@ <div class="control-group col-3 time-range"> <dlab-time-picker [(pickTime)]="startTime" [label]="'Choose start time'" [disable]="destination.type === 'СOMPUTATIONAL' && inherit || !enableSchedule"> + {{destination.type}} </dlab-time-picker> </div> <div class="control-group col-3 time-range"> -<!-- <dlab-time-picker [(pickTime)]="endTime" [label]="'Choose finish time'" [disable]="destination.type === 'СOMPUTATIONAL' && inherit ||!enableSchedule">--> - <dlab-time-picker [(pickTime)]="endTime" [label]="'Choose finish time'" [disable]="true"> + <dlab-time-picker [(pickTime)]="endTime" [label]="'Choose finish time'" [disable]="destination.type === 'СOMPUTATIONAL' && inherit ||!enableSchedule"> </dlab-time-picker> </div> <div class="control-group col-3 time-range" *ngIf="destination.type === 'СOMPUTATIONAL'"> @@ -141,7 +141,7 @@ <label>Start date:</label> <mat-button-toggle *ngFor="let day of weekdays; let i = index" value="{{ day }}" (change)="onDaySelect($event, day, 'start')" - [disabled]="(destination.type === 'СOMPUTATIONAL' && inherit) || !enableSchedule" + [disabled]="destination.type === 'СOMPUTATIONAL' && inherit || !enableSchedule" [checked]="selectedStartWeekDays[day.toLowerCase()]">{{ day[0] }} </mat-button-toggle> </div> @@ -149,7 +149,7 @@ <label>Stop date:</label> <mat-button-toggle *ngFor="let day of weekdays; let i = index" value="{{ day }}" (change)="onDaySelect($event, day, 'stop')" - [disabled]="(destination.type === 'СOMPUTATIONAL' && inherit) || !enableSchedule" + [disabled]="destination.type === 'СOMPUTATIONAL' && inherit || !enableSchedule" [checked]="selectedStopWeekDays[day.toLowerCase()]">{{ day[0] }} </mat-button-toggle> </div> diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.ts index 0df2a59..c923677 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.ts @@ -88,7 +88,6 @@ export class SchedulerComponent implements OnInit { public open(notebook, type, resource?): void { this.notebook = notebook; - console.log(this.notebook) this.zones = _moment.tz.names() .map(item => [_moment.tz(item).format('Z'), item]) .sort() @@ -141,8 +140,10 @@ export class SchedulerComponent implements OnInit { if (this.destination.type === 'СOMPUTATIONAL' && this.inherit) { this.getExploratorySchedule(this.notebook.project, this.notebook.name); this.schedulerForm.get('startDate').disable(); + this.schedulerForm.get('finishDate').disable(); } else { this.schedulerForm.get('startDate').enable(); + this.schedulerForm.get('finishDate').enable(); } } @@ -156,7 +157,7 @@ export class SchedulerComponent implements OnInit { ? this.schedulerForm.get('startDate').enable() : this.schedulerForm.get('startDate').disable(); - this.enableSchedule ? this.schedulerForm.get('finishDate').enable() : this.schedulerForm.get('finishDate').disable(); + this.enableSchedule && this.destination.type !== 'СOMPUTATIONAL' ? this.schedulerForm.get('finishDate').enable() : this.schedulerForm.get('finishDate').disable(); this.enableSchedule ? this.schedulerForm.get('terminateDate').enable() : this.schedulerForm.get('terminateDate').disable(); if (this.enableSchedule && $event.source) this.enableIdleTimeView = false; @@ -256,7 +257,6 @@ export class SchedulerComponent implements OnInit { } private setScheduleByInactivity() { - console.log(this.notebook) const data = { sync_start_required: this.parentInherit, check_inactivity_required: this.enableIdleTime, max_inactivity: this.schedulerForm.controls.inactivityTime.value }; (this.destination.type === 'СOMPUTATIONAL') ? this.setInactivity(this.notebook.project, this.notebook.name, data, this.destination.computational_name) @@ -266,7 +266,7 @@ export class SchedulerComponent implements OnInit { private formInit(start?: string, end?: string, terminate?: string) { this.schedulerForm = this.formBuilder.group({ startDate: { disabled: this.inherit, value: start ? _moment(start).format() : null }, - finishDate: { disabled: false, value: end ? _moment(end).format() : null }, + finishDate: { disabled: this.inherit, value: end ? _moment(end).format() : null }, terminateDate: { disabled: false, value: terminate ? _moment(terminate).format() : null }, inactivityTime: [this.inactivityLimits.min, [Validators.compose([Validators.pattern(this.integerRegex), this.validInactivityRange.bind(this)])]] @@ -284,6 +284,7 @@ export class SchedulerComponent implements OnInit { this.startTime = params.start_time ? SchedulerCalculations.convertTimeFormat(params.start_time) : null; this.endTime = params.end_time ? SchedulerCalculations.convertTimeFormat(params.end_time) : null; this.formInit(params.begin_date, params.finish_date, params.terminate_datetime); + console.log(); this.schedulerForm.controls.inactivityTime.setValue(params.max_inactivity || this.inactivityLimits.min); this.enableIdleTime = params.check_inactivity_required; this.considerInactivity = params.consider_inactivity || false; diff --git a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts index 1f9794c..7ccfbf5 100644 --- a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts @@ -40,7 +40,7 @@ import {Endpoint} from '../../../administration/project/project.component'; <div *ngIf="data.type === 'list'" class="info"> <div *ngIf="data.template.notebook.length > 0"> Following notebook server<span *ngIf="data.template.notebook.length>1">s</span> - <span *ngFor="let item of data.template.notebook"> + <span *ngFor="let item of data.template.notebook"> <span class="strong info">{{ item.exploratory_name}}</span> on project <span class="strong info">{{ item.project }}</span> <span *ngIf="data.template.notebook.length > 1"> , </span> --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org