]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/osd-summary.pipe.ts
72bea4a0aeaa7e56b869995f70b220237a859bc1
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / ceph / dashboard / osd-summary.pipe.ts
1 import { Pipe, PipeTransform } from '@angular/core';
2
3 import _ from 'lodash';
4
5 @Pipe({
6 name: 'osdSummary'
7 })
8 export class OsdSummaryPipe implements PipeTransform {
9 transform(value: any): any {
10 if (!value) {
11 return '';
12 }
13
14 let inCount = 0;
15 let upCount = 0;
16 _.each(value.osds, (osd) => {
17 if (osd.in) {
18 inCount++;
19 }
20 if (osd.up) {
21 upCount++;
22 }
23 });
24
25 const osdSummary = [
26 {
27 content: `${value.osds.length} ${$localize`total`}`,
28 class: ''
29 }
30 ];
31 osdSummary.push({
32 content: '',
33 class: 'card-text-line-break'
34 });
35 osdSummary.push({
36 content: `${upCount} ${$localize`up`}, ${inCount} ${$localize`in`}`,
37 class: ''
38 });
39
40 const downCount = value.osds.length - upCount;
41 const outCount = upCount - inCount;
42 if (downCount > 0 || outCount > 0) {
43 osdSummary.push({
44 content: '',
45 class: 'card-text-line-break'
46 });
47
48 const downText = downCount > 0 ? `${downCount} ${$localize`down`}` : '';
49 const separator = downCount > 0 && outCount > 0 ? ', ' : '';
50 const outText = outCount > 0 ? `${outCount} ${$localize`out`}` : '';
51 osdSummary.push({
52 content: `${downText}${separator}${outText}`,
53 class: 'card-text-error'
54 });
55 }
56
57 return osdSummary;
58 }
59 }