"service_id": "service1",
"total_bandwidth_list": [
{
- "timestamp": "1454171445000",
+ "timestamp": "1454171446000",
"total_bandwidth": "167"
},
{
- "timestamp": "1454171445000",
+ "timestamp": "1454173447000",
"total_bandwidth": "200"
}
]
"service_id": "service2",
"total_bandwidth_list": [
{
- "timestamp": "1454171447000",
+ "timestamp": "1454171446000",
"total_bandwidth": "88"
},
{
- "timestamp": "1454171447000",
+ "timestamp": "1454173447000",
"total_bandwidth": "184"
}
]
"service_id": "service3",
"total_bandwidth_list": [
{
- "timestamp": "1454171448000",
+ "timestamp": "1454171446000",
"total_bandwidth": "173"
},
{
- "timestamp": "1454171448000",
+ "timestamp": "1454173447000",
"total_bandwidth": "95"
}
]
"online_users": "100"
},
{
- "timestamp": "1454171445000",
+ "timestamp": "1454176446000",
"online_users": "200"
}
]
"service_id": "service2",
"online_user_list": [
{
- "timestamp": "1454171446000",
+ "timestamp": "1454171445000",
"online_users": "157"
},
{
- "timestamp": "1454171446000",
+ "timestamp": "1454176446000",
"online_users": "189"
}
]
"service_id": "service3",
"online_user_list": [
{
- "timestamp": "1454171449000",
+ "timestamp": "1454171445000",
"online_users": "215"
},
{
- "timestamp": "1454171449000",
+ "timestamp": "1454176446000",
"online_users": "148"
}
]
-<div>
+<div class="monitor-content">
<h1>Slicing business Monitor</h1>
<div nz-row>
<div nz-col nzSpan="12" class="monitorDate">
></nz-date-picker>
</div>
</div>
- <div nz-row nzType="flex" nzGutter="16" class="charts">
+ <div nz-row nzType="flex" class="charts">
<div nz-col nzSpan="6" class="gutter-row col-boxshadow">
<h4>Slicing Use Traffic</h4>
<app-pie [initData]="trafficChartInit" [chartData]="trafficChartData"></app-pie>
-.monitorDate{
- //margin-left: 2%;
- margin-top: 30px;
-}
-.businessmonitor_imagecontainer {
- width: 100%;
- margin-bottom: 20px;
-}
-.charts{
- margin: 30px 0 10px 0;
-}
-.col-boxshadow{
- padding: 25px;
- margin: 0 10px;
- border-radius: 5px;
- box-shadow: #a9a9a92e 0px 0px 15px 10px;
- h4{
- font-size: 18px;
+.monitor-content {
+ h1{
+ padding: 20px;
+ }
+ .monitorDate {
+ margin-left: 20px;
+ margin-top: 30px;
+ }
+ .businessmonitor_imagecontainer {
+ width: 100%;
+ margin-bottom: 20px;
+ }
+ .charts {
+ margin: 30px 0 10px 10px !important;
+ }
+ .col-boxshadow {
+ padding: 25px;
+ margin: 0 1%;
+ border-radius: 5px;
+ box-shadow: #a9a9a92e 0px 0px 15px 10px;
+ h4 {
+ font-size: 18px;
+ }
}
}
\ No newline at end of file
import { Component, OnInit } from '@angular/core';
import { SlicingTaskServices } from '.././../../core/services/slicingTaskServices';
import { pieChartconfig, lineChartconfig } from './monitorEchartsConfig';
+import *as moment from 'moment';
@Component({
selector: 'app-monitor-5g',
templateUrl: './monitor-5g.component.html',
this.myhttp.getFetchTraffic(service_list, time).subscribe(res => {
const { result_header: { result_code }, result_body: { slicing_usage_traffic_list } } = res;
if (+result_code === 200 && slicing_usage_traffic_list.length > 0) {
+ this.trafficData = [];
+ this.trafficLegend = [];
slicing_usage_traffic_list.forEach((item) => {
this.trafficData.push({
name: item.service_id,
this.myhttp.getFetchOnlineusers(service_list, time).subscribe(res => {
const { result_header: { result_code }, result_body: { slicing_online_user_list } } = res;
if (+result_code === 200) {
+ this.onlineuserXAxis = [];
+ this.onlineusersData = [];
+ this.onlineuserLegend = [];
slicing_online_user_list[0].online_user_list.map((key) => {
- this.onlineuserXAxis.push(key.timestamp)
+ let date = moment(Number(key.timestamp)).format('YYYY-MM-DD/HH:mm').split("/")[1];
+ this.onlineuserXAxis.push(date)
});
slicing_online_user_list.forEach((item) => {
this.onlineuserLegend.push(item.service_id);
this.myhttp.getFetchBandwidth(service_list, time).subscribe(res => {
const { result_header: { result_code }, result_body: { slicing_total_bandwidth_list } } = res;
if (+result_code === 200) {
+ this.bandwidthXAxis = [];
+ this.bandwidthData = [];
+ this.bandwidthLegend = [];
slicing_total_bandwidth_list[0].total_bandwidth_list.map((key) => {
- this.bandwidthXAxis.push(key.timestamp)
+ let date = moment(Number(key.timestamp)).format('YYYY-MM-DD/HH:mm').split("/")[1];
+ this.bandwidthXAxis.push(date)
});
slicing_total_bandwidth_list.forEach((item) => {
this.bandwidthLegend.push(item.service_id);
+<nz-spin [nzSpinning]="isSpinning">
<nz-list class="taskmodel_list" nzBordered [nzHeader]="'Carry Slicing Businress List :'" [nzFooter]="null">
<nz-table
#businessTable
[nzData]="businessList"
[nzShowPagination]="false"
nzHideOnSinglePage
+ class="model-table-padding"
>
<thead>
<tr>
<th>Service Instance Id</th>
<th>Service Instance Name</th>
<th>Service Type</th>
+ <th>S-NSSAI</th>
<th>Status</th>
<th width="100px">Detail</th>
</tr>
[nzData]="nssiList"
[nzShowPagination]="false"
nzHideOnSinglePage
+ class="model-table-padding"
>
<thead>
<tr>
<th>Service Instance Id</th>
<th>Service Instance Name</th>
<th>Service Type</th>
+ <th>Environment Context</th>
<th>Status</th>
<th width="100px">Detail</th>
</tr>
</ng-template>
</tbody>
</nz-table>
-</nz-list>
\ No newline at end of file
+</nz-list>
+</nz-spin>
\ No newline at end of file
@Input() nsiId;
businessList: any[];
nssiList: any[];
+ isSpinning: boolean = true;
ngOnInit() {
this.getNsiDetail()
}
this.myhttp.getSlicingNsiDetail(this.nsiId).subscribe(res => {
const {result_header: {result_code}, result_body: {hosted_business_list,included_nssi_list} } = res;
if (+result_code === 200) {
+ this.isSpinning = false;
this.businessList = hosted_business_list;
this.nssiList = included_nssi_list;
}
-<nz-list class="taskmodel_list" nzBordered [nzHeader]="'Carry Slicing Nsi List £º'" [nzFooter]="null">
+<nz-spin [nzSpinning]="isSpinning">
+ <nz-list class="taskmodel_list" nzBordered [nzHeader]="'Carry Slicing Nsi List :'" [nzFooter]="null">
<nz-table
#nssiTable
[nzData]="nsiList"
[nzShowPagination]="false"
nzHideOnSinglePage
+ class="model-table-padding"
>
<thead>
<tr>
</ng-template>
</tbody>
</nz-table>
-</nz-list>
\ No newline at end of file
+</nz-list>
+</nz-spin>
\ No newline at end of file
}
@Input() nssiId;
nsiList: any[];
+ isSpinning: boolean = true;
ngOnInit() {
this.getNssiDetail()
}
this.myhttp.getSlicingNssiDetail(this.nssiId).subscribe(res => {
const {result_header: {result_code}, result_body: {hosted_nsi_list} } = res;
if (+result_code === 200) {
+ this.isSpinning = false;
this.nsiList = hosted_nsi_list;
}
})
+<nz-spin [nzSpinning]="isSpinning">
<app-basic-info
[businessRequirement]="businessRequirement"
[NSTinfo]="NSTinfo"
[taskModel]="taskModel"
>
</app-basic-info>
-<nz-list class="taskmodel_list" nzBordered [nzHeader]="'Slicing NSI £º'" [nzFooter]="null">
+ <nz-list class="taskmodel_list" nzBordered [nzHeader]="'Slicing NSI :'" [nzFooter]="null">
<nz-table
#basicTable
[nzData]="nsiInfo"
[nzShowPagination]="false"
nzHideOnSinglePage
+ class="model-table-padding"
>
<thead>
<tr>
</ng-template>
</tbody>
</nz-table>
-</nz-list>
\ No newline at end of file
+</nz-list>
+</nz-spin>
\ No newline at end of file
-.taskmodel_list{
- margin-bottom: 20px;
-}
\ No newline at end of file
+
@Input() businessId;
businessRequirement: any[];
- NSTinfo: any[];
- nsiInfo: any[];
+ NSTinfo: any[] = [];
+ nsiInfo: any[] = [];
taskModel: boolean = false;
+ isSpinning: boolean = true;
ngOnInit() {
console.log(this.businessId, "id");
this.getDetail()
getDetail() {
this.myhttp.getSlicingBusinessDetail(this.businessId).subscribe(res => {
- const {result_header: {result_code}, result_body: {business_demand_info,nst_info,nsi_info} } = res;
+ const { result_body, result_header: { result_code } } = res;
if (+result_code === 200) {
- // business_demand_info.coverage_area_ta_list.map((item)=>{
- // item.replace(";"," ")
- // });
+ this.isSpinning = false;
+ const {business_demand_info,business_demand_info: { coverage_area_ta_list },nst_info,nsi_info} = result_body;
+ business_demand_info.area = coverage_area_ta_list.map(item => {
+ item = item.split(';').join('-');
+ return item
+ });
this.businessRequirement = [business_demand_info];
this.NSTinfo = [nst_info];
this.nsiInfo = [nsi_info];
this.getBusinessList()
}
ngOnDestroy() {
- clearInterval(this.progressingTimer);
+ this.progressingTimer.forEach((item) => {
+ clearInterval(item.timer);
+ })
}
selectedValue:string = BUSINESS_STATUS[0];
listOfData: any[] = [];
loading = false;
isSelect: boolean = false;
statusOptions: any[] = BUSINESS_STATUS;
- progressingTimer :any;
+ progressingTimer :any[] = [];
getBusinessList (): void{
.subscribe((data) => {
if (data.result_body.operation_progress < 100) {
callback(data.result_body);
- this.progressingTimer = setTimeout(()=>{
+ let progressSetTimeOut = setTimeout(() => {
requery();
},5000);
+ this.progressingTimer.push({
+ id:obj.serviceId,
+ timer:progressSetTimeOut
+ })
} else {
- clearInterval(this.progressingTimer);
+ this.progressingTimer.forEach((item) => {
+ if(item.serviceId === obj.serviceId){
+ clearInterval(item.timer);
+ }
+ });
res(data.result_body);
}
})