blob: 7144575e16592ede2241b65d012b1adaaa9cd636 [file] [log] [blame]
import { Component, OnInit } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { MatSnackBar } from '@angular/material/snack-bar';
import { Router } from '@angular/router';
import { ClusterService } from '../shared/cluster.service';
import { Cluster } from '../shared/cluster.model';
import { AlertDialogComponent } from '../../shared/dialog/alert-dialog/alert-dialog.component';
import { InputDialogComponent } from '../../shared/dialog/input-dialog/input-dialog.component';
@Component({
selector: 'hi-cluster-list',
templateUrl: './cluster-list.component.html',
styleUrls: ['./cluster-list.component.scss']
})
export class ClusterListComponent implements OnInit {
clusters: Cluster[] = [];
errorMessage: string = '';
isLoading: boolean = true;
can: boolean = false;
service = '';
constructor(
protected clusterService: ClusterService,
protected dialog: MatDialog,
protected snackBar: MatSnackBar,
protected router: Router
) { }
ngOnInit() {
this.loadClusters();
this.clusterService.can().subscribe(data => this.can = data);
this.service = this.router.url.split('/')[1];
}
loadClusters() {
this.clusterService
.getAll()
.subscribe(
/* happy path */ clusters => this.clusters = clusters,
/* error path */ error => this.showErrorMessage(error),
/* onComplete */ () => this.isLoading = false
);
}
showErrorMessage(error: any) {
this.errorMessage = error;
this.isLoading = false;
this.dialog.open(AlertDialogComponent, {
data: {
title: 'Error',
message: this.errorMessage
}
});
}
createCluster() {
const dialogRef = this.dialog.open(InputDialogComponent, {
data: {
title: 'Create a cluster',
message: 'Please enter the following information to continue:',
values: {
name: {
label: 'new cluster name'
}
}
}
});
dialogRef.afterClosed().subscribe(result => {
if (result && result.name && result.name.value) {
this.isLoading = true;
this.clusterService.create(result.name.value)
.subscribe(data => {
this.snackBar.open('Cluster created!', 'OK', {
duration: 2000,
});
this.dialog.open(AlertDialogComponent, {
width: '600px',
data: {
title: 'What\'s Next',
message: 'New cluster is created yet not activated. When you are ready to activate this cluster,'
+ ' please select "Activate this Cluster" menu in the cluster operations to continue.'
}
});
this.loadClusters();
});
}
});
}
}