| 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) |
| ); |
| } |
| } |