import { NgModule } from '@angular/core';
import { ChartsModule } from 'ng2-charts/ng2-charts';
-import { AlertModule, PopoverModule } from 'ngx-bootstrap';
+import { AlertModule, PopoverModule, TooltipModule } from 'ngx-bootstrap';
+import { PipesModule } from '../pipes/pipes.module';
import { HelperComponent } from './helper/helper.component';
import { SparklineComponent } from './sparkline/sparkline.component';
import { SubmitButtonComponent } from './submit-button/submit-button.component';
+import { UsageBarComponent } from './usage-bar/usage-bar.component';
import { ViewCacheComponent } from './view-cache/view-cache.component';
@NgModule({
CommonModule,
AlertModule.forRoot(),
PopoverModule.forRoot(),
- ChartsModule
+ TooltipModule.forRoot(),
+ ChartsModule,
+ PipesModule
],
declarations: [
ViewCacheComponent,
SparklineComponent,
HelperComponent,
- SubmitButtonComponent
+ SubmitButtonComponent,
+ UsageBarComponent
],
providers: [],
exports: [
ViewCacheComponent,
SparklineComponent,
HelperComponent,
- SubmitButtonComponent
+ SubmitButtonComponent,
+ UsageBarComponent
]
})
export class ComponentsModule { }
--- /dev/null
+<ng-template #usageTooltipTpl>
+ <table>
+ <tr>
+ <td class="text-left">Used: </td>
+ <td class="text-right"><strong> {{ usedBytes | dimlessBinary }}</strong></td>
+ </tr>
+ <tr>
+ <td class="text-left">Free: </td>
+ <td class="'text-right"><strong>{{ freeBytes | dimlessBinary }}</strong></td>
+ </tr>
+ </table>
+</ng-template>
+
+<div class="progress oaprogress"
+ data-placement="left"
+ [tooltip]="usageTooltipTpl">
+ <div class="progress-bar progress-bar-info"
+ role="progressbar"
+ [style.width]="usedPercentage + '%'">
+ <span>{{ usedPercentage }}%</span>
+ </div>
+ <div class="progress-bar progress-bar-freespace"
+ role="progressbar"
+ [style.width]="freePercentage + '%'">
+ </div>
+</div>
--- /dev/null
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { TooltipModule } from 'ngx-bootstrap';
+
+import { PipesModule } from '../../pipes/pipes.module';
+import { ServicesModule } from '../../services/services.module';
+import { UsageBarComponent } from './usage-bar.component';
+
+describe('UsageBarComponent', () => {
+ let component: UsageBarComponent;
+ let fixture: ComponentFixture<UsageBarComponent>;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [
+ PipesModule,
+ ServicesModule,
+ TooltipModule.forRoot()
+ ],
+ declarations: [ UsageBarComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(UsageBarComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
--- /dev/null
+import { Component, Input, OnChanges, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'cd-usage-bar',
+ templateUrl: './usage-bar.component.html',
+ styleUrls: ['./usage-bar.component.scss']
+})
+export class UsageBarComponent implements OnChanges {
+
+ @Input() totalBytes: number;
+ @Input() usedBytes: number;
+
+ usedPercentage: number;
+ freePercentage: number;
+ freeBytes: number;
+
+ constructor() { }
+
+ ngOnChanges() {
+ this.usedPercentage = Math.round(this.usedBytes / this.totalBytes * 100);
+ this.freePercentage = 100 - this.usedPercentage;
+ this.freeBytes = this.totalBytes - this.usedBytes;
+ }
+
+}