add Chart for Availability to Dashboard
This commit is contained in:
parent
110f8f2595
commit
5358bb21db
@ -18,16 +18,33 @@
|
|||||||
<mat-sidenav-content class="mat-sidenav-content" fxFlex fxLayout="column" fxLayoutAlign="center">
|
<mat-sidenav-content class="mat-sidenav-content" fxFlex fxLayout="column" fxLayoutAlign="center">
|
||||||
<div class="container-map" fxFlex="100%" fxLayout="row" fxLayoutAlign="center">
|
<div class="container-map" fxFlex="100%" fxLayout="row" fxLayoutAlign="center">
|
||||||
|
|
||||||
<div class="input-container" fxFlex="25%" fxLayout="column">
|
<div class="input-container" fxFlex="35%" fxLayout="column">
|
||||||
<div class="user-input" fxFlex fxLayout="column" fxLayoutAlign="space-between">
|
<div class="user-input" fxFlex fxLayout="column" fxLayoutAlign="space-between">
|
||||||
<div class="container-info" fxFlex="60%">
|
<div class="container-info" fxFlex="55%">
|
||||||
<mat-card fxFlex="100%">
|
<mat-card fxFlex="100%">
|
||||||
<mat-card-header>
|
<mat-card-header>
|
||||||
<div class="example-header-image" mat-card-avatar></div>
|
<div class="example-header-image" mat-card-avatar></div>
|
||||||
<mat-card-title>{{bikePoint?.commonName}}</mat-card-title>
|
<mat-card-title>{{bikePoint?.commonName}}</mat-card-title>
|
||||||
</mat-card-header>
|
</mat-card-header>
|
||||||
<mat-card-content>
|
<mat-card-content>
|
||||||
<p>{{bikePoint?.status.NbBikes}}</p>
|
<div class="chart-bikepoint-availability">
|
||||||
|
<div id="chart">
|
||||||
|
<apx-chart
|
||||||
|
[chart]="bikePointChartOptions.chart"
|
||||||
|
[colors]="bikePointChartOptions.colors"
|
||||||
|
[dataLabels]="bikePointChartOptions.dataLabels"
|
||||||
|
[fill]="bikePointChartOptions.fill"
|
||||||
|
[legend]="bikePointChartOptions.legend"
|
||||||
|
[plotOptions]="bikePointChartOptions.plotOptions"
|
||||||
|
[series]="bikePointChartOptions.series"
|
||||||
|
[stroke]="bikePointChartOptions.stroke"
|
||||||
|
[title]="bikePointChartOptions.title"
|
||||||
|
[tooltip]="bikePointChartOptions.tooltip"
|
||||||
|
[xaxis]="bikePointChartOptions.xaxis"
|
||||||
|
[yaxis]="bikePointChartOptions.yaxis"
|
||||||
|
></apx-chart>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</mat-card-content>
|
</mat-card-content>
|
||||||
</mat-card>
|
</mat-card>
|
||||||
</div>
|
</div>
|
||||||
@ -65,8 +82,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</mat-card>
|
</mat-card>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@ -76,7 +91,7 @@
|
|||||||
<ng-container matColumnDef="endStationName">
|
<ng-container matColumnDef="endStationName">
|
||||||
<th *matHeaderCellDef mat-header-cell> station of lend destination</th>
|
<th *matHeaderCellDef mat-header-cell> station of lend destination</th>
|
||||||
<td *matCellDef="let element" mat-cell><a
|
<td *matCellDef="let element" mat-cell><a
|
||||||
[routerLink]="['dashboard/', element.id]">{{element.endStationName}}</a></td>
|
[routerLink]="['/dashboard/', element.id]">{{element.endStationName}}</a></td>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-container matColumnDef="number">
|
<ng-container matColumnDef="number">
|
||||||
@ -98,7 +113,7 @@
|
|||||||
<ng-container matColumnDef="startStationName">
|
<ng-container matColumnDef="startStationName">
|
||||||
<th *matHeaderCellDef mat-header-cell> station of lend origin</th>
|
<th *matHeaderCellDef mat-header-cell> station of lend origin</th>
|
||||||
<td *matCellDef="let element" mat-cell><a
|
<td *matCellDef="let element" mat-cell><a
|
||||||
[routerLink]="['dashboard/', element.id]"> {{element.startStationName}}</a></td>
|
[routerLink]="['/dashboard/', element.id]"> {{element.startStationName}}</a></td>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-container matColumnDef="number">
|
<ng-container matColumnDef="number">
|
||||||
|
@ -51,6 +51,7 @@ export class DashboardComponent implements OnInit {
|
|||||||
@ViewChild('Station-Dashboard-Borrow-Duration') chart: ChartComponent;
|
@ViewChild('Station-Dashboard-Borrow-Duration') chart: ChartComponent;
|
||||||
public durationChartOptions: Partial<ChartOptions>;
|
public durationChartOptions: Partial<ChartOptions>;
|
||||||
public timeChartOptions: Partial<ChartOptions>;
|
public timeChartOptions: Partial<ChartOptions>;
|
||||||
|
public bikePointChartOptions: Partial<ChartOptions>;
|
||||||
displayedColumnsTo: string[] = ['endStationName', 'number', 'avgDuration'];
|
displayedColumnsTo: string[] = ['endStationName', 'number', 'avgDuration'];
|
||||||
displayedColumnsFrom: string[] = ['startStationName', 'number', 'avgDuration'];
|
displayedColumnsFrom: string[] = ['startStationName', 'number', 'avgDuration'];
|
||||||
stationToSource = new MatTableDataSource<any>();
|
stationToSource = new MatTableDataSource<any>();
|
||||||
@ -90,6 +91,15 @@ export class DashboardComponent implements OnInit {
|
|||||||
text: 'Loading...'
|
text: 'Loading...'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
this.bikePointChartOptions = {
|
||||||
|
series: [],
|
||||||
|
chart: {
|
||||||
|
type: 'bar'
|
||||||
|
},
|
||||||
|
noData: {
|
||||||
|
text: 'Loading...'
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
@ -109,6 +119,83 @@ export class DashboardComponent implements OnInit {
|
|||||||
|
|
||||||
this.service.fetchBikePointForStatus(this.route.snapshot.paramMap.get('id')).then(data => {
|
this.service.fetchBikePointForStatus(this.route.snapshot.paramMap.get('id')).then(data => {
|
||||||
this.bikePoint = data;
|
this.bikePoint = data;
|
||||||
|
const NbBlockedDocks = data.status.NbDocks - data.status.NbBikes - data.status.NbEmptyDocks;
|
||||||
|
this.bikePointChartOptions = {
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: 'Bikes',
|
||||||
|
data: [data.status.NbBikes]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Empty docks',
|
||||||
|
data: [data.status.NbEmptyDocks]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Blocked docks',
|
||||||
|
data: [NbBlockedDocks]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
colors: ['#51ca49', '#8f8e8e', '#f00'],
|
||||||
|
chart: {
|
||||||
|
type: 'bar',
|
||||||
|
height: 180,
|
||||||
|
stacked: true,
|
||||||
|
toolbar: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
plotOptions: {
|
||||||
|
bar: {
|
||||||
|
horizontal: true,
|
||||||
|
dataLabels: {
|
||||||
|
position: 'center'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataLabels: {
|
||||||
|
enabled: true,
|
||||||
|
style: {
|
||||||
|
fontSize: '20px',
|
||||||
|
colors: ['#fff']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
stroke: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
xaxis: {
|
||||||
|
labels: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisBorder: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTicks: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
yaxis: {
|
||||||
|
show: false,
|
||||||
|
title: {
|
||||||
|
text: undefined
|
||||||
|
},
|
||||||
|
axisBorder: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
min: 0,
|
||||||
|
max: data.status.NbDocks
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
enabled: false,
|
||||||
|
},
|
||||||
|
fill: {
|
||||||
|
opacity: 1
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
position: 'bottom',
|
||||||
|
horizontalAlign: 'right',
|
||||||
|
fontSize: '14px'
|
||||||
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user