blob: 82bcef38cfa9511c56014187432f67909d733eee [file] [log] [blame]
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Settings } from '../../core/settings';
import { Partition, IReplica, Resource } from '../shared/resource.model';
import { HelperService } from '../../shared/helper.service';
import { ResourceService } from '../shared/resource.service';
import { DatatableComponent } from '@swimlane/ngx-datatable';
@Component({
selector: 'hi-partition-list',
templateUrl: './partition-list.component.html',
styleUrls: ['./partition-list.component.scss'],
})
export class PartitionListComponent implements OnInit {
@ViewChild('partitionsTable', { static: false })
table: DatatableComponent;
isLoading = true;
clusterName: string;
resource: Resource;
partitions: Partition[];
headerHeight = Settings.tableHeaderHeight;
rowHeight = Settings.tableRowHeight;
sorts = [
{ prop: 'isReady', dir: 'asc' },
{ prop: 'name', dir: 'asc' },
];
constructor(
protected route: ActivatedRoute,
protected service: ResourceService,
protected helper: HelperService
) {}
ngOnInit() {
if (this.route.parent) {
this.clusterName = this.route.parent.snapshot.params.cluster_name;
this.loadResource();
}
}
// check whether we are capable of analysing the states :(
canAnalyse() {
return this.partitions && this.partitions.length;
}
getReasonWhyCannotAnalyse(): boolean | string {
if (!this.canAnalyse()) {
if (!this.resource.online) {
return 'The resource is OFFLINE and does not have partition information available.';
}
if (this.resource.partitionCount < 1) {
return 'This resource does not contain any partition information.';
}
}
return false;
}
onSelect({ selected }) {
const row = selected[0];
this.table.rowDetail.toggleExpandRow(row);
}
protected loadResource() {
const resourceName = this.resource
? this.resource.name
: this.route.parent.snapshot.params.resource_name;
this.isLoading = true;
this.service.get(this.clusterName, resourceName).subscribe(
(resource) => {
this.resource = resource;
this.partitions = this.resource.partitions;
},
(error) => this.helper.showError(error),
() => (this.isLoading = false)
);
}
}